diff --git a/.gitignore b/.gitignore index a3dd9f3b9..c6ec3f9fb 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ npm-debug.log .ep_initialized *.crt *.key +bin/etherpad-1.deb diff --git a/.travis.yml b/.travis.yml index 77f0c8557..4cdf63837 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,22 +1,20 @@ language: node_js node_js: - - "0.8" + - "0.10" install: - "bin/installDeps.sh" - - "export GIT_HASH=$(cat .git/HEAD | head -c 7)" -before_script: + - "export GIT_HASH=$(git rev-parse --verify --short HEAD)" +before_script: - "tests/frontend/travis/sauce_tunnel.sh" script: - "tests/frontend/travis/runner.sh" env: global: - - secure: "OxZ2s724S96xu02746LUN+4lBckAe1BOICJjfA4jnFPNpiNU6XoMH52f+LgG\nZzAwu6xMTv+NsaLGp6Avm3cx4GZ+jIiHe4NB9XOgYPa0r0TBIi3ueWYPDyVv\nCniS/4qX68DoFNV4lh7zMBXn0IIPxT4Wppm3desBpjWDP/SdoRs=" - - SAUCE_USER=pita + - secure: "WMGxFkOeTTlhWB+ChMucRtIqVmMbwzYdNHuHQjKCcj8HBEPdZLfCuK/kf4rG\nVLcLQiIsyllqzNhBGVHG1nyqWr0/LTm8JRqSCDDVIhpyzp9KpCJQQJG2Uwjk\n6/HIJJh/wbxsEdLNV2crYU/EiVO3A4Bq0YTHUlbhUqG3mSCr5Ec=" + - secure: "gejXUAHYscbR6Bodw35XexpToqWkv2ifeECsbeEmjaLkYzXmUUNWJGknKSu7\nEUsSfQV8w+hxApr1Z+jNqk9aX3K1I4btL3cwk2trnNI8XRAvu1c1Iv60eerI\nkE82Rsd5lwUaMEh+/HoL8ztFCZamVndoNgX7HWp5J/NRZZMmh4g=" jdk: - oraclejdk6 notifications: - email: - - petermartischka@googlemail.com irc: channels: - - "irc.freenode.org#etherpad-lite-dev" \ No newline at end of file + - "irc.freenode.org#etherpad-lite-dev" diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e3a5d77f..c156eb259 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,127 @@ +# 1.3 + * NEW: We now follow the semantic versioning scheme! + * NEW: Option to disable IP logging + * NEW: Localisation updates from http://translatewiki.net. + * Fix: Fix readOnly group pads + * Fix: don't fetch padList on every request + +# 1.2.12 + * NEW: Add explanations for more disconnect scenarios + * NEW: export sessioninfos so plugins can access it + * NEW: pass pad in postAceInit hook + * NEW: Add trustProxy setting. ALlows to make ep use X-forwarded-for as remoteAddress + * NEW: userLeave hook (UNDOCUMENTED) + * NEW: Plural macro for translations + * NEW: backlinks to main page in Admin pages + * NEW: New translations from translatewiki.net + * SECURITY FIX: Filter author data sent to clients + * FIX: Never keep processing a changeset if it's corrupted + * FIX: Some client-side performance fixes for webkit browsers + * FIX: Only execute listAllPads query on demand (not on start-up) + * FIX: HTML import (don't crash on malformed or blank HTML input; strip title out of html during import) + * FIX: check if uploaded file only contains ascii chars when abiword disabled + * FIX: Plugin search in /admin/plugins + * FIX: Don't create new pad if a non-existant read-only pad is accessed + * FIX: Drop messages from unknown connections (would lead to a crash after a restart) + * FIX: API: fix createGroupFor endpoint, if mapped group is deleted + * FIX: Import form for other locales + * FIX: Don't stop processing changeset queue if there is an error + * FIX: Caret movement. Chrome detects blank rows line heights as incorrect + * FIX: allow colons in password + * FIX: Polish logging of client-side errors on the server + * FIX: Username url param + * FIX: Make start script POSIX ompatible + + +# 1.2.11 + * NEW: New Hook for outer_ace dynamic css manager and author style hook + * NEW: Bump log4js for improved logging + * Fix: Remove URL schemes which don't have RFC standard + * Fix: Fix safeRun subsequent restarts issue + * Fix: Allow safeRun to pass arguements to run.sh + * Fix: Include script for more efficient import + * Fix: Fix sysv comptibile script + * Fix: Fix client side changeset spamming + * Fix: Don't crash on no-auth + * Fix: Fix some IE8 errors + * Fix: Fix authorship sanitation + +# 1.2.10 + * NEW: Broadcast slider is exposed in timeslider so plugins can interact with it + * Fix: IE issue where pads wouldn't load due to missing console from i18n + * Fix: console issue in collab client would error on cross domain embeds in IE + * Fix: Only Restart Etherpad once plugin is installed + * Fix: Only redraw lines that exist after drag and drop + * Fix: Pasting into ordered list + * Fix: Import browser detection + * Fix: 2 Part Locale Specs + * Fix: Remove language string from chat element + * Fix: Make Saved revision Star fade back out on non Top frames + * Other: Remove some cruft legacy JS from old Etherpad + * Other: Express 3.1.2 breaks sessions, set Express to 3.1.0 + +# 1.2.91 + * NEW: Authors can now send custom object messages to other Authors making 3 way conversations possible. This introduces WebRTC plugin support. + * NEW: Hook for Chat Messages Allows for Desktop Notification support + * NEW: FreeBSD installation docs + * NEW: Ctrl S for save revision makes the Icon glow for a few sconds. + * NEW: Various hooks and expose the document ACE object + * NEW: Plugin page revamp makes finding and installing plugins more sane. + * NEW: Icon to enable sticky chat from the Chat box + * Fix: Cookies inside of plugins + * Fix: Don't leak event emitters when accessing admin/plugins + * Fix: Don't allow user to send messages after they have been "kicked" from a pad + * Fix: Refactor Caret navigation with Arrow and Pageup/down keys stops cursor being lost + * Fix: Long lines in Firefox now wrap properly + * Fix: Session Disconnect limit is increased from 10 to 20 to support slower restarts + * Fix: Support Node 0.10 + * Fix: Log HTTP on DEBUG log level + * Fix: Server wont crash on import fails on 0 file import. + * Fix: Import no longer fails consistantly + * Fix: Language support for non existing languages + * Fix: Mobile support for chat notifications are now usable + * Fix: Re-Enable Editbar buttons on reconnect + * Fix: Clearing authorship colors no longer disconnects all clients + * Other: New debug information for sessions + +# 1.2.9 + * Fix: MAJOR Security issue, where a hacker could submit content as another user + * Fix: security issue due to unescaped user input + * Fix: Admin page at /admin redirects to /admin/ now to prevent breaking relative links + * Fix: indentation in chrome on linux + * Fix: PadUsers API endpoint + * NEW: A script to import data to all dbms + * NEW: Add authorId to chat and userlist as a data attribute + * NEW: Refactor and fix our frontend tests + * NEW: Localisation updates + + +# 1.2.81 + * Fix: CtrlZ-Y for Undo Redo + * Fix: RTL functionality on contents & fix RTL/LTR tests and RTL in Safari + * Fix: Various other tests fixed in Android + # 1.2.8 + ! IMPORTANT: New setting.json value is required to automatically reconnect clients on disconnect * NEW: Use Socket IO for rooms (allows for pads to be load balanced with sticky rooms) * NEW: Plugins can now provide their own frontend tests * NEW: Improved server-side logging * NEW: Admin dashboard mobile device support and new hooks for Admin dashboard + * NEW: Get current API version from API + * NEW: CLI script to delete pads + * Fix: Automatic client reconnection on disonnect + * Fix: Text Export indentation now supports multiple indentations * Fix: Bugfix getChatHistory API method + * Fix: Stop Chrome losing caret after paste is texted + * Fix: Make colons on end of line create 4 spaces on indent + * Fix: Stop the client disconnecting if a rev is in the wrong order + * Fix: Various server crash issues based on rev in wrong order + * Fix: Various tests + * Fix: Make indent when on middle of the line stop creating list + * Fix: Stop long strings breaking the UX by moving focus away from beginning of line + * Fix: Redis findKeys support + * Fix: padUsersCount no longer hangs server + * Fix: Issue with two part locale specs not working * Fix: Make plugin search case insensitive * Fix: Indentation and bullets on text export * Fix: Resolve various warnings on dependencies during install @@ -11,9 +129,13 @@ * Fix: Stop Opera browser inserting two new lines on enter keypress * Fix: Stop timeslider from showing NaN on pads with only one revision * Other: Allow timeslider tests to run and provide & fix various other frontend-tests + * Other: Begin dropping referene to Lite. Etherpad Lite is now named "Etherpad" * Other: Update to latest jQuery * Other: Change loading message asking user to please wait on first build * Other: Allow etherpad to use global npm installation (Safe since node 6.3) + * Other: Better documentation for log rotation and log message handling + + # 1.2.7 * NEW: notifications are now modularized and can be stacked diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a69a3b65..4d8b4cb6c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,17 +2,17 @@ (Please talk to people on the mailing list before you change this page, see our section on [how to get in touch](https://github.com/ether/etherpad-lite#get-in-touch)) ## Important note for pull requests -**Pull requests should issued against the develop branch**. We never pull directly into master. +**Pull requests should be issued against the develop branch**. We never pull directly into master. **Our goal is to iterate in small steps. Release often, release early. Evolution instead of a revolution** -## General goals of Etherpad Lite +## General goals of Etherpad To make sure everybody is going in the same direction: * easy to install for admins and easy to use for people * easy to integrate into other apps, but also usable as standalone * using less resources on server side -* extensible, as much functionality should be extendable with plugins so changes don't have to be done in core -Also, keep it maintainable. We don't wanna end ob as the monster Etherpad was! +* extensible, as much functionality should be extendable with plugins so changes don't have to be done in core. +Also, keep it maintainable. We don't wanna end up as the monster Etherpad was! ## How to work with git? * Don't work in your master branch. @@ -62,4 +62,7 @@ The docs are in the `doc/` folder in the git repository, so people can easily fi Documentation should be kept up-to-date. This means, whenever you add a new API method, add a new hook or change the database model, pack the relevant changes to the docs in the same pull request. -You can build the docs e.g. produce html, using `make docs`. At some point in the future we will provide an online documentation. The current documentation in the github wiki should always reflect the state of `master` (!), since there are no docs in master, yet. \ No newline at end of file +You can build the docs e.g. produce html, using `make docs`. At some point in the future we will provide an online documentation. The current documentation in the github wiki should always reflect the state of `master` (!), since there are no docs in master, yet. + +## Testing +Front-end tests are found in the `tests/frontend/` folder in the repository. Run them by pointing your browser to `/tests/frontend`. diff --git a/LICENSE b/LICENSE index a35c25535..366aa1a47 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,3 @@ - Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ @@ -187,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2012 THE ETHERPAD FOUNDATION + Copyright 2013 THE ETHERPAD FOUNDATION Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/README.md b/README.md index e254b81d3..c1acf4618 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,35 @@ -# Making collaborative editing the standard on the web +# A really-real time collaborative word processor for the web +![alt text](http://i.imgur.com/zYrGkg3.gif "Etherpad in action on PrimaryPad") # About -Etherpad lite is a really-real time collaborative editor spawned from the Hell fire of Etherpad. -We're reusing the well tested Etherpad easysync library to make it really realtime. Etherpad Lite -is based on node.js ergo is much lighter and more stable than the original Etherpad. Our hope -is that this will encourage more users to use and install a realtime collaborative editor. A smaller, manageable and well -documented codebase makes it easier for developers to improve the code and contribute towards the project. +Etherpad is a really-real time collaborative editor maintained by the Etherpad Community. -**Etherpad vs Etherpad lite** - - - - - - - - - - - - - - - - -
 EtherpadEtherpad Lite
Size of the folder (without git history)30 MB1.5 MB
Languages used server sideJavascript (Rhino), Java, ScalaJavascript (node.js)
Lines of server side Javascript code~101k~9k
RAM Usage immediately after start257 MB (grows to ~1GB)16 MB (grows to ~30MB)
+Etherpad is written in Javascript(99.9%) on both the server and client so it's easy for developers to maintain and add new features. Because of this Etherpad has tons of customizations that you can leverage. + +Etherpad is designed to be easily embeddable and provides a [HTTP API](https://github.com/ether/etherpad-lite/wiki/HTTP-API) +that allows your web application to manage pads, users and groups. It is recommended to use the [available client implementations](https://github.com/ether/etherpad-lite/wiki/HTTP-API-client-libraries) in order to interact with this API. + +There is also a [jQuery plugin](https://github.com/ether/etherpad-lite-jquery-plugin) that helps you to embed Pads into your website. + +There's also a full-featured plugin framework, allowing you to easily add your own features. By default your Etherpad is rather sparce and because Etherpad takes a lot of it's inspiration from Wordpress plugins are really easy to install and update. Once you have Etherpad installed you should visit the plugin page and take control. + +Finally, Etherpad comes with translations into most languages! Users are automatically delivered the correct language for their local settings. -Etherpad Lite is designed to be easily embeddable and provides a [HTTP API](https://github.com/ether/etherpad-lite/wiki/HTTP-API) -that allows your web application to manage pads, users and groups. It is recommended to use the [available client implementations](https://github.com/ether/etherpad-lite/wiki/HTTP-API-client-libraries) in order to interact with this API. There is also a [jQuery plugin](https://github.com/johnyma22/etherpad-lite-jquery-plugin) that helps you to embed Pads into your website. -There's also a full-featured plugin framework, allowing you to easily add your own features. -Finally, Etherpad Lite comes with translations into tons of different languages! - -**Visit [beta.etherpad.org](http://beta.etherpad.org) to test it live** +**Visit [beta.etherpad.org](http://beta.etherpad.org) to test it live.** Also, check out the **[FAQ](https://github.com/ether/etherpad-lite/wiki/FAQ)**, really! # Installation +Etherpad works with node v0.8 and v0.10, only. (We don't support v0.6) + ## Windows ### Prebuilt windows package This package works out of the box on any windows machine, but it's not very useful for developing purposes... -1. Download the windows package +1. [Download the latest windows package](http://etherpad.org/#download) 2. Extract the folder Now, run `start.bat` and open in your browser. You like it? [Next steps](#next-steps). @@ -62,16 +48,17 @@ Update to the latest version with `git pull origin`, then run `bin\installOnWind [Next steps](#next-steps). -## Linux +## GNU/Linux and other UNIX-like systems You'll need gzip, git, curl, libssl develop libraries, python and gcc. *For Debian/Ubuntu*: `apt-get install gzip git-core curl python libssl-dev pkg-config build-essential` *For Fedora/CentOS*: `yum install gzip git-core curl python openssl-devel && yum groupinstall "Development Tools"` +*For FreeBSD*: `portinstall node, npm, git (optional)` Additionally, you'll need [node.js](http://nodejs.org) installed, Ideally the latest stable version, be careful of installing nodejs from apt. -**As any user (we recommend creating a separate user called etherpad-lite):** +**As any user (we recommend creating a separate user called etherpad):** -1. Move to a folder where you want to install Etherpad Lite. Clone the git repository `git clone git://github.com/ether/etherpad-lite.git` +1. Move to a folder where you want to install Etherpad. Clone the git repository `git clone git://github.com/ether/etherpad-lite.git` 2. Change into the new directory containing the cloned source code `cd etherpad-lite` Now, run `bin/run.sh` and open in your browser. @@ -83,9 +70,9 @@ You like it? [Next steps](#next-steps). # Next Steps ## Tweak the settings -You can modify the settings in `settings.json`. (If you need to handle multiple settings files, you can pass the path to a settings file to `bin/run.sh` using the `-s|--settings` option. This allows you to run multiple Etherpad Lite instances from the same installation.) +You can initially modify the settings in `settings.json`. (If you need to handle multiple settings files, you can pass the path to a settings file to `bin/run.sh` using the `-s|--settings` option. This allows you to run multiple Etherpad instances from the same installation.) Once you have access to your /admin section settings can be modified through the web browser. -You should use a dedicated database such as "mysql", if you are planning on using etherpad-lite in a production environment, since the "dirtyDB" database driver is only for testing and/or development purposes. +You should use a dedicated database such as "mysql", if you are planning on using etherpad-in a production environment, since the "dirtyDB" database driver is only for testing and/or development purposes. ## Helpful resources The [wiki](https://github.com/ether/etherpad-lite/wiki) is your one-stop resource for Tutorials and How-to's, really check it out! Also, feel free to improve these wiki pages. @@ -95,11 +82,11 @@ Documentation can be found in `docs/`. # Development ## Things you should know -Read this [git guide](http://learn.github.com/p/intro.html) and watch this [video on getting started with Etherpad Lite Development](http://youtu.be/67-Q26YH97E). +Read this [git guide](http://learn.github.com/p/index.html) and watch this [video on getting started with Etherpad Development](http://youtu.be/67-Q26YH97E). If you're new to node.js, start with Ryan Dahl's [Introduction to Node.js](http://youtu.be/jo_B4LTHi3I). -You can debug Etherpad lite using `bin/debugRun.sh`. +You can debug Etherpad using `bin/debugRun.sh`. If you want to find out how Etherpad's `Easysync` works (the library that makes it really realtime), start with this [PDF](https://github.com/ether/etherpad-lite/raw/master/doc/easysync/easysync-full-description.pdf) (complex, but worth reading). @@ -108,10 +95,10 @@ You know all this and just want to know how you can help? Look at the [TODO list](https://github.com/ether/etherpad-lite/wiki/TODO) and our [Issue tracker](https://github.com/ether/etherpad-lite/issues). (Please consider using [jshint](http://www.jshint.com/about/), if you plan to contribute code.) -Also, and most importantly, read our [**Developer Guidelines**](https://github.com/ether/etherpad-lite/wiki/Developer-Guidelines), really! +Also, and most importantly, read our [**Developer Guidelines**](https://github.com/ether/etherpad-lite/blob/master/CONTRIBUTING.md), really! # Get in touch -Join the [mailinglist](http://groups.google.com/group/etherpad-lite-dev) and make some noise on our freenode irc channel [#etherpad-lite-dev](http://webchat.freenode.net?channels=#etherpad-lite-dev)! +Join the [mailinglist](http://groups.google.com/group/etherpad-lite-dev) and make some noise on our busy freenode irc channel [#etherpad-lite-dev](http://webchat.freenode.net?channels=#etherpad-lite-dev)! # Modules created for this project @@ -122,6 +109,7 @@ Join the [mailinglist](http://groups.google.com/group/etherpad-lite-dev) and mak # Donate! * [Flattr] (http://flattr.com/thing/71378/Etherpad-Foundation) * Paypal - Press the donate button on [etherpad.org](http://etherpad.org) +* [Bitcoin] (https://coinbase.com/checkouts/1e572bf8a82e4663499f7f1f66c2d15a) # License [Apache License v2](http://www.apache.org/licenses/LICENSE-2.0.html) diff --git a/bin/buildDebian.sh b/bin/buildDebian.sh new file mode 100755 index 000000000..cc3353c20 --- /dev/null +++ b/bin/buildDebian.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +# IMPORTANT +# Protect agaisnt mispelling a var and rm -rf / +set -u +set -e + +SRC=/tmp/etherpad-deb-src +DIST=/tmp/etherpad-deb-dist +SYSROOT=${SRC}/sysroot +DEBIAN=${SRC}/DEBIAN + +rm -rf ${DIST} +mkdir -p ${DIST}/ + +rm -rf ${SRC} +rsync -a bin/deb-src/ ${SRC}/ +mkdir -p ${SYSROOT}/opt/ + +rsync --exclude '.git' -a . ${SYSROOT}/opt/etherpad/ --delete +mkdir -p ${SYSROOT}/usr/share/doc +cp README.md ${SYSROOT}/usr/share/doc/etherpad +find ${SRC}/ -type d -exec chmod 0755 {} \; +find ${SRC}/ -type f -exec chmod go-w {} \; +chown -R root:root ${SRC}/ + +let SIZE=`du -s ${SYSROOT} | sed s'/\s\+.*//'`+8 +pushd ${SYSROOT}/ +tar czf ${DIST}/data.tar.gz [a-z]* +popd +sed s"/SIZE/${SIZE}/" -i ${DEBIAN}/control +pushd ${DEBIAN} +tar czf ${DIST}/control.tar.gz * +popd + +pushd ${DIST}/ +echo 2.0 > ./debian-binary + +find ${DIST}/ -type d -exec chmod 0755 {} \; +find ${DIST}/ -type f -exec chmod go-w {} \; +chown -R root:root ${DIST}/ +ar r ${DIST}/etherpad-1.deb debian-binary control.tar.gz data.tar.gz +popd +rsync -a ${DIST}/etherpad-1.deb ./ diff --git a/bin/buildForWindows.sh b/bin/buildForWindows.sh index c67a3701c..a1e2c7570 100755 --- a/bin/buildForWindows.sh +++ b/bin/buildForWindows.sh @@ -67,4 +67,4 @@ mv etherpad-lite-win.zip $START_FOLDER echo "clean up..." rm -rf /tmp/etherpad-lite-win -echo "Finished. You can find the zip in the Etherpad Lite root folder, it's called etherpad-lite-win.zip" +echo "Finished. You can find the zip in the Etherpad root folder, it's called etherpad-lite-win.zip" diff --git a/bin/convert.js b/bin/convert.js index a2f3bdd45..202ef04e2 100644 --- a/bin/convert.js +++ b/bin/convert.js @@ -337,7 +337,7 @@ function convertPad(padId, callback) var oldName2newName = {}; //replace the authors with generated authors - // we need to do that cause etherpad saves pad local authors, etherpad lite uses them global + // we need to do that cause where the original etherpad saves pad local authors, the new (lite) etherpad uses them global for(var i in apool.numToAttrib) { var key = apool.numToAttrib[i][0]; diff --git a/bin/deb-src/DEBIAN/control b/bin/deb-src/DEBIAN/control new file mode 100644 index 000000000..a516dc6d4 --- /dev/null +++ b/bin/deb-src/DEBIAN/control @@ -0,0 +1,9 @@ +Package: etherpad +Version: 1.3 +Section: base +Priority: optional +Architecture: i386 +Installed-Size: SIZE +Depends: +Maintainer: John McLear +Description: Etherpad is a collaborative editor. diff --git a/bin/deb-src/DEBIAN/postinst b/bin/deb-src/DEBIAN/postinst new file mode 100755 index 000000000..2f483f7e2 --- /dev/null +++ b/bin/deb-src/DEBIAN/postinst @@ -0,0 +1,7 @@ +#!/bin/bash +# Start the services! + +service etherpad start +echo "Give Etherpad about 3 minutes to install dependencies then visit http://localhost:9001 in your web browser" +echo "To stop etherpad type 'service etherpad stop', To restart type 'service etherpad restart'". +rm -f /tmp/etherpad.log /tmp/etherpad.err diff --git a/bin/deb-src/DEBIAN/preinst b/bin/deb-src/DEBIAN/preinst new file mode 100755 index 000000000..e5b5e0b74 --- /dev/null +++ b/bin/deb-src/DEBIAN/preinst @@ -0,0 +1,26 @@ +#!/bin/bash + +# Installs node if it isn't already installed +# +# Don't steamroll over a previously installed node version +# TODO provide a local version of node? + +VER="0.10.4" +ARCH="x86" +if [ `arch | grep 64` ] +then + ARCH="x64" +fi + +# TODO test version +if [ ! -f /usr/local/bin/node ] +then + pushd /tmp + wget -c "http://nodejs.org/dist/v${VER}/node-v${VER}-linux-${ARCH}.tar.gz" + rm -rf /tmp/node-v${VER}-linux-${ARCH} + tar xf node-v${VER}-linux-${ARCH}.tar.gz -C /tmp/ + cp -a /tmp/node-v${VER}-linux-${ARCH}/* /usr/local/ +fi + +# Create Etherpad user +adduser --system etherpad diff --git a/bin/deb-src/DEBIAN/prerm b/bin/deb-src/DEBIAN/prerm new file mode 100755 index 000000000..5e3d0f8a0 --- /dev/null +++ b/bin/deb-src/DEBIAN/prerm @@ -0,0 +1,4 @@ +#!/bin/bash + +# Stop the appserver: +service etherpad stop || true diff --git a/bin/deb-src/sysroot/etc/init/etherpad.conf b/bin/deb-src/sysroot/etc/init/etherpad.conf new file mode 100644 index 000000000..cd6f4541c --- /dev/null +++ b/bin/deb-src/sysroot/etc/init/etherpad.conf @@ -0,0 +1,28 @@ +description "etherpad" + +start on started networking +stop on runlevel [!2345] + +env EPHOME=/opt/etherpad +env EPLOGS=/var/log/etherpad +env EPUSER=etherpad + +respawn + +pre-start script + cd $EPHOME + mkdir $EPLOGS ||true + chown $EPUSER $EPLOGS ||true + chmod 0755 $EPLOGS ||true + chown -R $EPUSER $EPHOME/var ||true + $EPHOME/bin/installDeps.sh >> $EPLOGS/error.log || { stop; exit 1; } +end script + +script + cd $EPHOME/ + exec su -s /bin/sh -c 'exec "$0" "$@"' $EPUSER -- node node_modules/ep_etherpad-lite/node/server.js \ + >> $EPLOGS/access.log \ + 2>> $EPLOGS/error.log + echo "Etherpad is running on http://localhost:9001 - To change settings edit /opt/etherpad/settings.json" + +end script diff --git a/bin/deletePad.js b/bin/deletePad.js new file mode 100644 index 000000000..f7a6d2038 --- /dev/null +++ b/bin/deletePad.js @@ -0,0 +1,63 @@ +/* + A tool for deleting pads from the CLI, because sometimes a brick is required to fix a window. +*/ + +if(process.argv.length != 3) +{ + console.error("Use: node deletePad.js $PADID"); + process.exit(1); +} +//get the padID +var padId = process.argv[2]; + +var db, padManager, pad, settings; +var neededDBValues = ["pad:"+padId]; + +var npm = require("../src/node_modules/npm"); +var async = require("../src/node_modules/async"); + +async.series([ + // load npm + function(callback) { + npm.load({}, function(er) { + if(er) + { + console.error("Could not load NPM: " + er) + process.exit(1); + } + else + { + callback(); + } + }) + }, + // load modules + function(callback) { + settings = require('../src/node/utils/Settings'); + db = require('../src/node/db/DB'); + callback(); + }, + // intallize the database + function (callback) + { + db.init(callback); + }, + // delete the pad and it's links + function (callback) + { + padManager = require('../src/node/db/PadManager'); + + padManager.removePad(padId, function(err){ + callback(err); + }); + callback(); + } +], function (err) +{ + if(err) throw err; + else + { + console.log("Finished deleting padId: "+padId); + process.exit(); + } +}); diff --git a/bin/extractPadData.js b/bin/extractPadData.js index ea00f953a..e3678c4e0 100644 --- a/bin/extractPadData.js +++ b/bin/extractPadData.js @@ -13,8 +13,8 @@ var padId = process.argv[2]; var db, dirty, padManager, pad, settings; var neededDBValues = ["pad:"+padId]; -var npm = require("../src/node_modules/npm"); -var async = require("../src/node_modules/async"); +var npm = require("../node_modules/ep_etherpad-lite/node_modules/npm"); +var async = require("../node_modules/ep_etherpad-lite/node_modules/async"); async.series([ // load npm @@ -33,9 +33,10 @@ async.series([ }, // load modules function(callback) { - settings = require('../src/node/utils/Settings'); - db = require('../src/node/db/DB'); - dirty = require("../src/node_modules/ueberDB/node_modules/dirty")(padId + ".db"); + settings = require('../node_modules/ep_etherpad-lite/node/utils/Settings'); + db = require('../node_modules/ep_etherpad-lite/node/db/DB'); + dirty = require("../node_modules/ep_etherpad-lite/node_modules/ueberDB/node_modules/dirty")(padId + ".db"); + callback(); }, //intallize the database function (callback) @@ -45,7 +46,7 @@ async.series([ //get the pad function (callback) { - padManager = require('../node/db/PadManager'); + padManager = require('../node_modules/ep_etherpad-lite/node/db/PadManager'); padManager.getPad(padId, function(err, _pad) { @@ -82,7 +83,10 @@ async.series([ db.db.db.wrappedDB.get(dbkey, function(err, dbvalue) { if(err) { callback(err); return} - dbvalue=JSON.parse(dbvalue); + + if(dbvalue && typeof dbvalue != 'object'){ + dbvalue=JSON.parse(dbvalue); // if its not json then parse it as json + } dirty.set(dbkey, dbvalue, callback); }); diff --git a/bin/importSqlFile.js b/bin/importSqlFile.js new file mode 100644 index 000000000..6491cbea1 --- /dev/null +++ b/bin/importSqlFile.js @@ -0,0 +1,110 @@ +var startTime = new Date().getTime(); + +require("ep_etherpad-lite/node_modules/npm").load({}, function(er,npm) { + + var fs = require("fs"); + + var ueberDB = require("ep_etherpad-lite/node_modules/ueberDB"); + var settings = require("ep_etherpad-lite/node/utils/Settings"); + var log4js = require('ep_etherpad-lite/node_modules/log4js'); + + var dbWrapperSettings = { + cache: 0, + writeInterval: 100, + json: false // data is already json encoded + }; + var db = new ueberDB.database(settings.dbType, settings.dbSettings, dbWrapperSettings, log4js.getLogger("ueberDB")); + + var sqlFile = process.argv[2]; + + //stop if the settings file is not set + if(!sqlFile) + { + console.error("Use: node importSqlFile.js $SQLFILE"); + process.exit(1); + } + + log("initializing db"); + db.init(function(err) + { + //there was an error while initializing the database, output it and stop + if(err) + { + console.error("ERROR: Problem while initalizing the database"); + console.error(err.stack ? err.stack : err); + process.exit(1); + } + else + { + log("done"); + + log("open output file..."); + var lines = fs.readFileSync(sqlFile, 'utf8').split("\n"); + + var count = lines.length; + var keyNo = 0; + + process.stdout.write("Start importing " + count + " keys...\n"); + lines.forEach(function(l) { + if (l.substr(0, 27) == "REPLACE INTO store VALUES (") { + var pos = l.indexOf("', '"); + var key = l.substr(28, pos - 28); + var value = l.substr(pos + 3); + value = value.substr(0, value.length - 2); + console.log("key: " + key + " val: " + value); + console.log("unval: " + unescape(value)); + db.set(key, unescape(value), null); + keyNo++; + if (keyNo % 1000 == 0) { + process.stdout.write(" " + keyNo + "/" + count + "\n"); + } + } + }); + process.stdout.write("\n"); + process.stdout.write("done. waiting for db to finish transaction. depended on dbms this may take some time...\n"); + + db.doShutdown(function() { + log("finished, imported " + keyNo + " keys."); + process.exit(0); + }); + } + }); +}); + +function log(str) +{ + console.log((new Date().getTime() - startTime)/1000 + "\t" + str); +} + +unescape = function(val) { + // value is a string + if (val.substr(0, 1) == "'") { + val = val.substr(0, val.length - 1).substr(1); + + return val.replace(/\\[0nrbtZ\\'"]/g, function(s) { + switch(s) { + case "\\0": return "\0"; + case "\\n": return "\n"; + case "\\r": return "\r"; + case "\\b": return "\b"; + case "\\t": return "\t"; + case "\\Z": return "\x1a"; + default: return s.substr(1); + } + }); + } + + // value is a boolean or NULL + if (val == 'NULL') { + return null; + } + if (val == 'true') { + return true; + } + if (val == 'false') { + return false; + } + + // value is a number + return val; +}; diff --git a/bin/installDeps.sh b/bin/installDeps.sh index 9763f41ba..84f2e227f 100755 --- a/bin/installDeps.sh +++ b/bin/installDeps.sh @@ -16,7 +16,7 @@ if [ $(uname) = "SunOS" ]; then } fi -#Is wget installed? +#Is curl installed? hash curl > /dev/null 2>&1 || { echo "Please install curl" >&2 exit 1 @@ -44,8 +44,8 @@ fi #check node version NODE_VERSION=$(node --version) NODE_V_MINOR=$(echo $NODE_VERSION | cut -d "." -f 1-2) -if [ ! $NODE_V_MINOR = "v0.8" ] && [ ! $NODE_V_MINOR = "v0.6" ]; then - echo "You're running a wrong version of node, you're using $NODE_VERSION, we need v0.6.x or v0.8.x" >&2 +if [ ! $NODE_V_MINOR = "v0.8" ] && [ ! $NODE_V_MINOR = "v0.10" ] && [ ! $NODE_V_MINOR = "v0.11" ]; then + echo "You're running a wrong version of node, you're using $NODE_VERSION, we need v0.8.x, v0.10.x or v0.11.x" >&2 exit 1 fi diff --git a/bin/installOnWindows.bat b/bin/installOnWindows.bat index f678672b1..862230641 100644 --- a/bin/installOnWindows.bat +++ b/bin/installOnWindows.bat @@ -8,7 +8,7 @@ cmd /C node -e "" || ( echo "Please install node.js ( http://nodejs.org )" && ex echo _ echo Checking node version... -set check_version="if(['6','8'].indexOf(process.version.split('.')[1].toString()) === -1) { console.log('You are running a wrong version of Node. Etherpad Lite requires v0.6.x or v0.8.x'); process.exit(1) }" +set check_version="if(['8','10'].indexOf(process.version.split('.')[1].toString()) === -1) { console.log('You are running a wrong version of Node. Etherpad requires v0.8.x or v0.10.x'); process.exit(1) }" cmd /C node -e %check_version% || exit /B 1 echo _ diff --git a/bin/loadTesting/README b/bin/loadTesting/README index 2246f7ebc..c8ecd71e4 100644 --- a/bin/loadTesting/README +++ b/bin/loadTesting/README @@ -2,7 +2,7 @@ This is the new load testing file: https://bitbucket.org/rbraakman/etherpad-stre BELOW is the original load testing file. -This load tester is extremely useful for testing how many dormant clients can connect to etherpad lite. +This load tester is extremely useful for testing how many dormant clients can connect to etherpad. TODO: Emulate characters being typed into a pad @@ -10,26 +10,26 @@ Emulate characters being typed into a pad HOW TO USE (from @mjd75) proper formatting at: https://github.com/ether/etherpad-lite/issues/360 Server 1: -Installed Node.js (etc), EtherPad Lite and MySQL +Installed Node.js (etc), EtherPad and MySQL Server 2: Installed Xvfb and PhantomJS I installed Xvfb following (roughly) this guide: http://blog.martin-lyness.com/archives/installing-xvfb-on-ubuntu-9-10-karmic-koala - #sudo apt-get install xvfb - #sudo apt-get install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic + #sudo apt-get install xvfb + #sudo apt-get install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic Launched two instances of Xvfb directly from the terminal: - #Xvfb :0 -ac - #Xvfb :1 -ac + #Xvfb :0 -ac + #Xvfb :1 -ac I installed PhantomJS following this guide: http://code.google.com/p/phantomjs/wiki/Installation - #sudo add-apt-repository ppa:jerome-etienne/neoip - #sudo apt-get update - #sudo apt-get install phantomjs + #sudo add-apt-repository ppa:jerome-etienne/neoip + #sudo apt-get update + #sudo apt-get install phantomjs I created a small JavaScript file for PhatomJS to use to control the browser instances: diff --git a/bin/loadTesting/launcher.sh b/bin/loadTesting/launcher.sh index 375b15444..e940f8e0f 100755 --- a/bin/loadTesting/launcher.sh +++ b/bin/loadTesting/launcher.sh @@ -3,7 +3,7 @@ # connect 500 instances to display :0 for i in {1..500} do - echo $i + echo $i echo "Displaying Some shit" DISPLAY=:0 screen -d -m /home/phantomjs/bin/phantomjs loader.js http://10.0.0.55:9001/p/pad2 && sleep 2 done diff --git a/bin/run.sh b/bin/run.sh index 41a8090d2..92ae8d482 100755 --- a/bin/run.sh +++ b/bin/run.sh @@ -11,17 +11,17 @@ fi ignoreRoot=0 for ARG in $* do - if [ $ARG == '--root' ]; then + if [ "$ARG" = "--root" ]; then ignoreRoot=1 fi done #Stop the script if its started as root if [ "$(id -u)" -eq 0 ] && [ $ignoreRoot -eq 0 ]; then - echo "You shouldn't start Etherpad-Lite as root!" - echo "Please type 'Etherpad Lite rocks my socks' or supply the '--root' argument if you still want to start it as root" + echo "You shouldn't start Etherpad as root!" + echo "Please type 'Etherpad rocks my socks' or supply the '--root' argument if you still want to start it as root" read rocks - if [ ! $rocks = "Etherpad Lite rocks my socks" ] + if [ ! $rocks = "Etherpad rocks my socks" ] then echo "Your input was incorrect" exit 1 @@ -33,4 +33,7 @@ bin/installDeps.sh $* || exit 1 #Move to the node folder and start echo "start..." -node node_modules/ep_etherpad-lite/node/server.js $* + +SCRIPTPATH=`pwd -P` +node $SCRIPTPATH/node_modules/ep_etherpad-lite/node/server.js $* + diff --git a/bin/safeRun.sh b/bin/safeRun.sh index b060f5d19..4b3485ba4 100755 --- a/bin/safeRun.sh +++ b/bin/safeRun.sh @@ -16,6 +16,7 @@ TIME_BETWEEN_EMAILS=600 # 10 minutes # DON'T EDIT AFTER THIS LINE LAST_EMAIL_SEND=0 +LOG="$1" #Move to the folder where ep-lite is installed cd `dirname $0` @@ -26,26 +27,27 @@ if [ -d "../bin" ]; then fi #check if a logfile parameter is set -if [ -z "$1" ]; then +if [ -z "${LOG}" ]; then echo "Set a logfile as the first parameter" exit 1 fi +shift while [ 1 ] do #try to touch the file if it doesn't exist - if [ ! -f $1 ]; then - touch $1 || ( echo "Logfile '$1' is not writeable" && exit 1 ) + if [ ! -f ${LOG} ]; then + touch ${LOG} || ( echo "Logfile '${LOG}' is not writeable" && exit 1 ) fi #check if the file is writeable - if [ ! -w $1 ]; then - echo "Logfile '$1' is not writeable" + if [ ! -w ${LOG} ]; then + echo "Logfile '${LOG}' is not writeable" exit 1 fi #start the application - bin/run.sh >>$1 2>>$1 + bin/run.sh $@ >>${LOG} 2>>${LOG} #Send email if [ $ERROR_HANDLING = 1 ]; then @@ -53,13 +55,13 @@ do TIME_SINCE_LAST_SEND=$(($TIME_NOW - $LAST_EMAIL_SEND)) if [ $TIME_SINCE_LAST_SEND -gt $TIME_BETWEEN_EMAILS ]; then - printf "Server was restared at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 $1)" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS + printf "Server was restared at: $(date)\nThe last 50 lines of the log before the error happens:\n $(tail -n 50 ${LOG})" | mail -s "Pad Server was restarted" $EMAIL_ADDRESS LAST_EMAIL_SEND=$TIME_NOW fi fi - echo "RESTART!" >>$1 + echo "RESTART!" >>${LOG} #Sleep 10 seconds before restart sleep 10 diff --git a/doc/api/editorInfo.md b/doc/api/editorInfo.md index 05656bce7..31361a750 100644 --- a/doc/api/editorInfo.md +++ b/doc/api/editorInfo.md @@ -39,6 +39,13 @@ Returns the `rep` object. ## editorInfo.ace_performDocumentApplyAttributesToCharRange(?) ## editorInfo.ace_setAttributeOnSelection(?) ## editorInfo.ace_toggleAttributeOnSelection(?) +## editorInfo.ace_getAttributeOnSelection(attribute) +Returns a boolean if an attribute exists on a selected range. +The attribute should be the string name of the attribute applied to the selection IE subscript +Example usage: Apply the activeButton Class to a button if an attribute is on a highlighted/selected caret position or range. +Example: `call.editorInfo.ace_getAttributeOnSelection("subscript");` // call here is the callstack from aceEditEvent. +See the ep_subscript plugin for an example of this function in action. +Notes: Does not work on first or last character of a line. Suffers from a race condition if called with aceEditEvent. ## editorInfo.ace_performSelectionChange(?) ## editorInfo.ace_doIndentOutdent(?) ## editorInfo.ace_doUndoRedo(?) diff --git a/doc/api/embed_parameters.md b/doc/api/embed_parameters.md index 3100fff9d..dcbe3e5b3 100644 --- a/doc/api/embed_parameters.md +++ b/doc/api/embed_parameters.md @@ -60,3 +60,9 @@ Default: en Example: `lang=ar` (translates the interface into Arabic) +## rtl + * Boolean + +Default: true +Displays pad text from right to left. + diff --git a/doc/api/hooks_client-side.md b/doc/api/hooks_client-side.md index 55d1da000..c0a4227a4 100644 --- a/doc/api/hooks_client-side.md +++ b/doc/api/hooks_client-side.md @@ -126,9 +126,15 @@ Called from: src/static/js/pad.js Things in context: 1. ace - the ace object that is applied to this editor. +2. pad - the pad object of the current pad. There doesn't appear to be any example available of this particular hook being used, but it gets fired after the editor is all set up. +## postTimesliderInit +Called from: src/static/js/timeslider.js + +There doesn't appear to be any example available of this particular hook being used, but it gets fired after the timeslider is all set up. + ## userJoinOrUpdate Called from: src/static/js/pad_userlist.js @@ -138,6 +144,20 @@ Things in context: This hook is called on the client side whenever a user joins or changes. This can be used to create notifications or an alternate user list. +## chatNewMessage +Called from: src/static/js/chat.js + +Things in context: + +1. authorName - The user that wrote this message +2. author - The authorID of the user that wrote the message +2. text - the message text +3. sticky (boolean) - if you want the gritter notification bubble to fade out on its own or just sit there +3. timestamp - the timestamp of the chat message +4. timeStr - the timestamp as a formatted string + +This hook is called on the client side whenever a chat message is received from the server. It can be used to create different notifications for chat messages. + ## collectContentPre Called from: src/static/js/contentcollector.js @@ -242,3 +262,18 @@ This hook is provided to allow whether a given line should be deliniated with mu Multiple authors in one line cause the creation of magic span lines. This might not suit you and now you can disable it and handle your own deliniation. The return value should be either true(disable) or false. + +## aceSetAuthorStyle +Called from: src/static/js/ace2_inner.js + +Things in context: + +1. dynamicCSS - css manger for inner ace +2. outerDynamicCSS - css manager for outer ace +3. parentDynamicCSS - css manager for parent document +4. info - author style info +5. author - author info +6. authorSelector - css selector for author span in inner ace + +This hook is provided to allow author highlight style to be modified. +Registered hooks should return 1 if the plugin handles highlighting. If no plugin returns 1, the core will use the default background-based highlighting. diff --git a/doc/api/http_api.md b/doc/api/http_api.md index 575b2c980..281cc9759 100644 --- a/doc/api/http_api.md +++ b/doc/api/http_api.md @@ -7,7 +7,7 @@ The API gives another web application control of the pads. The basic functions a * grant/forbid access to pads * get/set pad content -The API is designed in a way, so you can reuse your existing user system with their permissions, and map it to etherpad lite. Means: Your web application still has to do authentication, but you can tell etherpad lite via the api, which visitors should get which permissions. This allows etherpad lite to fit into any web application and extend it with real-time functionality. You can embed the pads via an iframe into your website. +The API is designed in a way, so you can reuse your existing user system with their permissions, and map it to Etherpad. Means: Your web application still has to do authentication, but you can tell Etherpad via the api, which visitors should get which permissions. This allows Etherpad to fit into any web application and extend it with real-time functionality. You can embed the pads via an iframe into your website. Take a look at [HTTP API client libraries](https://github.com/ether/etherpad-lite/wiki/HTTP-API-client-libraries) to see if a library in your favorite language. @@ -61,7 +61,9 @@ Portal submits content into new blog post ## Usage ### API version -The latest version is `1.2` +The latest version is `1.2.8` + +The current version can be queried via /api. ### Request Format @@ -101,7 +103,7 @@ Responses are valid JSON in the following format: ### Authentication -Authentication works via a token that is sent with each request as a post parameter. There is a single token per Etherpad-Lite deployment. This token will be random string, generated by Etherpad-Lite at the first start. It will be saved in APIKEY.txt in the root folder of Etherpad Lite. Only Etherpad Lite and the requesting application knows this key. Token management will not be exposed through this API. +Authentication works via a token that is sent with each request as a post parameter. There is a single token per Etherpad deployment. This token will be random string, generated by Etherpad at the first start. It will be saved in APIKEY.txt in the root folder of Etherpad. Only Etherpad and the requesting application knows this key. Token management will not be exposed through this API. ### Node Interoperability @@ -130,7 +132,7 @@ creates a new group #### createGroupIfNotExistsFor(groupMapper) * API >= 1 -this functions helps you to map your application group ids to etherpad lite group ids +this functions helps you to map your application group ids to Etherpad group ids *Example returns:* * `{code: 0, message:"ok", data: {groupID: g.s8oes9dhwrvt0zif}}` @@ -186,7 +188,7 @@ creates a new author #### createAuthorIfNotExistsFor(authorMapper [, name]) * API >= 1 -this functions helps you to map your application author ids to etherpad lite author ids +this functions helps you to map your application author ids to Etherpad author ids *Example returns:* * `{code: 0, message:"ok", data: {authorID: "a.s8oes9dhwrvt0zif"}}` @@ -302,6 +304,66 @@ returns the text of a pad formatted as HTML * `{code: 0, message:"ok", data: {html:"Welcome Text
More Text"}}` * `{code: 1, message:"padID does not exist", data: null}` +#### setHTML(padID, text) + * API >= 1 + +sets the html of a pad + +*Example returns:* + * `{code: 0, message:"ok", data: null}` + * `{code: 1, message:"padID does not exist", data: null}` + * `{code: 1, message:"text too long", data: null}` + +#### getAttributePool(padID) + * API >= 1.2.8 + +returns the attribute pool of a pad + +*Example returns:* + * `{ "code":0, + "message":"ok", + "data": { + "pool":{ + "numToAttrib":{ + "0":["author","a.X4m8bBWJBZJnWGSh"], + "1":["author","a.TotfBPzov54ihMdH"], + "2":["author","a.StiblqrzgeNTbK05"], + "3":["bold","true"] + }, + "attribToNum":{ + "author,a.X4m8bBWJBZJnWGSh":0, + "author,a.TotfBPzov54ihMdH":1, + "author,a.StiblqrzgeNTbK05":2, + "bold,true":3 + }, + "nextNum":4 + } + } + }` + * `{"code":1,"message":"padID does not exist","data":null}` + +#### getRevisionChangeset(padID, [rev]) + * API >= 1.2.8 + +get the changeset at a given revision, or last revision if 'rev' is not defined. + +*Example returns:* + * `{ "code" : 0, + "message" : "ok", + "data" : "Z:1>6b|5+6b$Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http://etherpad.org\n" + }` + * `{"code":1,"message":"padID does not exist","data":null}` + * `{"code":1,"message":"rev is higher than the head revision of the pad","data":null}` + +#### createDiffHTML(padID, startRev, endRev) + * API >= 1.2.7 + +returns an object of diffs from 2 points in a pad + +*Example returns:* + * `{"code":0,"message":"ok","data":{"html":"Welcome to Etherpad!

This pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!

Get involved with Etherpad at http://etherpad.org
aw

","authors":["a.HKIv23mEbachFYfH",""]}}` + * `{"code":4,"message":"no or wrong API Key","data":null}` + ### Chat #### getChatHistory(padID, [start, end]) * API >= 1.2.7 @@ -373,6 +435,24 @@ returns the list of users that are currently editing this pad deletes a pad +*Example returns:* + * `{code: 0, message:"ok", data: null}` + * `{code: 1, message:"padID does not exist", data: null}` + +#### copyPad(sourceID, destinationID[, force=false]) + * API >= 1.2.8 + +copies a pad with full history and chat. If force is true and the destination pad exists, it will be overwritten. + +*Example returns:* + * `{code: 0, message:"ok", data: null}` + * `{code: 1, message:"padID does not exist", data: null}` + +#### movePad(sourceID, destinationID[, force=false]) + * API >= 1.2.8 + +moves a pad. If force is true and the destination pad exists, it will be overwritten. + *Example returns:* * `{code: 0, message:"ok", data: null}` * `{code: 1, message:"padID does not exist", data: null}` @@ -466,4 +546,4 @@ returns ok when the current api token is valid lists all pads on this epl instance *Example returns:* - * `{code: 0, message:"ok", data: ["testPad", "thePadsOfTheOthers"]}` + * `{code: 0, message:"ok", data: {padIDs: ["testPad", "thePadsOfTheOthers"]}}` diff --git a/doc/custom_static.md b/doc/custom_static.md index f646e3ba0..7bb290094 100644 --- a/doc/custom_static.md +++ b/doc/custom_static.md @@ -1,5 +1,5 @@ # Custom static files -Etherpad Lite allows you to include your own static files in the browser, by modifying the files in `static/custom`. +Etherpad allows you to include your own static files in the browser, by modifying the files in `static/custom`. * `index.js` Javascript that'll be run in `/` * `index.css` Stylesheet affecting `/` diff --git a/doc/documentation.md b/doc/documentation.md index 0542c4360..2452ec084 100644 --- a/doc/documentation.md +++ b/doc/documentation.md @@ -2,7 +2,7 @@ -The goal of this documentation is to comprehensively explain Etherpad-Lite, +The goal of this documentation is to comprehensively explain Etherpad, both from a reference as well as a conceptual point of view. Where appropriate, property types, method arguments, and the arguments diff --git a/doc/easysync/README.md b/doc/easysync/README.md index 551487544..326fd81a8 100644 --- a/doc/easysync/README.md +++ b/doc/easysync/README.md @@ -1,2 +1,2 @@ # About this folder -We put all documentations we found about the old Etherpad together in this folder. Most of this is still valid for Etherpad Lite \ No newline at end of file +We put all documentations we found about the original Etherpad together in this folder. Most of this is still valid for the current (node.js based) Etherpad. \ No newline at end of file diff --git a/doc/easysync/easysync-notes.txt b/doc/easysync/easysync-notes.txt index d3b3dc558..72adadd2d 100644 --- a/doc/easysync/easysync-notes.txt +++ b/doc/easysync/easysync-notes.txt @@ -79,14 +79,14 @@ Here are descriptions of the operations, where capital letters are variables: kept MUST be a newline, and the final newline of the document is allowed. "*I" : Apply attribute I from the pool to the following +, =, |+, or |= command. In other words, any number of * ops can come before a +, =, or | but not - between a | and the corresponding + or =. + between a | and the corresponding + or =. If +, text is inserted having this attribute. If =, text is kept but with - the attribute applied as an attribute addition or removal. - Consecutive attributes must be sorted lexically by (key,value) with key - and value taken as strings. It's illegal to have duplicate keys - for (key,value) pairs that apply to the same text. It's illegal to - have an empty value for a key in the case of an insertion (+), the - pair should just be omitted. + the attribute applied as an attribute addition or removal. + Consecutive attributes must be sorted lexically by (key,value) with key + and value taken as strings. It's illegal to have duplicate keys + for (key,value) pairs that apply to the same text. It's illegal to + have an empty value for a key in the case of an insertion (+), the + pair should just be omitted. Characters from the source text that aren't accounted for are assumed to be kept with the same attributes. diff --git a/doc/index.md b/doc/index.md index 5d3022be5..09553f686 100644 --- a/doc/index.md +++ b/doc/index.md @@ -1,4 +1,5 @@ @include documentation +@include stats @include localization @include custom_static @include api/api diff --git a/doc/localization.md b/doc/localization.md index 182197d9f..15c4d59dc 100644 --- a/doc/localization.md +++ b/doc/localization.md @@ -1,5 +1,5 @@ # Localization -Etherpad lite provides a multi-language user interface, that's apart from your users' content, so users from different countries can collaborate on a single document, while still having the user interface displayed in their mother tongue. +Etherpad provides a multi-language user interface, that's apart from your users' content, so users from different countries can collaborate on a single document, while still having the user interface displayed in their mother tongue. ## Translating @@ -19,9 +19,9 @@ Translations will be send back to us regularly and will eventually appear in the `/src/locales` contains files for all supported languages which contain the translated strings. Translation files are simple `*.json` files and look like this: ```json -{ "pad.modals.connected": "Connecté." -, "pad.modals.uderdup": "Ouvrir dans une nouvelle fenêtre." -, "pad.toolbar.unindent.title": "Désindenter" +{ "pad.modals.connected": "Connecté." +, "pad.modals.uderdup": "Ouvrir dans une nouvelle fenêtre." +, "pad.toolbar.unindent.title": "Dèsindenter" , "pad.toolbar.undo.title": "Annuler (Ctrl-Z)" , "timeslider.pageTitle": "{{appTitle}} Curseur temporel" , ... @@ -50,7 +50,7 @@ to: ``` -In the javascript files of your plugin, chaneg all hardcoded messages/strings... +In the javascript files of your plugin, change all hardcoded messages/strings... from: ```js @@ -75,7 +75,7 @@ alert(window._('pad.chat')); *ep_your-plugin/locales/es.json* ``` -{ "ep_your-plugin.h1": "Título 1" +{ "ep_your-plugin.h1": "Título 1" } ``` @@ -83,7 +83,7 @@ Everytime the http server is started, it will auto-detect your messages and merg ### Overwrite core messages -You can overwrite Etherpad Lite's core messages in your plugin's locale files. +You can overwrite Etherpad's core messages in your plugin's locale files. For example, if you want to replace `Chat` with `Notes`, simply add... *ep_your-plugin/locales/en.json* @@ -91,4 +91,4 @@ For example, if you want to replace `Chat` with `Notes`, simply add... { "ep_your-plugin.h1": "Heading 1" , "pad.chat": "Notes" } -``` \ No newline at end of file +``` diff --git a/doc/plugins.md b/doc/plugins.md index 0e0dee008..76c409b17 100644 --- a/doc/plugins.md +++ b/doc/plugins.md @@ -1,5 +1,5 @@ # Plugins -Etherpad-Lite allows you to extend its functionality with plugins. A plugin registers hooks (functions) for certain events (thus certain features) in Etherpad-lite to execute its own functionality based on these events. +Etherpad allows you to extend its functionality with plugins. A plugin registers hooks (functions) for certain events (thus certain features) in Etherpad-lite to execute its own functionality based on these events. Publicly available plugins can be found in the npm registry (see ). Etherpad-lite's naming convention for plugins is to prefix your plugins with `ep_`. So, e.g. it's `ep_flubberworms`. Thus you can install plugins from npm, using `npm install ep_flubberworm` in etherpad-lite's root directory. @@ -104,7 +104,7 @@ Your plugin must also contain a [package definition file](http://npmjs.org/doc/j ``` ## Templates -If your plugin adds or modifies the front end HTML (e.g. adding buttons or changing their functions), you should put the necessary HTML code for such operations in `templates/`, in files of type ".ejs", since Etherpad-Lite uses EJS for HTML templating. See the following link for more information about EJS: . +If your plugin adds or modifies the front end HTML (e.g. adding buttons or changing their functions), you should put the necessary HTML code for such operations in `templates/`, in files of type ".ejs", since Etherpad uses EJS for HTML templating. See the following link for more information about EJS: . ## Writing and running front-end tests for your plugin diff --git a/doc/stats.md b/doc/stats.md new file mode 100644 index 000000000..7da69547d --- /dev/null +++ b/doc/stats.md @@ -0,0 +1,18 @@ +# Statistics +Etherpad keeps track of the goings-on inside the edit machinery. If you'd like to have a look at this, just point your browser to `/stats`. + +We currently measure: + + - totalUsers (counter) + - connects (meter) + - disconnects (meter) + - pendingEdits (counter) + - edits (timer) + - failedChangesets (meter) + - httpRequests (timer) + - http500 (meter) + - memoryUsage (gauge) + +Under the hood, we are happy to rely on [measured](https://github.com/felixge/node-measured) for all our metrics needs. + +To modify or simply access our stats in your plugin, simply `require('ep_etherpad-lite/stats')` which is a `measured.Collection`. \ No newline at end of file diff --git a/doc/template.html b/doc/template.html index b91f3c166..267063277 100644 --- a/doc/template.html +++ b/doc/template.html @@ -2,12 +2,12 @@ - __SECTION__ - Etherpad Lite v__VERSION__ Manual & Documentation + __SECTION__ - Etherpad v__VERSION__ Manual & Documentation
diff --git a/settings.json.template b/settings.json.template index 4b18d7800..43aa1613d 100644 --- a/settings.json.template +++ b/settings.json.template @@ -5,7 +5,7 @@ */ { // Name your instance! - "title": "Etherpad Lite", + "title": "Etherpad", // favicon default name // alternatively, set up a fully specified Url to your own favicon @@ -15,6 +15,10 @@ "ip": "0.0.0.0", "port" : 9001, + // Session Key, used for reconnecting user sessions + // Set this to a secure string at least 10 characters long. Do not share this value. + "sessionKey" : "", + /* // Node native SSL support // this is disabled by default @@ -47,15 +51,8 @@ }, */ - //Logging configuration. See log4js documentation for further information - // https://github.com/nomiddlename/log4js-node - "logconfig" : - { "appenders": [ - { "type": "console" } - ] }, - //the default text of a pad - "defaultPadText" : "Welcome to Etherpad Lite!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n", + "defaultPadText" : "Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http:\/\/etherpad.org\n", /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */ "requireSession" : false, @@ -81,7 +78,13 @@ /* Require authorization by a module, or a user with is_admin set, see below. */ "requireAuthorization": false, - + + /*when you use NginX or another proxy/ load-balancer set this to true*/ + "trustProxy": false, + + /* Privacy: disable IP logging */ + "disableIPlogging": false, + /* Users for basic authentication. is_admin = true gives access to /admin. If you do not uncomment this, /admin will not be available! */ /* @@ -97,9 +100,51 @@ }, */ + // restrict socket.io transport methods + "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"], + /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */ "loglevel": "INFO", - - // restrict socket.io transport methods - "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"] + + //Logging configuration. See log4js documentation for further information + // https://github.com/nomiddlename/log4js-node + // You can add as many appenders as you want here: + "logconfig" : + { "appenders": [ + { "type": "console" + //, "category": "access"// only logs pad access + } + /* + , { "type": "file" + , "filename": "your-log-file-here.log" + , "maxLogSize": 1024 + , "backups": 3 // how many log files there're gonna be at max + //, "category": "test" // only log a specific category + }*/ + /* + , { "type": "logLevelFilter" + , "level": "warn" // filters out all log messages that have a lower level than "error" + , "appender": + { Use whatever appender you want here } + }*/ + /* + , { "type": "logLevelFilter" + , "level": "error" // filters out all log messages that have a lower level than "error" + , "appender": + { "type": "smtp" + , "subject": "An error occured in your EPL instance!" + , "recipients": "bar@blurdybloop.com, baz@blurdybloop.com" + , "sendInterval": 60*5 // in secs -- will buffer log messages; set to 0 to send a mail for every message + , "transport": "SMTP", "SMTP": { // see https://github.com/andris9/Nodemailer#possible-transport-methods + "host": "smtp.example.com", "port": 465, + "secureConnection": true, + "auth": { + "user": "foo@example.com", + "pass": "bar_foo" + } + } + } + }*/ + ] + } } diff --git a/src/ep.json b/src/ep.json index 89c8964aa..eeb5c6409 100644 --- a/src/ep.json +++ b/src/ep.json @@ -23,6 +23,7 @@ { "name": "adminsettings", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/adminsettings:expressCreateServer", "socketio": "ep_etherpad-lite/node/hooks/express/adminsettings:socketio" } - } + }, + { "name": "swagger", "hooks": { "expressCreateServer": "ep_etherpad-lite/node/hooks/express/swagger:expressCreateServer" } } ] } diff --git a/src/locales/af.json b/src/locales/af.json index 979a823d2..70a6b0110 100644 --- a/src/locales/af.json +++ b/src/locales/af.json @@ -1,66 +1,65 @@ { - "@metadata": { - "authors": [ - "Naudefj" - ] - }, - "index.newPad": "Nuwe pad", - "index.createOpenPad": "of skep\/open 'n pad met die naam:", - "pad.toolbar.bold.title": "Vet (Ctrl-B)", - "pad.toolbar.italic.title": "Kursief (Ctrl-I)", - "pad.toolbar.underline.title": "Onderstreep (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Deurgehaal", - "pad.toolbar.ol.title": "Geordende lys", - "pad.toolbar.ul.title": "Ongeordende lys", - "pad.toolbar.indent.title": "Indenteer", - "pad.toolbar.unindent.title": "Verklein indentering", - "pad.toolbar.undo.title": "Ongedaan maak (Ctrl-Z)", - "pad.toolbar.redo.title": "Herdoen (Ctrl-Y)", - "pad.toolbar.settings.title": "Voorkeure", - "pad.colorpicker.save": "Stoor", - "pad.colorpicker.cancel": "Kanselleer", - "pad.loading": "Laai...", - "pad.settings.myView": "My oorsig", - "pad.settings.fontType.normal": "Normaal", - "pad.settings.fontType.monospaced": "Monospasie", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.modals.userdup.advice": "Maak weer 'n verbinding as u die venster wil gebruik.", - "pad.modals.unauth": "Nie toegestaan", - "pad.modals.looping": "Verbinding verbreek.", - "pad.modals.deleted": "Geskrap.", - "pad.share": "Deel die pad", - "pad.share.readonly": "Lees-alleen", - "pad.share.link": "Skakel", - "pad.share.emebdcode": "Inbed URL", - "pad.chat": "Klets", - "pad.chat.title": "Maak kletsblad vir die pad oop", - "timeslider.toolbar.returnbutton": "Terug na pad", - "timeslider.toolbar.authors": "Outeurs:", - "timeslider.toolbar.authorsList": "Geen outeurs", - "timeslider.exportCurrent": "Huidige weergawe eksporteer as:", - "timeslider.version": "Weergawe {{version}}", - "timeslider.saved": "Gestoor op {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Januarie", - "timeslider.month.february": "Februarie", - "timeslider.month.march": "Maart", - "timeslider.month.april": "April", - "timeslider.month.may": "Mei", - "timeslider.month.june": "Junie", - "timeslider.month.july": "Julie", - "timeslider.month.august": "Augustus", - "timeslider.month.september": "September", - "timeslider.month.october": "Oktober", - "timeslider.month.november": "November", - "timeslider.month.december": "Desember", - "pad.userlist.entername": "Verskaf u naam", - "pad.userlist.unnamed": "sonder naam", - "pad.userlist.guest": "Gas", - "pad.userlist.deny": "Keur af", - "pad.userlist.approve": "Keur goed", - "pad.impexp.importbutton": "Voer nou in", - "pad.impexp.importing": "Besig met invoer...", - "pad.impexp.importfailed": "Invoer het gefaal" + "@metadata": { + "authors": [ + "Naudefj" + ] + }, + "index.newPad": "Nuwe pad", + "index.createOpenPad": "of skep/open 'n pad met die naam:", + "pad.toolbar.bold.title": "Vet (Ctrl-B)", + "pad.toolbar.italic.title": "Kursief (Ctrl-I)", + "pad.toolbar.underline.title": "Onderstreep (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Deurgehaal", + "pad.toolbar.ol.title": "Geordende lys", + "pad.toolbar.ul.title": "Ongeordende lys", + "pad.toolbar.indent.title": "Indenteer", + "pad.toolbar.unindent.title": "Verklein indentering", + "pad.toolbar.undo.title": "Ongedaan maak (Ctrl-Z)", + "pad.toolbar.redo.title": "Herdoen (Ctrl-Y)", + "pad.toolbar.settings.title": "Voorkeure", + "pad.colorpicker.save": "Stoor", + "pad.colorpicker.cancel": "Kanselleer", + "pad.loading": "Laai...", + "pad.settings.myView": "My oorsig", + "pad.settings.fontType.normal": "Normaal", + "pad.settings.fontType.monospaced": "Monospasie", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.userdup.advice": "Maak weer 'n verbinding as u die venster wil gebruik.", + "pad.modals.unauth": "Nie toegestaan", + "pad.modals.deleted": "Geskrap.", + "pad.share": "Deel die pad", + "pad.share.readonly": "Lees-alleen", + "pad.share.link": "Skakel", + "pad.share.emebdcode": "Inbed URL", + "pad.chat": "Klets", + "pad.chat.title": "Maak kletsblad vir die pad oop", + "timeslider.toolbar.returnbutton": "Terug na pad", + "timeslider.toolbar.authors": "Outeurs:", + "timeslider.toolbar.authorsList": "Geen outeurs", + "timeslider.exportCurrent": "Huidige weergawe eksporteer as:", + "timeslider.version": "Weergawe {{version}}", + "timeslider.saved": "Gestoor op {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januarie", + "timeslider.month.february": "Februarie", + "timeslider.month.march": "Maart", + "timeslider.month.april": "April", + "timeslider.month.may": "Mei", + "timeslider.month.june": "Junie", + "timeslider.month.july": "Julie", + "timeslider.month.august": "Augustus", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Desember", + "pad.userlist.entername": "Verskaf u naam", + "pad.userlist.unnamed": "sonder naam", + "pad.userlist.guest": "Gas", + "pad.userlist.deny": "Keur af", + "pad.userlist.approve": "Keur goed", + "pad.impexp.importbutton": "Voer nou in", + "pad.impexp.importing": "Besig met invoer...", + "pad.impexp.importfailed": "Invoer het gefaal" } \ No newline at end of file diff --git a/src/locales/ar.json b/src/locales/ar.json index be0e7457e..81c78f346 100644 --- a/src/locales/ar.json +++ b/src/locales/ar.json @@ -1,77 +1,105 @@ { - "@metadata": { - "authors": [ - "Ali1", - "Tux-tn" - ] - }, - "pad.toolbar.bold.title": "\u0633\u0645\u064a\u0643 (Ctrl-B)", - "pad.toolbar.italic.title": "\u0645\u0627\u0626\u0644 (Ctrl-I)", - "pad.toolbar.underline.title": "\u062a\u0633\u0637\u064a\u0631 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u0634\u0637\u0628", - "pad.toolbar.ol.title": "\u0642\u0627\u0626\u0645\u0629 \u0645\u0631\u062a\u0628\u0629", - "pad.toolbar.ul.title": "\u0642\u0627\u0626\u0645\u0629 \u063a\u064a\u0631 \u0645\u0631\u062a\u0628\u0629", - "pad.toolbar.indent.title": "\u0625\u0632\u0627\u062d\u0629", - "pad.toolbar.unindent.title": "\u062d\u0630\u0641 \u0627\u0644\u0625\u0632\u0627\u062d\u0629", - "pad.toolbar.undo.title": "\u0641\u0643 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u062a\u0643\u0631\u0627\u0631 (Ctrl-Y)", - "pad.toolbar.import_export.title": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f\/\u062a\u0635\u062f\u064a\u0631 \u0645\u0646\/\u0625\u0644\u0649 \u062a\u0646\u0633\u064a\u0642\u0627\u062a \u0645\u0644\u0641\u0627\u062a \u0645\u062e\u062a\u0644\u0641\u0629", - "pad.toolbar.timeslider.title": "\u0645\u062a\u0635\u0641\u062d \u0627\u0644\u062a\u0627\u0631\u064a\u062e", - "pad.toolbar.savedRevision.title": "\u0627\u0644\u062a\u0646\u0642\u064a\u062d\u0627\u062a \u0627\u0644\u0645\u062d\u0641\u0648\u0638\u0629", - "pad.toolbar.settings.title": "\u0627\u0644\u0625\u0639\u062f\u0627\u062f\u0627\u062a", - "pad.colorpicker.save": "\u062a\u0633\u062c\u064a\u0644", - "pad.colorpicker.cancel": "\u0625\u0644\u063a\u0627\u0621", - "pad.loading": "\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644...", - "pad.settings.stickychat": "\u0627\u0644\u062f\u0631\u062f\u0634\u0629 \u062f\u0627\u0626\u0645\u0627 \u0639\u0644\u0649 \u0627\u0644\u0634\u0627\u0634\u0629", - "pad.settings.linenocheck": "\u0623\u0631\u0642\u0627\u0645 \u0627\u0644\u0623\u0633\u0637\u0631", - "pad.settings.fontType": "\u0646\u0648\u0639 \u0627\u0644\u062e\u0637:", - "pad.settings.fontType.normal": "\u0639\u0627\u062f\u064a", - "pad.settings.fontType.monospaced": "\u062b\u0627\u0628\u062a \u0627\u0644\u0639\u0631\u0636", - "pad.settings.language": "\u0627\u0644\u0644\u063a\u0629:", - "pad.importExport.import_export": "\u0627\u0633\u062a\u064a\u0631\u0627\u062f\/\u062a\u0635\u062f\u064a\u0631", - "pad.importExport.import": "\u062a\u062d\u0645\u064a\u0644 \u0623\u064a \u0645\u0644\u0641 \u0646\u0635\u064a \u0623\u0648 \u0648\u062b\u064a\u0642\u0629", - "pad.importExport.importSuccessful": "\u0646\u0627\u062c\u062d!", - "pad.importExport.exporthtml": "\u0625\u062a\u0634 \u062a\u064a \u0625\u0645 \u0625\u0644", - "pad.importExport.exportplain": "\u0646\u0635 \u0639\u0627\u062f\u064a", - "pad.importExport.exportword": "\u0645\u0627\u064a\u0643\u0631\u0648\u0633\u0648\u0641\u062a \u0648\u0648\u0631\u062f", - "pad.importExport.exportpdf": "\u0635\u064a\u063a\u0629 \u0627\u0644\u0645\u0633\u062a\u0646\u062f\u0627\u062a \u0627\u0644\u0645\u062d\u0645\u0648\u0644\u0629", - "pad.importExport.exportopen": "ODF (\u0646\u0633\u0642 \u0627\u0644\u0645\u0633\u062a\u0646\u062f \u0627\u0644\u0645\u0641\u062a\u0648\u062d)", - "pad.importExport.exportdokuwiki": "\u062f\u0648\u06a9\u0648\u0648\u064a\u0643\u064a", - "pad.modals.connected": "\u0645\u062a\u0635\u0644.", - "pad.modals.forcereconnect": "\u0641\u0631\u0636 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0627\u062a\u0635\u0627\u0644", - "pad.modals.unauth": "\u063a\u064a\u0631 \u0645\u062e\u0648\u0644", - "pad.modals.looping": "\u062a\u0645 \u0642\u0637\u0639 \u0627\u0644\u0627\u062a\u0635\u0627\u0644.", - "pad.modals.initsocketfail": "\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0648\u0635\u0648\u0644 \u0625\u0644\u0649 \u0627\u0644\u062e\u0627\u062f\u0645", - "pad.modals.initsocketfail.explanation": "\u062a\u0639\u0630\u0631 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u062e\u0627\u062f\u0645 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629.", - "pad.modals.slowcommit": "\u062a\u0645 \u0642\u0637\u0639 \u0627\u0644\u0627\u062a\u0635\u0627\u0644.", - "pad.modals.slowcommit.explanation": "\u0627\u0644\u062e\u0627\u062f\u0645 \u0644\u0627 \u064a\u0633\u062a\u062c\u064a\u0628.", - "pad.modals.slowcommit.cause": "\u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0647\u0630\u0627 \u0628\u0633\u0628\u0628 \u0645\u0634\u0627\u0643\u0644 \u0641\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u0634\u0628\u0643\u0629.", - "pad.modals.deleted": "\u0645\u062d\u0630\u0648\u0641.", - "pad.modals.disconnected": "\u0644\u0645 \u062a\u0639\u062f \u0645\u062a\u0651\u0635\u0644.", - "pad.modals.disconnected.explanation": "\u062a\u0645 \u0641\u0642\u062f\u0627\u0646 \u0627\u0644\u0625\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u0627\u062f\u0645", - "pad.modals.disconnected.cause": "\u0642\u062f \u064a\u0643\u0648\u0646 \u0627\u0644\u062e\u0627\u062f\u0645 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631. \u0627\u0644\u0631\u062c\u0627\u0621 \u0625\u0639\u0644\u0627\u0645\u0646\u0627 \u0625\u0630\u0627 \u062a\u0643\u0631\u0631 \u0647\u0630\u0627.", - "pad.share.readonly": "\u0644\u0644\u0642\u0631\u0627\u0621\u0629 \u0641\u0642\u0637", - "pad.share.link": "\u0631\u0627\u0628\u0637", - "pad.chat": "\u062f\u0631\u062f\u0634\u0629", - "timeslider.toolbar.authors": "\u0627\u0644\u0645\u0624\u0644\u0641\u0648\u0646:", - "timeslider.toolbar.authorsList": "\u0628\u062f\u0648\u0646 \u0645\u0624\u0644\u0641\u064a\u0646", - "timeslider.exportCurrent": "\u062a\u0635\u062f\u064a\u0631 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u0643:", - "timeslider.version": "\u0625\u0635\u062f\u0627\u0631 {{version}}", - "timeslider.month.january": "\u064a\u0646\u0627\u064a\u0631", - "timeslider.month.february": "\u0641\u0628\u0631\u0627\u064a\u0631", - "timeslider.month.march": "\u0645\u0627\u0631\u0633", - "timeslider.month.april": "\u0623\u0628\u0631\u064a\u0644", - "timeslider.month.may": "\u0645\u0627\u064a\u0648", - "timeslider.month.june": "\u064a\u0648\u0646\u064a\u0648", - "timeslider.month.july": "\u064a\u0648\u0644\u064a\u0648", - "timeslider.month.august": "\u0623\u063a\u0633\u0637\u0633", - "timeslider.month.september": "\u0633\u0628\u062a\u0645\u0628\u0631", - "timeslider.month.october": "\u0623\u0643\u062a\u0648\u0628\u0631", - "timeslider.month.november": "\u0646\u0648\u0641\u0645\u0628\u0631", - "timeslider.month.december": "\u062f\u064a\u0633\u0645\u0628\u0631", - "pad.userlist.entername": "\u0625\u062f\u062e\u0644 \u0627\u0633\u0645\u0643", - "pad.userlist.unnamed": "\u063a\u064a\u0631 \u0645\u0633\u0645\u0649", - "pad.userlist.guest": "\u0636\u064a\u0641", - "pad.userlist.deny": "\u0631\u0641\u0636", - "pad.userlist.approve": "\u0645\u0648\u0627\u0641\u0642\u0629" + "@metadata": { + "authors": [ + "Ali1", + "Tux-tn" + ] + }, + "index.newPad": "باد جديد", + "index.createOpenPad": "أو صنع/ÙØªØ­ باد بوضع إسمه:", + "pad.toolbar.bold.title": "سميك (Ctrl-B)", + "pad.toolbar.italic.title": "مائل (Ctrl-I)", + "pad.toolbar.underline.title": "تسطير (Ctrl-U)", + "pad.toolbar.strikethrough.title": "شطب", + "pad.toolbar.ol.title": "قائمة مرتبة", + "pad.toolbar.ul.title": "قائمة غير مرتبة", + "pad.toolbar.indent.title": "إزاحة", + "pad.toolbar.unindent.title": "حذ٠الإزاحة", + "pad.toolbar.undo.title": "ÙÙƒ (Ctrl-Z)", + "pad.toolbar.redo.title": "تكرار (Ctrl-Y)", + "pad.toolbar.import_export.title": "استيراد/تصدير من/إلى تنسيقات Ù…Ù„ÙØ§Øª Ù…Ø®ØªÙ„ÙØ©", + "pad.toolbar.timeslider.title": "Ù…ØªØµÙØ­ التاريخ", + "pad.toolbar.savedRevision.title": "Ø­ÙØ¸ المراجعة", + "pad.toolbar.settings.title": "الإعدادات", + "pad.toolbar.embed.title": "تبادل Ùˆ تضمين هذا الباد", + "pad.toolbar.showusers.title": "عرض المستخدمين على هذا الباد", + "pad.colorpicker.save": "تسجيل", + "pad.colorpicker.cancel": "إلغاء", + "pad.loading": "جاري التحميل...", + "pad.passwordRequired": "تحتاج إلى كلمة مرور للوصول إلى هذا الباد", + "pad.permissionDenied": "ليس لديك إذن لدخول هذا الباد", + "pad.wrongPassword": "كانت كلمة المرور خاطئة", + "pad.settings.padSettings": "إعدادات الباد", + "pad.settings.myView": "رؤيتي", + "pad.settings.stickychat": "الدردشة دائما على الشاشة", + "pad.settings.colorcheck": "ألوان التأليÙ", + "pad.settings.linenocheck": "أرقام الأسطر", + "pad.settings.rtlcheck": "قراءة المحتويات من اليمين إلى اليسار؟", + "pad.settings.fontType": "نوع الخط:", + "pad.settings.fontType.normal": "عادي", + "pad.settings.fontType.monospaced": "ثابت العرض", + "pad.settings.globalView": "الرؤية الشاملة", + "pad.settings.language": "اللغة:", + "pad.importExport.import_export": "استيراد/تصدير", + "pad.importExport.import": "تحميل أي مل٠نصي أو وثيقة", + "pad.importExport.importSuccessful": "ناجح!", + "pad.importExport.export": "تصدير الباد الحالي Ø¨ØµÙØ©:", + "pad.importExport.exporthtml": "إتش تي إم إل", + "pad.importExport.exportplain": "نص عادي", + "pad.importExport.exportword": "Ù…Ø§ÙŠÙƒØ±ÙˆØ³ÙˆÙØª وورد", + "pad.importExport.exportpdf": "صيغة المستندات المحمولة", + "pad.importExport.exportopen": "ODF (نسق المستند Ø§Ù„Ù…ÙØªÙˆØ­)", + "pad.importExport.exportdokuwiki": "دوکوويكي", + "pad.modals.connected": "متصل.", + "pad.modals.reconnecting": "إعادة الاتصال ببادك", + "pad.modals.forcereconnect": "ÙØ±Ø¶ إعادة الاتصال", + "pad.modals.userdup": "Ù…ÙØªÙˆØ­ ÙÙŠ Ù†Ø§ÙØ°Ø© أخرى", + "pad.modals.userdup.explanation": "يبدو أن هذا الباد تم ÙØªØ­Ù‡ ÙÙŠ أكثر من Ù†Ø§ÙØ°Ø© Ù…ØªØµÙØ­ ÙÙŠ هذا الحاسوب.", + "pad.modals.userdup.advice": "إعادة الاتصال لإستعمال هذه Ø§Ù„Ù†Ø§ÙØ°Ø© بدلاً من الاخرى.", + "pad.modals.unauth": "غير مخول", + "pad.modals.initsocketfail": "لا يمكن الوصول إلى الخادم", + "pad.modals.initsocketfail.explanation": "تعذر الاتصال بخادم المزامنة.", + "pad.modals.slowcommit.explanation": "الخادم لا يستجيب.", + "pad.modals.slowcommit.cause": "يمكن أن يكون هذا بسبب مشاكل ÙÙŠ الاتصال بالشبكة.", + "pad.modals.deleted": "محذوÙ.", + "pad.modals.deleted.explanation": "تمت إزالة هذا الباد", + "pad.modals.disconnected": "لم تعد متّصل.", + "pad.modals.disconnected.explanation": "تم Ùقدان الإتصال بالخادم", + "pad.modals.disconnected.cause": "قد يكون الخادم غير Ù…ØªÙˆÙØ±. الرجاء إعلامنا إذا تكرر هذا.", + "pad.share.readonly": "للقراءة Ùقط", + "pad.share.link": "رابط", + "pad.share.emebdcode": "URL للتضمين", + "pad.chat": "دردشة", + "pad.chat.title": "ÙØªØ­ الدردشة لهذا الباد", + "pad.chat.loadmessages": "تحميل المزيد من الرسائل", + "timeslider.toolbar.returnbutton": "العودة إلى الباد", + "timeslider.toolbar.authors": "المؤلÙون:", + "timeslider.toolbar.authorsList": "بدون مؤلÙين", + "timeslider.toolbar.exportlink.title": "تصدير", + "timeslider.exportCurrent": "تصدير النسخة الحالية Ùƒ:", + "timeslider.version": "إصدار {{version}}", + "timeslider.saved": "محÙوظ {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "يناير", + "timeslider.month.february": "ÙØ¨Ø±Ø§ÙŠØ±", + "timeslider.month.march": "مارس", + "timeslider.month.april": "أبريل", + "timeslider.month.may": "مايو", + "timeslider.month.june": "يونيو", + "timeslider.month.july": "يوليو", + "timeslider.month.august": "أغسطس", + "timeslider.month.september": "سبتمبر", + "timeslider.month.october": "أكتوبر", + "timeslider.month.november": "نوÙمبر", + "timeslider.month.december": "ديسمبر", + "pad.userlist.entername": "إدخل اسمك", + "pad.userlist.unnamed": "غير مسمى", + "pad.userlist.guest": "ضيÙ", + "pad.userlist.deny": "Ø±ÙØ¶", + "pad.userlist.approve": "مواÙقة", + "pad.impexp.importbutton": "الاستيراد الآن", + "pad.impexp.importing": "الاستيراد...", + "pad.impexp.uploadFailed": "ÙØ´Ù„ التحميل، الرجاء المحاولة مرة أخرى", + "pad.impexp.importfailed": "ÙØ´Ù„ الاستيراد", + "pad.impexp.copypaste": "الرجاء نسخ/لصق" } \ No newline at end of file diff --git a/src/locales/ast.json b/src/locales/ast.json index 7beb706ad..c02790d9b 100644 --- a/src/locales/ast.json +++ b/src/locales/ast.json @@ -1,120 +1,122 @@ { - "@metadata": { - "authors": { - "1": "Xuacu" - } - }, - "index.newPad": "Nuevu bloc", - "index.createOpenPad": "o crear\/abrir un bloc col nome:", - "pad.toolbar.bold.title": "Negrina (Ctrl-B)", - "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", - "pad.toolbar.underline.title": "Sorray\u00e1u (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Tach\u00e1u", - "pad.toolbar.ol.title": "Llista ordenada", - "pad.toolbar.ul.title": "Llista ensin ordenar", - "pad.toolbar.indent.title": "Sangr\u00eda", - "pad.toolbar.unindent.title": "Sangr\u00eda inversa", - "pad.toolbar.undo.title": "Desfacer (Ctrl-Z)", - "pad.toolbar.redo.title": "Refacer (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Llimpiar los colores d'autor\u00eda", - "pad.toolbar.import_export.title": "Importar\/Esportar ente distintos formatos de ficheru", - "pad.toolbar.timeslider.title": "Eslizador de tiempu", - "pad.toolbar.savedRevision.title": "Revisiones guardaes", - "pad.toolbar.settings.title": "Configuraci\u00f3n", - "pad.toolbar.embed.title": "Incrustar esti bloc", - "pad.toolbar.showusers.title": "Amosar los usuarios d'esti bloc", - "pad.colorpicker.save": "Guardar", - "pad.colorpicker.cancel": "Encaboxar", - "pad.loading": "Cargando...", - "pad.passwordRequired": "Necesites una contrase\u00f1a pa entrar a esti bloc", - "pad.permissionDenied": "Nun tienes permisu pa entrar a esti bloc", - "pad.wrongPassword": "La contrase\u00f1a era incorreuta", - "pad.settings.padSettings": "Configuraci\u00f3n del bloc", - "pad.settings.myView": "la mio vista", - "pad.settings.stickychat": "Alderique en pantalla siempres", - "pad.settings.colorcheck": "Colores d'autor\u00eda", - "pad.settings.linenocheck": "N\u00famberos de llinia", - "pad.settings.fontType": "Tipograf\u00eda:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monoespaciada", - "pad.settings.globalView": "Vista global", - "pad.settings.language": "Llingua:", - "pad.importExport.import_export": "Importar\/Esportar", - "pad.importExport.import": "Xubir cualquier ficheru o documentu de testu", - "pad.importExport.importSuccessful": "\u00a1Correuto!", - "pad.importExport.export": "Esportar el bloc actual como:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Testu simple", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "S\u00f3lo se pue importar dende los formatos de testu planu o html. Pa carauter\u00edstiques d'importaci\u00f3n m\u00e1s avanzaes instala abiword<\/a>.", - "pad.modals.connected": "Coneut\u00e1u.", - "pad.modals.reconnecting": "Reconeutando col to bloc...", - "pad.modals.forcereconnect": "Forzar la reconex\u00f3n", - "pad.modals.userdup": "Abiertu n'otra ventana", - "pad.modals.userdup.explanation": "Esti bloc paez que ta abiertu en m\u00e1s d'una ventana del navegador d'esti ordenador.", - "pad.modals.userdup.advice": "Reconeutar pa usar esta ventana.", - "pad.modals.unauth": "Non autoriz\u00e1u.", - "pad.modals.unauth.explanation": "Los tos permisos camudaron mientres vies esta p\u00e1xina. Intenta volver a coneutar.", - "pad.modals.looping": "Desconeut\u00e1u.", - "pad.modals.looping.explanation": "Hai problemes de comunicaci\u00f3n col sirvidor de sincronizaci\u00f3n.", - "pad.modals.looping.cause": "Pues tar coneut\u00e1u per un torgafueos o un proxy incompatibles.", - "pad.modals.initsocketfail": "Sirvidor incalcanzable.", - "pad.modals.initsocketfail.explanation": "Nun se pudo coneutar col sirvidor de sincronizaci\u00f3n.", - "pad.modals.initsocketfail.cause": "Probablemente ye por aciu d'un problema col navegador o cola to conex\u00f3n a internet.", - "pad.modals.slowcommit": "Desconeut\u00e1u.", - "pad.modals.slowcommit.explanation": "El sirvidor nun respuende.", - "pad.modals.slowcommit.cause": "Pue ser por problemes de coneutivid\u00e1 de la rede.", - "pad.modals.deleted": "Desanici\u00e1u", - "pad.modals.deleted.explanation": "Esti bloc se desanici\u00f3.", - "pad.modals.disconnected": "Te desconeutasti.", - "pad.modals.disconnected.explanation": "Perdi\u00f3se la conex\u00f3n col sirvidor", - "pad.modals.disconnected.cause": "El sirvidor podr\u00eda nun tar disponible. Por favor, avisanos si sigue pasando esto.", - "pad.share": "Compartir esti bloc", - "pad.share.readonly": "S\u00f3lo llectura", - "pad.share.link": "Enllaz", - "pad.share.emebdcode": "Incrustar URL", - "pad.chat": "Chat", - "pad.chat.title": "Abrir el chat d'esti bloc.", - "pad.chat.loadmessages": "Cargar m\u00e1s mensaxes", - "timeslider.pageTitle": "Eslizador de tiempu de {{appTitle}}", - "timeslider.toolbar.returnbutton": "Tornar al bloc", - "timeslider.toolbar.authors": "Autores:", - "timeslider.toolbar.authorsList": "Nun hai autores", - "timeslider.toolbar.exportlink.title": "Esportar", - "timeslider.exportCurrent": "Esportar la versi\u00f3n actual como:", - "timeslider.version": "Versi\u00f3n {{version}}", - "timeslider.saved": "Guard\u00e1u el {{day}} de {{month}} de {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "de xineru", - "timeslider.month.february": "de febreru", - "timeslider.month.march": "de marzu", - "timeslider.month.april": "d'abril", - "timeslider.month.may": "de mayu", - "timeslider.month.june": "de xunu", - "timeslider.month.july": "de xunetu", - "timeslider.month.august": "d'agostu", - "timeslider.month.september": "de setiembre", - "timeslider.month.october": "d'ochobre", - "timeslider.month.november": "de payares", - "timeslider.month.december": "d'avientu", - "timeslider.unnamedauthor": "{{num}} autor an\u00f3nimu", - "timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos", - "pad.savedrevs.marked": "Esta revisi\u00f3n marcose como revisi\u00f3n guardada", - "pad.userlist.entername": "Escribi'l to nome", - "pad.userlist.unnamed": "ensin nome", - "pad.userlist.guest": "Invit\u00e1u", - "pad.userlist.deny": "Refugar", - "pad.userlist.approve": "Aprobar", - "pad.editbar.clearcolors": "\u00bfLlimpiar los colores d'autor\u00eda nel documentu ensembre?", - "pad.impexp.importbutton": "Importar agora", - "pad.impexp.importing": "Importando...", - "pad.impexp.confirmimport": "La importaci\u00f3n d'un ficheru sustituir\u00e1'l testu actual del bloc. \u00bfSeguro que quies siguir?", - "pad.impexp.convertFailed": "Nun pudimos importar esti ficheru. Por favor,usa otru formatu de ficheru diferente o copia y pega manualmente.", - "pad.impexp.uploadFailed": "Fall\u00f3 la carga del ficheru, intentalo otra vuelta", - "pad.impexp.importfailed": "Fall\u00f3 la importaci\u00f3n", - "pad.impexp.copypaste": "Por favor, copia y apega", - "pad.impexp.exportdisabled": "La esportaci\u00f3n en formatu {{type}} ta desactivada. Por favor, comunica col alministrador del sistema pa m\u00e1s detalles." + "@metadata": { + "authors": { + "1": "Xuacu" + } + }, + "index.newPad": "Nuevu bloc", + "index.createOpenPad": "o crear/abrir un bloc col nome:", + "pad.toolbar.bold.title": "Negrina (Ctrl-B)", + "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", + "pad.toolbar.underline.title": "Sorrayáu (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Tacháu", + "pad.toolbar.ol.title": "Llista ordenada", + "pad.toolbar.ul.title": "Llista ensin ordenar", + "pad.toolbar.indent.title": "Sangría", + "pad.toolbar.unindent.title": "Sangría inversa", + "pad.toolbar.undo.title": "Desfacer (Ctrl-Z)", + "pad.toolbar.redo.title": "Refacer (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Llimpiar los colores d'autoría", + "pad.toolbar.import_export.title": "Importar/Esportar ente distintos formatos de ficheru", + "pad.toolbar.timeslider.title": "Eslizador de tiempu", + "pad.toolbar.savedRevision.title": "Guardar revisión", + "pad.toolbar.settings.title": "Configuración", + "pad.toolbar.embed.title": "Compartir ya incrustar esti bloc", + "pad.toolbar.showusers.title": "Amosar los usuarios d'esti bloc", + "pad.colorpicker.save": "Guardar", + "pad.colorpicker.cancel": "Encaboxar", + "pad.loading": "Cargando...", + "pad.passwordRequired": "Necesites una contraseña pa entrar a esti bloc", + "pad.permissionDenied": "Nun tienes permisu pa entrar a esti bloc", + "pad.wrongPassword": "La contraseña era incorreuta", + "pad.settings.padSettings": "Configuración del bloc", + "pad.settings.myView": "la mio vista", + "pad.settings.stickychat": "Alderique en pantalla siempres", + "pad.settings.colorcheck": "Colores d'autoría", + "pad.settings.linenocheck": "Númberos de llinia", + "pad.settings.rtlcheck": "¿Lleer el conteníu de drecha a izquierda?", + "pad.settings.fontType": "Tipografía:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monoespaciada", + "pad.settings.globalView": "Vista global", + "pad.settings.language": "Llingua:", + "pad.importExport.import_export": "Importar/Esportar", + "pad.importExport.import": "Xubir cualquier ficheru o documentu de testu", + "pad.importExport.importSuccessful": "¡Correuto!", + "pad.importExport.export": "Esportar el bloc actual como:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Testu simple", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Sólo se pue importar dende los formatos de testu planu o html. Pa carauterístiques d'importación más avanzaes \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstala abiword\u003C/a\u003E.", + "pad.modals.connected": "Coneutáu.", + "pad.modals.reconnecting": "Reconeutando col to bloc...", + "pad.modals.forcereconnect": "Forzar la reconexón", + "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.", + "pad.modals.unauth": "Non autorizáu", + "pad.modals.unauth.explanation": "Los tos permisos camudaron mientres vies esta páxina. Intenta volver a coneutar.", + "pad.modals.looping.explanation": "Hai problemes de comunicación col sirvidor de sincronización.", + "pad.modals.looping.cause": "Pues tar coneutáu per un torgafueos o un proxy incompatibles.", + "pad.modals.initsocketfail": "Sirvidor incalcanzable.", + "pad.modals.initsocketfail.explanation": "Nun se pudo coneutar col sirvidor de sincronización.", + "pad.modals.initsocketfail.cause": "Probablemente ye por aciu d'un problema col navegador o cola to conexón a internet.", + "pad.modals.slowcommit.explanation": "El sirvidor nun respuende.", + "pad.modals.slowcommit.cause": "Pue ser por problemes de coneutividá de la rede.", + "pad.modals.badChangeset.explanation": "El sirvidor de sincronización clasificó como illegal una edición que fizo.", + "pad.modals.badChangeset.cause": "Esto podría dase por una mala configuración del sirvidor o por algún otru comportamientu inesperáu. Comuníquese col alministrador del serviciu si cree qu'esto ye un error. Intente volver a coneutar pa siguir editando.", + "pad.modals.corruptPad.explanation": "El bloc al qu'intenta entrar ta corrompíu.", + "pad.modals.corruptPad.cause": "Esto pue ser por una mala configuración del sirvidor o por algún otru comportamientu inesperáu. Comuníquese col alministrador del serviciu.", + "pad.modals.deleted": "Desaniciáu", + "pad.modals.deleted.explanation": "Esti bloc se desanició.", + "pad.modals.disconnected": "Te desconeutasti.", + "pad.modals.disconnected.explanation": "Perdióse la conexón col sirvidor", + "pad.modals.disconnected.cause": "El sirvidor podría nun tar disponible. Por favor, avise al alministrador del serviciu si sigue pasando esto.", + "pad.share": "Compartir esti bloc", + "pad.share.readonly": "Sólo llectura", + "pad.share.link": "Enllaz", + "pad.share.emebdcode": "Incrustar URL", + "pad.chat": "Chat", + "pad.chat.title": "Abrir el chat d'esti bloc.", + "pad.chat.loadmessages": "Cargar más mensaxes", + "timeslider.pageTitle": "Eslizador de tiempu de {{appTitle}}", + "timeslider.toolbar.returnbutton": "Tornar al bloc", + "timeslider.toolbar.authors": "Autores:", + "timeslider.toolbar.authorsList": "Nun hai autores", + "timeslider.toolbar.exportlink.title": "Esportar", + "timeslider.exportCurrent": "Esportar la versión actual como:", + "timeslider.version": "Versión {{version}}", + "timeslider.saved": "Guardáu el {{day}} de {{month}} de {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "de xineru", + "timeslider.month.february": "de febreru", + "timeslider.month.march": "de marzu", + "timeslider.month.april": "d'abril", + "timeslider.month.may": "de mayu", + "timeslider.month.june": "de xunu", + "timeslider.month.july": "de xunetu", + "timeslider.month.august": "d'agostu", + "timeslider.month.september": "de setiembre", + "timeslider.month.october": "d'ochobre", + "timeslider.month.november": "de payares", + "timeslider.month.december": "d'avientu", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor anónimu, other: autores anónimos]}", + "pad.savedrevs.marked": "Esta revisión marcose como revisión guardada", + "pad.userlist.entername": "Escribi'l to nome", + "pad.userlist.unnamed": "ensin nome", + "pad.userlist.guest": "Invitáu", + "pad.userlist.deny": "Refugar", + "pad.userlist.approve": "Aprobar", + "pad.editbar.clearcolors": "¿Llimpiar los colores d'autoría nel documentu ensembre?", + "pad.impexp.importbutton": "Importar agora", + "pad.impexp.importing": "Importando...", + "pad.impexp.confirmimport": "La importación d'un ficheru sustituirá'l testu actual del bloc. ¿Seguro que quies siguir?", + "pad.impexp.convertFailed": "Nun pudimos importar esti ficheru. Por favor,usa otru formatu de ficheru diferente o copia y pega manualmente.", + "pad.impexp.uploadFailed": "Falló la carga del ficheru, intentalo otra vuelta", + "pad.impexp.importfailed": "Falló la importación", + "pad.impexp.copypaste": "Por favor, copia y apega", + "pad.impexp.exportdisabled": "La esportación en formatu {{type}} ta desactivada. Por favor, comunica col alministrador del sistema pa más detalles." } \ No newline at end of file diff --git a/src/locales/az.json b/src/locales/az.json index 95c657981..056e1a5ee 100644 --- a/src/locales/az.json +++ b/src/locales/az.json @@ -1,121 +1,124 @@ { - "@metadata": { - "authors": [ - "AZISS", - "Khan27" - ] - }, - "index.newPad": "Yeni Pad", - "index.createOpenPad": "v\u0259 ya Pad-\u0131 ad\u0131 il\u0259 yarat\/a\u00e7:", - "pad.toolbar.bold.title": "Qal\u0131n (Ctrl-B)", - "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", - "pad.toolbar.underline.title": "Alt\u0131ndan x\u0259tt \u00e7\u0259km\u0259 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Pozulma", - "pad.toolbar.ol.title": "Qaydaya sal\u0131nm\u0131\u015f siyah\u0131", - "pad.toolbar.ul.title": "Qaydaya sal\u0131nmam\u0131\u015f siyah\u0131", - "pad.toolbar.indent.title": "Abzas", - "pad.toolbar.unindent.title": "\u00c7\u0131x\u0131nt\u0131", - "pad.toolbar.undo.title": "Geri Al (Ctrl-Z)", - "pad.toolbar.redo.title": "Qaytarmaq (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "M\u00fc\u0259lliflik R\u0259ngl\u0259rini T\u0259mizl\u0259", - "pad.toolbar.import_export.title": "M\u00fcxt\u0259lif fayl formatlar\u0131n(a\/dan) idxal\/ixrac", - "pad.toolbar.timeslider.title": "Vaxt c\u0259dv\u0259li", - "pad.toolbar.savedRevision.title": "Saxlan\u0131lan D\u00fcz\u0259li\u015fl\u0259r", - "pad.toolbar.settings.title": "T\u0259nziml\u0259m\u0259l\u0259r", - "pad.toolbar.embed.title": "Bu pad-\u0131 yay\u0131mla", - "pad.toolbar.showusers.title": "Pad-da istifad\u0259\u00e7il\u0259ri g\u00f6st\u0259r", - "pad.colorpicker.save": "Saxla", - "pad.colorpicker.cancel": "\u0130mtina", - "pad.loading": "Y\u00fckl\u0259nir...", - "pad.passwordRequired": "Bu pad-a daxil olmaq \u00fc\u00e7\u00fcn parol laz\u0131md\u0131r", - "pad.permissionDenied": "Bu pad-a daxil olmaq \u00fc\u00e7\u00fcn icaz\u0259niz yoxdur", - "pad.wrongPassword": "Sizin parolunuz s\u0259hvdir", - "pad.settings.padSettings": "Pad T\u0259nziml\u0259m\u0259l\u0259ri", - "pad.settings.myView": "M\u0259nim G\u00f6r\u00fcnt\u00fcm", - "pad.settings.stickychat": "S\u00f6hb\u0259t h\u0259mi\u015f\u0259 ekranda", - "pad.settings.colorcheck": "M\u00fc\u0259lliflik r\u0259ngl\u0259ri", - "pad.settings.linenocheck": "S\u0259tir n\u00f6mr\u0259l\u0259ri", - "pad.settings.fontType": "\u015eriftin tipi:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monobo\u015fluq", - "pad.settings.globalView": "\u00dcmumi g\u00f6r\u00fcn\u00fc\u015f", - "pad.settings.language": "Dil:", - "pad.importExport.import_export": "\u0130dxal\/\u0130xrac", - "pad.importExport.import": "H\u0259r hans\u0131 bir m\u0259tn fayl\u0131 v\u0259 ya s\u0259n\u0259d y\u00fckl\u0259", - "pad.importExport.importSuccessful": "U\u011furlu!", - "pad.importExport.export": "Haz\u0131rki pad-\u0131 ixrac etm\u0259k kimi:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Adi m\u0259tn", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (A\u00e7\u0131q S\u0259n\u0259d Format\u0131)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Siz yaln\u0131z adi m\u0259tnd\u0259n v\u0259 ya HTML-d\u0259n idxal ed\u0259 bil\u0259rsiniz. \u0130dxal\u0131n daha m\u00fcr\u0259kk\u0259b funksiyalar\u0131 \u00fc\u00e7\u00fcn, z\u0259hm\u0259t olmasa, AbiWord-i qura\u015fd\u0131r\u0131n<\/a>.", - "pad.modals.connected": "Ba\u011fland\u0131.", - "pad.modals.reconnecting": "Sizin pad yenid\u0259n qo\u015fulur..", - "pad.modals.forcereconnect": "M\u0259cbur t\u0259krar\u0259n ba\u011flan", - "pad.modals.userdup": "Ba\u015fqa p\u0259nc\u0259r\u0259d\u0259 art\u0131q a\u00e7\u0131qd\u0131r", - "pad.modals.userdup.explanation": "S\u0259n\u0259d, ola bilsin ki, bu kompyuterd\u0259, brauzerin bir ne\u00e7\u0259 p\u0259nc\u0259r\u0259sind\u0259 a\u00e7\u0131lm\u0131\u015fd\u0131r.", - "pad.modals.userdup.advice": "Bu p\u0259nc\u0259r\u0259d\u0259n istifad\u0259yl\u0259 yenid\u0259n qo\u015fulun.", - "pad.modals.unauth": "\u0130caz\u0259li deyil", - "pad.modals.unauth.explanation": "Bu s\u0259hif\u0259y\u0259 baxd\u0131\u011f\u0131n\u0131z vaxt sizin icaz\u0259niz d\u0259yi\u015filib. B\u0259rpa etm\u0259k \u00fc\u015f\u00fcn yenid\u0259n c\u0259hd edin.", - "pad.modals.looping": "\u018flaq\u0259 k\u0259sildi.", - "pad.modals.looping.explanation": "Sinxronla\u015fd\u0131rma serveri il\u0259 kommunikasiya x\u0259tas\u0131 var.", - "pad.modals.looping.cause": "Ola bilsin ki, siz uy\u011fun olmayan fayrvol v\u0259 ya proksi vasit\u0259si il\u0259 qo\u015fulma\u011fa c\u0259hd g\u00f6st\u0259rirsiniz.", - "pad.modals.initsocketfail": "Server \u0259l\u00e7atmazd\u0131r.", - "pad.modals.initsocketfail.explanation": "Sinxronla\u015fd\u0131rma serverin\u0259 qo\u015fulma m\u00fcmk\u00fcns\u00fczd\u00fcr.", - "pad.modals.initsocketfail.cause": "Ehtimal ki, bu problem sizin brauzerinizl\u0259 v\u0259 ya internet-birl\u0259\u015fm\u0259nizl\u0259 \u0259laq\u0259d\u0259rdir.", - "pad.modals.slowcommit": "\u018flaq\u0259 k\u0259sildi.", - "pad.modals.slowcommit.explanation": "Server cavab vermir.", - "pad.modals.slowcommit.cause": "Bu \u015f\u0259b\u0259k\u0259 ba\u011flant\u0131s\u0131nda probleml\u0259r yarana bil\u0259r.", - "pad.modals.deleted": "Silindi.", - "pad.modals.deleted.explanation": "Bu pad silindi.", - "pad.modals.disconnected": "\u018flaq\u0259 k\u0259silib.", - "pad.modals.disconnected.explanation": "Server\u0259 qo\u015fulma itirilib", - "pad.modals.disconnected.cause": "Server istifad\u0259 olunmur. \u018fg\u0259r problem t\u0259krarlanacaqsa, biz\u0259 bildirin.", - "pad.share": "Bu pad-\u0131 yay\u0131mla", - "pad.share.readonly": "Yaln\u0131z oxuyun", - "pad.share.link": "Ke\u00e7id", - "pad.share.emebdcode": "URL-ni yay\u0131mla", - "pad.chat": "S\u00f6hb\u0259t", - "pad.chat.title": "Bu pad \u00fc\u00e7\u00fcn chat a\u00e7\u0131n.", - "pad.chat.loadmessages": "Daha \u00e7ox mesaj y\u00fckl\u0259", - "timeslider.pageTitle": "{{appTitle}} Vaxt c\u0259dv\u0259li", - "timeslider.toolbar.returnbutton": "Pad-a qay\u0131t", - "timeslider.toolbar.authors": "M\u00fc\u0259llifl\u0259r:", - "timeslider.toolbar.authorsList": "M\u00fc\u0259llif yoxdur", - "timeslider.toolbar.exportlink.title": "\u0130xrac", - "timeslider.exportCurrent": "Cari versiyan\u0131 ixrac etm\u0259k kimi:", - "timeslider.version": "Versiya {{version}}", - "timeslider.saved": "Saxlan\u0131ld\u0131 {{day}} {{month}}, {{year}}", - "timeslider.dateformat": "{{day}} {{month}}, {{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Yanvar", - "timeslider.month.february": "Fevral", - "timeslider.month.march": "Mart", - "timeslider.month.april": "Aprel", - "timeslider.month.may": "May", - "timeslider.month.june": "\u0130yun", - "timeslider.month.july": "\u0130yul", - "timeslider.month.august": "Avqust", - "timeslider.month.september": "Sentyabr", - "timeslider.month.october": "Oktyabr", - "timeslider.month.november": "Noyabr", - "timeslider.month.december": "Dekabr", - "timeslider.unnamedauthor": "{{num}} ads\u0131z m\u00fc\u0259llif", - "timeslider.unnamedauthors": "{{num}} ads\u0131z m\u00fc\u0259llifl\u0259r", - "pad.savedrevs.marked": "Bu versiya indi yadda\u015fa saxlanm\u0131\u015f kimi ni\u015fanland\u0131", - "pad.userlist.entername": "Ad\u0131n\u0131z\u0131 daxil et", - "pad.userlist.unnamed": "ads\u0131z", - "pad.userlist.guest": "Qonaq", - "pad.userlist.deny": "\u0130nkar etm\u0259k", - "pad.userlist.approve": "T\u0259sdiql\u0259m\u0259k", - "pad.editbar.clearcolors": "B\u00fct\u00fcn s\u0259n\u0259dl\u0259rd\u0259 m\u00fc\u0259lliflik r\u0259ngl\u0259rini t\u0259mizl\u0259?", - "pad.impexp.importbutton": "\u0130ndi idxal edin", - "pad.impexp.importing": "\u0130dxal...", - "pad.impexp.confirmimport": "Fayl\u0131n idxal\u0131 cari m\u0259tni yenil\u0259y\u0259c\u0259k. Siz \u0259minsinizmi ki, davam etm\u0259k ist\u0259yirsiniz?", - "pad.impexp.convertFailed": "Biz bu fayl idxal etm\u0259k m\u00fcmk\u00fcn deyil idi. Xahi\u015f olunur m\u00fcxt\u0259lif s\u0259n\u0259dd\u0259n istifad\u0259 edin v\u0259 ya kopyalay\u0131b yap\u0131\u015fd\u0131rmaq yolundan istifad\u0259 edin", - "pad.impexp.uploadFailed": "Y\u00fckl\u0259m\u0259d\u0259 s\u0259hv, xahi\u015f olunur yen\u0259 c\u0259hd edin", - "pad.impexp.importfailed": "\u0130dxal zaman\u0131 s\u0259hv", - "pad.impexp.copypaste": "Xahi\u015f edirik kopyalay\u0131b yap\u0131\u015fd\u0131r\u0131n", - "pad.impexp.exportdisabled": "{{ type}} format\u0131nda ixrac s\u00f6nd\u00fcr\u00fclm\u00fc\u015fd\u00fcr. \u018ftrafl\u0131 informasiya \u00fc\u00e7\u00fcn sistem administratoruna m\u00fcraci\u0259t ediniz." + "@metadata": { + "authors": [ + "AZISS", + "Khan27", + "Mushviq Abdulla" + ] + }, + "index.newPad": "Yeni Pad", + "index.createOpenPad": "vÉ™ ya Pad-ı adı ilÉ™ yarat/aç:", + "pad.toolbar.bold.title": "Qalın (Ctrl-B)", + "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", + "pad.toolbar.underline.title": "Altından xÉ™tt çəkmÉ™ (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Pozulma", + "pad.toolbar.ol.title": "Qaydaya salınmış siyahı", + "pad.toolbar.ul.title": "Qaydaya salınmamış siyahı", + "pad.toolbar.indent.title": "Abzas", + "pad.toolbar.unindent.title": "Çıxıntı", + "pad.toolbar.undo.title": "Geri Al (Ctrl-Z)", + "pad.toolbar.redo.title": "Qaytarmaq (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Müəlliflik RÉ™nglÉ™rini TÉ™mizlÉ™", + "pad.toolbar.import_export.title": "MüxtÉ™lif fayl formatların(a/dan) idxal/ixrac", + "pad.toolbar.timeslider.title": "Vaxt cÉ™dvÉ™li", + "pad.toolbar.savedRevision.title": "Saxlanılan DüzÉ™liÅŸlÉ™r", + "pad.toolbar.settings.title": "TÉ™nzimlÉ™mÉ™lÉ™r", + "pad.toolbar.embed.title": "Bu pad-ı yayımla", + "pad.toolbar.showusers.title": "Pad-da istifadəçilÉ™ri göstÉ™r", + "pad.colorpicker.save": "Saxla", + "pad.colorpicker.cancel": "İmtina", + "pad.loading": "YüklÉ™nir...", + "pad.passwordRequired": "Bu pad-a daxil olmaq üçün parol lazımdır", + "pad.permissionDenied": "Bu pad-a daxil olmaq üçün icazÉ™niz yoxdur", + "pad.wrongPassword": "Sizin parolunuz sÉ™hvdir", + "pad.settings.padSettings": "Pad TÉ™nzimlÉ™mÉ™lÉ™ri", + "pad.settings.myView": "MÉ™nim Görüntüm", + "pad.settings.stickychat": "SöhbÉ™t hÉ™miÅŸÉ™ ekranda", + "pad.settings.colorcheck": "Müəlliflik rÉ™nglÉ™ri", + "pad.settings.linenocheck": "SÉ™tir nömrÉ™lÉ™ri", + "pad.settings.rtlcheck": "MühtÉ™viyyat saÄŸdan sola doÄŸru oxunsunmu?", + "pad.settings.fontType": "Åžriftin tipi:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "MonoboÅŸluq", + "pad.settings.globalView": "Ümumi görünüş", + "pad.settings.language": "Dil:", + "pad.importExport.import_export": "İdxal/İxrac", + "pad.importExport.import": "HÉ™r hansı bir mÉ™tn faylı vÉ™ ya sÉ™nÉ™d yüklÉ™", + "pad.importExport.importSuccessful": "UÄŸurlu!", + "pad.importExport.export": "Hazırki pad-ı ixrac etmÉ™k kimi:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Adi mÉ™tn", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Açıq SÉ™nÉ™d Formatı)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Siz yalnız adi mÉ™tndÉ™n vÉ™ ya HTML-dÉ™n idxal edÉ™ bilÉ™rsiniz. İdxalın daha mürÉ™kkÉ™b funksiyaları üçün, zÉ™hmÉ™t olmasa, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003E AbiWord-i quraÅŸdırın\u003C/a\u003E.", + "pad.modals.connected": "BaÄŸlandı.", + "pad.modals.reconnecting": "Sizin pad yenidÉ™n qoÅŸulur..", + "pad.modals.forcereconnect": "MÉ™cbur tÉ™krarÉ™n baÄŸlan", + "pad.modals.userdup": "BaÅŸqa pÉ™ncÉ™rÉ™dÉ™ artıq açıqdır", + "pad.modals.userdup.explanation": "SÉ™nÉ™d, ola bilsin ki, bu kompyuterdÉ™, brauzerin bir neçə pÉ™ncÉ™rÉ™sindÉ™ açılmışdır.", + "pad.modals.userdup.advice": "Bu pÉ™ncÉ™rÉ™dÉ™n istifadÉ™ylÉ™ yenidÉ™n qoÅŸulun.", + "pad.modals.unauth": "İcazÉ™li deyil", + "pad.modals.unauth.explanation": "Bu sÉ™hifÉ™yÉ™ baxdığınız vaxt sizin icazÉ™niz dÉ™yiÅŸilib. BÉ™rpa etmÉ™k üşün yenidÉ™n cÉ™hd edin.", + "pad.modals.looping.explanation": "SinxronlaÅŸdırma serveri ilÉ™ kommunikasiya xÉ™tası var.", + "pad.modals.looping.cause": "Ola bilsin ki, siz uyÄŸun olmayan fayrvol vÉ™ ya proksi vasitÉ™si ilÉ™ qoÅŸulmaÄŸa cÉ™hd göstÉ™rirsiniz.", + "pad.modals.initsocketfail": "Server É™lçatmazdır.", + "pad.modals.initsocketfail.explanation": "SinxronlaÅŸdırma serverinÉ™ qoÅŸulma mümkünsüzdür.", + "pad.modals.initsocketfail.cause": "Ehtimal ki, bu problem sizin brauzerinizlÉ™ vÉ™ ya internet-birləşmÉ™nizlÉ™ É™laqÉ™dÉ™rdir.", + "pad.modals.slowcommit.explanation": "Server cavab vermir.", + "pad.modals.slowcommit.cause": "Bu ÅŸÉ™bÉ™kÉ™ baÄŸlantısında problemlÉ™r yarana bilÉ™r.", + "pad.modals.badChangeset.explanation": "Etdiyiniz bir redaktÉ™ sinxronizasiya serveri tÉ™rÉ™findÉ™n qeyri-leqal/qanundan kÉ™nar olaraq tÉ™sbit edildi.", + "pad.modals.badChangeset.cause": "Bu, yanlış server tÉ™rtibatı ya da baÅŸqa bir gözlÉ™nilmÉ™yÉ™n davranışlar nÉ™ticÉ™sindÉ™ ola bilÉ™r. Bu sizÉ™ bir xÉ™ta imiÅŸ kimi görünürsÉ™ lütfÉ™n servis nÉ™zarÉ™tçisi ilÉ™ É™laqÉ™ yaradın. RedaktÉ™yÉ™ davam etmÉ™k üçün yenidÉ™n qoÅŸulmanı yoxlayın.", + "pad.modals.corruptPad.explanation": "ÆldÉ™ etmÉ™yÉ™ çalışdığınız sÉ™nÉ™d zÉ™dÉ™lidir.", + "pad.modals.corruptPad.cause": "Bu, yanlış server tÉ™rtibatı ya da baÅŸqa bir gözlÉ™nilmÉ™yÉ™n davranışlardan É™mÉ™lÉ™ gÉ™lÉ™ bilÉ™r. LütfÉ™n servis nÉ™zarÉ™tçisi ilÉ™ É™laqÉ™ yaradın.", + "pad.modals.deleted": "Silindi.", + "pad.modals.deleted.explanation": "Bu pad silindi.", + "pad.modals.disconnected": "ÆlaqÉ™ kÉ™silib.", + "pad.modals.disconnected.explanation": "ServerÉ™ qoÅŸulma itirilib", + "pad.modals.disconnected.cause": "Server istifadÉ™ olunmur. ÆgÉ™r problem tÉ™krarlanacaqsa, bizÉ™ bildirin.", + "pad.share": "Bu pad-ı yayımla", + "pad.share.readonly": "Yalnız oxuyun", + "pad.share.link": "Keçid", + "pad.share.emebdcode": "URL-ni yayımla", + "pad.chat": "SöhbÉ™t", + "pad.chat.title": "Bu pad üçün chat açın.", + "pad.chat.loadmessages": "Daha çox mesaj yüklÉ™", + "timeslider.pageTitle": "{{appTitle}} Vaxt cÉ™dvÉ™li", + "timeslider.toolbar.returnbutton": "Pad-a qayıt", + "timeslider.toolbar.authors": "MüəlliflÉ™r:", + "timeslider.toolbar.authorsList": "Müəllif yoxdur", + "timeslider.toolbar.exportlink.title": "İxrac", + "timeslider.exportCurrent": "Cari versiyanı ixrac etmÉ™k kimi:", + "timeslider.version": "Versiya {{version}}", + "timeslider.saved": "Saxlanıldı {{day}} {{month}}, {{year}}", + "timeslider.dateformat": "{{day}} {{month}}, {{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Yanvar", + "timeslider.month.february": "Fevral", + "timeslider.month.march": "Mart", + "timeslider.month.april": "Aprel", + "timeslider.month.may": "May", + "timeslider.month.june": "İyun", + "timeslider.month.july": "İyul", + "timeslider.month.august": "Avqust", + "timeslider.month.september": "Sentyabr", + "timeslider.month.october": "Oktyabr", + "timeslider.month.november": "Noyabr", + "timeslider.month.december": "Dekabr", + "timeslider.unnamedauthors": "{{num}} adsız müəlliflÉ™r", + "pad.savedrevs.marked": "Bu versiya indi yaddaÅŸa saxlanmış kimi niÅŸanlandı", + "pad.userlist.entername": "Adınızı daxil et", + "pad.userlist.unnamed": "adsız", + "pad.userlist.guest": "Qonaq", + "pad.userlist.deny": "İnkar etmÉ™k", + "pad.userlist.approve": "TÉ™sdiqlÉ™mÉ™k", + "pad.editbar.clearcolors": "Bütün sÉ™nÉ™dlÉ™rdÉ™ müəlliflik rÉ™nglÉ™rini tÉ™mizlÉ™?", + "pad.impexp.importbutton": "İndi idxal edin", + "pad.impexp.importing": "İdxal...", + "pad.impexp.confirmimport": "Faylın idxalı cari mÉ™tni yenilÉ™yÉ™cÉ™k. Siz É™minsinizmi ki, davam etmÉ™k istÉ™yirsiniz?", + "pad.impexp.convertFailed": "Biz bu fayl idxal etmÉ™k mümkün deyil idi. XahiÅŸ olunur müxtÉ™lif sÉ™nÉ™ddÉ™n istifadÉ™ edin vÉ™ ya kopyalayıb yapışdırmaq yolundan istifadÉ™ edin", + "pad.impexp.uploadFailed": "YüklÉ™mÉ™dÉ™ sÉ™hv, xahiÅŸ olunur yenÉ™ cÉ™hd edin", + "pad.impexp.importfailed": "İdxal zamanı sÉ™hv", + "pad.impexp.copypaste": "XahiÅŸ edirik kopyalayıb yapışdırın", + "pad.impexp.exportdisabled": "{{ type}} formatında ixrac söndürülmüşdür. Ætraflı informasiya üçün sistem administratoruna müraciÉ™t ediniz." } \ No newline at end of file diff --git a/src/locales/azb.json b/src/locales/azb.json index 5bfe448be..0dfa45e19 100644 --- a/src/locales/azb.json +++ b/src/locales/azb.json @@ -1,73 +1,72 @@ { - "@metadata": { - "authors": [ - "Amir a57", - "Mousa" - ] - }, - "index.newPad": "\u06cc\u0626\u0646\u06cc \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc", - "index.createOpenPad": "\u06cc\u0627 \u062f\u0627 \u0627\u06cc\u062c\u0627\u062f \/\u0628\u06cc\u0631 \u067e\u062f \u0622\u062f\u0644\u0627 \u0628\u0631\u0627\u0628\u0631 \u0622\u0686\u0645\u0627\u0642:", - "pad.toolbar.bold.title": "\u0628\u0648\u06cc\u0648\u062a", - "pad.toolbar.italic.title": "\u0645\u0648\u0631\u0628", - "pad.toolbar.underline.title": "\u062e\u0637\u062f\u06cc\u0646 \u0622\u0644\u062a\u06cc", - "pad.toolbar.strikethrough.title": "\u062e\u0637 \u06cc\u0626\u0645\u06cc\u0634", - "pad.toolbar.ol.title": "\u062c\u0648\u062a\u062f\u0646\u0645\u06cc\u0634 \u0641\u0647\u0631\u0633\u062a", - "pad.toolbar.ul.title": "\u062c\u0648\u062a\u062f\u0646\u0645\u0645\u06cc\u0634 \u0641\u0647\u0631\u0633\u062a", - "pad.toolbar.indent.title": "\u0627\u06cc\u0686\u0631\u06cc \u0628\u0627\u062a\u062f\u06cc\u06af\u06cc", - "pad.toolbar.unindent.title": "\u0627\u0626\u0634\u06cc\u06af\u0647 \u0686\u06cc\u062e\u062f\u06cc\u06af\u06cc", - "pad.toolbar.undo.title": "\u0628\u0627\u0637\u0644 \u0627\u0626\u062a\u0645\u06a9", - "pad.toolbar.redo.title": "\u06cc\u0626\u0646\u06cc \u062f\u0646", - "pad.toolbar.clearAuthorship.title": "\u06cc\u0627\u0632\u06cc\u0686\u06cc \u0631\u0646\u06af \u0644\u0631\u06cc \u067e\u0648\u0632\u0645\u0627\u0642", - "pad.toolbar.import_export.title": "\u0622\u06cc\u0631\u06cc \u0642\u0627\u0644\u06cc\u0628 \u0644\u0631\u062f\u0646 \/\u0627\u06cc\u0686\u0631\u06cc \u062a\u0648\u06a9\u0645\u0647 \/ \u0627\u0626\u0634\u06cc\u06af\u0647 \u062a\u0648\u06a9\u0645\u0647", - "pad.toolbar.timeslider.title": "\u0632\u0645\u0627\u0646 \u0627\u0633\u0644\u0627\u06cc\u062f\u06cc", - "pad.toolbar.savedRevision.title": "\u0633\u0627\u062e\u0644\u0627\u0646\u0645\u06cc\u0634 \u0646\u0633\u062e\u0647 \u0644\u0631", - "pad.toolbar.settings.title": "\u062a\u0646\u0638\u06cc\u0645\u0644\u0631", - "pad.toolbar.embed.title": "\u0628\u0648 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc\u0646 \u06cc\u0626\u0631\u0644\u062a\u0645\u06a9", - "pad.toolbar.showusers.title": "\u0628\u0648 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0627 \u0627\u0648\u0644\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u0644\u0631\u06cc \u06af\u0648\u0633\u062a\u0631", - "pad.colorpicker.save": "\u0642\u0626\u06cc\u062f \u0627\u0626\u062a", - "pad.colorpicker.cancel": "\u0644\u063a\u0648 \u0627\u0626\u062a", - "pad.loading": "\u06cc\u0648\u06a9\u0644\u0646\u06cc\u0631...", - "pad.settings.padSettings": "\u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc\u0646\u06cc\u0646 \u062a\u0646\u0638\u06cc\u0645\u0644\u0631", - "pad.settings.myView": "\u0645\u0646\u06cc\u0645 \u06af\u0648\u0631\u0646\u062a\u0648\u0645", - "pad.settings.stickychat": "\u0646\u0645\u0627\u06cc\u0634 \u0635\u0641\u062d\u0647 \u0633\u06cc\u0646\u062f\u0647 \u0647\u0645\u06cc\u0634\u0647 \u0686\u062a \u0627\u0648\u0644\u0633\u0648\u0646", - "pad.settings.colorcheck": "\u06cc\u0627\u0632\u06cc\u0686\u06cc \u0631\u0646\u06af \u0644\u0631\u06cc", - "pad.settings.linenocheck": "\u062e\u0637\u0648\u0637 \u0634\u0645\u0627\u0631\u0647 \u0633\u06cc", - "pad.settings.fontType": "\u0642\u0644\u0645 \u0646\u0648\u0639\u06cc", - "pad.settings.fontType.normal": "\u0646\u0648\u0631\u0645\u0627\u0644", - "pad.settings.fontType.monospaced": "\u0645\u0648\u0646\u0648 \u0627\u0633\u067e\u0626\u06cc\u0633", - "pad.settings.globalView": "\u0633\u0631\u0627\u0633\u0631 \u06af\u0648\u0631\u0648\u0646\u062a\u0648", - "pad.settings.language": "\u062f\u06cc\u0644:", - "pad.importExport.import_export": "\u0627\u06cc\u0686\u0631\u06cc \u062a\u0648\u06a9\u0645\u0647 \/\u0627\u0626\u0634\u06cc\u06af\u0647 \u062a\u0648\u06a9\u0645\u0647", - "pad.importExport.import": "\u0633\u0646\u062f \u06cc\u0627 \u062f\u0627 \u0645\u062a\u0646\u06cc \u067e\u0631\u0648\u0646\u062f\u0647 \u06cc\u0648\u06a9\u0644\u0647", - "pad.importExport.export": "\u0628\u0648 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc \u0639\u0646\u0648\u0627\u0646\u0627 \u0627\u06cc\u0686\u0631\u06cc \u062a\u0648\u06a9\u0645\u0647", - "pad.importExport.exporthtml": "\u0627\u0686 \u062a\u06cc \u0627\u0645 \u0627\u0644", - "pad.importExport.exportplain": "\u0633\u0627\u062f\u0647 \u0645\u062a\u0646", - "pad.importExport.exportword": "\u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a \u0648\u0648\u0631\u062f", - "pad.importExport.exportpdf": "\u067e\u06cc \u062f\u06cc \u0627\u0641", - "pad.importExport.exportopen": "\u0627\u0648 \u062f\u06cc \u0627\u0641", - "pad.importExport.exportdokuwiki": "\u062f\u0648\u06a9\u0648 \u0648\u06cc\u06a9\u06cc", - "pad.modals.connected": "\u0645\u062a\u0635\u0644 \u0627\u0648\u0644\u062f\u06cc", - "pad.modals.reconnecting": "\u0633\u06cc\u0632\u06cc\u0646 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc\u0646\u0647 \u06cc\u0626\u0646\u06cc \u062f\u0646 \u0645\u062a\u0635\u06cc\u0644 \u0627\u0648\u0644\u062f\u06cc", - "pad.modals.forcereconnect": "\u06cc\u0626\u0646\u06cc \u0627\u062a\u0635\u0627\u0644 \u0627\u0648\u0686\u0648\u0646 \u0632\u0648\u0631\u0644\u0627\u0645\u0627", - "pad.modals.userdup.advice": "\u0628\u0648 \u067e\u0626\u0646\u062c\u0631\u0647 \u062f\u0646 \u0627\u06cc\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0626\u062a\u0645\u06a9 \u0627\u0648\u0686\u0648\u0646 \u06cc\u0626\u0646\u06cc \u062f\u0646 \u0645\u062a\u0635\u06cc\u0644 \u0627\u0648\u0644", - "pad.modals.unauth": "\u0627\u0648\u0644\u0645\u0627\u0632", - "pad.modals.unauth.explanation": "\u0633\u06cc\u0632\u06cc\u0646 \u0627\u0644 \u0686\u062a\u0645\u0627 \u0645\u0633\u0626\u0644\u0647 \u0633\u06cc \u0628\u0648 \u0635\u0641\u062d\u0647 \u0646\u06cc\u0646 \u06af\u0648\u0631\u0648\u0646\u0648\u0634 \u0632\u0645\u0627\u0646\u06cc\u0646\u062f\u0627 \u062f\u06cc\u06cc\u0634\u06cc\u0644\u06cc\u0628 \u062f\u06cc\u0631 .\n\u0633\u0639\u06cc \u0627\u0626\u062f\u06cc\u0646 \u06cc\u0626\u0646\u06cc \u062f\u0646 \u0645\u062a\u0635\u06cc\u0644 \u0627\u0648\u0644\u0627\u0633\u06cc\u0646\u06cc\u0632", - "pad.modals.looping": "\u0627\u062a\u06cc\u0635\u0627\u0644 \u0642\u0637\u0639 \u0627\u0648\u0644\u062f\u06cc", - "pad.modals.looping.explanation": "\u0627\u0631\u062a\u06cc\u0628\u0627\u0637\u06cc \u0645\u0648\u0634\u06a9\u06cc\u0644 \u0628\u06cc\u0631 \u0627\u0626\u062a\u0645\u0647 \u0633\u0631\u0648\u0631 \u062f\u0647 \u0648\u0627\u0631 \u062f\u06cc\u0631", - "pad.modals.looping.cause": "\u0628\u0644\u06a9\u0647 \u0633\u06cc\u0632 \u062f\u0648\u0632 \u062f\u0626\u0645\u06cc\u06cc\u0646 \u0628\u06cc\u0631 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u06cc\u0627\u062f\u0627 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0637\u0631\u06cc\u0642\u06cc \u0627\u06cc\u0644\u0647 \u0645\u062a\u0635\u06cc\u0644 \u0627\u0648\u0644\u0648\u0628 \u0633\u06cc\u0646\u06cc\u0632", - "pad.modals.initsocketfail": "\u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0648\u0644\u0645\u0648\u06cc\u0627\u0646 \u0633\u0631\u0648\u0631 \u062f\u06cc\u0631", - "pad.modals.initsocketfail.explanation": "\u0628\u06cc\u0631\u0644\u0634\u062f\u06cc\u0631\u06cc\u0644\u0645\u0647 \u0633\u0631\u0648\u0631 \u0644\u0631\u06cc\u0646\u0647 \u0645\u062a\u0635\u06cc\u0644 \u0627\u0648\u0644\u0627 \u0628\u06cc\u0644\u0645\u0647 \u062f\u06cc", - "pad.modals.deleted": "\u0633\u06cc\u0644\u06cc\u0646\u062f\u06cc.", - "pad.modals.deleted.explanation": "\u0628\u0648 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc \u0633\u06cc\u0644\u06cc\u0646\u06cc\u0628 \u062f\u06cc\u0631.", - "pad.modals.disconnected": "\u0633\u06cc\u0632\u06cc\u0646 \u0627\u062a\u0635\u0627\u0644\u06cc\u0646\u06cc\u0632 \u0642\u0637\u0639 \u0627\u0648\u0644\u0648\u0628 \u062f\u0648\u0631.", - "pad.modals.disconnected.explanation": "\u0633\u0631\u0648\u0631\u0647 \u0627\u062a\u0635\u0627\u0644 \u0642\u0637\u0639 \u0627\u0648\u0644\u0648\u0628 \u062f\u0648\u0631.", - "pad.share.readonly": "\u0627\u0648\u062e\u0648\u0645\u0627\u0644\u06cc \u0641\u0642\u0637", - "pad.share.link": "\u0628\u0627\u063a\u0644\u0627\u0646\u062a\u06cc", - "pad.share.emebdcode": "\u0646\u0634\u0627\u0646\u06cc \u0646\u06cc \u06cc\u0626\u0631\u0644\u062a\u0645\u06a9", - "pad.chat": "\u0686\u062a", - "pad.chat.title": "\u0628\u0648 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0646\u06cc \u0686\u062a \u0627\u0648\u0686\u0648\u0646 \u0622\u0686", - "timeslider.pageTitle": "{{appTitle}}\u0632\u0645\u0627\u0646 \u0627\u0633\u0644\u0627\u06cc\u062f\u0631\u06cc", - "timeslider.toolbar.returnbutton": "\u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u0633\u06cc\u0646\u0647 \u0642\u0627\u06cc\u06cc\u062a", - "timeslider.toolbar.authors": "\u06cc\u0627\u0632\u06cc\u0686\u06cc\u0644\u0627\u0631", - "timeslider.toolbar.authorsList": "\u06cc\u0627\u0632\u06cc\u0686\u06cc \u0633\u06cc\u0632" + "@metadata": { + "authors": [ + "Amir a57", + "Mousa" + ] + }, + "index.newPad": "یئنی یادداشت Ø¯ÙØªØ±Ú†Ù‡ سی", + "index.createOpenPad": "یا دا ایجاد /بیر پد آدلا برابر آچماق:", + "pad.toolbar.bold.title": "بویوت", + "pad.toolbar.italic.title": "مورب", + "pad.toolbar.underline.title": "خطدین آلتی", + "pad.toolbar.strikethrough.title": "خط یئمیش", + "pad.toolbar.ol.title": "جوتدنمیش Ùهرست", + "pad.toolbar.ul.title": "جوتدنممیش Ùهرست", + "pad.toolbar.indent.title": "ایچری باتدیگی", + "pad.toolbar.unindent.title": "ائشیگه چیخدیگی", + "pad.toolbar.undo.title": "باطل ائتمک", + "pad.toolbar.redo.title": "یئنی دن", + "pad.toolbar.clearAuthorship.title": "یازیچی رنگ لری پوزماق", + "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.settings.padSettings": "یادداشت Ø¯ÙØªØ±Ú†Ù‡ سینین تنظیملر", + "pad.settings.myView": "منیم گورنتوم", + "pad.settings.stickychat": "نمایش ØµÙØ­Ù‡ سینده همیشه چت اولسون", + "pad.settings.colorcheck": "یازیچی رنگ لری", + "pad.settings.linenocheck": "خطوط شماره سی", + "pad.settings.fontType": "قلم نوعی", + "pad.settings.fontType.normal": "نورمال", + "pad.settings.fontType.monospaced": "مونو اسپئیس", + "pad.settings.globalView": "سراسر گورونتو", + "pad.settings.language": "دیل:", + "pad.importExport.import_export": "ایچری توکمه /ائشیگه توکمه", + "pad.importExport.import": "سند یا دا متنی پرونده یوکله", + "pad.importExport.export": "بو یادداشت Ø¯ÙØªØ±Ú†Ù‡ سی عنوانا ایچری توکمه", + "pad.importExport.exporthtml": "اچ تی ام ال", + "pad.importExport.exportplain": "ساده متن", + "pad.importExport.exportword": "Ù…Ø§ÛŒÚ©Ø±ÙˆØ³Ø§ÙØª وورد", + "pad.importExport.exportpdf": "Ù¾ÛŒ دی اÙ", + "pad.importExport.exportopen": "او دی اÙ", + "pad.importExport.exportdokuwiki": "دوکو ویکی", + "pad.modals.connected": "متصل اولدی", + "pad.modals.reconnecting": "سیزین یادداشت Ø¯ÙØªØ±Ú†Ù‡ سینه یئنی دن متصیل اولدی", + "pad.modals.forcereconnect": "یئنی اتصال اوچون زورلاما", + "pad.modals.userdup.advice": "بو پئنجره دن Ø§ÛŒØ³ØªÙØ§Ø¯Ù‡ ائتمک اوچون یئنی دن متصیل اول", + "pad.modals.unauth": "اولماز", + "pad.modals.unauth.explanation": "سیزین ال چتما مسئله سی بو ØµÙØ­Ù‡ نین گورونوش زمانیندا دییشیلیب دیر .\nسعی ائدین یئنی دن متصیل اولاسینیز", + "pad.modals.looping.explanation": "ارتیباطی موشکیل بیر ائتمه سرور ده وار دیر", + "pad.modals.looping.cause": "بلکه سیز دوز دئمیین بیر ÙØ§ÛŒØ±ÙˆØ§Ù„ یادا پروکسی طریقی ایله متصیل اولوب سینیز", + "pad.modals.initsocketfail": "دسترسی اولمویان سرور دیر", + "pad.modals.initsocketfail.explanation": "بیرلشدیریلمه سرور لرینه متصیل اولا بیلمه دی", + "pad.modals.deleted": "سیلیندی.", + "pad.modals.deleted.explanation": "بو یادداشت Ø¯ÙØªØ±Ú†Ù‡ سی سیلینیب دیر.", + "pad.modals.disconnected": "سیزین اتصالینیز قطع اولوب دور.", + "pad.modals.disconnected.explanation": "سروره اتصال قطع اولوب دور.", + "pad.share.readonly": "اوخومالی Ùقط", + "pad.share.link": "باغلانتی", + "pad.share.emebdcode": "نشانی Ù†ÛŒ یئرلتمک", + "pad.chat": "چت", + "pad.chat.title": "بو یادداشت Ø¯ÙØªØ±Ú†Ù‡ Ù†ÛŒ چت اوچون Ø¢Ú†", + "timeslider.pageTitle": "{{appTitle}}زمان اسلایدری", + "timeslider.toolbar.returnbutton": "یادداشت Ø¯ÙØªØ±Ú†Ù‡ سینه قاییت", + "timeslider.toolbar.authors": "یازیچیلار", + "timeslider.toolbar.authorsList": "یازیچی سیز" } \ No newline at end of file diff --git a/src/locales/be-tarask.json b/src/locales/be-tarask.json new file mode 100644 index 000000000..af4b5c891 --- /dev/null +++ b/src/locales/be-tarask.json @@ -0,0 +1,61 @@ +{ + "@metadata": { + "authors": [ + "Jim-by", + "Wizardist" + ] + }, + "index.newPad": "Стварыць", + "index.createOpenPad": "ці тварыць/адкрыць дакумÑнт з назвай:", + "pad.toolbar.bold.title": "ТоўÑты (Ctrl-B)", + "pad.toolbar.italic.title": "КурÑÑ–Ñž (Ctrl-I)", + "pad.toolbar.underline.title": "ПадкрÑÑьліваньне (Ctrl-U)", + "pad.toolbar.strikethrough.title": "ЗакрÑÑьліваньне", + "pad.toolbar.ol.title": "Упарадкаваны ÑьпіÑ", + "pad.toolbar.ul.title": "Ðеўпарадкаваны ÑьпіÑ", + "pad.toolbar.indent.title": "ВодÑтуп", + "pad.toolbar.unindent.title": "Ð’Ñ‹Ñтуп", + "pad.toolbar.undo.title": "СкаÑаваць(Ctrl-Z)", + "pad.toolbar.redo.title": "Ð’Ñрнуць (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Прыбраць колер дакумÑнту", + "pad.toolbar.import_export.title": "Імпарт/ЭкÑпарт з выкарыÑтаньне розных фарматаў файлаў", + "pad.toolbar.timeslider.title": "Шкала чаÑу", + "pad.toolbar.savedRevision.title": "Захаваць вÑÑ€ÑÑ–ÑŽ", + "pad.toolbar.settings.title": "Ðалады", + "pad.toolbar.embed.title": "Убудаваць гÑты дакумÑнт", + "pad.toolbar.showusers.title": "Паказаць карыÑтальнікаў у гÑтым дакумÑнце", + "pad.colorpicker.save": "Захаваць", + "pad.colorpicker.cancel": "СкаÑаваць", + "pad.loading": "Загрузка...", + "pad.passwordRequired": "Ð”Ð»Ñ Ð´Ð¾Ñтупу да гÑтага дакумÑнта патрÑбны пароль", + "pad.permissionDenied": "Ð’Ñ‹ Ð½Ñ Ð¼Ð°ÐµÑ†Ðµ дазволу на доÑтуп да гÑтага дакумÑнта", + "pad.wrongPassword": "Ð’Ñ‹ ўвÑлі нÑÑлушны пароль", + "pad.settings.padSettings": "Ðалады дакумÑнта", + "pad.settings.myView": "Мой выглÑд", + "pad.settings.stickychat": "ЗаўÑёды паказваць чат", + "pad.settings.colorcheck": "Колеры аўтарÑтва", + "pad.settings.linenocheck": "Ðумары радкоў", + "pad.settings.rtlcheck": "ТÑкÑÑ‚ Ñправа-налева", + "pad.settings.fontType": "Тып шрыфту:", + "pad.settings.fontType.normal": "Звычайны", + "pad.settings.fontType.monospaced": "Монашырынны", + "pad.settings.globalView": "Ðгульны выглÑд", + "pad.settings.language": "Мова:", + "pad.importExport.import_export": "Імпарт/ЭкÑпарт", + "pad.importExport.import": "Загрузіжайце Ð»ÑŽÐ±Ñ‹Ñ Ñ‚ÑкÑÑ‚Ð°Ð²Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ або дакумÑнты", + "pad.importExport.importSuccessful": "ПаÑьпÑхова!", + "pad.importExport.export": "ЭкÑпартаваць бÑгучы дакумÑнт Ñк:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "ПроÑты Ñ‚ÑкÑÑ‚", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "ПадлучыліÑÑ.", + "pad.modals.reconnecting": "ПерападлучÑньне да вашага дакумÑнта...", + "pad.modals.forcereconnect": "ПрымуÑовае перападлучÑньне", + "pad.share": "ПадзÑліцца дакумÑнтам", + "pad.share.readonly": "Толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ", + "pad.share.link": "СпаÑылка", + "pad.chat": "Чат" +} \ No newline at end of file diff --git a/src/locales/bn.json b/src/locales/bn.json index dba1c2154..15b06f356 100644 --- a/src/locales/bn.json +++ b/src/locales/bn.json @@ -1,49 +1,89 @@ { - "@metadata": { - "authors": [ - "Bellayet", - "Nasir8891" - ] - }, - "index.newPad": "\u09a8\u09a4\u09c1\u09a8 \u09aa\u09cd\u09af\u09be\u09a1", - "index.createOpenPad": "\u0985\u09a5\u09ac\u09be \u09a8\u09be\u09ae \u09b2\u09bf\u0996\u09c7 \u09aa\u09cd\u09af\u09be\u09a1 \u0996\u09c1\u09b2\u09c1\u09a8\/\u09a4\u09c8\u09b0\u09c0 \u0995\u09b0\u09c1\u09a8:", - "pad.toolbar.bold.title": "\u0997\u09be\u09a1\u09bc \u0995\u09b0\u09be (Ctrl-B)", - "pad.toolbar.italic.title": "\u09ac\u09be\u0981\u0995\u09be \u0995\u09b0\u09be (Ctrl-I)", - "pad.toolbar.indent.title": "\u09aa\u09cd\u09b0\u09be\u09a8\u09cd\u09a4\u09bf\u0995\u0995\u09b0\u09a3", - "pad.toolbar.settings.title": "\u09b8\u09c7\u099f\u09bf\u0982", - "pad.colorpicker.save": "\u09b8\u0982\u09b0\u0995\u09cd\u09b7\u09a3", - "pad.colorpicker.cancel": "\u09ac\u09be\u09a4\u09bf\u09b2", - "pad.loading": "\u09b2\u09cb\u09a1\u09bf\u0982...", - "pad.settings.fontType.normal": "\u09b8\u09be\u09a7\u09be\u09b0\u09a3", - "pad.settings.language": "\u09ad\u09be\u09b7\u09be:", - "pad.importExport.export": "\u098f\u0987 \u09aa\u09cd\u09af\u09be\u09a1\u099f\u09bf \u098f\u0995\u09cd\u09b8\u09aa\u09cb\u09b0\u09cd\u099f \u0995\u09b0\u09c1\u09a8", - "pad.importExport.exporthtml": "\u098f\u0987\u099a\u099f\u09bf\u098f\u09ae\u098f\u09b2", - "pad.importExport.exportplain": "\u09b8\u09be\u09a7\u09be\u09b0\u09a3 \u09b2\u09c7\u0996\u09be", - "pad.importExport.exportword": "\u09ae\u09be\u0987\u0995\u09cd\u09b0\u09cb\u09b8\u09ab\u099f \u0993\u09af\u09bc\u09be\u09b0\u09cd\u09a1", - "pad.importExport.exportpdf": "\u09aa\u09bf\u09a1\u09bf\u098f\u09ab", - "pad.importExport.exportopen": "\u0993\u09a1\u09bf\u098f\u09ab (\u0993\u09aa\u09c7\u09a8 \u09a1\u0995\u09c1\u09ae\u09c7\u09a8\u09cd\u099f \u09ab\u09b0\u09ae\u09cd\u09af\u09be\u099f)", - "pad.modals.deleted": "\u0985\u09aa\u09b8\u09be\u09b0\u09bf\u09a4\u0964", - "pad.modals.deleted.explanation": "\u098f\u0987 \u09aa\u09cd\u09af\u09be\u09a1\u099f\u09bf \u0985\u09aa\u09b8\u09be\u09b0\u09a3 \u0995\u09b0\u09be \u09b9\u09af\u09bc\u09c7\u099b\u09c7\u0964", - "pad.modals.disconnected.explanation": "\u09b8\u09be\u09b0\u09cd\u09ad\u09be\u09b0\u09c7\u09b0 \u09b8\u09be\u09a5\u09c7 \u09af\u09cb\u0997\u09be\u09af\u09cb\u0997 \u0995\u09b0\u09be \u09af\u09be\u099a\u09cd\u099b\u09c7 \u09a8\u09be", - "pad.share": "\u09b6\u09c7\u09af\u09bc\u09be\u09b0 \u0995\u09b0\u09c1\u09a8", - "pad.share.link": "\u09b2\u09bf\u0982\u0995", - "pad.share.emebdcode": "\u0987\u0989\u0986\u09b0\u098f\u09b2 \u09b8\u0982\u09af\u09cb\u099c\u09a8", - "pad.chat": "\u099a\u09cd\u09af\u09be\u099f", - "pad.chat.title": "\u098f\u0987 \u09aa\u09cd\u09af\u09be\u09a1\u09c7\u09b0 \u099c\u09a8\u09cd\u09af \u099a\u09cd\u09af\u09be\u099f \u099a\u09be\u09b2\u09c1 \u0995\u09b0\u09c1\u09a8\u0964", - "timeslider.toolbar.returnbutton": "\u09aa\u09cd\u09af\u09be\u09a1\u09c7 \u09ab\u09bf\u09b0\u09c7 \u09af\u09be\u0993", - "timeslider.toolbar.authors": "\u09b2\u09c7\u0996\u0995\u0997\u09a3:", - "timeslider.toolbar.authorsList": "\u0995\u09cb\u09a8\u09cb \u09b2\u09c7\u0996\u0995 \u09a8\u09c7\u0987", - "timeslider.exportCurrent": "\u09ac\u09b0\u09cd\u09a4\u09ae\u09be\u09a8 \u09b8\u0982\u09b8\u09cd\u0995\u09b0\u09a3\u099f\u09bf \u098f\u0995\u09cd\u09b8\u09aa\u09cb\u09b0\u09cd\u099f \u0995\u09b0\u09c1\u09a8:", - "timeslider.month.january": "\u099c\u09be\u09a8\u09c1\u09af\u09bc\u09be\u09b0\u09bf", - "timeslider.month.february": "\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09af\u09bc\u09be\u09b0\u09bf", - "timeslider.month.march": "\u09ae\u09be\u09b0\u09cd\u099a", - "timeslider.month.april": "\u098f\u09aa\u09cd\u09b0\u09bf\u09b2", - "timeslider.month.may": "\u09ae\u09c7", - "timeslider.month.june": "\u099c\u09c1\u09a8", - "timeslider.month.july": "\u099c\u09c1\u09b2\u09be\u0987", - "timeslider.month.august": "\u0986\u0997\u09b8\u09cd\u099f", - "timeslider.month.september": "\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0", - "timeslider.month.october": "\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0", - "timeslider.month.november": "\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0", - "timeslider.month.december": "\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0" + "@metadata": { + "authors": [ + "Bellayet", + "Nasir8891", + "Sankarshan" + ] + }, + "index.newPad": "নতà§à¦¨ পà§à¦¯à¦¾à¦¡", + "index.createOpenPad": "অথবা নাম লিখে পà§à¦¯à¦¾à¦¡ খà§à¦²à§à¦¨/তৈরী করà§à¦¨:", + "pad.toolbar.bold.title": "গাড় করা (Ctrl-B)", + "pad.toolbar.italic.title": "বাà¦à¦•া করা (Ctrl-I)", + "pad.toolbar.underline.title": "আনà§à¦¡à¦¾à¦°à¦²à¦¾à¦‡à¦¨ (Ctrl-U)", + "pad.toolbar.ol.title": "সারিবদà§à¦§ তালিকা", + "pad.toolbar.indent.title": "পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•করণ", + "pad.toolbar.unindent.title": "আউটডেনà§à¦Ÿ", + "pad.toolbar.undo.title": "বাতিল করà§à¦¨ (Ctrl-Z)", + "pad.toolbar.redo.title": "পà§à¦¨à¦°à¦¾à¦¯à¦¼ করà§à¦¨ (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "কৃতি রং পরিষà§à¦•ার করà§à¦¨", + "pad.toolbar.timeslider.title": "টাইমসà§à¦²à¦¾à¦‡à¦¡à¦¾à¦°", + "pad.toolbar.savedRevision.title": "সংসà§à¦•রণ সংরকà§à¦·à¦£ করà§à¦¨", + "pad.toolbar.settings.title": "সেটিং", + "pad.toolbar.embed.title": "à¦à¦‡ পà§à¦¯à¦¾à¦¡-টি à¦à¦®à§à¦¬à§‡à¦¡ করà§à¦¨", + "pad.toolbar.showusers.title": "à¦à¦‡ পà§à¦¯à¦¾à¦¡à§‡à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•ারীদের দেখান", + "pad.colorpicker.save": "সংরকà§à¦·à¦£", + "pad.colorpicker.cancel": "বাতিল", + "pad.loading": "লোডিং...", + "pad.passwordRequired": "à¦à¦‡ পà§à¦¯à¦¾à¦¡-টি দেখার জনà§à¦¯ আপনাকে পাসওয়ারà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করতে হবে", + "pad.permissionDenied": "দà§à¦ƒà¦–িত, ঠপà§à¦¯à¦¾à¦¡-টি দেখার অধিকার আপনার নেই", + "pad.wrongPassword": "আপনার পাসওয়ারà§à¦¡ সঠিক নয়", + "pad.settings.padSettings": "পà§à¦¯à¦¾à¦¡à§‡à¦° সà§à¦¥à¦¾à¦ªà¦¨", + "pad.settings.myView": "আমার দৃশà§à¦¯", + "pad.settings.stickychat": "চà§à¦¯à¦¾à¦Ÿ সকà§à¦°à§€à¦¨à§‡ পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে", + "pad.settings.colorcheck": "লেখকদের নিজসà§à¦¬ নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ রং", + "pad.settings.linenocheck": "লাইন নমà§à¦¬à¦°", + "pad.settings.fontType": "ফনà§à¦Ÿ-à¦à¦° পà§à¦°à¦•ার:", + "pad.settings.fontType.normal": "সাধারণ", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "সরà§à¦¬à¦¬à§à¦¯à¦¾à¦ªà§€ দৃশà§à¦¯", + "pad.settings.language": "ভাষা:", + "pad.importExport.import_export": "ইমà§à¦ªà§‹à¦°à¦Ÿ/à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ", + "pad.importExport.import": "কোন টেকà§à¦¸à¦Ÿ ফাইল বা ডকà§à¦®à§‡à¦¨à§à¦Ÿ আপলোড করà§à¦¨", + "pad.importExport.importSuccessful": "সফল!", + "pad.importExport.export": "à¦à¦‡ পà§à¦¯à¦¾à¦¡à¦Ÿà¦¿ à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨", + "pad.importExport.exporthtml": "à¦à¦‡à¦šà¦Ÿà¦¿à¦à¦®à¦à¦²", + "pad.importExport.exportplain": "সাধারণ লেখা", + "pad.importExport.exportword": "মাইকà§à¦°à§‹à¦¸à¦«à¦Ÿ ওয়ারà§à¦¡", + "pad.importExport.exportpdf": "পিডিà¦à¦«", + "pad.importExport.exportopen": "ওডিà¦à¦« (ওপেন ডকà§à¦®à§‡à¦¨à§à¦Ÿ ফরমà§à¦¯à¦¾à¦Ÿ)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "যোগাযোগ সফল", + "pad.modals.reconnecting": "আপনার পà§à¦¯à¦¾à¦¡à§‡à¦° সাথে সংযোগসà§à¦¥à¦¾à¦ªà¦¨ করা হচà§à¦›à§‡..", + "pad.modals.forcereconnect": "পà§à¦¨à¦°à¦¾à¦¯à¦¼ সংযোগসà§à¦¥à¦¾à¦ªà¦¨à§‡à¦° চেষà§à¦Ÿà¦¾", + "pad.modals.userdup": "অনà§à¦¯ উইনà§à¦¡à§‹-তে খোলা হয়েছে", + "pad.modals.unauth": "আপনার অধিকার নেই", + "pad.modals.initsocketfail": "সারà§à¦­à¦¾à¦°-à¦à¦° সাথে যোগাযোগ করতে অসকà§à¦·à¦®à¥¤", + "pad.modals.deleted": "অপসারিত।", + "pad.modals.deleted.explanation": "à¦à¦‡ পà§à¦¯à¦¾à¦¡à¦Ÿà¦¿ অপসারণ করা হয়েছে।", + "pad.modals.disconnected.explanation": "সারà§à¦­à¦¾à¦°à§‡à¦° সাথে যোগাযোগ করা যাচà§à¦›à§‡ না", + "pad.share": "শেয়ার করà§à¦¨", + "pad.share.link": "লিংক", + "pad.share.emebdcode": "ইউআরà¦à¦² সংযোজন", + "pad.chat": "চà§à¦¯à¦¾à¦Ÿ", + "pad.chat.title": "à¦à¦‡ পà§à¦¯à¦¾à¦¡à§‡à¦° জনà§à¦¯ চà§à¦¯à¦¾à¦Ÿ চালৠকরà§à¦¨à¥¤", + "timeslider.toolbar.returnbutton": "পà§à¦¯à¦¾à¦¡à§‡ ফিরে যাও", + "timeslider.toolbar.authors": "লেখকগণ:", + "timeslider.toolbar.authorsList": "কোনো লেখক নেই", + "timeslider.exportCurrent": "বরà§à¦¤à¦®à¦¾à¦¨ সংসà§à¦•রণটি à¦à¦•à§à¦¸à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨:", + "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.approve": "অনà§à¦®à§‹à¦¦à¦¿à¦¤", + "pad.impexp.importbutton": "à¦à¦–ন ইমà§à¦ªà§‹à¦°à§à¦Ÿ করà§à¦¨", + "pad.impexp.importing": "ইমà§à¦ªà§‹à¦°à§à¦Ÿ চলছে...", + "pad.impexp.importfailed": "ইমà§à¦ªà§‹à¦°à§à¦Ÿ অসকà§à¦·à¦®" } \ No newline at end of file diff --git a/src/locales/br.json b/src/locales/br.json new file mode 100644 index 000000000..d28f82487 --- /dev/null +++ b/src/locales/br.json @@ -0,0 +1,121 @@ +{ + "@metadata": { + "authors": [ + "Fohanno", + "Fulup", + "Gwenn-Ael", + "Y-M D" + ] + }, + "index.newPad": "Pad nevez", + "index.createOpenPad": "pe krouiñ/digeriñ ur pad gant an anv :", + "pad.toolbar.bold.title": "Tev (Ctrl-B)", + "pad.toolbar.italic.title": "Italek (Ctrl-I)", + "pad.toolbar.underline.title": "Islinennañ (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Barrennet", + "pad.toolbar.ol.title": "Roll urzhiet", + "pad.toolbar.ul.title": "Roll en dizurzh", + "pad.toolbar.indent.title": "Endantañ (TAB)", + "pad.toolbar.unindent.title": "Diendantañ", + "pad.toolbar.undo.title": "Dizober (Ktrl-Z)", + "pad.toolbar.redo.title": "Adober (Ktrl-Y)", + "pad.toolbar.clearAuthorship.title": "Diverkañ al livioù oc'h anaout an aozerien", + "pad.toolbar.import_export.title": "Enporzhiañ/Ezporzhiañ eus/war-zu ur furmad restr disheñvel", + "pad.toolbar.timeslider.title": "Istor dinamek", + "pad.toolbar.savedRevision.title": "Doareoù enrollet", + "pad.toolbar.settings.title": "Arventennoù", + "pad.toolbar.embed.title": "Rannañ hag enframmañ ar pad-mañ", + "pad.toolbar.showusers.title": "Diskwelet implijerien ar Pad", + "pad.colorpicker.save": "Enrollañ", + "pad.colorpicker.cancel": "Nullañ", + "pad.loading": "O kargañ...", + "pad.passwordRequired": "Ezhomm ho peus ur ger-tremen evit mont d'ar Pad-se", + "pad.permissionDenied": "\nN'oc'h ket aotreet da vont d'ar pad-mañ", + "pad.wrongPassword": "Fazius e oa ho ker-tremen", + "pad.settings.padSettings": "Arventennoù Pad", + "pad.settings.myView": "Ma diskwel", + "pad.settings.stickychat": "Diskwel ar flap bepred", + "pad.settings.colorcheck": "Livioù anaout", + "pad.settings.linenocheck": "Niverennoù linennoù", + "pad.settings.rtlcheck": "Lenn an danvez a-zehou da gleiz ?", + "pad.settings.fontType": "Seurt font :", + "pad.settings.fontType.normal": "Reizh", + "pad.settings.fontType.monospaced": "Monospas", + "pad.settings.globalView": "Gwel dre vras", + "pad.settings.language": "Yezh :", + "pad.importExport.import_export": "Enporzhiañ/Ezporzhiañ", + "pad.importExport.import": "Enkargañ un destenn pe ur restr", + "pad.importExport.importSuccessful": "Deuet eo ganeoc'h !", + "pad.importExport.export": "Ezporzhiañ ar pad bremañ evel :", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Testenn blaen", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Ne c'hallit ket emporzjiañ furmadoù testennoù kriz pe html. Evit arc'hwelioù enporzhiañ emdroetoc'h, staliit \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword\u003C/a\u003E mar plij.", + "pad.modals.connected": "Kevreet.", + "pad.modals.reconnecting": "Adkevreañ war-zu ho pad...", + "pad.modals.forcereconnect": "Adkevreañ dre heg", + "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ñ.", + "pad.modals.unauth": "N'eo ket aotreet", + "pad.modals.unauth.explanation": "Kemmet e vo hoc'h aotreoù pa vo diskwelet ar bajenn.-mañ Klaskit kevreañ en-dro.", + "pad.modals.looping.explanation": "Kudennoù kehentiñ zo gant ar servijer sinkronelekaat.", + "pad.modals.looping.cause": "Posupl eo e vefe gwarezet ho kevreadur gant ur maltouter diembreget pe ur servijer proksi", + "pad.modals.initsocketfail": "Ne c'haller ket tizhout ar servijer.", + "pad.modals.initsocketfail.explanation": "Ne c'haller ket kevreañ ouzh ar servijer sinkronelaat.", + "pad.modals.initsocketfail.cause": "Gallout a ra ar gudenn dont eus ho merdeer Web pe eus ho kevreadur Internet.", + "pad.modals.slowcommit.explanation": "Ne respont ket ar serveur.", + "pad.modals.slowcommit.cause": "Gallout a ra dont diwar kudennoù kevreañ gant ar rouedad.", + "pad.modals.deleted": "Dilamet.", + "pad.modals.deleted.explanation": "Lamet eo bet ar pad-mañ.", + "pad.modals.disconnected": "Digevreet oc'h bet.", + "pad.modals.disconnected.explanation": "Kollet eo bet ar c'hevreadur gant ar servijer", + "pad.modals.disconnected.cause": "Dizimplijadus eo ar servijer marteze. Kelaouit ar servij merañ ma pad ar gudenn.", + "pad.share": "Rannañ ar pad-mañ.", + "pad.share.readonly": "Lenn hepken", + "pad.share.link": "Liamm", + "pad.share.emebdcode": "Enframmañ an URL", + "pad.chat": "Flap", + "pad.chat.title": "Digeriñ ar flap kevelet gant ar pad-mañ.", + "pad.chat.loadmessages": "Kargañ muioc'h a gemennadennoù", + "timeslider.pageTitle": "Istor dinamek eus {{appTitle}}", + "timeslider.toolbar.returnbutton": "Distreiñ d'ar pad-mañ.", + "timeslider.toolbar.authors": "Aozerien :", + "timeslider.toolbar.authorsList": "Aozer ebet", + "timeslider.toolbar.exportlink.title": "Ezporzhiañ", + "timeslider.exportCurrent": "Ezporzhiañ an doare bremañ evel :", + "timeslider.version": "Stumm {{version}}", + "timeslider.saved": "Enrollañ {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Genver", + "timeslider.month.february": "C'hwevrer", + "timeslider.month.march": "Meurzh", + "timeslider.month.april": "Ebrel", + "timeslider.month.may": "Mae", + "timeslider.month.june": "Mezheven", + "timeslider.month.july": "Gouere", + "timeslider.month.august": "Eost", + "timeslider.month.september": "Gwengolo", + "timeslider.month.october": "Here", + "timeslider.month.november": "Du", + "timeslider.month.december": "Kerzu", + "timeslider.unnamedauthors": "{{num}} dianav {[plural(num) one: aozer, other: aozerien ]}", + "pad.savedrevs.marked": "Merket eo an adweladenn-mañ evel adweladenn gwiriet", + "pad.userlist.entername": "Ebarzhit hoc'h anv", + "pad.userlist.unnamed": "dizanv", + "pad.userlist.guest": "Den pedet", + "pad.userlist.deny": "Nac'h", + "pad.userlist.approve": "Aprouiñ", + "pad.editbar.clearcolors": "Diverkañ al livioù stag ouzh an aozerien en teul a-bezh ?", + "pad.impexp.importbutton": "Enporzhiañ bremañ", + "pad.impexp.importing": "Oc'h enporzhiañ...", + "pad.impexp.confirmimport": "Ma vez enporzhiet ur restr e vo diverket ar pezh zo en teul a-vremañ. Ha sur oc'h e fell deoc'h mont betek penn ?", + "pad.impexp.convertFailed": "N'eus ket bet gallet enporzhiañ ar restr. Ober gant ur furmad teul all pe eilañ/pegañ gant an dorn.", + "pad.impexp.uploadFailed": "C'hwitet eo bet an enporzhiañ. Klaskit en-dro.", + "pad.impexp.importfailed": "C'hwitet eo an enporzhiadenn", + "pad.impexp.copypaste": "Eilit/pegit, mar plij", + "pad.impexp.exportdisabled": "Diweredekaet eo ezporzhiañ d'ar furmad {{type}}. Kit e darempred gant merour ar reizhiad evit gouzout hiroc'h." +} \ No newline at end of file diff --git a/src/locales/ca.json b/src/locales/ca.json index ca4d3f194..43f24c551 100644 --- a/src/locales/ca.json +++ b/src/locales/ca.json @@ -1,77 +1,125 @@ { - "@metadata": { - "authors": [ - "Pginer", - "Pitort", - "Toniher" - ] - }, - "pad.toolbar.bold.title": "Negreta (Ctrl-B)", - "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", - "pad.toolbar.underline.title": "Subratllat (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Ratllat", - "pad.toolbar.ol.title": "Llista ordenada", - "pad.toolbar.ul.title": "Llista sense ordenar", - "pad.toolbar.indent.title": "Sagnat", - "pad.toolbar.unindent.title": "Sagnat invers", - "pad.toolbar.undo.title": "Desf\u00e9s (Ctrl-Z)", - "pad.toolbar.redo.title": "Ref\u00e9s (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Neteja els colors d'autoria", - "pad.toolbar.savedRevision.title": "Revisions desades", - "pad.toolbar.settings.title": "Configuraci\u00f3", - "pad.toolbar.showusers.title": "Mostra els usuaris d\u2019aquest pad", - "pad.colorpicker.save": "Desa", - "pad.colorpicker.cancel": "Cancel\u00b7la", - "pad.loading": "S'est\u00e0 carregant...", - "pad.wrongPassword": "La contrasenya \u00e9s incorrecta", - "pad.settings.myView": "La meva vista", - "pad.settings.linenocheck": "N\u00fameros de l\u00ednia", - "pad.settings.fontType": "Tipus de lletra:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.globalView": "Vista global", - "pad.settings.language": "Llengua:", - "pad.importExport.import_export": "Importaci\u00f3\/exportaci\u00f3", - "pad.importExport.import": "Puja qualsevol fitxer de text o document", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Text net", - "pad.modals.connected": "Connectat.", - "pad.modals.forcereconnect": "For\u00e7a tornar a connectar", - "pad.modals.unauth": "No autoritzat", - "pad.modals.looping": "Desconnectat.", - "pad.modals.initsocketfail": "El servidor no \u00e9s accessible.", - "pad.modals.initsocketfail.explanation": "No s'ha pogut connectar amb el servidor de sincronitzaci\u00f3.", - "pad.modals.slowcommit": "Desconnectat.", - "pad.modals.slowcommit.explanation": "El servidor no respon.", - "pad.modals.deleted": "Suprimit.", - "pad.modals.disconnected": "Heu estat desconnectat.", - "pad.share.readonly": "Nom\u00e9s de lectura", - "pad.share.link": "Enlla\u00e7", - "pad.chat": "Xat", - "timeslider.toolbar.authors": "Autors:", - "timeslider.toolbar.authorsList": "No hi ha autors", - "timeslider.toolbar.exportlink.title": "Exporta", - "timeslider.exportCurrent": "Exporta la versi\u00f3 actual com a:", - "timeslider.version": "Versi\u00f3 {{version}}", - "timeslider.month.january": "Gener", - "timeslider.month.february": "Febrer", - "timeslider.month.march": "Mar\u00e7", - "timeslider.month.april": "Abril", - "timeslider.month.may": "Maig", - "timeslider.month.june": "Juny", - "timeslider.month.july": "Juliol", - "timeslider.month.august": "Agost", - "timeslider.month.september": "Setembre", - "timeslider.month.october": "Octubre", - "timeslider.month.november": "Novembre", - "timeslider.month.december": "Desembre", - "pad.userlist.entername": "Introdu\u00efu el vostre nom", - "pad.userlist.unnamed": "sense nom", - "pad.userlist.guest": "Convidat", - "pad.userlist.deny": "Refusa", - "pad.userlist.approve": "Aprova", - "pad.impexp.importbutton": "Importa ara", - "pad.impexp.importing": "Important...", - "pad.impexp.convertFailed": "No \u00e9s possible d'importar aquest fitxer. Si us plau, podeu provar d'utilitzar un format diferent o copiar i enganxar manualment.", - "pad.impexp.importfailed": "Ha fallat la importaci\u00f3", - "pad.impexp.copypaste": "Si us plau, copieu i enganxeu" + "@metadata": { + "authors": [ + "Alvaro Vidal-Abarca", + "Pginer", + "Pitort", + "Toniher" + ] + }, + "index.newPad": "Nou pad", + "index.createOpenPad": "o crea/obre un pad amb el nom:", + "pad.toolbar.bold.title": "Negreta (Ctrl-B)", + "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", + "pad.toolbar.underline.title": "Subratllat (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Ratllat", + "pad.toolbar.ol.title": "Llista ordenada", + "pad.toolbar.ul.title": "Llista sense ordenar", + "pad.toolbar.indent.title": "Sagnat (TAB)", + "pad.toolbar.unindent.title": "Sagnat invers (Majúsc+TAB)", + "pad.toolbar.undo.title": "Desfés (Ctrl-Z)", + "pad.toolbar.redo.title": "Refés (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Neteja els colors d'autoria", + "pad.toolbar.import_export.title": "Importa/exporta a partir de diferents formats de fitxer", + "pad.toolbar.timeslider.title": "Línia temporal", + "pad.toolbar.savedRevision.title": "Desa la revisió", + "pad.toolbar.settings.title": "Configuració", + "pad.toolbar.embed.title": "Comparteix i incrusta aquest pad", + "pad.toolbar.showusers.title": "Mostra els usuaris d’aquest pad", + "pad.colorpicker.save": "Desa", + "pad.colorpicker.cancel": "Cancel·la", + "pad.loading": "S'està carregant...", + "pad.passwordRequired": "Us cal una contrasenya per a accedir a aquest pad", + "pad.permissionDenied": "No teniu permisos per a accedir a aquest pad", + "pad.wrongPassword": "La contrasenya és incorrecta", + "pad.settings.padSettings": "Paràmetres del pad", + "pad.settings.myView": "La meva vista", + "pad.settings.stickychat": "Xateja sempre a la pantalla", + "pad.settings.colorcheck": "Colors d'autoria", + "pad.settings.linenocheck": "Números de línia", + "pad.settings.rtlcheck": "Llegir el contingut de dreta a esquerra?", + "pad.settings.fontType": "Tipus de lletra:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "D'amplada fixa", + "pad.settings.globalView": "Vista global", + "pad.settings.language": "Llengua:", + "pad.importExport.import_export": "Importació/exportació", + "pad.importExport.import": "Puja qualsevol fitxer de text o document", + "pad.importExport.importSuccessful": "Hi ha hagut èxit!", + "pad.importExport.export": "Exporta el pad actual com a:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Text net", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Només podeu importar de text net o html. Per a opcions d'importació més avançades \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstal·leu l'Abiword\u003C/a\u003E.", + "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.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.", + "pad.modals.unauth": "No autoritzat", + "pad.modals.unauth.explanation": "Els vostres permisos han canviat mentre es visualitzava la pàgina. Proveu de reconnectar-vos.", + "pad.modals.looping.explanation": "Hi ha problemes de comunicació amb el servidor de sincronització.", + "pad.modals.looping.cause": "Potser us heu connectat a través d'un tallafocs o servidor intermediari incompatible.", + "pad.modals.initsocketfail": "El servidor no és accessible.", + "pad.modals.initsocketfail.explanation": "No s'ha pogut connectar amb el servidor de sincronització.", + "pad.modals.initsocketfail.cause": "Això és probablement a causa d'un problema amb el navegador o la connexió a Internet.", + "pad.modals.slowcommit.explanation": "El servidor no respon.", + "pad.modals.slowcommit.cause": "Això podria ser a causa de problemes amb la connectivitat de la xarxa.", + "pad.modals.badChangeset.explanation": "El servidor de sincronització ha classificat com a il·legat una edició que heu fet.", + "pad.modals.badChangeset.cause": "Això pot ser degut a una configuració errònia del servidor o a algun altre comportament inesperat. Si us plau, si considereu que això és un error, contacteu amb l'administrador del servei. Intenteu reconnectar-vos per tal de continuar editant.", + "pad.modals.corruptPad.explanation": "El pad al qual esteu intentant accedir està corrupte.", + "pad.modals.corruptPad.cause": "Això pot ser degut a una configuració errònia del servidor o a algun altre comportament inesperat. Si us plau, contacteu amb l'administrador del servei.", + "pad.modals.deleted": "Suprimit.", + "pad.modals.deleted.explanation": "S'ha suprimit el pad.", + "pad.modals.disconnected": "Heu estat desconnectat.", + "pad.modals.disconnected.explanation": "S'ha perdut la connexió amb el servidor", + "pad.modals.disconnected.cause": "El servidor sembla que no està disponible. Notifiqueu a l'administrador del servei si continua passant.", + "pad.share": "Comparteix el pad", + "pad.share.readonly": "Només de lectura", + "pad.share.link": "Enllaç", + "pad.share.emebdcode": "Incrusta l'URL", + "pad.chat": "Xat", + "pad.chat.title": "Obre el xat d'aquest pad.", + "pad.chat.loadmessages": "Carrega més missatges", + "timeslider.pageTitle": "Línia temporal — {{appTitle}}", + "timeslider.toolbar.returnbutton": "Torna al pad", + "timeslider.toolbar.authors": "Autors:", + "timeslider.toolbar.authorsList": "No hi ha autors", + "timeslider.toolbar.exportlink.title": "Exporta", + "timeslider.exportCurrent": "Exporta la versió actual com a:", + "timeslider.version": "Versió {{version}}", + "timeslider.saved": "Desat {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Gener", + "timeslider.month.february": "Febrer", + "timeslider.month.march": "Març", + "timeslider.month.april": "Abril", + "timeslider.month.may": "Maig", + "timeslider.month.june": "Juny", + "timeslider.month.july": "Juliol", + "timeslider.month.august": "Agost", + "timeslider.month.september": "Setembre", + "timeslider.month.october": "Octubre", + "timeslider.month.november": "Novembre", + "timeslider.month.december": "Desembre", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor, other: autors ]} sense nom", + "pad.savedrevs.marked": "Aquesta revisió està marcada ara com a revisió desada", + "pad.userlist.entername": "Introduïu el vostre nom", + "pad.userlist.unnamed": "sense nom", + "pad.userlist.guest": "Convidat", + "pad.userlist.deny": "Refusa", + "pad.userlist.approve": "Aprova", + "pad.editbar.clearcolors": "Voleu netejar els colors d'autor del document sencer?", + "pad.impexp.importbutton": "Importa ara", + "pad.impexp.importing": "Important...", + "pad.impexp.confirmimport": "En importar un fitxer se sobreescriurà el text actual del pad. Esteu segur que voleu continuar?", + "pad.impexp.convertFailed": "No és possible d'importar aquest fitxer. Si us plau, podeu provar d'utilitzar un format diferent o copiar i enganxar manualment.", + "pad.impexp.uploadFailed": "Ha fallat la càrrega. Torneu-ho a provar", + "pad.impexp.importfailed": "Ha fallat la importació", + "pad.impexp.copypaste": "Si us plau, copieu i enganxeu", + "pad.impexp.exportdisabled": "Està inhabilitada l'exportació com a {{type}}. Contacteu amb el vostre administrador de sistemes per a més informació." } \ No newline at end of file diff --git a/src/locales/cs.json b/src/locales/cs.json index bf415f232..4ff97ec62 100644 --- a/src/locales/cs.json +++ b/src/locales/cs.json @@ -1,99 +1,126 @@ { - "@metadata": { - "authors": [ - "Quinn" - ] - }, - "index.newPad": "Nov\u00fd Pad", - "index.createOpenPad": "nebo vytvo\u0159it\/otev\u0159\u00edt Pad jm\u00e9nem:", - "pad.toolbar.bold.title": "Tu\u010dn\u00e9 (Ctrl-B)", - "pad.toolbar.italic.title": "Kurz\u00edva (Ctrl-I)", - "pad.toolbar.underline.title": "Podtr\u017een\u00ed (Ctrl-U)", - "pad.toolbar.strikethrough.title": "P\u0159eskrtnut\u00e9", - "pad.toolbar.ol.title": "\u010c\u00edslovan\u00fd seznam", - "pad.toolbar.ul.title": "Ne\u010d\u00edslovan\u00fd seznam", - "pad.toolbar.indent.title": "Odsazen\u00ed", - "pad.toolbar.unindent.title": "P\u0159edsazen\u00ed", - "pad.toolbar.undo.title": "Zp\u011bt (Ctrl-Z)", - "pad.toolbar.redo.title": "Opakovat (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Vymazat barvy autorstv\u00ed", - "pad.toolbar.import_export.title": "Importovat\/Exportovat z\/do jin\u00fdch form\u00e1t\u016f", - "pad.toolbar.timeslider.title": "Osa \u010dasu", - "pad.toolbar.savedRevision.title": "Ulo\u017een\u00e9 revize", - "pad.toolbar.settings.title": "Nastaven\u00ed", - "pad.toolbar.embed.title": "Um\u00edstit tento Pad", - "pad.toolbar.showusers.title": "Zobrazit u\u017eivatele u tohoto Padu", - "pad.colorpicker.save": "Ulo\u017eit", - "pad.colorpicker.cancel": "Zru\u0161it", - "pad.loading": "Na\u010d\u00edt\u00e1n\u00ed...", - "pad.passwordRequired": "Pot\u0159ebuje\u0161 zadat heslo pro p\u0159\u00edstup k tomuto Padu", - "pad.permissionDenied": "Nem\u00e1\u0161 p\u0159\u00edstupov\u00e9 opr\u00e1vn\u011bn\u00ed k tomuto Padu", - "pad.wrongPassword": "Tv\u00e9 heslo je \u0161patn\u00e9", - "pad.settings.padSettings": "Nastaven\u00ed Padu", - "pad.settings.myView": "Vlastn\u00ed pohled", - "pad.settings.stickychat": "Chat v\u017edy na obrazovce", - "pad.settings.colorcheck": "Barvy autorstv\u00ed", - "pad.settings.linenocheck": "\u010c\u00edsla \u0159\u00e1dk\u016f", - "pad.settings.fontType": "Typ p\u00edsma:", - "pad.settings.fontType.normal": "Norm\u00e1ln\u00ed", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Glob\u00e1ln\u00ed pohled", - "pad.settings.language": "Jazyk:", - "pad.importExport.import_export": "Import\/Export", - "pad.importExport.import": "Nahr\u00e1t libovoln\u00fd textov\u00fd soubor nebo dokument", - "pad.importExport.export": "Exportovat st\u00e1vaj\u00edc\u00ed Pad jako:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Prost\u00fd text", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Importovat m\u016f\u017ee\u0161 pouze prost\u00fd text nebo HTML form\u00e1tov\u00e1n\u00ed. Pro pokro\u010dilej\u0161\u00ed funkce importu, pros\u00edm, nainstaluj \u201eabiword<\/a>\u201c.", - "pad.modals.connected": "P\u0159ipojeno.", - "pad.modals.reconnecting": "Znovup\u0159ipojov\u00e1n\u00ed k tv\u00e9mu Padu\u2026", - "pad.modals.forcereconnect": "Vynutit znovup\u0159ipojen\u00ed", - "pad.modals.userdup.explanation": "Zd\u00e1 se, \u017ee tento Pad je na tomto po\u010d\u00edta\u010di otev\u0159en ve v\u00edce ne\u017e jednom okn\u011b.", - "pad.modals.userdup.advice": "Pro pou\u017eit\u00ed tohoto okna se mus\u00ed\u0161 znovu p\u0159ipojit.", - "pad.modals.unauth": "Nem\u00e1te autorizaci", - "pad.modals.unauth.explanation": "Va\u0161e opr\u00e1vn\u011bn\u00ed se zm\u011bnila, zat\u00edmco jste si prohl\u00ed\u017eel\/a toto okno. Zkuste se znovu p\u0159ipojit.", - "pad.modals.looping": "Odpojeno.", - "pad.modals.looping.explanation": "Nastaly probl\u00e9my p\u0159i komunikaci se synchroniza\u010dn\u00edm serverem.", - "pad.modals.looping.cause": "Mo\u017en\u00e1 jste p\u0159ipojeni p\u0159es nekompaktn\u00ed firewall nebo proxy.", - "pad.modals.initsocketfail": "Server je nedostupn\u00fd.", - "pad.modals.initsocketfail.explanation": "Nepoda\u0159ilo se p\u0159ipojit k synchroniza\u010dn\u00edmu serveru.", - "pad.modals.initsocketfail.cause": "Toto je pravd\u011bpodobn\u011b zp\u016fsobeno va\u0161\u00edm prohl\u00ed\u017ee\u010dem nebo p\u0159ipojen\u00edm k internetu.", - "pad.modals.slowcommit": "Odpojeno.", - "pad.modals.slowcommit.explanation": "Server neodpov\u00edd\u00e1.", - "pad.modals.slowcommit.cause": "M\u016f\u017ee to b\u00fdt zp\u016fsobeno probl\u00e9my s internetov\u00fdm p\u0159ipojen\u00edm.", - "pad.modals.deleted": "Odstran\u011bno.", - "pad.modals.deleted.explanation": "Tento Pad byl odebr\u00e1n.", - "pad.modals.disconnected": "Byl jsi odpojen.", - "pad.modals.disconnected.explanation": "P\u0159ipojen\u00ed k serveru bylo p\u0159eru\u0161eno", - "pad.modals.disconnected.cause": "Server m\u016f\u017ee b\u00fdt nedostupn\u00fd. Pros\u00edm, upozorni n\u00e1s, pokud bude tento probl\u00e9m p\u0159etrv\u00e1vat.", - "pad.share": "Sd\u00edlet tento Pad", - "pad.share.readonly": "Jen pro \u010dten\u00ed", - "pad.share.link": "Odkaz", - "pad.share.emebdcode": "Vlo\u017eit URL", - "pad.chat": "Chat", - "pad.chat.title": "Otev\u0159\u00edt chat tohoto Padu.", - "timeslider.pageTitle": "Osa \u010dasu {{appTitle}}", - "timeslider.toolbar.returnbutton": "N\u00e1vrat do Padu", - "timeslider.toolbar.authors": "Auto\u0159i:", - "timeslider.toolbar.authorsList": "Bez autor\u016f", - "timeslider.exportCurrent": "Exportovat nyn\u011bj\u0161\u00ed verzi jako:", - "timeslider.version": "Verze {{version}}", - "timeslider.saved": "Ulo\u017eeno {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}} {{month}} {{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "leden", - "timeslider.month.february": "\u00fanor", - "timeslider.month.march": "b\u0159ezen", - "timeslider.month.april": "duben", - "timeslider.month.may": "kv\u011bten", - "timeslider.month.june": "\u010derven", - "timeslider.month.july": "\u010dervenec", - "timeslider.month.august": "srpen", - "timeslider.month.september": "z\u00e1\u0159\u00ed", - "timeslider.month.october": "\u0159\u00edjen", - "timeslider.month.november": "listopad", - "timeslider.month.december": "prosinec" + "@metadata": { + "authors": [ + "Jakubt", + "Jezevec", + "Juandev", + "Leanes", + "Quinn" + ] + }, + "index.newPad": "Založ nový Pad", + "index.createOpenPad": "nebo vytvoÅ™/otevÅ™i Pad s názvem:", + "pad.toolbar.bold.title": "TuÄný text (Ctrl-B)", + "pad.toolbar.italic.title": "Kurzíva (Ctrl-I)", + "pad.toolbar.underline.title": "Podtržené písmo (Ctrl-U)", + "pad.toolbar.strikethrough.title": "PÅ™eskrtnuté písmo", + "pad.toolbar.ol.title": "Číslovaný seznam", + "pad.toolbar.ul.title": "NeÄíslovaný seznam", + "pad.toolbar.indent.title": "Odsazení", + "pad.toolbar.unindent.title": "PÅ™edsazení", + "pad.toolbar.undo.title": "ZpÄ›t (Ctrl-Z)", + "pad.toolbar.redo.title": "Opakovat (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Vymazat barvy autorů", + "pad.toolbar.import_export.title": "Importovat/Exportovat z/do jiných formátů", + "pad.toolbar.timeslider.title": "ÄŒasová osa", + "pad.toolbar.savedRevision.title": "Uložit revizi", + "pad.toolbar.settings.title": "Nastavení", + "pad.toolbar.embed.title": "Sdílet a umístit tento Pad", + "pad.toolbar.showusers.title": "Zobrazit uživatele u tohoto Padu", + "pad.colorpicker.save": "Uložit", + "pad.colorpicker.cancel": "ZruÅ¡it", + "pad.loading": "NaÄítání...", + "pad.passwordRequired": "Pro přístup k tomuto Padu je tÅ™eba znát heslo", + "pad.permissionDenied": "Nemáte oprávnÄ›ní pro přístup k tomuto Padu", + "pad.wrongPassword": "Nesprávné heslo", + "pad.settings.padSettings": "Nastavení Padu", + "pad.settings.myView": "Vlastní pohled", + "pad.settings.stickychat": "Chat vždy na obrazovce", + "pad.settings.colorcheck": "Barvy autorů", + "pad.settings.linenocheck": "Čísla řádků", + "pad.settings.rtlcheck": "Číst obsah zprava doleva?", + "pad.settings.fontType": "Typ písma:", + "pad.settings.fontType.normal": "Normální", + "pad.settings.fontType.monospaced": "NeproporÄní", + "pad.settings.globalView": "Globální pohled", + "pad.settings.language": "Jazyk:", + "pad.importExport.import_export": "Import/Export", + "pad.importExport.import": "Nahrát libovolný textový soubor nebo dokument", + "pad.importExport.importSuccessful": "ÚspěšnÄ›!", + "pad.importExport.export": "Exportovat stávající Pad jako:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Prostý text", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Importovat můžeÅ¡ pouze prostý text nebo HTML formátování. Pro pokroÄilejší funkce importu, prosím, nainstaluj „\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword\u003C/a\u003E“.", + "pad.modals.connected": "PÅ™ipojeno.", + "pad.modals.reconnecting": "ZnovupÅ™ipojování k Padu…", + "pad.modals.forcereconnect": "Vynutit znovupÅ™ipojení", + "pad.modals.userdup": "OtevÅ™eno v jiném oknÄ›", + "pad.modals.userdup.explanation": "Zdá se, že tento Pad je na tomto poÄítaÄi otevÅ™en ve více než jednom oknÄ›.", + "pad.modals.userdup.advice": "Pro použití tohoto okna je tÅ™eba se znovu pÅ™ipojit.", + "pad.modals.unauth": "Nemáte autorizaci", + "pad.modals.unauth.explanation": "VaÅ¡e oprávnÄ›ní se zmÄ›nila, zatímco jste si prohlížel/a toto okno. Zkuste se znovu pÅ™ipojit.", + "pad.modals.looping.explanation": "Nastaly problémy pÅ™i komunikaci se synchronizaÄním serverem.", + "pad.modals.looping.cause": "Možná jste pÅ™ipojeni pÅ™es nekompaktní firewall nebo proxy.", + "pad.modals.initsocketfail": "Server je nedostupný.", + "pad.modals.initsocketfail.explanation": "NepodaÅ™ilo se pÅ™ipojit k synchronizaÄnímu serveru.", + "pad.modals.initsocketfail.cause": "Toto je pravdÄ›podobnÄ› způsobeno vaším prohlížeÄem nebo pÅ™ipojením k internetu.", + "pad.modals.slowcommit.explanation": "Server neodpovídá.", + "pad.modals.slowcommit.cause": "Může to být způsobeno problémy s internetovým pÅ™ipojením.", + "pad.modals.badChangeset.explanation": "Editace, kterou jste uÄinili byla vyhodnocena jako zakázaná syncronizací serveru.", + "pad.modals.badChangeset.cause": "To může být způsobeno Å¡patnou konfigurací serveru, nebo jiným neoÄekávaným chováním. Kontaktujte prosím správce služby, pokud i myslíte, že se jedná o chybu. Zkuste se pÅ™ipojit znovu, pokud chcete pokraÄovat v psaní.", + "pad.modals.corruptPad.explanation": "Pad, ke kterému se snažíte pÅ™ipojit je poÅ¡kozen.", + "pad.modals.corruptPad.cause": "To může být kvůli Å¡patné konfiguraci serveru, nebo kvůli jinému neoÄekávanému chování. Kontaktujte prosím správce služby.", + "pad.modals.deleted": "OdstranÄ›no.", + "pad.modals.deleted.explanation": "Tento Pad byl odebrán.", + "pad.modals.disconnected": "Byl jste odpojen.", + "pad.modals.disconnected.explanation": "PÅ™ipojení k serveru bylo pÅ™eruÅ¡eno", + "pad.modals.disconnected.cause": "Server může být nedostupný. UpozornÄ›te administrátora služby, pokud se to bude opakovat.", + "pad.share": "Sdílet tento Pad", + "pad.share.readonly": "Jen pro Ätení", + "pad.share.link": "Odkaz", + "pad.share.emebdcode": "Vložit URL", + "pad.chat": "Chat", + "pad.chat.title": "Otevřít chat tohoto Padu.", + "pad.chat.loadmessages": "NaÄíst více zpráv", + "timeslider.pageTitle": "ÄŒasová osa {{appTitle}}", + "timeslider.toolbar.returnbutton": "Návrat do Padu", + "timeslider.toolbar.authors": "AutoÅ™i:", + "timeslider.toolbar.authorsList": "Bez autorů", + "timeslider.toolbar.exportlink.title": "Exportovat", + "timeslider.exportCurrent": "Exportovat nynÄ›jší verzi jako:", + "timeslider.version": "Verze {{version}}", + "timeslider.saved": "Uloženo {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}} {{month}} {{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "leden", + "timeslider.month.february": "únor", + "timeslider.month.march": "bÅ™ezen", + "timeslider.month.april": "duben", + "timeslider.month.may": "kvÄ›ten", + "timeslider.month.june": "Äerven", + "timeslider.month.july": "Äervenec", + "timeslider.month.august": "srpen", + "timeslider.month.september": "září", + "timeslider.month.october": "říjen", + "timeslider.month.november": "listopad", + "timeslider.month.december": "prosinec", + "timeslider.unnamedauthors": "{{num}} {[ plural(num) one: nejmenovaný Autor, few: nejmenovaní AutoÅ™i, other: nejmenovaných Autorů ]}", + "pad.savedrevs.marked": "Tato revize je nyní oznaÄena jako uložená", + "pad.userlist.entername": "Zadejte své jméno", + "pad.userlist.unnamed": "nejmenovaný", + "pad.userlist.guest": "Host", + "pad.userlist.deny": "Zakázat", + "pad.userlist.approve": "Povolit", + "pad.editbar.clearcolors": "Odstranit barvy autorů z celého dokumentu?", + "pad.impexp.importbutton": "Importovat", + "pad.impexp.importing": "Importování…", + "pad.impexp.confirmimport": "Import souboru pÅ™epíše aktuální text v padu. Opravdu chcete tuto akci provést?", + "pad.impexp.convertFailed": "Tento soubor nelze importovat. Použijte prosím jiný formát dokumentu nebo nakopírujte text ruÄnÄ›", + "pad.impexp.uploadFailed": "Nahrávání selhalo, zkuste to znovu", + "pad.impexp.importfailed": "Import selhal", + "pad.impexp.copypaste": "Vložte prosím kopii", + "pad.impexp.exportdisabled": "Export do formátu {{type}} je zakázán. Kontaktujte svého administrátora pro zjiÅ¡tÄ›ní detailů." } \ No newline at end of file diff --git a/src/locales/da.json b/src/locales/da.json index e7cde1f55..e508e540c 100644 --- a/src/locales/da.json +++ b/src/locales/da.json @@ -1,121 +1,124 @@ { - "@metadata": { - "authors": [ - "Christian List", - "Peter Alberti" - ] - }, - "index.newPad": "Ny Pad", - "index.createOpenPad": "eller opret\/\u00e5bn en Pad med navnet:", - "pad.toolbar.bold.title": "Fed (Ctrl-B)", - "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", - "pad.toolbar.underline.title": "Understregning (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Gennemstregning", - "pad.toolbar.ol.title": "Sorteret liste", - "pad.toolbar.ul.title": "Usorteret liste", - "pad.toolbar.indent.title": "Indrykning", - "pad.toolbar.unindent.title": "Ryk ud", - "pad.toolbar.undo.title": "Fortryd (Ctrl-Z)", - "pad.toolbar.redo.title": "Annuller Fortryd (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Fjern farver for forfatterskab", - "pad.toolbar.import_export.title": "Import\/eksport fra\/til forskellige filformater", - "pad.toolbar.timeslider.title": "Timeslider", - "pad.toolbar.savedRevision.title": "Gemte revisioner", - "pad.toolbar.settings.title": "Indstillinger", - "pad.toolbar.embed.title": "Integrer denne pad", - "pad.toolbar.showusers.title": "Vis brugere p\u00e5 denne pad", - "pad.colorpicker.save": "Gem", - "pad.colorpicker.cancel": "Afbryd", - "pad.loading": "Indl\u00e6ser ...", - "pad.passwordRequired": "Du skal bruge en adgangskode for at f\u00e5 adgang til denne pad", - "pad.permissionDenied": "Du har ikke tilladelse til at f\u00e5 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\u00e5 sk\u00e6rmen", - "pad.settings.colorcheck": "Forfatterskabsfarver", - "pad.settings.linenocheck": "Linjenumre", - "pad.settings.fontType": "Skrifttype:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Fastbredde", - "pad.settings.globalView": "Global visning", - "pad.settings.language": "Sprog:", - "pad.importExport.import_export": "Import\/Eksport", - "pad.importExport.import": "Uploade en tekstfil eller dokument", - "pad.importExport.importSuccessful": "Vellykket!", - "pad.importExport.export": "Eksporter aktuelle pad som:", - "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.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Du kan kun importere fra almindelig tekst eller HTML-formater. For mere avancerede importfunktioner, installer venligst abiword<\/a>.", - "pad.modals.connected": "Forbundet.", - "pad.modals.reconnecting": "Genopretter forbindelsen til din pad...", - "pad.modals.forcereconnect": "Gennemtving genoprettelse af forbindelsen", - "pad.modals.userdup": "\u00c5bnet i et andet vindue", - "pad.modals.userdup.explanation": "Denne pad synes at v\u00e6re \u00e5bnet i mere end \u00e9t browservindue p\u00e5 denne computer.", - "pad.modals.userdup.advice": "Tilslut igen for at bruge dette vindue i stedet.", - "pad.modals.unauth": "Ikke tilladt", - "pad.modals.unauth.explanation": "Dine rettigheder er \u00e6ndret mens du ser p\u00e5 denne side. Pr\u00f8v at oprette forbindelsen igen.", - "pad.modals.looping": "Forbindelse afbrudt.", - "pad.modals.looping.explanation": "Der er kommunikationsproblemer med synkroniseringsserveren.", - "pad.modals.looping.cause": "M\u00e5ske tilsluttede du via en inkompatibel firewall eller proxy.", - "pad.modals.initsocketfail": "Serveren er ikke tilg\u00e6ngelig.", - "pad.modals.initsocketfail.explanation": "Kunne ikke oprette forbindelse til synkroniseringsserveren.", - "pad.modals.initsocketfail.cause": "Det skyldes sandsynligvis et problem med din browser eller din internetforbindelse.", - "pad.modals.slowcommit": "Forbindelse afbrudt.", - "pad.modals.slowcommit.explanation": "Serveren svarer ikke.", - "pad.modals.slowcommit.cause": "Det kan skyldes problemer med netv\u00e6rksforbindelsen.", - "pad.modals.deleted": "Slettet.", - "pad.modals.deleted.explanation": "Denne pad er blevet fjernet.", - "pad.modals.disconnected": "Du har f\u00e5et afbrudt forbindelsen.", - "pad.modals.disconnected.explanation": "Forbindelsen til serveren blev afbrudt", - "pad.modals.disconnected.cause": "Serveren er muligvis ikke tilg\u00e6ngelig. G\u00f8r os venligst opm\u00e6rksom p\u00e5 hvis dette forts\u00e6tter med at ske.", - "pad.share": "Del denne pad", - "pad.share.readonly": "Skrivebeskyttet", - "pad.share.link": "Link", - "pad.share.emebdcode": "Integrerings URL", - "pad.chat": "Chat", - "pad.chat.title": "\u00c5ben chat for denne pad.", - "pad.chat.loadmessages": "Indl\u00e6s flere meddelelser", - "timeslider.pageTitle": "{{appTitle}} Timeslider", - "timeslider.toolbar.returnbutton": "Tilbage til pad", - "timeslider.toolbar.authors": "Forfattere:", - "timeslider.toolbar.authorsList": "Ingen forfattere", - "timeslider.toolbar.exportlink.title": "Eksport\u00e9r", - "timeslider.exportCurrent": "Eksporter aktuelle version som:", - "timeslider.version": "Version {{version}}", - "timeslider.saved": "Gemt den {{day}}.{{month}} {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "januar", - "timeslider.month.february": "februar", - "timeslider.month.march": "marts", - "timeslider.month.april": "april", - "timeslider.month.may": "maj", - "timeslider.month.june": "juni", - "timeslider.month.july": "juli", - "timeslider.month.august": "august", - "timeslider.month.september": "september", - "timeslider.month.october": "oktober", - "timeslider.month.november": "november", - "timeslider.month.december": "december", - "timeslider.unnamedauthor": "{{num}} unavngiven forfatter", - "timeslider.unnamedauthors": "{{num}} unavngivne forfattere", - "pad.savedrevs.marked": "Denne revision er nu markeret som en gemt revision", - "pad.userlist.entername": "Indtast dit navn", - "pad.userlist.unnamed": "ikke-navngivet", - "pad.userlist.guest": "G\u00e6st", - "pad.userlist.deny": "N\u00e6gt", - "pad.userlist.approve": "Godkend", - "pad.editbar.clearcolors": "Fjern farver for ophavsmand i hele dokumentet?", - "pad.impexp.importbutton": "Importer nu", - "pad.impexp.importing": "Importerer...", - "pad.impexp.confirmimport": "At importere en fil, vil overskrives den aktuelle pad tekst. Er du sikker p\u00e5 du vil forts\u00e6tte?", - "pad.impexp.convertFailed": "Vi var ikke i stand til at importere denne fil. Brug et andet dokument-format eller kopier og s\u00e6t ind manuelt", - "pad.impexp.uploadFailed": "Upload mislykkedes, pr\u00f8v igen", - "pad.impexp.importfailed": "Importen mislykkedes", - "pad.impexp.copypaste": "Venligst kopier og s\u00e6t ind", - "pad.impexp.exportdisabled": "Eksportere i {{type}} format er deaktiveret. Kontakt din systemadministrator for mere information." + "@metadata": { + "authors": { + "0": "Christian List", + "1": "Peter Alberti", + "3": "Steenth" + } + }, + "index.newPad": "Ny Pad", + "index.createOpenPad": "eller opret/Ã¥bn en Pad med navnet:", + "pad.toolbar.bold.title": "Fed (Ctrl-B)", + "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", + "pad.toolbar.underline.title": "Understregning (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Gennemstregning", + "pad.toolbar.ol.title": "Sorteret liste", + "pad.toolbar.ul.title": "Usorteret liste", + "pad.toolbar.indent.title": "Indrykning", + "pad.toolbar.unindent.title": "Ryk ud", + "pad.toolbar.undo.title": "Fortryd (Ctrl-Z)", + "pad.toolbar.redo.title": "Annuller Fortryd (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Fjern farver for forfatterskab", + "pad.toolbar.import_export.title": "Import/eksport fra/til forskellige filformater", + "pad.toolbar.timeslider.title": "Timeslider", + "pad.toolbar.savedRevision.title": "Gem Revision", + "pad.toolbar.settings.title": "Indstillinger", + "pad.toolbar.embed.title": "Del og integrer denne pad", + "pad.toolbar.showusers.title": "Vis brugere pÃ¥ denne pad", + "pad.colorpicker.save": "Gem", + "pad.colorpicker.cancel": "Afbryd", + "pad.loading": "Indlæser ...", + "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.colorcheck": "Forfatterskabsfarver", + "pad.settings.linenocheck": "Linjenumre", + "pad.settings.rtlcheck": "Læse indhold fra højre mod venstre?", + "pad.settings.fontType": "Skrifttype:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Fastbredde", + "pad.settings.globalView": "Global visning", + "pad.settings.language": "Sprog:", + "pad.importExport.import_export": "Import/Eksport", + "pad.importExport.import": "Uploade en tekstfil eller dokument", + "pad.importExport.importSuccessful": "Vellykket!", + "pad.importExport.export": "Eksporter aktuelle pad som:", + "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.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Du kan kun importere fra almindelig tekst eller HTML-formater. For mere avancerede importfunktioner, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstaller venligst abiword\u003C/a\u003E.", + "pad.modals.connected": "Forbundet.", + "pad.modals.reconnecting": "Genopretter forbindelsen til din pad...", + "pad.modals.forcereconnect": "Gennemtving genoprettelse af forbindelsen", + "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.", + "pad.modals.unauth": "Ikke tilladt", + "pad.modals.unauth.explanation": "Dine rettigheder er ændret mens du ser pÃ¥ denne side. Prøv at oprette forbindelsen igen.", + "pad.modals.looping.explanation": "Der er kommunikationsproblemer med synkroniseringsserveren.", + "pad.modals.looping.cause": "MÃ¥ske tilsluttede du via en inkompatibel firewall eller proxy.", + "pad.modals.initsocketfail": "Serveren er ikke tilgængelig.", + "pad.modals.initsocketfail.explanation": "Kunne ikke oprette forbindelse til synkroniseringsserveren.", + "pad.modals.initsocketfail.cause": "Det skyldes sandsynligvis et problem med din browser eller din internetforbindelse.", + "pad.modals.slowcommit.explanation": "Serveren svarer ikke.", + "pad.modals.slowcommit.cause": "Det kan skyldes problemer med netværksforbindelsen.", + "pad.modals.badChangeset.explanation": "En redigering, du har foretaget, blev klassificeret ulovlig af synkroniseringsserveren.", + "pad.modals.badChangeset.cause": "Dette kan skyldes en forkert konfiguration af serveren eller en anden uventet adfærd. Kontakt venligst service administratoren, hvis du føler, at dette er en fejl. Prøv at oprette forbindelsen igen for at fortsætte med at redigere.", + "pad.modals.corruptPad.explanation": "Den pad du prøver at fÃ¥ adgang til er beskadiget.", + "pad.modals.corruptPad.cause": "Dette kan skyldes en forkert konfiguration af serveren eller en anden uventet adfærd. Kontakt venligst service administratoren.", + "pad.modals.deleted": "Slettet.", + "pad.modals.deleted.explanation": "Denne pad er blevet fjernet.", + "pad.modals.disconnected": "Du har fÃ¥et afbrudt forbindelsen.", + "pad.modals.disconnected.explanation": "Forbindelsen til serveren blev afbrudt", + "pad.modals.disconnected.cause": "Serveren er muligvis ikke tilgængelig. Informer service administratoren hvis dette fortsætter med at ske.", + "pad.share": "Del denne pad", + "pad.share.readonly": "Skrivebeskyttet", + "pad.share.link": "Link", + "pad.share.emebdcode": "Integrerings URL", + "pad.chat": "Chat", + "pad.chat.title": "Ã…ben chat for denne pad.", + "pad.chat.loadmessages": "Indlæs flere meddelelser", + "timeslider.pageTitle": "{{appTitle}} Timeslider", + "timeslider.toolbar.returnbutton": "Tilbage til pad", + "timeslider.toolbar.authors": "Forfattere:", + "timeslider.toolbar.authorsList": "Ingen forfattere", + "timeslider.toolbar.exportlink.title": "Eksportér", + "timeslider.exportCurrent": "Eksporter aktuelle version som:", + "timeslider.version": "Version {{version}}", + "timeslider.saved": "Gemt den {{day}}.{{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "januar", + "timeslider.month.february": "februar", + "timeslider.month.march": "marts", + "timeslider.month.april": "april", + "timeslider.month.may": "maj", + "timeslider.month.june": "juni", + "timeslider.month.july": "juli", + "timeslider.month.august": "august", + "timeslider.month.september": "september", + "timeslider.month.october": "oktober", + "timeslider.month.november": "november", + "timeslider.month.december": "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.userlist.entername": "Indtast dit navn", + "pad.userlist.unnamed": "ikke-navngivet", + "pad.userlist.guest": "Gæst", + "pad.userlist.deny": "Nægt", + "pad.userlist.approve": "Godkend", + "pad.editbar.clearcolors": "Fjern farver for ophavsmand i hele dokumentet?", + "pad.impexp.importbutton": "Importer nu", + "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.uploadFailed": "Upload mislykkedes, prøv igen", + "pad.impexp.importfailed": "Importen mislykkedes", + "pad.impexp.copypaste": "Venligst kopier og sæt ind", + "pad.impexp.exportdisabled": "Eksportere i {{type}} format er deaktiveret. Kontakt din systemadministrator for mere information." } \ No newline at end of file diff --git a/src/locales/de.json b/src/locales/de.json index 7c51fa912..c2bc1b8ce 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -1,123 +1,125 @@ { - "@metadata": { - "authors": { - "0": "Metalhead64", - "1": "Mklehr", - "2": "Nipsky", - "4": "Wikinaut" - } - }, - "index.newPad": "Neues Pad", - "index.createOpenPad": "Pad mit folgendem Namen \u00f6ffnen:", - "pad.toolbar.bold.title": "Fett (Strg-B)", - "pad.toolbar.italic.title": "Kursiv (Strg-I)", - "pad.toolbar.underline.title": "Unterstrichen (Strg-U)", - "pad.toolbar.strikethrough.title": "Durchgestrichen", - "pad.toolbar.ol.title": "Nummerierte Liste", - "pad.toolbar.ul.title": "Ungeordnete Liste", - "pad.toolbar.indent.title": "Einr\u00fccken", - "pad.toolbar.unindent.title": "Ausr\u00fccken", - "pad.toolbar.undo.title": "R\u00fcckg\u00e4ngig (Strg-Z)", - "pad.toolbar.redo.title": "Wiederholen (Strg-Y)", - "pad.toolbar.clearAuthorship.title": "Autorenfarben zur\u00fccksetzen", - "pad.toolbar.import_export.title": "Import\/Export in verschiedenen Dateiformaten", - "pad.toolbar.timeslider.title": "Pad-Versionsgeschichte anzeigen", - "pad.toolbar.savedRevision.title": "Diese Revision markieren", - "pad.toolbar.settings.title": "Einstellungen", - "pad.toolbar.embed.title": "Dieses Pad teilen oder einbetten", - "pad.toolbar.showusers.title": "Aktuell verbundene Benutzer anzeigen", - "pad.colorpicker.save": "Speichern", - "pad.colorpicker.cancel": "Abbrechen", - "pad.loading": "Laden \u2026", - "pad.passwordRequired": "Sie ben\u00f6tigen ein Passwort, um auf dieses Pad zuzugreifen", - "pad.permissionDenied": "Sie haben keine Berechtigung, um auf dieses Pad zuzugreifen", - "pad.wrongPassword": "Ihr Passwort war falsch", - "pad.settings.padSettings": "Pad Einstellungen", - "pad.settings.myView": "Eigene Ansicht", - "pad.settings.stickychat": "Chat immer anzeigen", - "pad.settings.colorcheck": "Autorenfarben anzeigen", - "pad.settings.linenocheck": "Zeilennummern", - "pad.settings.fontType": "Schriftart:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Gemeinsame Ansicht", - "pad.settings.language": "Sprache:", - "pad.importExport.import_export": "Import\/Export", - "pad.importExport.import": "Datei oder Dokument hochladen", - "pad.importExport.importSuccessful": "Erfolgreich!", - "pad.importExport.export": "Aktuelles Pad exportieren als:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Textdatei", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Sie k\u00f6nnen nur aus Klartext oder HTML-Formaten importieren. F\u00fcr mehr erweiterte Importfunktionen installieren Sie bitte abiword<\/a>.", - "pad.modals.connected": "Verbunden.", - "pad.modals.reconnecting": "Wiederherstellen der Verbindung \u2026", - "pad.modals.forcereconnect": "Erneut Verbinden", - "pad.modals.userdup": "In einem anderen Fenster ge\u00f6ffnet", - "pad.modals.userdup.explanation": "Dieses Pad scheint in mehr als einem Browser-Fenster auf diesem Computer ge\u00f6ffnet zu sein.", - "pad.modals.userdup.advice": "Um dieses Fenster zu benutzen, verbinden Sie bitte erneut.", - "pad.modals.unauth": "Nicht authorisiert.", - "pad.modals.unauth.explanation": "Ihre Zugriffsberechtigung f\u00fcr dieses Pad hat sich zwischenzeitlich ge\u00e4ndert. Bitte versuchen Sie, das Pad erneut aufzurufen.", - "pad.modals.looping": "Verbindung unterbrochen.", - "pad.modals.looping.explanation": "Es gibt Probleme bei der Kommunikation mit dem Pad-Server.", - "pad.modals.looping.cause": "M\u00f6glicherweise sind Sie durch eine inkompatible Firewall oder \u00fcber einen inkompatiblen Proxy mit dem Padserver verbunden.", - "pad.modals.initsocketfail": "Pad-Server nicht erreichbar.", - "pad.modals.initsocketfail.explanation": "Es konnte keine Verbindung zum Pad-Server hergestellt werden.", - "pad.modals.initsocketfail.cause": "Dies k\u00f6nnte an Ihrem Browser oder Ihrer Internet-Verbindung liegen.", - "pad.modals.slowcommit": "Verbindung unterbrochen.", - "pad.modals.slowcommit.explanation": "Der Pad-Server reagiert nicht.", - "pad.modals.slowcommit.cause": "Dies k\u00f6nnte ein Netzwerkverbindungsproblem sein oder eine momentane \u00dcberlastung des Pad-Servers.", - "pad.modals.deleted": "Gel\u00f6scht.", - "pad.modals.deleted.explanation": "Dieses Pad wurde gel\u00f6scht.", - "pad.modals.disconnected": "Verbindung unterbrochen.", - "pad.modals.disconnected.explanation": "Die Verbindung zum Pad-Server wurde unterbrochen.", - "pad.modals.disconnected.cause": "M\u00f6glicherweise ist der Pad-Server nicht erreichbar. Bitte benachrichtigen Sie uns, falls dies weiterhin passiert.", - "pad.share": "Dieses Pad anderen mitteilen", - "pad.share.readonly": "Eingeschr\u00e4nkter Nur-Lese-Zugriff", - "pad.share.link": "Link", - "pad.share.emebdcode": "In Webseite einbetten", - "pad.chat": "Chat", - "pad.chat.title": "Den Chat dieses Pads \u00f6ffnen", - "pad.chat.loadmessages": "Weitere Nachrichten laden", - "timeslider.pageTitle": "{{appTitle}} Pad-Versionsgeschichte", - "timeslider.toolbar.returnbutton": "Zur\u00fcck zum Pad", - "timeslider.toolbar.authors": "Autoren:", - "timeslider.toolbar.authorsList": "keine Autoren", - "timeslider.toolbar.exportlink.title": "Export", - "timeslider.exportCurrent": "Exportiere diese Version als:", - "timeslider.version": "Version {{version}}", - "timeslider.saved": "Gespeichert am {{day}}.{{month}}.{{year}}", - "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Januar", - "timeslider.month.february": "Februar", - "timeslider.month.march": "M\u00e4rz", - "timeslider.month.april": "April", - "timeslider.month.may": "Mai", - "timeslider.month.june": "Juni", - "timeslider.month.july": "Juli", - "timeslider.month.august": "August", - "timeslider.month.september": "September", - "timeslider.month.october": "Oktober", - "timeslider.month.november": "November", - "timeslider.month.december": "Dezember", - "timeslider.unnamedauthor": "{{num}} unbenannter Autor", - "timeslider.unnamedauthors": "{{num}} unbenannte Autoren", - "pad.savedrevs.marked": "Diese Version wurde jetzt als gespeicherte Version gekennzeichnet", - "pad.userlist.entername": "Geben Sie Ihren Namen ein", - "pad.userlist.unnamed": "unbenannt", - "pad.userlist.guest": "Gast", - "pad.userlist.deny": "Verweigern", - "pad.userlist.approve": "Genehmigen", - "pad.editbar.clearcolors": "Autorenfarben im gesamten Dokument zur\u00fccksetzen?", - "pad.impexp.importbutton": "Jetzt importieren", - "pad.impexp.importing": "Importiere \u2026", - "pad.impexp.confirmimport": "Das Importieren einer Datei \u00fcberschreibt den aktuellen Text des Pads. Wollen Sie wirklich fortfahren?", - "pad.impexp.convertFailed": "Wir k\u00f6nnen diese Datei nicht importieren. Bitte verwenden Sie ein anderes Dokumentenformat oder \u00fcbertragen Sie den Text manuell.", - "pad.impexp.uploadFailed": "Der Upload ist fehlgeschlagen. Bitte versuchen Sie es erneut.", - "pad.impexp.importfailed": "Import fehlgeschlagen", - "pad.impexp.copypaste": "Bitte kopieren und einf\u00fcgen", - "pad.impexp.exportdisabled": "Der Export im {{type}}-Format ist deaktiviert. F\u00fcr Einzelheiten kontaktieren Sie bitte Ihren Systemadministrator." + "@metadata": { + "authors": { + "0": "Metalhead64", + "1": "Mklehr", + "2": "Nipsky", + "4": "Wikinaut" + } + }, + "index.newPad": "Neues Pad", + "index.createOpenPad": "Pad mit folgendem Namen öffnen:", + "pad.toolbar.bold.title": "Fett (Strg-B)", + "pad.toolbar.italic.title": "Kursiv (Strg-I)", + "pad.toolbar.underline.title": "Unterstrichen (Strg-U)", + "pad.toolbar.strikethrough.title": "Durchgestrichen", + "pad.toolbar.ol.title": "Nummerierte Liste", + "pad.toolbar.ul.title": "Ungeordnete Liste", + "pad.toolbar.indent.title": "Einrücken (TAB)", + "pad.toolbar.unindent.title": "Ausrücken (Shift+TAB)", + "pad.toolbar.undo.title": "Rückgängig (Strg-Z)", + "pad.toolbar.redo.title": "Wiederholen (Strg-Y)", + "pad.toolbar.clearAuthorship.title": "Autorenfarben zurücksetzen", + "pad.toolbar.import_export.title": "Import/Export von/zu verschiedenen Dateiformaten", + "pad.toolbar.timeslider.title": "Pad-Versionsgeschichte anzeigen", + "pad.toolbar.savedRevision.title": "Version markieren", + "pad.toolbar.settings.title": "Einstellungen", + "pad.toolbar.embed.title": "Pad teilen oder einbetten", + "pad.toolbar.showusers.title": "Aktuell verbundene Benutzer anzeigen", + "pad.colorpicker.save": "Speichern", + "pad.colorpicker.cancel": "Abbrechen", + "pad.loading": "Laden …", + "pad.passwordRequired": "Sie benötigen ein Passwort, um auf dieses Pad zuzugreifen", + "pad.permissionDenied": "Sie haben keine Berechtigung, um auf dieses Pad zuzugreifen", + "pad.wrongPassword": "Ihr Passwort war falsch", + "pad.settings.padSettings": "Pad Einstellungen", + "pad.settings.myView": "Eigene Ansicht", + "pad.settings.stickychat": "Chat immer anzeigen", + "pad.settings.colorcheck": "Autorenfarben anzeigen", + "pad.settings.linenocheck": "Zeilennummern", + "pad.settings.rtlcheck": "Inhalt von rechts nach links lesen?", + "pad.settings.fontType": "Schriftart:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Gemeinsame Ansicht", + "pad.settings.language": "Sprache:", + "pad.importExport.import_export": "Import/Export", + "pad.importExport.import": "Text-Datei oder Dokument hochladen", + "pad.importExport.importSuccessful": "Erfolgreich!", + "pad.importExport.export": "Aktuelles Pad exportieren als:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Textdatei", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Sie können nur aus Klartext oder HTML-Formaten importieren. Für mehr erweiterte Importfunktionen \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstallieren Sie bitte abiword\u003C/a\u003E.", + "pad.modals.connected": "Verbunden.", + "pad.modals.reconnecting": "Wiederherstellen der Verbindung …", + "pad.modals.forcereconnect": "Erneut Verbinden", + "pad.modals.userdup": "In einem anderen Fenster geöffnet", + "pad.modals.userdup.explanation": "Dieses Pad scheint in mehr als einem Browser-Fenster auf diesem Computer geöffnet zu sein.", + "pad.modals.userdup.advice": "Um dieses Fenster zu benutzen, verbinden Sie bitte erneut.", + "pad.modals.unauth": "Nicht authorisiert.", + "pad.modals.unauth.explanation": "Ihre Zugriffsberechtigung für dieses Pad hat sich zwischenzeitlich geändert. Sie können versuchen das Pad erneut aufzurufen.", + "pad.modals.looping.explanation": "Es gibt Probleme bei der Kommunikation mit dem Pad-Server.", + "pad.modals.looping.cause": "Möglicherweise sind Sie durch eine inkompatible Firewall oder über einen inkompatiblen Proxy mit dem Pad-Server verbunden.", + "pad.modals.initsocketfail": "Pad-Server nicht erreichbar.", + "pad.modals.initsocketfail.explanation": "Es konnte keine Verbindung zum Pad-Server hergestellt werden.", + "pad.modals.initsocketfail.cause": "Dies könnte an Ihrem Browser oder Ihrer Internet-Verbindung liegen.", + "pad.modals.slowcommit.explanation": "Der Pad-Server reagiert nicht.", + "pad.modals.slowcommit.cause": "Dies könnte ein Netzwerkverbindungsproblem sein oder eine momentane Überlastung des Pad-Servers.", + "pad.modals.badChangeset.explanation": "Eine von Ihnen gemachte Änderung wurde vom Pad-Server als ungültig eingestuft.", + "pad.modals.badChangeset.cause": "Dies könnte aufgrund einer falschen Serverkonfiguration oder eines anderen unerwarteten Verhaltens passiert sein. Bitte kontaktiere den Diensteadministrator, falls du glaubst, dass es sich um einen Fehler handelt. Versuche dich erneut zu verbinden, um mit dem Bearbeiten fortzufahren.", + "pad.modals.corruptPad.explanation": "Das Pad, auf das du zugreifen willst, ist beschädigt.", + "pad.modals.corruptPad.cause": "Dies könnte an einer falschen Serverkonfiguration oder eines anderen unerwarteten Verhaltens liegen. Bitte kontaktiere den Diensteadministrator.", + "pad.modals.deleted": "Gelöscht.", + "pad.modals.deleted.explanation": "Dieses Pad wurde entfernt.", + "pad.modals.disconnected": "Verbindung unterbrochen.", + "pad.modals.disconnected.explanation": "Die Verbindung zum Pad-Server wurde unterbrochen.", + "pad.modals.disconnected.cause": "Möglicherweise ist der Pad-Server nicht erreichbar. Bitte benachrichtigen Sie den Dienstadministrator, falls dies weiterhin passiert.", + "pad.share": "Dieses Pad teilen", + "pad.share.readonly": "Eingeschränkter Nur-Lese-Zugriff", + "pad.share.link": "Link", + "pad.share.emebdcode": "In Webseite einbetten", + "pad.chat": "Chat", + "pad.chat.title": "Den Chat dieses Pads öffnen", + "pad.chat.loadmessages": "Weitere Nachrichten laden", + "timeslider.pageTitle": "{{appTitle}} Pad-Versionsgeschichte", + "timeslider.toolbar.returnbutton": "Zurück zum Pad", + "timeslider.toolbar.authors": "Autoren:", + "timeslider.toolbar.authorsList": "keine Autoren", + "timeslider.toolbar.exportlink.title": "Diese Version exportieren", + "timeslider.exportCurrent": "Exportiere diese Version als:", + "timeslider.version": "Version {{version}}", + "timeslider.saved": "Gespeichert am {{day}}.{{month}}.{{year}}", + "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "März", + "timeslider.month.april": "April", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Dezember", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: unbenannter Autor, other: unbenannte Autoren ]}", + "pad.savedrevs.marked": "Diese Version wurde jetzt als gespeicherte Version gekennzeichnet", + "pad.userlist.entername": "Geben Sie Ihren Namen ein", + "pad.userlist.unnamed": "unbenannt", + "pad.userlist.guest": "Gast", + "pad.userlist.deny": "Verweigern", + "pad.userlist.approve": "Genehmigen", + "pad.editbar.clearcolors": "Autorenfarben im gesamten Dokument zurücksetzen?", + "pad.impexp.importbutton": "Jetzt importieren", + "pad.impexp.importing": "Importiere …", + "pad.impexp.confirmimport": "Das Importieren einer Datei überschreibt den aktuellen Text des Pads. Wollen Sie wirklich fortfahren?", + "pad.impexp.convertFailed": "Wir können diese Datei nicht importieren. Bitte verwenden Sie ein anderes Dokumentformat oder übertragen Sie den Text manuell.", + "pad.impexp.uploadFailed": "Der Upload ist fehlgeschlagen. Bitte versuchen Sie es erneut.", + "pad.impexp.importfailed": "Import fehlgeschlagen", + "pad.impexp.copypaste": "Bitte kopieren und einfügen", + "pad.impexp.exportdisabled": "Der Export im {{type}}-Format ist deaktiviert. Für Einzelheiten kontaktieren Sie bitte Ihren Systemadministrator." } \ No newline at end of file diff --git a/src/locales/diq.json b/src/locales/diq.json index 62079d78b..5d7794b40 100644 --- a/src/locales/diq.json +++ b/src/locales/diq.json @@ -1,76 +1,90 @@ { - "@metadata": { - "authors": [ - "Erdemaslancan", - "Mirzali" - ] - }, - "index.newPad": "Pedo newe", - "pad.toolbar.bold.title": "Qal\u0131n (Ctrl-B)", - "pad.toolbar.italic.title": "Nam\u0131te (Ctrl-I)", - "pad.toolbar.underline.title": "B\u0131nxet\u0131n (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Serxet\u0131n", - "pad.toolbar.ol.title": "Lista r\u00eazkerdiye", - "pad.toolbar.ul.title": "Lista r\u00eazn\u00eakerdiye", - "pad.toolbar.indent.title": "Ser\u00ea r\u00eaze", - "pad.toolbar.unindent.title": "V\u0131cente", - "pad.toolbar.undo.title": "Meke (Ctrl-Z)", - "pad.toolbar.redo.title": "F\u0131na b\u0131ke (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Reng\u00ea Nu\u015fto\u011fi\u00ea Ar\u0131stey", - "pad.toolbar.timeslider.title": "\u011e\u0131zag\u00ea zemani", - "pad.toolbar.savedRevision.title": "Rewizyon\u00ea Qeydbiyayey", - "pad.toolbar.settings.title": "Sazkerd\u0131\u015fi", - "pad.toolbar.embed.title": "Na ped degusnayiya", - "pad.colorpicker.save": "Qeyd ke", - "pad.colorpicker.cancel": "B\u0131texelne", - "pad.loading": "Bar beno...", - "pad.settings.padSettings": "Sazkerd\u0131\u015f\u00ea Pedi", - "pad.settings.myView": "Asay\u0131\u015f\u00ea m\u0131", - "pad.settings.colorcheck": "Reng\u00ea nu\u015ftekariye", - "pad.settings.linenocheck": "N\u0131mrey\u00ea xeter", - "pad.settings.fontType": "Babeta nu\u015fti:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Yewca", - "pad.settings.globalView": "Asay\u0131\u015fo Global", - "pad.settings.language": "Z\u0131wan:", - "pad.importExport.import_export": "Zereday\u0131\u015f\/Teberday\u0131\u015f", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Duz metin", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.modals.connected": "G\u0131rediya.", - "pad.modals.unauth": "Selahiyetdar niyo", - "pad.modals.looping": "B\u00eag\u0131rey\u0131n.", - "pad.modals.initsocketfail": "N\u00earesney\u00eano ciyageyro\u011fi.", - "pad.modals.slowcommit": "B\u00eag\u0131rey\u0131n.", - "pad.modals.deleted": "Esteriya.", - "pad.modals.deleted.explanation": "Ena ped wedariye", - "pad.share": "Na ped v\u0131la ke", - "pad.share.readonly": "Tenya b\u0131wane", - "pad.share.link": "G\u0131re", - "pad.share.emebdcode": "Degusnaye URL", - "pad.chat": "M\u0131hebet", - "pad.chat.title": "Qand\u00ea ena ped m\u0131hebet ake.", - "timeslider.pageTitle": "\u011e\u0131zag\u00ea zemani {{appTitle}}", - "timeslider.toolbar.returnbutton": "Peyser \u015fo ped", - "timeslider.toolbar.authors": "Nu\u015fto\u011fi:", - "timeslider.toolbar.authorsList": "Nu\u015fto\u011fi \u00e7\u0131niy\u00ea", - "timeslider.exportCurrent": "Versiyon\u00ea enewki teber de:", - "timeslider.version": "Versiyon\u00ea {{version}}", - "timeslider.saved": "{{day}} {{month}}, {{year}} de biyo qeyd", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u00c7ele", - "timeslider.month.february": "\u015e\u0131bate", - "timeslider.month.march": "Adar", - "timeslider.month.april": "Nisane", - "timeslider.month.may": "Gulane", - "timeslider.month.june": "Heziran", - "timeslider.month.july": "Temuze", - "timeslider.month.august": "Tebaxe", - "timeslider.month.september": "Ke\u015fkelun", - "timeslider.month.october": "T\u0131\u015frino Ver\u00ean", - "timeslider.month.november": "T\u0131\u015frino Pey\u00ean", - "timeslider.month.december": "Kanun" + "@metadata": { + "authors": [ + "Erdemaslancan", + "Gorizon", + "Mirzali" + ] + }, + "index.newPad": "Pedo newe", + "pad.toolbar.bold.title": "Qalın (Ctrl-B)", + "pad.toolbar.italic.title": "Namıte (Ctrl-I)", + "pad.toolbar.underline.title": "Bınxetın (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Serxetın", + "pad.toolbar.ol.title": "Lista rêzkerdiye", + "pad.toolbar.ul.title": "Lista rêznêkerdiye", + "pad.toolbar.indent.title": "Serê rêze", + "pad.toolbar.unindent.title": "Vıcente", + "pad.toolbar.undo.title": "Meke (Ctrl-Z)", + "pad.toolbar.redo.title": "Fına bıke (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Rengê NuÅŸtoÄŸiê Arıstey", + "pad.toolbar.timeslider.title": "Ğızagê zemani", + "pad.toolbar.savedRevision.title": "Revizyoni 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.colorpicker.save": "Qeyd ke", + "pad.colorpicker.cancel": "Bıtexelne", + "pad.loading": "Bar beno...", + "pad.settings.padSettings": "Sazkerdışê Pedi", + "pad.settings.myView": "Asayışê mı", + "pad.settings.colorcheck": "Rengê nuÅŸtekariye", + "pad.settings.linenocheck": "Nımreyê xeter", + "pad.settings.fontType": "Babeta nuÅŸti:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Yewca", + "pad.settings.globalView": "Asayışo Global", + "pad.settings.language": "Zıwan:", + "pad.importExport.import_export": "Zeredayış/Teberdayış", + "pad.importExport.importSuccessful": "Mıwafaq biye", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Duz metin", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "Gırediya.", + "pad.modals.unauth": "Selahiyetdar niyo", + "pad.modals.initsocketfail": "Nêresneyêno ciyageyroÄŸi.", + "pad.modals.deleted": "Esteriya.", + "pad.modals.deleted.explanation": "Ena ped wedariye", + "pad.share": "Na ped vıla ke", + "pad.share.readonly": "Tenya bıwane", + "pad.share.link": "Gıre", + "pad.share.emebdcode": "Degusnaye URL", + "pad.chat": "Mıhebet", + "pad.chat.title": "Qandê ena ped mıhebet ake.", + "pad.chat.loadmessages": "Dehana zaf mesaci bar keri", + "timeslider.pageTitle": "Ğızagê zemani {{appTitle}}", + "timeslider.toolbar.returnbutton": "Peyser ÅŸo ped", + "timeslider.toolbar.authors": "NuÅŸtoÄŸi:", + "timeslider.toolbar.authorsList": "NuÅŸtoÄŸi çıniyê", + "timeslider.toolbar.exportlink.title": "Teber de", + "timeslider.exportCurrent": "Versiyonê enewki teber de:", + "timeslider.version": "Versiyonê {{version}}", + "timeslider.saved": "{{day}} {{month}}, {{year}} de biyo qeyd", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Çele", + "timeslider.month.february": "Zemherı", + "timeslider.month.march": "Mert", + "timeslider.month.april": "Lisan", + "timeslider.month.may": "Gúlan", + "timeslider.month.june": "Heziran", + "timeslider.month.july": "Temuz", + "timeslider.month.august": "AÄŸustos", + "timeslider.month.september": "KeÅŸkelun", + "timeslider.month.october": "Cetan", + "timeslider.month.november": "Kelverdan", + "timeslider.month.december": "GaÄŸand", + "timeslider.unnamedauthors": "{{num}} unnamed {[plural(num) zu: nuÅŸtoÄŸ, zewbi: nustoÄŸi ]}", + "pad.userlist.entername": "Namey ÄŸo cı kewe", + "pad.userlist.unnamed": "Name nébıyo", + "pad.userlist.guest": "Meyman", + "pad.userlist.deny": "Red ke", + "pad.userlist.approve": "Tesdiq ke", + "pad.editbar.clearcolors": "Wesiqa de renge nuÅŸtoÄŸey bıesterneye?", + "pad.impexp.importbutton": "Newke miyan ke", + "pad.impexp.importing": "Deyeno azere...", + "pad.impexp.importfailed": "Zer kerdış mıwafaq nebı", + "pad.impexp.copypaste": "Reca keme kopya pronayış bıkeri" } \ No newline at end of file diff --git a/src/locales/el.json b/src/locales/el.json index f33865e6b..df6d1b11b 100644 --- a/src/locales/el.json +++ b/src/locales/el.json @@ -1,123 +1,122 @@ { - "@metadata": { - "authors": [ - "Evropi", - "Glavkos", - "Monopatis", - "Protnet" - ] - }, - "index.newPad": "\u039d\u03ad\u03bf Pad", - "index.createOpenPad": "\u03ae \u03b4\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1\/\u03ac\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03b5\u03bd\u03cc\u03c2 Pad \u03bc\u03b5 \u03cc\u03bd\u03bf\u03bc\u03b1:", - "pad.toolbar.bold.title": "\u0388\u03bd\u03c4\u03bf\u03bd\u03b1 (Ctrl-B)", - "pad.toolbar.italic.title": "\u03a0\u03bb\u03ac\u03b3\u03b9\u03b1 (Ctrl-I)", - "pad.toolbar.underline.title": "\u03a5\u03c0\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b9\u03c3\u03b7 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u0394\u03b9\u03b1\u03ba\u03c1\u03b9\u03c4\u03ae \u03b4\u03b9\u03b1\u03b3\u03c1\u03b1\u03c6\u03ae", - "pad.toolbar.ol.title": "\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1", - "pad.toolbar.ul.title": "\u039b\u03af\u03c3\u03c4\u03b1 \u03c7\u03c9\u03c1\u03af\u03c2 \u03c3\u03b5\u03b9\u03c1\u03ac", - "pad.toolbar.indent.title": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2", - "pad.toolbar.unindent.title": "\u0391\u03c6\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 \u03b5\u03c3\u03bf\u03c7\u03ae\u03c2", - "pad.toolbar.undo.title": "\u0391\u03bd\u03b1\u03af\u03c1\u03b5\u03c3\u03b7 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u0395\u03c0\u03b1\u03bd\u03ac\u03bb\u03b7\u03c8\u03b7 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u039a\u03b1\u03b8\u03b1\u03c1\u03b9\u03c3\u03bc\u03cc\u03c2 \u03a7\u03c1\u03c9\u03bc\u03ac\u03c4\u03c9\u03bd \u03a3\u03c5\u03bd\u03c4\u03b1\u03ba\u03c4\u03ce\u03bd", - "pad.toolbar.import_export.title": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03b1\u03c0\u03cc\/\u03c3\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03bf\u03cd\u03c2 \u03c4\u03cd\u03c0\u03bf\u03c5\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03c9\u03bd", - "pad.toolbar.timeslider.title": "\u03a7\u03c1\u03bf\u03bd\u03bf\u03b4\u03b9\u03ac\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1", - "pad.toolbar.savedRevision.title": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b5\u03c2 \u0391\u03bd\u03b1\u03b8\u03b5\u03c9\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2", - "pad.toolbar.settings.title": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2", - "pad.toolbar.embed.title": "\u0395\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7 \u03c4\u03bf\u03c5 pad", - "pad.toolbar.showusers.title": "\u0395\u03bc\u03c6\u03ac\u03bd\u03b9\u03c3\u03b7 \u03c4\u03c9\u03bd \u03c7\u03c1\u03b7\u03c3\u03c4\u03ce\u03bd \u03b1\u03c5\u03c4\u03bf\u03cd \u03c4\u03bf\u03c5 pad", - "pad.colorpicker.save": "\u0391\u03c0\u03bf\u03b8\u03ae\u03ba\u03b5\u03c5\u03c3\u03b7", - "pad.colorpicker.cancel": "\u0386\u03ba\u03c5\u03c1\u03bf", - "pad.loading": "\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7...", - "pad.passwordRequired": "\u03a7\u03c1\u03b5\u03b9\u03ac\u03b6\u03b5\u03c3\u03c4\u03b5 \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03b3\u03b9\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf pad", - "pad.permissionDenied": "\u0394\u03b5\u03bd \u03ad\u03c7\u03b5\u03c4\u03b5 \u03b4\u03b9\u03ba\u03b1\u03af\u03c9\u03bc\u03b1 \u03c0\u03c1\u03cc\u03c3\u03b2\u03b1\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf pad", - "pad.wrongPassword": "\u039f \u03ba\u03c9\u03b4\u03b9\u03ba\u03cc\u03c2 \u03c3\u03b1\u03c2 \u03ae\u03c4\u03b1\u03bd \u03bb\u03b1\u03bd\u03b8\u03b1\u03c3\u03bc\u03ad\u03bd\u03bf\u03c2", - "pad.settings.padSettings": "\u03a1\u03c5\u03b8\u03bc\u03af\u03c3\u03b5\u03b9\u03c2 Pad", - "pad.settings.myView": "\u0397 \u03c0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae \u03bc\u03bf\u03c5", - "pad.settings.stickychat": "\u0397 \u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03c0\u03ac\u03bd\u03c4\u03b1 \u03bf\u03c1\u03b1\u03c4\u03ae", - "pad.settings.colorcheck": "\u03a7\u03c1\u03ce\u03bc\u03b1\u03c4\u03b1 \u03c3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b7", - "pad.settings.linenocheck": "\u0391\u03c1\u03b9\u03b8\u03bc\u03bf\u03af \u03b3\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2", - "pad.settings.fontType": "\u03a4\u03cd\u03c0\u03bf\u03c2 \u03b3\u03c1\u03b1\u03bc\u03bc\u03b1\u03c4\u03bf\u03c3\u03b5\u03b9\u03c1\u03ac\u03c2:", - "pad.settings.fontType.normal": "\u039a\u03b1\u03bd\u03bf\u03bd\u03b9\u03ba\u03ae", - "pad.settings.fontType.monospaced": "\u039a\u03b1\u03b8\u03bf\u03c1\u03b9\u03c3\u03bc\u03ad\u03bd\u03bf\u03c5 \u03c0\u03bb\u03ac\u03c4\u03bf\u03c5\u03c2", - "pad.settings.globalView": "\u039a\u03b1\u03b8\u03bf\u03bb\u03b9\u03ba\u03ae \u03a0\u03c1\u03bf\u03b2\u03bf\u03bb\u03ae", - "pad.settings.language": "\u0393\u03bb\u03ce\u03c3\u03c3\u03b1:", - "pad.importExport.import_export": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\/\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae", - "pad.importExport.import": "\u0391\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03bf\u03c0\u03bf\u03b9\u03bf\u03c5\u03b4\u03ae\u03c0\u03bf\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03ae \u03b5\u03b3\u03b3\u03c1\u03ac\u03c6\u03bf\u03c5", - "pad.importExport.importSuccessful": "\u0395\u03c0\u03b9\u03c4\u03c5\u03c7\u03ae\u03c2!", - "pad.importExport.export": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03c1\u03ad\u03c7\u03bf\u03bd\u03c4\u03bf\u03c2 pad \u03c9\u03c2:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u0391\u03c0\u03bb\u03cc \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03ba\u03ac\u03bd\u03b5\u03c4\u03b5 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b1\u03c0\u03bb\u03bf\u03cd \u03ba\u03b5\u03b9\u03bc\u03ad\u03bd\u03bf\u03c5 \u03ae \u03bc\u03bf\u03c1\u03c6\u03ae\u03c2 html. \u0393\u03b9\u03b1 \u03c0\u03b9\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bc\u03ad\u03bd\u03b5\u03c2 \u03b4\u03c5\u03bd\u03b1\u03c4\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae\u03c2 \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b3\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03c4\u03b5 \u03c4\u03bf abiword<\/a>.", - "pad.modals.connected": "\u03a3\u03c5\u03bd\u03b4\u03b5\u03bc\u03ad\u03bd\u03bf\u03b9.", - "pad.modals.reconnecting": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03c3\u03c4\u03bf pad \u03c3\u03b1\u03c2...", - "pad.modals.forcereconnect": "\u0395\u03c0\u03b9\u03b2\u03bf\u03bb\u03ae \u03b5\u03c0\u03b1\u03bd\u03b1\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2", - "pad.modals.userdup": "\u0391\u03bd\u03bf\u03b9\u03b3\u03bc\u03ad\u03bd\u03bf \u03c3\u03b5 \u03ac\u03bb\u03bb\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf", - "pad.modals.userdup.explanation": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf pad \u03c6\u03b1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9 \u03bd\u03b1 \u03b5\u03af\u03bd\u03b1\u03b9 \u03b1\u03bd\u03bf\u03b9\u03c7\u03c4\u03cc \u03c3\u03b5 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03b1 \u03b1\u03c0\u03cc \u03ad\u03bd\u03b1 \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf \u03c4\u03bf\u03c5 \u03c0\u03c1\u03bf\u03b3\u03c1\u03ac\u03bc\u03bc\u03b1\u03c4\u03bf\u03c2 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc\u03bd \u03c4\u03bf\u03bd \u03c5\u03c0\u03bf\u03bb\u03bf\u03b3\u03b9\u03c3\u03c4\u03ae.", - "pad.modals.userdup.advice": "\u0395\u03c0\u03b1\u03bd\u03b1\u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03c0\u03b1\u03c1\u03ac\u03b8\u03c5\u03c1\u03bf.", - "pad.modals.unauth": "\u0394\u03b5\u03bd \u03b5\u03c0\u03b9\u03c4\u03c1\u03ad\u03c0\u03b5\u03c4\u03b1\u03b9", - "pad.modals.unauth.explanation": "\u03a4\u03b1 \u03b4\u03b9\u03ba\u03b1\u03b9\u03ce\u03bc\u03b1\u03c4\u03ac \u03c3\u03b1\u03c2 \u03ac\u03bb\u03bb\u03b1\u03be\u03b1\u03bd \u03cc\u03c3\u03bf \u03b2\u03bb\u03ad\u03c0\u03b1\u03c4\u03b5 \u03b1\u03c5\u03c4\u03ae\u03bd \u03c4\u03b7 \u03c3\u03b5\u03bb\u03af\u03b4\u03b1. \u0394\u03bf\u03ba\u03b9\u03bc\u03ac\u03c3\u03c4\u03b5 \u03bd\u03b1 \u03b5\u03c0\u03b1\u03bd\u03b1\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af\u03c4\u03b5.", - "pad.modals.looping": "\u0391\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03ad\u03b8\u03b7\u03ba\u03b5.", - "pad.modals.looping.explanation": "\u03a5\u03c0\u03ac\u03c1\u03c7\u03bf\u03c5\u03bd \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1\u03c2 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae \u03c3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd.", - "pad.modals.looping.cause": "\u038a\u03c3\u03c9\u03c2 \u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03ae\u03ba\u03b1\u03c4\u03b5 \u03bc\u03ad\u03c3\u03c9 \u03b5\u03bd\u03cc\u03c2 \u03bc\u03b7 \u03c3\u03c5\u03bc\u03b2\u03b1\u03c4\u03bf\u03cd \u03c4\u03b5\u03af\u03c7\u03bf\u03c5\u03c2 \u03c0\u03c1\u03bf\u03c3\u03c4\u03b1\u03c3\u03af\u03b1\u03c2 \u03ae \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae \u03bc\u03b5\u03c3\u03bf\u03bb\u03ac\u03b2\u03b7\u03c3\u03b7\u03c2.", - "pad.modals.initsocketfail": "\u0391\u03b4\u03cd\u03bd\u03b1\u03c4\u03b7 \u03ae \u03b5\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03af\u03b1 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae.", - "pad.modals.initsocketfail.explanation": "\u0394\u03b5\u03bd \u03ae\u03c4\u03b1\u03bd \u03b4\u03c5\u03bd\u03b1\u03c4\u03ae \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae \u03c3\u03c5\u03b3\u03c7\u03c1\u03bf\u03bd\u03b9\u03c3\u03bc\u03bf\u03cd.", - "pad.modals.initsocketfail.cause": "\u0391\u03c5\u03c4\u03cc \u03bf\u03c6\u03b5\u03af\u03bb\u03b5\u03c4\u03b1\u03b9 \u03c0\u03b9\u03b8\u03b1\u03bd\u03ce\u03c2 \u03c3\u03b5 \u03c0\u03c1\u03cc\u03b2\u03bb\u03b7\u03bc\u03b1 \u03bc\u03b5 \u03c4\u03bf \u03c0\u03c1\u03cc\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1 \u03c0\u03b5\u03c1\u03b9\u03ae\u03b3\u03b7\u03c3\u03b7\u03c2 \u03ae \u03c4\u03b7\u03c2 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03ae\u03c2 \u03c3\u03b1\u03c2 \u03c3\u03c4\u03bf \u03b4\u03b9\u03b1\u03b4\u03af\u03ba\u03c4\u03c5\u03bf.", - "pad.modals.slowcommit": "\u0391\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03ad\u03b8\u03b7\u03ba\u03b5.", - "pad.modals.slowcommit.explanation": "\u039f \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 \u03b4\u03b5\u03bd \u03b1\u03c0\u03bf\u03ba\u03c1\u03af\u03bd\u03b5\u03c4\u03b1\u03b9.", - "pad.modals.slowcommit.cause": "\u0391\u03c5\u03c4\u03cc \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bf\u03c6\u03b5\u03af\u03bb\u03b5\u03c4\u03b1\u03b9 \u03c3\u03b5 \u03c0\u03c1\u03bf\u03b2\u03bb\u03ae\u03bc\u03b1\u03c4\u03b1 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7\u03c2 \u03b4\u03b9\u03ba\u03c4\u03cd\u03bf\u03c5.", - "pad.modals.deleted": "\u0394\u03b9\u03b5\u03b3\u03c1\u03ac\u03c6\u03b7.", - "pad.modals.deleted.explanation": "\u0391\u03c5\u03c4\u03cc \u03c4\u03bf pad \u03ad\u03c7\u03b5\u03b9 \u03ba\u03b1\u03c4\u03b1\u03c1\u03b3\u03b7\u03b8\u03b5\u03af.", - "pad.modals.disconnected": "\u0388\u03c7\u03b5\u03c4\u03b5 \u03b1\u03c0\u03bf\u03c3\u03c5\u03bd\u03b4\u03b5\u03b8\u03b5\u03af.", - "pad.modals.disconnected.explanation": "\u03a7\u03ac\u03b8\u03b7\u03ba\u03b5 \u03b7 \u03c3\u03cd\u03bd\u03b4\u03b5\u03c3\u03b7 \u03bc\u03b5 \u03c4\u03bf \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae", - "pad.modals.disconnected.cause": "\u039f \u03b4\u03b9\u03b1\u03ba\u03bf\u03bc\u03b9\u03c3\u03c4\u03ae\u03c2 \u03bc\u03c0\u03bf\u03c1\u03b5\u03af \u03bd\u03b1 \u03bc\u03b7\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03b4\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03bf\u03c2. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b5\u03b9\u03b4\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b1\u03c2 \u03b5\u03ac\u03bd \u03b1\u03c5\u03c4\u03cc \u03b5\u03be\u03b1\u03ba\u03bf\u03bb\u03bf\u03c5\u03b8\u03b5\u03af \u03bd\u03b1 \u03c3\u03c5\u03bc\u03b2\u03b1\u03af\u03bd\u03b5\u03b9.", - "pad.share": "\u039c\u03bf\u03b9\u03c1\u03b1\u03c3\u03c4\u03b5\u03af\u03c4\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf pad", - "pad.share.readonly": "\u039c\u03cc\u03bd\u03bf \u03b3\u03b9\u03b1 \u03b1\u03bd\u03ac\u03b3\u03bd\u03c9\u03c3\u03b7", - "pad.share.link": "\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2", - "pad.share.emebdcode": "URL \u03b5\u03bd\u03c3\u03c9\u03bc\u03ac\u03c4\u03c9\u03c3\u03b7\u03c2", - "pad.chat": "\u03a3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1", - "pad.chat.title": "\u0386\u03bd\u03bf\u03b9\u03b3\u03bc\u03b1 \u03c4\u03b7\u03c2 \u03c3\u03c5\u03bd\u03bf\u03bc\u03b9\u03bb\u03af\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf pad.", - "pad.chat.loadmessages": "\u03a6\u03cc\u03c1\u03c4\u03c9\u03c3\u03b7 \u03c0\u03b5\u03c1\u03b9\u03c3\u03c3\u03cc\u03c4\u03b5\u03c1\u03c9\u03bd \u03bc\u03b7\u03bd\u03c5\u03bc\u03ac\u03c4\u03c9\u03bd", - "timeslider.pageTitle": "{{appTitle}} \u03a7\u03c1\u03bf\u03bd\u03bf\u03b4\u03b9\u03ac\u03b3\u03c1\u03b1\u03bc\u03bc\u03b1", - "timeslider.toolbar.returnbutton": "\u0395\u03c0\u03b9\u03c3\u03c4\u03c1\u03bf\u03c6\u03ae \u03c3\u03c4\u03bf pad", - "timeslider.toolbar.authors": "\u03a3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b5\u03c2:", - "timeslider.toolbar.authorsList": "\u039a\u03b1\u03bd\u03ad\u03bd\u03b1\u03c2 \u03a3\u03c5\u03bd\u03c4\u03ac\u03ba\u03c4\u03b7\u03c2", - "timeslider.toolbar.exportlink.title": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae", - "timeslider.exportCurrent": "\u0395\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03c4\u03c1\u03ad\u03c7\u03bf\u03c5\u03c3\u03b1\u03c2 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7\u03c2 \u03c9\u03c2:", - "timeslider.version": "\u0388\u03ba\u03b4\u03bf\u03c3\u03b7 {{version}}", - "timeslider.saved": "\u0391\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03cd\u03c4\u03b7\u03ba\u03b5 \u03c3\u03c4\u03b9\u03c2 {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", - "timeslider.month.february": "\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5", - "timeslider.month.march": "\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5", - "timeslider.month.april": "\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5", - "timeslider.month.may": "\u039c\u03b1\u0390\u03bf\u03c5", - "timeslider.month.june": "\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5", - "timeslider.month.july": "\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5", - "timeslider.month.august": "\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5", - "timeslider.month.september": "\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", - "timeslider.month.october": "\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5", - "timeslider.month.november": "\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", - "timeslider.month.december": "\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5", - "timeslider.unnamedauthor": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03ad\u03b1\u03c2", - "timeslider.unnamedauthors": "{{num}} \u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03b9 \u03c3\u03c5\u03b3\u03b3\u03c1\u03b1\u03c6\u03b5\u03af\u03c2", - "pad.savedrevs.marked": "\u0391\u03c5\u03c4\u03ae \u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7 \u03b5\u03c0\u03b9\u03c3\u03b7\u03bc\u03ac\u03bd\u03b8\u03b7\u03ba\u03b5 \u03c9\u03c2 \u03b1\u03c0\u03bf\u03b8\u03b7\u03ba\u03b5\u03c5\u03bc\u03ad\u03bd\u03b7 \u03ad\u03ba\u03b4\u03bf\u03c3\u03b7", - "pad.userlist.entername": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03cc\u03bd\u03bf\u03bc\u03ac \u03c3\u03b1\u03c2", - "pad.userlist.unnamed": "\u03b1\u03bd\u03ce\u03bd\u03c5\u03bc\u03bf\u03c2", - "pad.userlist.guest": "\u0395\u03c0\u03b9\u03c3\u03ba\u03ad\u03c0\u03c4\u03b7\u03c2", - "pad.userlist.deny": "\u0386\u03c1\u03bd\u03b7\u03c3\u03b7", - "pad.userlist.approve": "\u0388\u03b3\u03ba\u03c1\u03b9\u03c3\u03b7", - "pad.editbar.clearcolors": "\u039d\u03b1 \u03b3\u03af\u03bd\u03b5\u03b9 \u03b5\u03ba\u03ba\u03b1\u03b8\u03ac\u03c1\u03b9\u03c3\u03b7 \u03c7\u03c1\u03c9\u03bc\u03ac\u03c4\u03c9\u03bd \u03c3\u03cd\u03bd\u03c4\u03b1\u03be\u03b7\u03c2 \u03c3\u03b5 \u03bf\u03bb\u03cc\u03ba\u03bb\u03b7\u03c1\u03bf \u03c4\u03bf \u03ad\u03b3\u03b3\u03c1\u03b1\u03c6\u03bf;", - "pad.impexp.importbutton": "\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a4\u03ce\u03c1\u03b1", - "pad.impexp.importing": "\u0395\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b1\u03b9...", - "pad.impexp.confirmimport": "\u0397 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b5\u03bd\u03cc\u03c2 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03b8\u03b1 \u03b1\u03bd\u03c4\u03b9\u03ba\u03b1\u03c4\u03b1\u03c3\u03c4\u03ae\u03c3\u03b5\u03b9 \u03c4\u03bf \u03ba\u03b5\u03af\u03bc\u03b5\u03bd\u03bf \u03c4\u03bf\u03c5 pad. \u0395\u03af\u03c3\u03c4\u03b5 \u03b2\u03ad\u03b2\u03b1\u03b9\u03bf\u03b9 \u03cc\u03c4\u03b9 \u03b8\u03ad\u03bb\u03b5\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bd\u03b5\u03c7\u03af\u03c3\u03b5\u03c4\u03b5;", - "pad.impexp.convertFailed": "\u0394\u03b5\u03bd \u03ba\u03b1\u03c4\u03b1\u03c6\u03ad\u03c1\u03b1\u03bc\u03b5 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03bf\u03c5\u03bc\u03b5 \u03b1\u03c5\u03c4\u03cc \u03c4\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf. \u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03ae\u03c3\u03c4\u03b5 \u03b4\u03b9\u03b1\u03c6\u03bf\u03c1\u03b5\u03c4\u03b9\u03ba\u03cc \u03c4\u03cd\u03c0\u03bf \u03b1\u03c1\u03c7\u03b5\u03af\u03bf\u03c5 \u03ae \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c8\u03c4\u03b5 \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03ae\u03c3\u03c4\u03b5 \u03c7\u03b5\u03b9\u03c1\u03bf\u03ba\u03af\u03bd\u03b7\u03c4\u03b1", - "pad.impexp.uploadFailed": "\u0397 \u03b1\u03c0\u03bf\u03c3\u03c4\u03bf\u03bb\u03ae \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5, \u03c0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03c0\u03c1\u03bf\u03c3\u03c0\u03b1\u03b8\u03ae\u03c3\u03c4\u03b5 \u03be\u03b1\u03bd\u03ac", - "pad.impexp.importfailed": "\u0397 \u03b5\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03b1\u03c0\u03ad\u03c4\u03c5\u03c7\u03b5", - "pad.impexp.copypaste": "\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03ce \u03b1\u03bd\u03c4\u03b9\u03b3\u03c1\u03ac\u03c8\u03c4\u03b5 \u03ba\u03b1\u03b9 \u03b5\u03c0\u03b9\u03ba\u03bf\u03bb\u03bb\u03ae\u03c3\u03c4\u03b5", - "pad.impexp.exportdisabled": "\u0397 \u03b5\u03be\u03b1\u03b3\u03c9\u03b3\u03ae \u03c3\u03b5 \u03bc\u03bf\u03c1\u03c6\u03ae {{type}} \u03ad\u03c7\u03b5\u03b9 \u03b1\u03c0\u03b5\u03bd\u03b5\u03c1\u03b3\u03bf\u03c0\u03bf\u03b9\u03b7\u03b8\u03b5\u03af. \u0395\u03c0\u03b9\u03ba\u03bf\u03b9\u03bd\u03c9\u03bd\u03ae\u03c3\u03c4\u03b5 \u03bc\u03b5 \u03c4\u03bf\u03bd \u03b4\u03b9\u03b1\u03c7\u03b5\u03b9\u03c1\u03b9\u03c3\u03c4\u03ae \u03c4\u03bf\u03c5 \u03c3\u03c5\u03c3\u03c4\u03ae\u03bc\u03b1\u03c4\u03cc\u03c2 \u03c3\u03b1\u03c2 \u03b3\u03b9\u03b1 \u03bb\u03b5\u03c0\u03c4\u03bf\u03bc\u03ad\u03c1\u03b5\u03b9\u03b5\u03c2." + "@metadata": { + "authors": [ + "Evropi", + "Geraki", + "Glavkos", + "Monopatis", + "Protnet" + ] + }, + "index.newPad": "Îέο Pad", + "index.createOpenPad": "ή δημιουÏγία/άνοιγμα ενός Pad με όνομα:", + "pad.toolbar.bold.title": "Έντονα (Ctrl-B)", + "pad.toolbar.italic.title": "Πλάγια (Ctrl-I)", + "pad.toolbar.underline.title": "ΥπογÏάμμιση (Ctrl-U)", + "pad.toolbar.strikethrough.title": "ΔιακÏιτή διαγÏαφή", + "pad.toolbar.ol.title": "Ταξινομημένη λίστα", + "pad.toolbar.ul.title": "Λίστα χωÏίς σειÏά", + "pad.toolbar.indent.title": "Εισαγωγή εσοχής (TAB)", + "pad.toolbar.unindent.title": "ΑφαίÏεση εσοχής (Shift+TAB)", + "pad.toolbar.undo.title": "ΑναίÏεση (Ctrl-Z)", + "pad.toolbar.redo.title": "Επανάληψη (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "ΚαθαÏισμός ΧÏωμάτων Συντακτών", + "pad.toolbar.import_export.title": "Εισαγωγή/Εξαγωγή από/σε διαφοÏετικοÏÏ‚ Ï„Ïπους αÏχείων", + "pad.toolbar.timeslider.title": "ΧÏονοδιάγÏαμμα", + "pad.toolbar.savedRevision.title": "Αποθήκευση ΑναθεώÏησης", + "pad.toolbar.settings.title": "Ρυθμίσεις", + "pad.toolbar.embed.title": "ΔιαμοίÏαση και Ενσωμάτωση Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… pad", + "pad.toolbar.showusers.title": "Εμφάνιση των χÏηστών Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… pad", + "pad.colorpicker.save": "Αποθήκευση", + "pad.colorpicker.cancel": "ΆκυÏο", + "pad.loading": "ΦόÏτωση...", + "pad.passwordRequired": "ΧÏειάζεστε κωδικό Ï€Ïόσβασης για Ï€Ïόσβαση σε αυτό το pad", + "pad.permissionDenied": "Δεν έχετε δικαίωμα Ï€Ïόσβασης σε αυτό το pad", + "pad.wrongPassword": "Ο κωδικός σας ήταν λανθασμένος", + "pad.settings.padSettings": "Ρυθμίσεις Pad", + "pad.settings.myView": "Η Ï€Ïοβολή μου", + "pad.settings.stickychat": "Η Συνομιλία να είναι πάντα οÏατή", + "pad.settings.colorcheck": "ΧÏώματα συντάκτη", + "pad.settings.linenocheck": "ΑÏιθμοί γÏαμμής", + "pad.settings.rtlcheck": "Θέλετε να διαβάσετε το πεÏιεχόμενο από δεξιά Ï€Ïος τα αÏιστεÏά;", + "pad.settings.fontType": "ΤÏπος γÏαμματοσειÏάς:", + "pad.settings.fontType.normal": "Κανονική", + "pad.settings.fontType.monospaced": "ΚαθοÏισμένου πλάτους", + "pad.settings.globalView": "Καθολική ΠÏοβολή", + "pad.settings.language": "Γλώσσα:", + "pad.importExport.import_export": "Εισαγωγή/Εξαγωγή", + "pad.importExport.import": "Αποστολή οποιουδήποτε αÏχείου κειμένου ή εγγÏάφου", + "pad.importExport.importSuccessful": "Επιτυχής!", + "pad.importExport.export": "Εξαγωγή Ï„Ïέχοντος pad ως:", + "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.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "ΜποÏείτε να κάνετε εισαγωγή Î±Ï€Î»Î¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï… ή μοÏφής html. Για πιο Ï€Ïοηγμένες δυνατότητες εισαγωγής παÏακαλώ \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eεγκαταστήστε το abiword\u003C/a\u003E.", + "pad.modals.connected": "Συνδεμένοι.", + "pad.modals.reconnecting": "ΕπανασÏνδεση στο pad σας...", + "pad.modals.forcereconnect": "Επιβολή επανασÏνδεσης", + "pad.modals.userdup": "Ανοιγμένο σε άλλο παÏάθυÏο", + "pad.modals.userdup.explanation": "Αυτό το pad φαίνεται να είναι ανοιχτό σε πεÏισσότεÏα από ένα παÏάθυÏο του Ï€ÏογÏάμματος πεÏιήγησης σε αυτόν τον υπολογιστή.", + "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.deleted": "ΔιεγÏάφη.", + "pad.modals.deleted.explanation": "Αυτό το pad έχει καταÏγηθεί.", + "pad.modals.disconnected": "Έχετε αποσυνδεθεί.", + "pad.modals.disconnected.explanation": "Χάθηκε η σÏνδεση με το διακομιστή", + "pad.modals.disconnected.cause": "Ο διακομιστής μποÏεί να μην είναι διαθέσιμος. ΠαÏακαλοÏμε ειδοποιήστε τον διαχειÏιστή της υπηÏεσίας εάν εξακολουθεί να συμβαίνει αυτό.", + "pad.share": "ΜοιÏαστείτε αυτό το pad", + "pad.share.readonly": "Μόνο για ανάγνωση", + "pad.share.link": "ΣÏνδεσμος", + "pad.share.emebdcode": "URL ενσωμάτωσης", + "pad.chat": "Συνομιλία", + "pad.chat.title": "Άνοιγμα της συνομιλίας για αυτό το pad.", + "pad.chat.loadmessages": "ΦόÏτωση πεÏισσότεÏων μηνυμάτων", + "timeslider.pageTitle": "{{appTitle}} ΧÏονοδιάγÏαμμα", + "timeslider.toolbar.returnbutton": "ΕπιστÏοφή στο pad", + "timeslider.toolbar.authors": "Συντάκτες:", + "timeslider.toolbar.authorsList": "Κανένας Συντάκτης", + "timeslider.toolbar.exportlink.title": "Εξαγωγή", + "timeslider.exportCurrent": "Εξαγωγή Ï„Ïέχουσας έκδοσης ως:", + "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": "ΔεκεμβÏίου", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: ανώνυμος συντάκτης, other: ανώνυμοι συντάκτες]}", + "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.confirmimport": "Η εισαγωγή ενός αÏχείου θα αντικαταστήσει το κείμενο του pad. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", + "pad.impexp.convertFailed": "Δεν καταφέÏαμε να εισάγουμε αυτό το αÏχείο. ΠαÏακαλώ χÏησιμοποιήστε διαφοÏετικό Ï„Ïπο αÏχείου ή αντιγÏάψτε και επικολλήστε χειÏοκίνητα", + "pad.impexp.uploadFailed": "Η αποστολή απέτυχε, παÏακαλώ Ï€Ïοσπαθήστε ξανά", + "pad.impexp.importfailed": "Η εισαγωγή απέτυχε", + "pad.impexp.copypaste": "ΠαÏακαλώ αντιγÏάψτε και επικολλήστε", + "pad.impexp.exportdisabled": "Η εξαγωγή σε μοÏφή {{type}} έχει απενεÏγοποιηθεί. Επικοινωνήστε με τον διαχειÏιστή του συστήματός σας για λεπτομέÏειες." } \ No newline at end of file diff --git a/src/locales/en.json b/src/locales/en.json index bef6dfd05..01d3ff4ff 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1,14 +1,15 @@ { "index.newPad": "New Pad", "index.createOpenPad": "or create/open a Pad with the name:", + "pad.toolbar.bold.title": "Bold (Ctrl-B)", "pad.toolbar.italic.title": "Italic (Ctrl-I)", "pad.toolbar.underline.title": "Underline (Ctrl-U)", "pad.toolbar.strikethrough.title": "Strikethrough", "pad.toolbar.ol.title": "Ordered list", "pad.toolbar.ul.title": "Unordered List", - "pad.toolbar.indent.title": "Indent", - "pad.toolbar.unindent.title": "Outdent", + "pad.toolbar.indent.title": "Indent (TAB)", + "pad.toolbar.unindent.title": "Outdent (Shift+TAB)", "pad.toolbar.undo.title": "Undo (Ctrl-Z)", "pad.toolbar.redo.title": "Redo (Ctrl-Y)", "pad.toolbar.clearAuthorship.title": "Clear Authorship Colors", @@ -16,24 +17,29 @@ "pad.toolbar.timeslider.title": "Timeslider", "pad.toolbar.savedRevision.title": "Save Revision", "pad.toolbar.settings.title": "Settings", - "pad.toolbar.embed.title": "Embed this pad", + "pad.toolbar.embed.title": "Share and Embed this pad", "pad.toolbar.showusers.title": "Show the users on this pad", + "pad.colorpicker.save": "Save", "pad.colorpicker.cancel": "Cancel", + "pad.loading": "Loading...", "pad.passwordRequired": "You need a password to access this pad", "pad.permissionDenied": "You do not have permission to access this pad", "pad.wrongPassword": "Your password was wrong", + "pad.settings.padSettings": "Pad Settings", "pad.settings.myView": "My View", "pad.settings.stickychat": "Chat always on screen", "pad.settings.colorcheck": "Authorship colors", "pad.settings.linenocheck": "Line numbers", + "pad.settings.rtlcheck": "Read content from right to left?", "pad.settings.fontType": "Font type:", "pad.settings.fontType.normal": "Normal", "pad.settings.fontType.monospaced": "Monospace", "pad.settings.globalView": "Global View", "pad.settings.language": "Language:", + "pad.importExport.import_export": "Import/Export", "pad.importExport.import": "Upload any text file or document", "pad.importExport.importSuccessful": "Successful!", @@ -44,29 +50,42 @@ "pad.importExport.exportpdf": "PDF", "pad.importExport.exportopen": "ODF (Open Document Format)", "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "You only can import from plain text or html formats. For more advanced import features please install abiword.", + "pad.importExport.abiword.innerHTML": "You only can import from plain text or HTML formats. For more advanced import features please install abiword.", + "pad.modals.connected": "Connected.", "pad.modals.reconnecting": "Reconnecting to your pad..", "pad.modals.forcereconnect": "Force reconnect", + "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.", + "pad.modals.unauth": "Not authorized", "pad.modals.unauth.explanation": "Your permissions have changed while viewing this page. Try to reconnect.", - "pad.modals.looping": "Disconnected.", + "pad.modals.looping.explanation": "There are communication problems with the synchronization server.", "pad.modals.looping.cause": "Perhaps you connected through an incompatible firewall or proxy.", + "pad.modals.initsocketfail": "Server is unreachable.", "pad.modals.initsocketfail.explanation": "Couldn't connect to the synchronization server.", "pad.modals.initsocketfail.cause": "This is probably due to a problem with your browser or your internet connection.", - "pad.modals.slowcommit": "Disconnected.", + "pad.modals.slowcommit.explanation": "The server is not responding.", "pad.modals.slowcommit.cause": "This could be due to problems with network connectivity.", + + "pad.modals.badChangeset.explanation": "An edit you have made was classified illegal by the synchronization server.", + "pad.modals.badChangeset.cause": "This could be due to a wrong server configuration or some other unexpected behavior. Please contact the service administrator, if you feel this is an error. Try to reconnect in order to continue editing.", + + "pad.modals.corruptPad.explanation": "The pad you are trying to access is corrupt.", + "pad.modals.corruptPad.cause": "This may be due to a wrong server configuration or some other unexpected behavior. Please contact the service administrator.", + "pad.modals.deleted": "Deleted.", "pad.modals.deleted.explanation": "This pad has been removed.", + "pad.modals.disconnected": "You have been disconnected.", "pad.modals.disconnected.explanation": "The connection to the server was lost", - "pad.modals.disconnected.cause": "The server may be unavailable. Please notify us if this continues to happen.", + "pad.modals.disconnected.cause": "The server may be unavailable. Please notify the service administrator if this continues to happen.", + "pad.share": "Share this pad", "pad.share.readonly": "Read only", "pad.share.link": "Link", @@ -74,6 +93,7 @@ "pad.chat": "Chat", "pad.chat.title": "Open the chat for this pad.", "pad.chat.loadmessages": "Load more messages", + "timeslider.pageTitle": "{{appTitle}} Timeslider", "timeslider.toolbar.returnbutton": "Return to pad", "timeslider.toolbar.authors": "Authors:", @@ -82,6 +102,7 @@ "timeslider.exportCurrent": "Export current version as:", "timeslider.version": "Version {{version}}", "timeslider.saved": "Saved {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", "timeslider.month.january": "January", "timeslider.month.february": "February", @@ -95,8 +116,8 @@ "timeslider.month.october": "October", "timeslider.month.november": "November", "timeslider.month.december": "December", - "timeslider.unnamedauthor": "{{num}} unnamed author", - "timeslider.unnamedauthors": "{{num}} unnamed authors", + + "timeslider.unnamedauthors": "{{num}} unnamed {[plural(num) one: author, other: authors ]}", "pad.savedrevs.marked": "This revision is now marked as a saved revision", "pad.userlist.entername": "Enter your name", "pad.userlist.unnamed": "unnamed", @@ -104,6 +125,7 @@ "pad.userlist.deny": "Deny", "pad.userlist.approve": "Approve", "pad.editbar.clearcolors": "Clear authorship colors on entire document?", + "pad.impexp.importbutton": "Import Now", "pad.impexp.importing": "Importing...", "pad.impexp.confirmimport": "Importing a file will overwrite the current text of the pad. Are you sure you want to proceed?", @@ -112,4 +134,4 @@ "pad.impexp.importfailed": "Import failed", "pad.impexp.copypaste": "Please copy paste", "pad.impexp.exportdisabled": "Exporting as {{type}} format is disabled. Please contact your system administrator for details." -} \ No newline at end of file +} diff --git a/src/locales/es.json b/src/locales/es.json index 187f36378..4b0200cb1 100644 --- a/src/locales/es.json +++ b/src/locales/es.json @@ -1,125 +1,130 @@ { - "@metadata": { - "authors": { - "0": "Armando-Martin", - "1": "Jacobo", - "2": "Joker", - "3": "Rubenwap", - "5": "Vivaelcelta", - "6": "Xuacu" - } - }, - "index.newPad": "Nuevo Pad", - "index.createOpenPad": "o crea\/abre un Pad con el nombre:", - "pad.toolbar.bold.title": "Negrita (Ctrl-B)", - "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", - "pad.toolbar.underline.title": "Subrayado (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Tachado", - "pad.toolbar.ol.title": "Lista ordenada", - "pad.toolbar.ul.title": "Lista desordenada", - "pad.toolbar.indent.title": "Sangrar", - "pad.toolbar.unindent.title": "Desangrar", - "pad.toolbar.undo.title": "Deshacer (Ctrl-Z)", - "pad.toolbar.redo.title": "Rehacer (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Eliminar los colores de los autores", - "pad.toolbar.import_export.title": "Importar\/Exportar a diferentes formatos de archivos", - "pad.toolbar.timeslider.title": "L\u00ednea de tiempo", - "pad.toolbar.savedRevision.title": "Revisiones guardadas", - "pad.toolbar.settings.title": "Configuraci\u00f3n", - "pad.toolbar.embed.title": "Incrustar este pad", - "pad.toolbar.showusers.title": "Mostrar los usuarios de este pad", - "pad.colorpicker.save": "Guardar", - "pad.colorpicker.cancel": "Cancelar", - "pad.loading": "Cargando...", - "pad.passwordRequired": "Necesitas una contrase\u00f1a para acceder a este documento", - "pad.permissionDenied": "No tienes permiso para acceder a esta p\u00e1gina", - "pad.wrongPassword": "La contrase\u00f1a era incorrecta", - "pad.settings.padSettings": "Configuraci\u00f3n del Pad", - "pad.settings.myView": "Preferencias personales", - "pad.settings.stickychat": "Chat siempre encima", - "pad.settings.colorcheck": "Color de autor\u00eda", - "pad.settings.linenocheck": "N\u00fameros de l\u00ednea", - "pad.settings.fontType": "Tipograf\u00eda:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monoespacio", - "pad.settings.globalView": "Preferencias globales", - "pad.settings.language": "Idioma:", - "pad.importExport.import_export": "Importar\/Exportar", - "pad.importExport.import": "Subir cualquier texto o documento", - "pad.importExport.importSuccessful": "\u00a1Operaci\u00f3n realizada con \u00e9xito!", - "pad.importExport.export": "Exporta el pad actual como:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Texto plano", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "S\u00f3lo puede importar formatos de texto plano o html. Para funciones m\u00e1s avanzadas instale abiword<\/a>.", - "pad.modals.connected": "Conectado.", - "pad.modals.reconnecting": "Reconectando a tu pad..", - "pad.modals.forcereconnect": "Reconexi\u00f3n forzosa", - "pad.modals.userdup": "Abierto en otra ventana", - "pad.modals.userdup.explanation": "Este pad parece estar abierto en m\u00e1s de una ventana de tu navegador.", - "pad.modals.userdup.advice": "Reconectar para usar esta ventana.", - "pad.modals.unauth": "No autorizado.", - "pad.modals.unauth.explanation": "Los permisos han cambiado mientras estabas viendo esta p\u00e1gina. Intenta reconectar de nuevo.", - "pad.modals.looping": "Desconectado.", - "pad.modals.looping.explanation": "Estamos teniendo problemas con la sincronizaci\u00f3n en el servidor.", - "pad.modals.looping.cause": "Puede deberse a que te conectes a trav\u00e9s de un proxy o un cortafuegos incompatible.", - "pad.modals.initsocketfail": "Servidor incalcanzable.", - "pad.modals.initsocketfail.explanation": "No se pudo conectar al servidor de sincronizaci\u00f3n.", - "pad.modals.initsocketfail.cause": "Puede ser a causa de tu navegador o de una ca\u00edda en tu conexi\u00f3n de Internet.", - "pad.modals.slowcommit": "Desconectado.", - "pad.modals.slowcommit.explanation": "El servidor no responde.", - "pad.modals.slowcommit.cause": "Puede deberse a problemas con tu conexi\u00f3n de red.", - "pad.modals.deleted": "Borrado.", - "pad.modals.deleted.explanation": "Este pad ha sido borrado.", - "pad.modals.disconnected": "Has sido desconectado.", - "pad.modals.disconnected.explanation": "Se perdi\u00f3 la conexi\u00f3n con el servidor", - "pad.modals.disconnected.cause": "El servidor podr\u00eda no estar disponible. Contacte con nosotros si esto contin\u00faa sucediendo.", - "pad.share": "Compatir el pad", - "pad.share.readonly": "S\u00f3lo lectura", - "pad.share.link": "Enlace", - "pad.share.emebdcode": "Incrustar URL", - "pad.chat": "Chat", - "pad.chat.title": "Abrir el chat para este pad.", - "pad.chat.loadmessages": "Cargar m\u00e1s mensajes", - "timeslider.pageTitle": "{{appTitle}} L\u00ednea de tiempo", - "timeslider.toolbar.returnbutton": "Volver al pad", - "timeslider.toolbar.authors": "Autores:", - "timeslider.toolbar.authorsList": "Sin autores", - "timeslider.toolbar.exportlink.title": "Exportar", - "timeslider.exportCurrent": "Exportar la versi\u00f3n actual como:", - "timeslider.version": "Versi\u00f3n {{version}}", - "timeslider.saved": "Guardado el {{day}} de {{month}} de {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Enero", - "timeslider.month.february": "Febrero", - "timeslider.month.march": "Marzo", - "timeslider.month.april": "Abril", - "timeslider.month.may": "Mayo", - "timeslider.month.june": "Junio", - "timeslider.month.july": "Julio", - "timeslider.month.august": "Agosto", - "timeslider.month.september": "Septiembre", - "timeslider.month.october": "Octubre", - "timeslider.month.november": "Noviembre", - "timeslider.month.december": "Diciembre", - "timeslider.unnamedauthor": "{{num}} autor desconocido", - "timeslider.unnamedauthors": "{{num}} autores desconocidos", - "pad.savedrevs.marked": "Revisi\u00f3n guardada", - "pad.userlist.entername": "Escribe tu nombre", - "pad.userlist.unnamed": "an\u00f3nimo", - "pad.userlist.guest": "Invitado", - "pad.userlist.deny": "Denegar", - "pad.userlist.approve": "Aprobar", - "pad.editbar.clearcolors": "\u00bfDesea borrar el color de los autores en todo el documento?", - "pad.impexp.importbutton": "Importar", - "pad.impexp.importing": "Importando...", - "pad.impexp.confirmimport": "Al importar un fichero se borrar\u00e1 el contenido actual del documento. \u00bfQuiere continuar?", - "pad.impexp.convertFailed": "No pudimos importar este fichero. Intentalo con otro formato diferente o copia y pega manualmente.", - "pad.impexp.uploadFailed": "El env\u00edo del fichero fall\u00f3. Intentelo de nuevo.", - "pad.impexp.importfailed": "Fallo al importar", - "pad.impexp.copypaste": "Intente copiar y pegar", - "pad.impexp.exportdisabled": "La exportaci\u00f3n al formato {{type}} format est\u00e1 desactivada. Contacte con su administrador de sistemas." + "@metadata": { + "authors": { + "0": "Armando-Martin", + "1": "Jacobo", + "2": "Joker", + "3": "Larjona", + "4": "Mklehr", + "5": "Rubenwap", + "7": "VegaDark", + "8": "Vivaelcelta", + "9": "Xuacu" + } + }, + "index.newPad": "Nuevo Pad", + "index.createOpenPad": "o crea/abre un Pad con el nombre:", + "pad.toolbar.bold.title": "Negrita (Ctrl-B)", + "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", + "pad.toolbar.underline.title": "Subrayado (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Tachado", + "pad.toolbar.ol.title": "Lista ordenada", + "pad.toolbar.ul.title": "Lista desordenada", + "pad.toolbar.indent.title": "Sangrar", + "pad.toolbar.unindent.title": "Desangrar", + "pad.toolbar.undo.title": "Deshacer (Ctrl-Z)", + "pad.toolbar.redo.title": "Rehacer (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Eliminar los colores de los autores", + "pad.toolbar.import_export.title": "Importar/Exportar a diferentes formatos de archivos", + "pad.toolbar.timeslider.title": "Línea de tiempo", + "pad.toolbar.savedRevision.title": "Guardar revisión", + "pad.toolbar.settings.title": "Configuración", + "pad.toolbar.embed.title": "Compartir e incrustar este pad", + "pad.toolbar.showusers.title": "Mostrar los usuarios de este pad", + "pad.colorpicker.save": "Guardar", + "pad.colorpicker.cancel": "Cancelar", + "pad.loading": "Cargando...", + "pad.passwordRequired": "Necesitas una contraseña para acceder a este documento", + "pad.permissionDenied": "No tienes permiso para acceder a esta página", + "pad.wrongPassword": "La contraseña era incorrecta", + "pad.settings.padSettings": "Configuración del Pad", + "pad.settings.myView": "Preferencias personales", + "pad.settings.stickychat": "Chat siempre encima", + "pad.settings.colorcheck": "Color de autoría", + "pad.settings.linenocheck": "Números de línea", + "pad.settings.rtlcheck": "¿Leer contenido de derecha a izquierda?", + "pad.settings.fontType": "Tipografía:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monoespacio", + "pad.settings.globalView": "Preferencias globales", + "pad.settings.language": "Idioma:", + "pad.importExport.import_export": "Importar/Exportar", + "pad.importExport.import": "Subir cualquier texto o documento", + "pad.importExport.importSuccessful": "¡Operación realizada con éxito!", + "pad.importExport.export": "Exporta el pad actual como:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Texto plano", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Sólo puede importar formatos de texto plano o html. Para funciones más avanzadas instale \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword\u003C/a\u003E.", + "pad.modals.connected": "Conectado.", + "pad.modals.reconnecting": "Reconectando a tu pad..", + "pad.modals.forcereconnect": "Reconexión forzosa", + "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.", + "pad.modals.unauth": "No autorizado.", + "pad.modals.unauth.explanation": "Los permisos han cambiado mientras estabas viendo esta página. Intenta reconectar de nuevo.", + "pad.modals.looping.explanation": "Estamos teniendo problemas con la sincronización en el servidor.", + "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.cause": "Puede ser a causa de tu navegador o de una caída en tu conexión de Internet.", + "pad.modals.slowcommit.explanation": "El servidor no responde.", + "pad.modals.slowcommit.cause": "Puede deberse a problemas con tu conexión de red.", + "pad.modals.badChangeset.explanation": "Ha hecho una edición clasificada como ilegal por el servidor de sincronización.", + "pad.modals.badChangeset.cause": "Esto podría ser debido a una mala configuración del servidor o algún otro comportamiento inesperado. Póngase en contacto con el administrador del servicio, si siente que esto es un error. Intente volver a conectar con el fin de seguir editando.", + "pad.modals.corruptPad.explanation": "El pad que está intentando acceder está dañado.", + "pad.modals.corruptPad.cause": "Esto puede deberse a una mala configuración de servidor o algún otro comportamiento inesperado. Póngase en contacto con el administrador del servicio.", + "pad.modals.deleted": "Borrado.", + "pad.modals.deleted.explanation": "Este pad ha sido borrado.", + "pad.modals.disconnected": "Has sido desconectado.", + "pad.modals.disconnected.explanation": "Se perdió la conexión con el servidor", + "pad.modals.disconnected.cause": "El servidor podría no estar disponible. Contacte con nosotros si esto continúa sucediendo.", + "pad.share": "Compatir el pad", + "pad.share.readonly": "Sólo lectura", + "pad.share.link": "Enlace", + "pad.share.emebdcode": "Incrustar URL", + "pad.chat": "Chat", + "pad.chat.title": "Abrir el chat para este pad.", + "pad.chat.loadmessages": "Cargar más mensajes", + "timeslider.pageTitle": "{{appTitle}} Línea de tiempo", + "timeslider.toolbar.returnbutton": "Volver al pad", + "timeslider.toolbar.authors": "Autores:", + "timeslider.toolbar.authorsList": "Sin autores", + "timeslider.toolbar.exportlink.title": "Exportar", + "timeslider.exportCurrent": "Exportar la versión actual como:", + "timeslider.version": "Versión {{version}}", + "timeslider.saved": "Guardado el {{day}} de {{month}} de {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Enero", + "timeslider.month.february": "Febrero", + "timeslider.month.march": "Marzo", + "timeslider.month.april": "Abril", + "timeslider.month.may": "Mayo", + "timeslider.month.june": "Junio", + "timeslider.month.july": "Julio", + "timeslider.month.august": "Agosto", + "timeslider.month.september": "Septiembre", + "timeslider.month.october": "Octubre", + "timeslider.month.november": "Noviembre", + "timeslider.month.december": "Diciembre", + "timeslider.unnamedauthors": "{{num}} {[ plural(num) one: autor desconocido, other: autores desconocidos]}", + "pad.savedrevs.marked": "Revisión guardada", + "pad.userlist.entername": "Escribe tu nombre", + "pad.userlist.unnamed": "anónimo", + "pad.userlist.guest": "Invitado", + "pad.userlist.deny": "Denegar", + "pad.userlist.approve": "Aprobar", + "pad.editbar.clearcolors": "¿Desea borrar el color de los autores en todo el documento?", + "pad.impexp.importbutton": "Importar", + "pad.impexp.importing": "Importando...", + "pad.impexp.confirmimport": "Al importar un fichero se borrará el contenido actual del documento. ¿Quiere continuar?", + "pad.impexp.convertFailed": "No pudimos importar este fichero. Intentalo con otro formato diferente o copia y pega manualmente.", + "pad.impexp.uploadFailed": "El envío del fichero falló. Intentelo de nuevo.", + "pad.impexp.importfailed": "Fallo al importar", + "pad.impexp.copypaste": "Intente copiar y pegar", + "pad.impexp.exportdisabled": "La exportación al formato {{type}} format está desactivada. Contacte con su administrador de sistemas." } \ No newline at end of file diff --git a/src/locales/eu.json b/src/locales/eu.json new file mode 100644 index 000000000..fc3465de2 --- /dev/null +++ b/src/locales/eu.json @@ -0,0 +1,118 @@ +{ + "@metadata": { + "authors": [ + "Theklan" + ] + }, + "index.newPad": "Pad berria", + "index.createOpenPad": "edo sortu/ireki Pad bat honako izenarekin:", + "pad.toolbar.bold.title": "Lodia (Ctrl-B)", + "pad.toolbar.italic.title": "Etzana (Ctrl-I)", + "pad.toolbar.underline.title": "Azpimarratua (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Ezabatua", + "pad.toolbar.ol.title": "Zerrenda ordenatua", + "pad.toolbar.ul.title": "Zerrenda ez-ordenatua", + "pad.toolbar.indent.title": "Koska", + "pad.toolbar.unindent.title": "Koska kendu", + "pad.toolbar.undo.title": "Desegin (Ctrl-Z)", + "pad.toolbar.redo.title": "Berregin (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Ezabatu Egiletza Koloreak", + "pad.toolbar.import_export.title": "Inportatu/Esportatu fitxategi formatu ezberdinetara/ezberdinetatik", + "pad.toolbar.timeslider.title": "Denbora lerroa", + "pad.toolbar.savedRevision.title": "Gorde berrikuspena", + "pad.toolbar.settings.title": "Hobespenak", + "pad.toolbar.embed.title": "Partekatu eta Txertatu pad hau", + "pad.toolbar.showusers.title": "Erakutsi pad honetako erabiltzaileak", + "pad.colorpicker.save": "Gorde", + "pad.colorpicker.cancel": "Utzi", + "pad.loading": "Kargatzen...", + "pad.passwordRequired": "Pasahitza behar duzu pad honetara sartzeko", + "pad.permissionDenied": "Ez duzu bamienik pad honetara sartzeko", + "pad.wrongPassword": "Zure pasahitza oker zegoen", + "pad.settings.padSettings": "Pad hobespenak", + "pad.settings.myView": "Nire ikusmoldea", + "pad.settings.stickychat": "Txata beti pantailan", + "pad.settings.colorcheck": "Egiletzaren koloreak", + "pad.settings.linenocheck": "Lerro zenbakiak", + "pad.settings.rtlcheck": "Edukia eskubitik ezkerrera irakurri?", + "pad.settings.fontType": "Tipografia:", + "pad.settings.fontType.normal": "Arrunta", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Ikuspegi Globala", + "pad.settings.language": "Hizkuntza:", + "pad.importExport.import_export": "Inportatu/Esportatu", + "pad.importExport.import": "Igo edozein testu fitxategi edo dokumentu", + "pad.importExport.importSuccessful": "Arrakastatsua!", + "pad.importExport.export": "Oraingo pad hau honela esportatu:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Testu laua", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DocuWiki", + "pad.importExport.abiword.innerHTML": "Testu laua edo html formatudun testuak bakarrik inporta ditzakezu. Aurreratuagoak diren inportazio aukerak izateko \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword instala ezazu\u003C/a\u003E.", + "pad.modals.connected": "Konektatuta.", + "pad.modals.reconnecting": "Zure pad-era birkonektatu...", + "pad.modals.forcereconnect": "Berkonexioa fortzatu", + "pad.modals.userdup": "Beste leiho batean ireki da", + "pad.modals.userdup.explanation": "Pad hau zure nabigatzailearen beste leiho batean irekita dagoela ematen du.", + "pad.modals.userdup.advice": "Berriro konektatu beste leiho hau erabiltzeko.", + "pad.modals.unauth": "Baimenik gabe", + "pad.modals.unauth.explanation": "Orrialdea ikusten ari zinela zure baimenak aldatu dira. Saia zaitez berriro konektatzen.", + "pad.modals.looping.explanation": "Sinkronizazio zerbitzariarekin komunikazioa arazoak daude.", + "pad.modals.looping.cause": "Agian firewall edo proxy ez-bateragarri baten bidez konektatu zara.", + "pad.modals.initsocketfail": "Zerbitzarira ezin da iritsi.", + "pad.modals.initsocketfail.explanation": "Ezin izan da konektatu sinkronizazio zerbitzarira.", + "pad.modals.initsocketfail.cause": "Ziurrenik hau zure nabigatzailea edo internet konexioaren arazo bat dela eta izango da.", + "pad.modals.slowcommit.explanation": "Zerbitzariak ez du erantzuten.", + "pad.modals.slowcommit.cause": "Baliteke hau sarearen konexio arazoak direla eta izatea.", + "pad.modals.deleted": "Ezabatua.", + "pad.modals.deleted.explanation": "Pad hau ezabatua izan da.", + "pad.modals.disconnected": "Deskonektatua izan zara.", + "pad.modals.disconnected.explanation": "Zerbitzariaren konexioa galdu da", + "pad.modals.disconnected.cause": "Baliteke zerbitzaria irisgarria ez izatea. Mesedez, esaiguzu hau gertatzen jarraitzen badu.", + "pad.share": "Pad hau partekatu", + "pad.share.readonly": "Irakurtzeko bakarrik", + "pad.share.link": "Lotura", + "pad.share.emebdcode": "URLa txertatu", + "pad.chat": "Txata", + "pad.chat.title": "Pad honetarako txata ireki.", + "pad.chat.loadmessages": "Mezu gehiago kargatu", + "timeslider.pageTitle": "{{appTitle}} denbora lerroa", + "timeslider.toolbar.returnbutton": "Padera itzuli", + "timeslider.toolbar.authors": "Egileak:", + "timeslider.toolbar.authorsList": "Egilerik gabe", + "timeslider.toolbar.exportlink.title": "Esportatu", + "timeslider.exportCurrent": "Gorde bertsio hau honela:", + "timeslider.version": "Bertsioa {{version}}", + "timeslider.saved": "{{year}}ko {{month}}ren {{day}}an gordeta", + "timeslider.dateformat": "{{year}}/{{month}}/{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Urtarrila", + "timeslider.month.february": "Otsaila", + "timeslider.month.march": "Martxoa", + "timeslider.month.april": "Apirila", + "timeslider.month.may": "Maiatza", + "timeslider.month.june": "Ekaina", + "timeslider.month.july": "Uztaila", + "timeslider.month.august": "Abuztua", + "timeslider.month.september": "Iraila", + "timeslider.month.october": "Urria", + "timeslider.month.november": "Azaroa", + "timeslider.month.december": "Abendua", + "timeslider.unnamedauthors": "{{num}} izenik gabeko egileak", + "pad.savedrevs.marked": "Berrikuspen hau markatua dago gordetako berrikuspen gisa", + "pad.userlist.entername": "Sartu zure erabiltzaile izena", + "pad.userlist.unnamed": "izenik gabe", + "pad.userlist.guest": "Gonbidatua", + "pad.userlist.deny": "Ukatu", + "pad.userlist.approve": "Onartu", + "pad.editbar.clearcolors": "Ezabatu egile koloreak dokumentu osoan?", + "pad.impexp.importbutton": "Inportatu orain", + "pad.impexp.importing": "Inportatzen...", + "pad.impexp.confirmimport": "Fitxategi bat inportatzen baduzu oraingo pad honen testua ezabatuko da. Ziur zaude jarraitu nahi duzula?", + "pad.impexp.convertFailed": "Ez gara gai fitxategi hau inportatzeko. Erabil ezazu, mesedez, beste dokumentu formatu bat edo kopiatu eta itsasi eskuz.", + "pad.impexp.uploadFailed": "Igotzean akatsa egon da, saia zaitez berriro", + "pad.impexp.importfailed": "Inportazioak akatsa egin du", + "pad.impexp.copypaste": "Mesedez kopiatu eta pegatu", + "pad.impexp.exportdisabled": "{{type}} formatuarekin esportatzea desgaituta dago. Kontakta ezazu administratzailea detaile gehiagorako." +} \ No newline at end of file diff --git a/src/locales/fa.json b/src/locales/fa.json index 437b8da09..08456048d 100644 --- a/src/locales/fa.json +++ b/src/locales/fa.json @@ -1,118 +1,127 @@ { - "@metadata": { - "authors": { - "0": "BMRG14", - "2": "ZxxZxxZ" - } - }, - "index.newPad": "\u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062a\u0627\u0632\u0647", - "index.createOpenPad": "\u06cc\u0627 \u0627\u06cc\u062c\u0627\u062f\/\u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0628\u0627 \u0646\u0627\u0645:", - "pad.toolbar.bold.title": "\u067e\u0631\u0631\u0646\u06af (Ctrl-B)", - "pad.toolbar.italic.title": "\u06a9\u062c (Ctrl-I)", - "pad.toolbar.underline.title": "\u0632\u06cc\u0631\u062e\u0637 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u062e\u0637 \u062e\u0648\u0631\u062f\u0647", - "pad.toolbar.ol.title": "\u0641\u0647\u0631\u0633\u062a \u0645\u0631\u062a\u0628 \u0634\u062f\u0647", - "pad.toolbar.ul.title": "\u0641\u0647\u0631\u0633\u062a \u0645\u0631\u062a\u0628 \u0646\u0634\u062f\u0647", - "pad.toolbar.indent.title": "\u062a\u0648\u0631\u0641\u062a\u06af\u06cc", - "pad.toolbar.unindent.title": "\u0628\u06cc\u0631\u0648\u0646 \u0631\u0641\u062a\u06af\u06cc", - "pad.toolbar.undo.title": "\u0628\u0627\u0637\u0644\u200c\u06a9\u0631\u062f\u0646 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u0627\u0632 \u0646\u0648 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u06cc", - "pad.toolbar.import_export.title": "\u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc\/\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u0627\u0632\/\u0628\u0647 \u0642\u0627\u0644\u0628\u200c\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641", - "pad.toolbar.timeslider.title": "\u0627\u0633\u0644\u0627\u06cc\u062f\u0631 \u0632\u0645\u0627\u0646", - "pad.toolbar.savedRevision.title": "\u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647", - "pad.toolbar.settings.title": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a", - "pad.toolbar.embed.title": "\u062c\u0627\u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", - "pad.toolbar.showusers.title": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", - "pad.colorpicker.save": "\u0630\u062e\u06cc\u0631\u0647", - "pad.colorpicker.cancel": "\u0644\u063a\u0648", - "pad.loading": "\u062f\u0631 \u062d\u0627\u0644 \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc...", - "pad.passwordRequired": "\u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0646\u06cc\u0627\u0632 \u0628\u0647 \u06cc\u06a9 \u06af\u0630\u0631\u0648\u0627\u0698\u0647 \u062f\u0627\u0631\u06cc\u062f", - "pad.permissionDenied": "\u0634\u0645\u0627 \u0627\u062c\u0627\u0632\u0647\u200c\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0631\u0627 \u0646\u062f\u0627\u0631\u06cc\u062f", - "pad.wrongPassword": "\u06af\u0630\u0631\u0648\u0627\u0698\u0647\u200c\u06cc \u0634\u0645\u0627 \u062f\u0631\u0633\u062a \u0646\u06cc\u0633\u062a", - "pad.settings.padSettings": "\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", - "pad.settings.myView": "\u0646\u0645\u0627\u06cc \u0645\u0646", - "pad.settings.stickychat": "\u06af\u0641\u062a\u06af\u0648 \u0647\u0645\u06cc\u0634\u0647 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0628\u0627\u0634\u062f", - "pad.settings.colorcheck": "\u0631\u0646\u06af\u200c\u0647\u0627\u06cc \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u06cc", - "pad.settings.linenocheck": "\u0634\u0645\u0627\u0631\u0647\u200c\u06cc \u062e\u0637\u0648\u0637", - "pad.settings.fontType": "\u0646\u0648\u0639 \u0642\u0644\u0645:", - "pad.settings.fontType.normal": "\u0633\u0627\u062f\u0647", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "\u0646\u0645\u0627\u06cc \u0633\u0631\u0627\u0633\u0631\u06cc", - "pad.settings.language": "\u0632\u0628\u0627\u0646:", - "pad.importExport.import_export": "\u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc\/\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc", - "pad.importExport.import": "\u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u067e\u0631\u0648\u0646\u062f\u0647\u200c\u06cc \u0645\u062a\u0646\u06cc \u06cc\u0627 \u0633\u0646\u062f", - "pad.importExport.importSuccessful": "\u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0628\u0648\u062f!", - "pad.importExport.export": "\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0628\u0627 \u0642\u0627\u0644\u0628:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u0645\u062a\u0646 \u0633\u0627\u062f\u0647", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (\u0642\u0627\u0644\u0628 \u0633\u0646\u062f \u0628\u0627\u0632)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u0634\u0645\u0627 \u062a\u0646\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u062f \u0627\u0632 \u0642\u0627\u0644\u0628 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u06cc\u0627 \u0627\u0686\u200c\u062a\u06cc\u200c\u0627\u0645\u200c\u0627\u0644 \u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u06a9\u0646\u06cc\u062f. \u0628\u0631\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631 \u0634\u062f\u0646 \u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 AbiWord<\/a> \u0631\u0627 \u0646\u0635\u0628 \u06a9\u0646\u06cc\u062f.", - "pad.modals.connected": "\u0645\u062a\u0635\u0644 \u0634\u062f.", - "pad.modals.reconnecting": "\u062f\u0631 \u062d\u0627\u0644 \u0627\u062a\u0635\u0627\u0644 \u062f\u0648\u0628\u0627\u0631\u0647 \u0628\u0647 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u0634\u0645\u0627..", - "pad.modals.forcereconnect": "\u0648\u0627\u062f\u0627\u0634\u062a\u0646 \u0628\u0647 \u0627\u062a\u0635\u0627\u0644 \u062f\u0648\u0628\u0627\u0631\u0647", - "pad.modals.userdup": "\u062f\u0631 \u067e\u0646\u062c\u0631\u0647\u200c\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0628\u0627\u0632 \u0634\u062f", - "pad.modals.userdup.explanation": "\u06af\u0645\u0627\u0646 \u0645\u06cc\u200c\u0631\u0648\u062f \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u062f\u0631 \u0628\u06cc\u0634 \u0627\u0632 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647\u200c\u06cc \u0645\u0631\u0648\u0631\u06af\u0631 \u0628\u0627\u0632 \u0634\u062f\u0647\u200c\u0627\u0633\u062a.", - "pad.modals.userdup.advice": "\u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 \u062f\u0648\u0628\u0627\u0631\u0647 \u0648\u0635\u0644 \u0634\u0648\u06cc\u062f.", - "pad.modals.unauth": "\u0645\u062c\u0627\u0632 \u0646\u06cc\u0633\u062a", - "pad.modals.unauth.explanation": "\u062f\u0633\u062a\u0631\u0633\u06cc \u0634\u0645\u0627 \u062f\u0631 \u062d\u06cc\u0646 \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc \u0627\u06cc\u0646 \u0628\u0631\u06af\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u0627\u0641\u062a\u0647\u200c\u0627\u0633\u062a. \u062f\u0648\u0628\u0627\u0631\u0647 \u0645\u062a\u0635\u0644 \u0634\u0648\u06cc\u062f.", - "pad.modals.looping": "\u0627\u062a\u0635\u0627\u0644 \u0642\u0637\u0639 \u0634\u062f.", - "pad.modals.looping.explanation": "\u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u0627\u0631\u062a\u0628\u0627\u0637\u06cc \u0628\u0627 \u0633\u0631\u0648\u0631 \u0647\u0645\u06af\u0627\u0645\u200c\u0633\u0627\u0632\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f.", - "pad.modals.looping.cause": "\u0634\u0627\u06cc\u062f \u0634\u0645\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u0641\u0627\u06cc\u0631\u0648\u0627\u0644 \u06cc\u0627 \u067e\u0631\u0648\u06a9\u0633\u06cc \u0646\u0627\u0633\u0627\u0632\u06af\u0627\u0631 \u0645\u062a\u0635\u0644 \u0634\u062f\u0647\u200c\u0627\u06cc\u062f.", - "pad.modals.initsocketfail": "\u0633\u0631\u0648\u0631 \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u06cc\u0633\u062a.", - "pad.modals.initsocketfail.explanation": "\u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0647\u0645\u06af\u0627\u0645 \u0633\u0627\u0632\u06cc \u0648\u0635\u0644 \u0634\u062f.", - "pad.modals.initsocketfail.cause": "\u0634\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0628\u0647 \u062e\u0627\u0637\u0631 \u0645\u0634\u06a9\u0644\u06cc \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631 \u06cc\u0627 \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u0634\u0645\u0627 \u0628\u0627\u0634\u062f.", - "pad.modals.slowcommit": "\u0627\u062a\u0635\u0627\u0644 \u0642\u0637\u0639 \u0634\u062f.", - "pad.modals.slowcommit.explanation": "\u0633\u0631\u0648\u0631 \u067e\u0627\u0633\u062e \u0646\u0645\u06cc\u200c\u062f\u0647\u062f.", - "pad.modals.slowcommit.cause": "\u0627\u06cc\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u062e\u0627\u0637\u0631 \u0645\u0634\u06a9\u0644\u0627\u062a\u06cc \u062f\u0631 \u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0634\u0628\u06a9\u0647 \u0628\u0627\u0634\u062f.", - "pad.modals.deleted": "\u067e\u0627\u06a9 \u0634\u062f.", - "pad.modals.deleted.explanation": "\u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a \u067e\u0627\u06a9 \u0634\u062f\u0647\u200c\u0627\u0633\u062a.", - "pad.modals.disconnected": "\u0627\u062a\u0635\u0627\u0644 \u0634\u0645\u0627 \u0642\u0637\u0639 \u0634\u062f\u0647\u200c\u0627\u0633\u062a.", - "pad.modals.disconnected.explanation": "\u0627\u062a\u0635\u0627\u0644 \u0628\u0647 \u0633\u0631\u0648\u0631 \u0642\u0637\u0639 \u0634\u062f\u0647\u200c\u0627\u0633\u062a.", - "pad.modals.disconnected.cause": "\u0633\u0631\u0648\u0631 \u0634\u0627\u06cc\u062f \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0646\u0628\u0627\u0634\u062f. \u0627\u06af\u0631 \u0627\u06cc\u0646 \u0645\u0634\u06a9\u0644 \u0628\u0627\u0632 \u0647\u0645 \u0631\u062e \u062f\u0627\u062f \u0645\u0627 \u0631\u0627 \u0622\u06af\u0627\u0647 \u0633\u0627\u0632\u06cc\u062f.", - "pad.share": "\u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0631\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", - "pad.share.readonly": "\u0641\u0642\u0637 \u062e\u0648\u0627\u0646\u062f\u0646\u06cc", - "pad.share.link": "\u067e\u06cc\u0648\u0646\u062f", - "pad.share.emebdcode": "\u062c\u0627\u0633\u0627\u0632\u06cc \u0646\u0634\u0627\u0646\u06cc", - "pad.chat": "\u06af\u0641\u062a\u06af\u0648", - "pad.chat.title": "\u0628\u0627\u0632\u06a9\u0631\u062f\u0646 \u06af\u0641\u062a\u06af\u0648 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", - "timeslider.pageTitle": "\u0627\u0633\u0644\u0627\u06cc\u062f\u0631 \u0632\u0645\u0627\u0646 {{appTitle}}", - "timeslider.toolbar.returnbutton": "\u0628\u0627\u0632\u06af\u0634\u062a \u0628\u0647 \u062f\u0641\u062a\u0631\u0686\u0647 \u06cc\u0627\u062f\u062f\u0627\u0634\u062a", - "timeslider.toolbar.authors": "\u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u0627\u0646:", - "timeslider.toolbar.authorsList": "\u0628\u062f\u0648\u0646 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647", - "timeslider.toolbar.exportlink.title": "\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc", - "timeslider.exportCurrent": "\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u0646\u06af\u0627\u0631\u0634 \u06a9\u0646\u0648\u0646\u06cc \u0628\u0647 \u0639\u0646\u0648\u0627\u0646:", - "timeslider.version": "\u0646\u06af\u0627\u0631\u0634 {{version}}", - "timeslider.saved": "{{month}} {{day}}\u060c {{year}} \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u0698\u0627\u0646\u0648\u06cc\u0647", - "timeslider.month.february": "\u0641\u0628\u0631\u06cc\u0647", - "timeslider.month.march": "\u0645\u0627\u0631\u0686", - "timeslider.month.april": "\u0622\u067e\u0631\u06cc\u0644", - "timeslider.month.may": "\u0645\u06cc", - "timeslider.month.june": "\u0698\u0648\u0626\u0646", - "timeslider.month.july": "\u062c\u0648\u0644\u0627\u06cc", - "timeslider.month.august": "\u0622\u06af\u0648\u0633\u062a", - "timeslider.month.september": "\u0633\u067e\u062a\u0627\u0645\u0628\u0631", - "timeslider.month.october": "\u0627\u06a9\u062a\u0628\u0631", - "timeslider.month.november": "\u0646\u0648\u0627\u0645\u0628\u0631", - "timeslider.month.december": "\u062f\u0633\u0627\u0645\u0628\u0631", - "pad.savedrevs.marked": "\u0627\u06cc\u0646 \u0628\u0627\u0632\u0646\u0648\u06cc\u0633\u06cc \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0630\u062e\u06cc\u0631\u0647 \u0634\u062f\u0647 \u0639\u0644\u0627\u0645\u062a\u200c\u06af\u0630\u0627\u0631\u06cc \u0634\u062f", - "pad.userlist.entername": "\u0646\u0627\u0645 \u062e\u0648\u062f \u0631\u0627 \u0628\u0646\u0648\u06cc\u0633\u06cc\u062f", - "pad.userlist.unnamed": "\u0628\u062f\u0648\u0646 \u0646\u0627\u0645", - "pad.userlist.guest": "\u0645\u0647\u0645\u0627\u0646", - "pad.userlist.deny": "\u0631\u062f \u06a9\u0631\u062f\u0646", - "pad.userlist.approve": "\u067e\u0630\u06cc\u0631\u0641\u062a\u0646", - "pad.editbar.clearcolors": "\u0631\u0646\u06af \u0646\u0648\u06cc\u0633\u0646\u062f\u06af\u06cc \u0627\u0632 \u0647\u0645\u0647\u200c\u06cc \u0633\u0646\u062f \u067e\u0627\u06a9 \u0634\u0648\u062f\u061f", - "pad.impexp.importbutton": "\u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u06a9\u0646", - "pad.impexp.importing": "\u062f\u0631 \u062d\u0627\u0644 \u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc...", - "pad.impexp.confirmimport": "\u0628\u0627 \u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0646\u0648\u0634\u062a\u0647\u200c\u06cc \u06a9\u0646\u0648\u0646\u06cc \u062f\u0641\u062a\u0631\u0686\u0647 \u067e\u0627\u06a9 \u0645\u06cc\u200c\u0634\u0648\u062f. \u0622\u06cc\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u062f\u0627\u0645\u0647 \u062f\u0647\u06cc\u062f\u061f", - "pad.impexp.convertFailed": "\u0645\u0627 \u0646\u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u06a9\u0646\u06cc\u0645. \u062e\u0648\u0627\u0647\u0634\u0645\u0646\u062f\u06cc\u0645 \u0642\u0627\u0644\u0628 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0631\u0627\u06cc \u0633\u0646\u062f\u062a\u0627\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u062f\u0647 \u06cc\u0627 \u0628\u0635\u0648\u0631\u062a \u062f\u0633\u062a\u06cc \u0622\u0646\u0631\u0627 \u06a9\u067e\u06cc \u06a9\u0646\u06cc\u062f", - "pad.impexp.uploadFailed": "\u0622\u067e\u0644\u0648\u062f \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f\u060c \u062f\u0648\u0628\u0627\u0631\u0647 \u062a\u0644\u0627\u0634 \u06a9\u0646\u06cc\u062f", - "pad.impexp.importfailed": "\u062f\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u0627\u0646\u062c\u0627\u0645 \u0646\u0634\u062f", - "pad.impexp.copypaste": "\u06a9\u067e\u06cc \u067e\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f", - "pad.impexp.exportdisabled": "\u0628\u0631\u0648\u0646\u200c\u0631\u06cc\u0632\u06cc \u0628\u0627 \u0642\u0627\u0644\u0628 {{type}} \u0627\u0632 \u06a9\u0627\u0631 \u0627\u0641\u062a\u0627\u062f\u0647 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0627 \u0645\u062f\u06cc\u0631 \u0633\u06cc\u0633\u062a\u0645\u062a\u0627\u0646 \u062a\u0645\u0627\u0633 \u0628\u06af\u06cc\u0631\u06cc\u062f." + "@metadata": { + "authors": { + "0": "BMRG14", + "1": "Dalba", + "2": "Ebraminio", + "3": "Reza1615", + "5": "ZxxZxxZ", + "6": "الناز" + } + }, + "index.newPad": "Ø¯ÙØªØ±Ú†Ù‡ یادداشت تازه", + "index.createOpenPad": "یا ایجاد/بازکردن یک Ø¯ÙØªØ±Ú†Ù‡ یادداشت با نام:", + "pad.toolbar.bold.title": "پررنگ (Ctrl-B)", + "pad.toolbar.italic.title": "کج (Ctrl-I)", + "pad.toolbar.underline.title": "زیرخط (Ctrl-U)", + "pad.toolbar.strikethrough.title": "خط خورده", + "pad.toolbar.ol.title": "Ùهرست مرتب شده", + "pad.toolbar.ul.title": "Ùهرست مرتب نشده", + "pad.toolbar.indent.title": "ØªÙˆØ±ÙØªÚ¯ÛŒ", + "pad.toolbar.unindent.title": "بیرون Ø±ÙØªÚ¯ÛŒ", + "pad.toolbar.undo.title": "باطل‌کردن (Ctrl-Z)", + "pad.toolbar.redo.title": "از نو (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "پاک‌کردن رنگ‌های نویسندگی", + "pad.toolbar.import_export.title": "درون‌ریزی/برون‌ریزی از/به قالب‌های مختلÙ", + "pad.toolbar.timeslider.title": "لغزندهٔ زمان", + "pad.toolbar.savedRevision.title": "ذخیره‌سازی نسخه", + "pad.toolbar.settings.title": "تنظیمات", + "pad.toolbar.embed.title": "اشتراک Ùˆ جاسازی این Ø¯ÙØªØ±Ú†Ù‡ یادداشت", + "pad.toolbar.showusers.title": "نمایش کاربران در این Ø¯ÙØªØ±Ú†Ù‡ یادداشت", + "pad.colorpicker.save": "ذخیره", + "pad.colorpicker.cancel": "لغو", + "pad.loading": "در حال بارگذاری...", + "pad.passwordRequired": "برای دسترسی به این Ø¯ÙØªØ±Ú†Ù‡ یادداشت نیاز به یک گذرواژه دارید", + "pad.permissionDenied": "شما اجازه‌ی دسترسی به این Ø¯ÙØªØ±Ú†Ù‡ یادداشت را ندارید", + "pad.wrongPassword": "گذرواژه‌ی شما درست نیست", + "pad.settings.padSettings": "تنظیمات Ø¯ÙØªØ±Ú†Ù‡ یادداشت", + "pad.settings.myView": "نمای من", + "pad.settings.stickychat": "Ú¯ÙØªÚ¯Ùˆ همیشه روی ØµÙØ­Ù‡ نمایش باشد", + "pad.settings.colorcheck": "رنگ‌های نویسندگی", + "pad.settings.linenocheck": "شماره‌ی خطوط", + "pad.settings.rtlcheck": "خواندن محتوا از راست به چپ؟", + "pad.settings.fontType": "نوع قلم:", + "pad.settings.fontType.normal": "ساده", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "نمای سراسری", + "pad.settings.language": "زبان:", + "pad.importExport.import_export": "درون‌ریزی/برون‌ریزی", + "pad.importExport.import": "بارگذاری پرونده‌ی متنی یا سند", + "pad.importExport.importSuccessful": "موÙقیت آمیز بود!", + "pad.importExport.export": "برون‌ریزی این Ø¯ÙØªØ±Ú†Ù‡ یادداشت با قالب:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "متن ساده", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (قالب سند باز)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "شما تنها می‌توانید از قالب متن ساده یا اچ‌تی‌ام‌ال درون‌ریزی کنید. برای بیشتر شدن ویژگی‌های درون‌ریزی Ù¾ÛŒØ´Ø±ÙØªÙ‡ \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EAbiWord\u003C/a\u003E را نصب کنید.", + "pad.modals.connected": "متصل شد.", + "pad.modals.reconnecting": "در حال اتصال دوباره به Ø¯ÙØªØ±Ú†Ù‡ یادداشت شما..", + "pad.modals.forcereconnect": "واداشتن به اتصال دوباره", + "pad.modals.userdup": "در پنجره‌ای دیگر باز شد", + "pad.modals.userdup.explanation": "گمان می‌رود این Ø¯ÙØªØ±Ú†Ù‡ یادداشت در بیش از یک پنجره‌ی مرورگر باز شده‌است.", + "pad.modals.userdup.advice": "برای Ø§Ø³ØªÙØ§Ø¯Ù‡ از این پنجره دوباره وصل شوید.", + "pad.modals.unauth": "مجاز نیست", + "pad.modals.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": "جاسازی نشانی", + "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": "{{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": "دسامبر", + "timeslider.unnamedauthors": "{{num}} نویسندهٔ بی‌نام", + "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.confirmimport": "با درون‌ریزی یک ÙØ§ÛŒÙ„ نوشته‌ی کنونی Ø¯ÙØªØ±Ú†Ù‡ پاک می‌شود. آیا می‌خواهید ادامه دهید؟", + "pad.impexp.convertFailed": "ما نمی‌توانیم این ÙØ§ÛŒÙ„ را درون‌ریزی کنیم. خواهشمندیم قالب دیگری برای سندتان انتخاب کرده یا بصورت دستی آنرا Ú©Ù¾ÛŒ کنید", + "pad.impexp.uploadFailed": "آپلود انجام نشد، دوباره تلاش کنید", + "pad.impexp.importfailed": "درون‌ریزی انجام نشد", + "pad.impexp.copypaste": "Ú©Ù¾ÛŒ پیست کنید", + "pad.impexp.exportdisabled": "برون‌ریزی با قالب {{type}} از کار Ø§ÙØªØ§Ø¯Ù‡ است. برای جزئیات بیشتر با مدیر سیستمتان تماس بگیرید." } \ No newline at end of file diff --git a/src/locales/fi.json b/src/locales/fi.json index 50fd444d0..b69833d25 100644 --- a/src/locales/fi.json +++ b/src/locales/fi.json @@ -1,125 +1,129 @@ { - "@metadata": { - "authors": { - "0": "Artnay", - "1": "Jl", - "2": "Nedergard", - "3": "Nike", - "5": "Veikk0.ma", - "6": "VezonThunder" - } - }, - "index.newPad": "Uusi muistio", - "index.createOpenPad": "tai luo tai avaa muistio nimell\u00e4:", - "pad.toolbar.bold.title": "Lihavointi (Ctrl-B)", - "pad.toolbar.italic.title": "Kursivointi (Ctrl-I)", - "pad.toolbar.underline.title": "Alleviivaus (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Yliviivaus", - "pad.toolbar.ol.title": "Numeroitu lista", - "pad.toolbar.ul.title": "Numeroimaton lista", - "pad.toolbar.indent.title": "Sisenn\u00e4", - "pad.toolbar.unindent.title": "Ulonna", - "pad.toolbar.undo.title": "Kumoa (Ctrl-Z)", - "pad.toolbar.redo.title": "Tee uudelleen (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Poista kirjoittajav\u00e4rit", - "pad.toolbar.import_export.title": "Tuo tai vie eri tiedostomuodoista tai -muotoihin", - "pad.toolbar.timeslider.title": "Aikajana", - "pad.toolbar.savedRevision.title": "Tallennetut versiot", - "pad.toolbar.settings.title": "Asetukset", - "pad.toolbar.embed.title": "Upota muistio", - "pad.toolbar.showusers.title": "N\u00e4yt\u00e4 muistion k\u00e4ytt\u00e4j\u00e4t", - "pad.colorpicker.save": "Tallenna", - "pad.colorpicker.cancel": "Peruuta", - "pad.loading": "Ladataan\u2026", - "pad.passwordRequired": "T\u00e4m\u00e4 muistio on suojattu salasanalla.", - "pad.permissionDenied": "K\u00e4ytt\u00f6oikeutesi eiv\u00e4t riit\u00e4 t\u00e4m\u00e4n muistion k\u00e4ytt\u00e4miseen.", - "pad.wrongPassword": "V\u00e4\u00e4r\u00e4 salasana", - "pad.settings.padSettings": "Muistion asetukset", - "pad.settings.myView": "Oma n\u00e4kym\u00e4", - "pad.settings.stickychat": "Keskustelu aina n\u00e4kyviss\u00e4", - "pad.settings.colorcheck": "Kirjoittajav\u00e4rit", - "pad.settings.linenocheck": "Rivinumerot", - "pad.settings.fontType": "Kirjasintyyppi:", - "pad.settings.fontType.normal": "normaali", - "pad.settings.fontType.monospaced": "tasalevyinen", - "pad.settings.globalView": "Yleisn\u00e4kym\u00e4", - "pad.settings.language": "Kieli:", - "pad.importExport.import_export": "Tuonti\/vienti", - "pad.importExport.import": "L\u00e4het\u00e4 mik\u00e4 tahansa tekstitiedosto tai asiakirja", - "pad.importExport.importSuccessful": "Onnistui!", - "pad.importExport.export": "Vie muistio muodossa:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Muotoilematon teksti", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Tuonti on tuettu vain HTML- ja raakatekstitiedostoista. Lis\u00e4tietoja tuonnin lis\u00e4asetuksista on sivulla install abiword<\/a>.", - "pad.modals.connected": "Yhdistetty.", - "pad.modals.reconnecting": "Muodostetaan yhteytt\u00e4 muistioon uudelleen...", - "pad.modals.forcereconnect": "Pakota yhdist\u00e4m\u00e4\u00e4n uudelleen", - "pad.modals.userdup": "Avattu toisessa ikkunassa", - "pad.modals.userdup.explanation": "T\u00e4m\u00e4 muistio vaikuttaa olevan avoinna useammassa eri selainikkunassa t\u00e4ll\u00e4 koneella.", - "pad.modals.userdup.advice": "Yhdist\u00e4 uudelleen, jos haluat k\u00e4ytt\u00e4\u00e4 t\u00e4t\u00e4 ikkunaa.", - "pad.modals.unauth": "Oikeudet eiv\u00e4t riit\u00e4", - "pad.modals.unauth.explanation": "K\u00e4ytt\u00f6oikeutesi ovat muuttuneet katsellessasi t\u00e4t\u00e4 sivua. Yrit\u00e4 yhdist\u00e4\u00e4 uudelleen.", - "pad.modals.looping": "Yhteys katkaistu.", - "pad.modals.looping.explanation": "Synkronointipalvelimen kanssa on yhteysongelmia.", - "pad.modals.looping.cause": "Yhteytesi on mahdollisesti muodostettu yhteensopimattoman palomuurin tai v\u00e4lityspalvelimen kautta.", - "pad.modals.initsocketfail": "Palvelimeen ei saada yhteytt\u00e4.", - "pad.modals.initsocketfail.explanation": "Synkronointipalvelimeen ei saatu yhteytt\u00e4.", - "pad.modals.initsocketfail.cause": "T\u00e4m\u00e4 johtuu mit\u00e4 luultavimmin selaimestasi tai verkkoyhteydest\u00e4si.", - "pad.modals.slowcommit": "Yhteys katkaistu.", - "pad.modals.slowcommit.explanation": "Palvelin ei vastaa.", - "pad.modals.slowcommit.cause": "T\u00e4m\u00e4 saattaa johtua verkkoyhteyden ongelmista.", - "pad.modals.deleted": "Poistettu.", - "pad.modals.deleted.explanation": "T\u00e4m\u00e4 muistio on poistettu.", - "pad.modals.disconnected": "Yhteytesi on katkaistu.", - "pad.modals.disconnected.explanation": "Yhteys palvelimeen katkesi", - "pad.modals.disconnected.cause": "Palvelin saattaa olla k\u00e4ytt\u00e4m\u00e4tt\u00f6miss\u00e4. Ilmoitathan meille, jos t\u00e4m\u00e4 ongelma toistuu.", - "pad.share": "Jaa muistio", - "pad.share.readonly": "Vain luku", - "pad.share.link": "Linkki", - "pad.share.emebdcode": "Upotusosoite", - "pad.chat": "Keskustelu", - "pad.chat.title": "Avaa keskustelu nykyisest\u00e4 muistiosta.", - "pad.chat.loadmessages": "Lataa lis\u00e4\u00e4 viestej\u00e4", - "timeslider.pageTitle": "{{appTitle}} -aikajana", - "timeslider.toolbar.returnbutton": "Palaa muistioon", - "timeslider.toolbar.authors": "Tekij\u00e4t:", - "timeslider.toolbar.authorsList": "Ei tekij\u00f6it\u00e4", - "timeslider.toolbar.exportlink.title": "Vie", - "timeslider.exportCurrent": "Vie nykyinen versio muodossa:", - "timeslider.version": "Versio {{version}}", - "timeslider.saved": "Tallennettu {{day}}. {{month}}ta {{year}}", - "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "tammikuu", - "timeslider.month.february": "helmikuu", - "timeslider.month.march": "maaliskuu", - "timeslider.month.april": "huhtikuu", - "timeslider.month.may": "toukokuu", - "timeslider.month.june": "kes\u00e4kuu", - "timeslider.month.july": "hein\u00e4kuu", - "timeslider.month.august": "elokuu", - "timeslider.month.september": "syyskuu", - "timeslider.month.october": "lokakuu", - "timeslider.month.november": "marraskuu", - "timeslider.month.december": "joulukuu", - "timeslider.unnamedauthor": "{{num}} nimet\u00f6n tekij\u00e4", - "timeslider.unnamedauthors": "{{num}} nimet\u00f6nt\u00e4 tekij\u00e4\u00e4", - "pad.savedrevs.marked": "T\u00e4m\u00e4 versio on nyt merkitty tallennetuksi versioksi", - "pad.userlist.entername": "Kirjoita nimesi", - "pad.userlist.unnamed": "nimet\u00f6n", - "pad.userlist.guest": "Vieras", - "pad.userlist.deny": "Est\u00e4", - "pad.userlist.approve": "Hyv\u00e4ksy", - "pad.editbar.clearcolors": "Poistetaanko asiakirjasta tekij\u00e4v\u00e4rit?", - "pad.impexp.importbutton": "Tuo nyt", - "pad.impexp.importing": "Tuodaan...", - "pad.impexp.confirmimport": "Tiedoston tuonti korvaa kaiken muistiossa olevan tekstin. Haluatko varmasti jatkaa?", - "pad.impexp.convertFailed": "TIedoston tuonti ep\u00e4onnistui. K\u00e4yt\u00e4 eri tiedostomuotoa tai kopioi ja liit\u00e4 k\u00e4sin.", - "pad.impexp.uploadFailed": "L\u00e4hetys ep\u00e4onnistui. Yrit\u00e4 uudelleen.", - "pad.impexp.importfailed": "Tuonti ep\u00e4onnistui", - "pad.impexp.copypaste": "Kopioi ja liit\u00e4", - "pad.impexp.exportdisabled": "Vienti muotoon \"{{type}}\" ei ole k\u00e4yt\u00f6ss\u00e4. Ota yhteys yll\u00e4pit\u00e4j\u00e4\u00e4n saadaksesi lis\u00e4tietoja." + "@metadata": { + "authors": { + "0": "Artnay", + "1": "Jl", + "2": "Lliehu", + "3": "Nedergard", + "4": "Nike", + "6": "Stryn", + "7": "Veikk0.ma", + "8": "VezonThunder" + } + }, + "index.newPad": "Uusi muistio", + "index.createOpenPad": "tai luo tai avaa muistio nimellä:", + "pad.toolbar.bold.title": "Lihavointi (Ctrl-B)", + "pad.toolbar.italic.title": "Kursivointi (Ctrl-I)", + "pad.toolbar.underline.title": "Alleviivaus (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Yliviivaus", + "pad.toolbar.ol.title": "Numeroitu lista", + "pad.toolbar.ul.title": "Numeroimaton lista", + "pad.toolbar.indent.title": "Sisennä", + "pad.toolbar.unindent.title": "Ulonna", + "pad.toolbar.undo.title": "Kumoa (Ctrl-Z)", + "pad.toolbar.redo.title": "Tee uudelleen (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Poista kirjoittajavärit", + "pad.toolbar.import_export.title": "Tuo tai vie eri tiedostomuodoista tai -muotoihin", + "pad.toolbar.timeslider.title": "Aikajana", + "pad.toolbar.savedRevision.title": "Tallenna muutos", + "pad.toolbar.settings.title": "Asetukset", + "pad.toolbar.embed.title": "Jaa ja upota muistio", + "pad.toolbar.showusers.title": "Näytä muistion käyttäjät", + "pad.colorpicker.save": "Tallenna", + "pad.colorpicker.cancel": "Peruuta", + "pad.loading": "Ladataan…", + "pad.passwordRequired": "Tämä muistio on suojattu salasanalla.", + "pad.permissionDenied": "Käyttöoikeutesi eivät riitä tämän muistion käyttämiseen.", + "pad.wrongPassword": "Väärä salasana", + "pad.settings.padSettings": "Muistion asetukset", + "pad.settings.myView": "Oma näkymä", + "pad.settings.stickychat": "Keskustelu aina näkyvissä", + "pad.settings.colorcheck": "Kirjoittajavärit", + "pad.settings.linenocheck": "Rivinumerot", + "pad.settings.rtlcheck": "Luetaanko sisältö oikealta vasemmalle?", + "pad.settings.fontType": "Kirjasintyyppi:", + "pad.settings.fontType.normal": "normaali", + "pad.settings.fontType.monospaced": "tasalevyinen", + "pad.settings.globalView": "Yleisnäkymä", + "pad.settings.language": "Kieli:", + "pad.importExport.import_export": "Tuonti/vienti", + "pad.importExport.import": "Lähetä mikä tahansa tekstitiedosto tai asiakirja", + "pad.importExport.importSuccessful": "Onnistui!", + "pad.importExport.export": "Vie muistio muodossa:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Muotoilematon teksti", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Tuonti on tuettu vain HTML- ja raakatekstitiedostoista. Lisätietoja tuonnin lisäasetuksista on sivulla \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstall abiword\u003C/a\u003E.", + "pad.modals.connected": "Yhdistetty.", + "pad.modals.reconnecting": "Muodostetaan yhteyttä muistioon uudelleen...", + "pad.modals.forcereconnect": "Pakota yhdistämään uudelleen", + "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.", + "pad.modals.unauth": "Oikeudet eivät riitä", + "pad.modals.unauth.explanation": "Käyttöoikeutesi ovat muuttuneet katsellessasi tätä sivua. Yritä yhdistää uudelleen.", + "pad.modals.looping.explanation": "Synkronointipalvelimen kanssa on yhteysongelmia.", + "pad.modals.looping.cause": "Yhteytesi on mahdollisesti muodostettu yhteensopimattoman palomuurin tai välityspalvelimen kautta.", + "pad.modals.initsocketfail": "Palvelimeen ei saada yhteyttä.", + "pad.modals.initsocketfail.explanation": "Synkronointipalvelimeen ei saatu yhteyttä.", + "pad.modals.initsocketfail.cause": "Tämä johtuu mitä luultavimmin selaimestasi tai verkkoyhteydestäsi.", + "pad.modals.slowcommit.explanation": "Palvelin ei vastaa.", + "pad.modals.slowcommit.cause": "Tämä saattaa johtua verkkoyhteyden ongelmista.", + "pad.modals.badChangeset.explanation": "Tekemäsi muutos määritettiin sääntöjen vastaiseksi synkronointipalvelimen toimesta.", + "pad.modals.badChangeset.cause": "Tämä saattaa johtua virheellisistä palvelinmäärityksistä tai muusta odottamattomasta toiminnasta. Ota yhteys palvelun ylläpitäjään, jos kyseessä on mielestäsi virhe. Yritä jatkaa muokkausta yhdistämällä uudelleen.", + "pad.modals.corruptPad.explanation": "Muistio jota yrität avata on vioittunut.", + "pad.modals.corruptPad.cause": "Tämä saattaa johtua virheellisistä palvelinmäärityksistä tai muusta odottamattomasta toiminnasta. Ota yhteys palvelun ylläpitäjään.", + "pad.modals.deleted": "Poistettu.", + "pad.modals.deleted.explanation": "Tämä muistio on poistettu.", + "pad.modals.disconnected": "Yhteytesi on katkaistu.", + "pad.modals.disconnected.explanation": "Yhteys palvelimeen katkesi", + "pad.modals.disconnected.cause": "Palvelin saattaa olla tavoittamattomissa. Ilmoita palvelun ylläpitäjälle, jos tilanne toistuu usein.", + "pad.share": "Jaa muistio", + "pad.share.readonly": "Vain luku", + "pad.share.link": "Linkki", + "pad.share.emebdcode": "Upotusosoite", + "pad.chat": "Keskustelu", + "pad.chat.title": "Avaa keskustelu nykyisestä muistiosta.", + "pad.chat.loadmessages": "Lataa lisää viestejä", + "timeslider.pageTitle": "{{appTitle}} -aikajana", + "timeslider.toolbar.returnbutton": "Palaa muistioon", + "timeslider.toolbar.authors": "Tekijät:", + "timeslider.toolbar.authorsList": "Ei tekijöitä", + "timeslider.toolbar.exportlink.title": "Vie", + "timeslider.exportCurrent": "Vie nykyinen versio muodossa:", + "timeslider.version": "Versio {{version}}", + "timeslider.saved": "Tallennettu {{day}}. {{month}}ta {{year}}", + "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "tammikuu", + "timeslider.month.february": "helmikuu", + "timeslider.month.march": "maaliskuu", + "timeslider.month.april": "huhtikuu", + "timeslider.month.may": "toukokuu", + "timeslider.month.june": "kesäkuu", + "timeslider.month.july": "heinäkuu", + "timeslider.month.august": "elokuu", + "timeslider.month.september": "syyskuu", + "timeslider.month.october": "lokakuu", + "timeslider.month.november": "marraskuu", + "timeslider.month.december": "joulukuu", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: nimetön tekijä, other: nimetöntä tekijää ]}", + "pad.savedrevs.marked": "Tämä versio on nyt merkitty tallennetuksi versioksi", + "pad.userlist.entername": "Kirjoita nimesi", + "pad.userlist.unnamed": "nimetön", + "pad.userlist.guest": "Vieras", + "pad.userlist.deny": "Estä", + "pad.userlist.approve": "Hyväksy", + "pad.editbar.clearcolors": "Poistetaanko asiakirjasta tekijävärit?", + "pad.impexp.importbutton": "Tuo nyt", + "pad.impexp.importing": "Tuodaan...", + "pad.impexp.confirmimport": "Tiedoston tuonti korvaa kaiken muistiossa olevan tekstin. Haluatko varmasti jatkaa?", + "pad.impexp.convertFailed": "TIedoston tuonti epäonnistui. Käytä eri tiedostomuotoa tai kopioi ja liitä käsin.", + "pad.impexp.uploadFailed": "Lähetys epäonnistui. Yritä uudelleen.", + "pad.impexp.importfailed": "Tuonti epäonnistui", + "pad.impexp.copypaste": "Kopioi ja liitä", + "pad.impexp.exportdisabled": "Vienti muotoon \"{{type}}\" ei ole käytössä. Ota yhteys ylläpitäjään saadaksesi lisätietoja." } \ No newline at end of file diff --git a/src/locales/fo.json b/src/locales/fo.json new file mode 100644 index 000000000..3871f1251 --- /dev/null +++ b/src/locales/fo.json @@ -0,0 +1,94 @@ +{ + "@metadata": { + "authors": [ + "EileenSanda" + ] + }, + "index.newPad": "Nýggjur teldil", + "pad.toolbar.bold.title": "Við feitum (Ctrl-B)", + "pad.toolbar.italic.title": "Skráskrift (Ctrl-I)", + "pad.toolbar.underline.title": "Undirstrikað (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Gjøgnumstrikað", + "pad.toolbar.ol.title": "Bíleggingarlisti", + "pad.toolbar.undo.title": "Angra (Ctrl-Z)", + "pad.toolbar.redo.title": "Ger umaftur (Ctrl-Y)", + "pad.toolbar.import_export.title": "Innflyt/Útflyt frá/til ymiskar fílustøddir", + "pad.toolbar.savedRevision.title": "Goym Endurskoðan", + "pad.toolbar.settings.title": "Innstillingar", + "pad.toolbar.embed.title": "Deil og Innset henda pad'in", + "pad.toolbar.showusers.title": "Vís brúkarar á hesum paddi", + "pad.colorpicker.save": "Goym", + "pad.colorpicker.cancel": "Ógilda", + "pad.loading": "Løðir...", + "pad.passwordRequired": "Tú hevur brúk fyri einum loyniorði fyri at fáa atgongd til henda paddin", + "pad.permissionDenied": "Tú hevur ikki loyvi til at fáa atgongd til henda paddin", + "pad.wrongPassword": "Títt loyniorð var skeivt", + "pad.settings.padSettings": "Pad innstillingar", + "pad.settings.myView": "Mín sýning", + "pad.settings.stickychat": "Kjatta altíð á skerminum", + "pad.settings.colorcheck": "Litir hjá rithøvundaskapinum", + "pad.settings.linenocheck": "Linjunummur", + "pad.settings.rtlcheck": "Vil tú lesa innihaldið frá høgru til vinstu?", + "pad.settings.fontType": "Skriftslag:", + "pad.settings.fontType.normal": "Vanligt", + "pad.settings.fontType.monospaced": "Føst breidd", + "pad.settings.globalView": "Global sýning", + "pad.settings.language": "Mál:", + "pad.importExport.import_export": "Innflyt/Útflyt", + "pad.importExport.import": "Legg út onkra tekstfílu ella dokument", + "pad.importExport.importSuccessful": "Tað eydnaðist!", + "pad.importExport.export": "Útflyt verandi pad sum:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Einfaldur tekstur", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Opið Dokument Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Tú kanst bert innflyta frá einføldum teksti ella html formatum. Fyri funksjónir til innflytan fyri víðarikomin vinarliga \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstallera abiword\u003C/a\u003E.", + "pad.modals.connected": "Tú hevur samband.", + "pad.modals.reconnecting": "Roynir aftur at fáa samband við tín pad..", + "pad.modals.forcereconnect": "Tvinga endurstovnan av sambandi.", + "pad.modals.userdup": "Er latið upp í øðrum vindeyga", + "pad.modals.userdup.explanation": "Tað sær út til at hesin paddurin er latin upp í meira enn einum brovsara vindeyga á hesari telduni.", + "pad.modals.userdup.advice": "Endurstovna sambandi fyri at nýta hetta vindeyga í staðin.", + "pad.modals.unauth": "Er ikki loyvt", + "pad.modals.unauth.explanation": "Tíni loyvi eru broytt, meðan tú hevur hugt at hesi síðuni. Royn og endurstovna sambandi.", + "pad.modals.initsocketfail": "Ambætarin er óatkomuligur.", + "pad.modals.initsocketfail.cause": "Hetta skyldast mest sannlíkt ein trupulleika við tínum kaga/brovsara ella við tínum internetsambandi.", + "pad.modals.slowcommit.explanation": "Ambætarin (servarin) svarar ikki.", + "pad.modals.slowcommit.cause": "Hetta kann skyldast trupulleikar við netverkssambandinum.", + "pad.modals.deleted": "Er strikað.", + "pad.modals.deleted.explanation": "Hesin paddurin er fluttur.", + "pad.modals.disconnected": "Tú hevur mist sambandi.", + "pad.modals.disconnected.explanation": "Sambandið til ambætarin er avbrotið", + "pad.share": "Deil henda paddin", + "pad.share.readonly": "Vart fyri skriving", + "pad.share.link": "Slóð", + "timeslider.toolbar.returnbutton": "Vend aftur til pad'in", + "timeslider.toolbar.authors": "Høvundar:", + "timeslider.toolbar.authorsList": "Ongir høvundar", + "timeslider.toolbar.exportlink.title": "Útflyt", + "timeslider.exportCurrent": "Útflyt hesa versjóna sum:", + "timeslider.version": "Versjón {{version}}", + "timeslider.saved": "Goymt {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "Mars", + "timeslider.month.april": "Apríl", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "October", + "timeslider.month.november": "November", + "timeslider.month.december": "Desember", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: ónevndur rithøvundur, other: ónevndir rithøvundar ]}", + "pad.savedrevs.marked": "Henda endurskoðanin er nú merkt sum ein goymd endurskoðan", + "pad.userlist.entername": "Skriva títt navn", + "pad.userlist.unnamed": "ikki-navngivið", + "pad.userlist.guest": "Gestur", + "pad.userlist.deny": "Nokta", + "pad.userlist.approve": "Góðkenn" +} \ No newline at end of file diff --git a/src/locales/fr.json b/src/locales/fr.json index 4131c723a..a61d90b07 100644 --- a/src/locales/fr.json +++ b/src/locales/fr.json @@ -1,129 +1,136 @@ { - "@metadata": { - "authors": { - "0": "Cquoi", - "1": "Crochet.david", - "2": "Gomoko", - "3": "Goofy", - "4": "Goofy-bz", - "5": "Jean-Fr\u00e9d\u00e9ric", - "6": "Leviathan", - "7": "McDutchie", - "8": "Od1n", - "10": "Tux-tn" - } - }, - "index.newPad": "Nouveau Pad", - "index.createOpenPad": "ou cr\u00e9er\/ouvrir un Pad intitul\u00e9 :", - "pad.toolbar.bold.title": "Gras (Ctrl-B)", - "pad.toolbar.italic.title": "Italique (Ctrl-I)", - "pad.toolbar.underline.title": "Soulign\u00e9 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Barr\u00e9", - "pad.toolbar.ol.title": "Liste ordonn\u00e9e", - "pad.toolbar.ul.title": "Liste \u00e0 puces", - "pad.toolbar.indent.title": "Indenter", - "pad.toolbar.unindent.title": "D\u00e9sindenter", - "pad.toolbar.undo.title": "Annuler (Ctrl-Z)", - "pad.toolbar.redo.title": "R\u00e9tablir (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Effacer les couleurs identifiant les auteurs", - "pad.toolbar.import_export.title": "Importer\/Exporter de\/vers un format de fichier diff\u00e9rent", - "pad.toolbar.timeslider.title": "Historique dynamique", - "pad.toolbar.savedRevision.title": "Versions enregistr\u00e9es", - "pad.toolbar.settings.title": "Param\u00e8tres", - "pad.toolbar.embed.title": "Int\u00e9grer ce Pad", - "pad.toolbar.showusers.title": "Afficher les utilisateurs du Pad", - "pad.colorpicker.save": "Enregistrer", - "pad.colorpicker.cancel": "Annuler", - "pad.loading": "Chargement\u2026", - "pad.passwordRequired": "Vous avez besoin d'un mot de passe pour acc\u00e9der \u00e0 ce Pad", - "pad.permissionDenied": "Il ne vous est pas permis d\u2019acc\u00e9der \u00e0 ce Pad", - "pad.wrongPassword": "Mot de passe incorrect", - "pad.settings.padSettings": "Param\u00e8tres du Pad", - "pad.settings.myView": "Ma vue", - "pad.settings.stickychat": "Toujours afficher le chat", - "pad.settings.colorcheck": "Couleurs d\u2019identification", - "pad.settings.linenocheck": "Num\u00e9ros de lignes", - "pad.settings.fontType": "Type de police :", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Vue d\u2019ensemble", - "pad.settings.language": "Langue :", - "pad.importExport.import_export": "Importer\/Exporter", - "pad.importExport.import": "Charger un texte ou un document", - "pad.importExport.importSuccessful": "R\u00e9ussi!", - "pad.importExport.export": "Exporter le Pad actuel comme :", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Texte brut", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Vous ne pouvez importer que des formats texte brut ou html. Pour des fonctionnalit\u00e9s d'importation plus \u00e9volu\u00e9es, veuillez installer abiword<\/a>.", - "pad.modals.connected": "Connect\u00e9.", - "pad.modals.reconnecting": "Reconnexion vers votre Pad...", - "pad.modals.forcereconnect": "Forcer la reconnexion.", - "pad.modals.userdup": "Ouvert dans une autre fen\u00eatre", - "pad.modals.userdup.explanation": "Il semble que ce Pad soit ouvert dans plusieurs fen\u00eatres de votre navigateur sur cet ordinateur.", - "pad.modals.userdup.advice": "Se reconnecter en utilisant cette fen\u00eatre.", - "pad.modals.unauth": "Non autoris\u00e9", - "pad.modals.unauth.explanation": "Vos permissions ont \u00e9t\u00e9 chang\u00e9es lors de l'affichage de cette page. Essayez de vous reconnecter.", - "pad.modals.looping": "D\u00e9connect\u00e9.", - "pad.modals.looping.explanation": "Nous \u00e9prouvons un probl\u00e8me de communication au serveur de synchronisation.", - "pad.modals.looping.cause": "Il est possible que votre connexion soit prot\u00e9g\u00e9e par un pare-feu incompatible ou un serveur proxy incompatible.", - "pad.modals.initsocketfail": "Le serveur est introuvable.", - "pad.modals.initsocketfail.explanation": "Impossible de se connecter au serveur de synchronisation.", - "pad.modals.initsocketfail.cause": "Le probl\u00e8me peut venir de votre navigateur web ou de votre connexion Internet.", - "pad.modals.slowcommit": "D\u00e9connect\u00e9.", - "pad.modals.slowcommit.explanation": "Le serveur ne r\u00e9pond pas.", - "pad.modals.slowcommit.cause": "Ce probl\u00e8me peut venir d'une mauvaise connectivit\u00e9 au r\u00e9seau.", - "pad.modals.deleted": "Supprim\u00e9.", - "pad.modals.deleted.explanation": "Ce Pad a \u00e9t\u00e9 supprim\u00e9.", - "pad.modals.disconnected": "Vous avez \u00e9t\u00e9 d\u00e9connect\u00e9.", - "pad.modals.disconnected.explanation": "La connexion au serveur a \u00e9chou\u00e9.", - "pad.modals.disconnected.cause": "Il se peut que le serveur soit indisponible. Veuillez nous en informer si le probl\u00e8me persiste.", - "pad.share": "Partager ce Pad", - "pad.share.readonly": "Lecture seule", - "pad.share.link": "Lien", - "pad.share.emebdcode": "Lien \u00e0 int\u00e9grer", - "pad.chat": "Chat", - "pad.chat.title": "Ouvrir le chat associ\u00e9 \u00e0 ce pad.", - "pad.chat.loadmessages": "Charger davantage de messages", - "timeslider.pageTitle": "Historique dynamique de {{appTitle}}", - "timeslider.toolbar.returnbutton": "Retour \u00e0 ce Pad.", - "timeslider.toolbar.authors": "Auteurs :", - "timeslider.toolbar.authorsList": "Aucun auteur", - "timeslider.toolbar.exportlink.title": "Exporter", - "timeslider.exportCurrent": "Exporter la version actuelle en\u00a0:", - "timeslider.version": "Version {{version}}", - "timeslider.saved": "Enregistr\u00e9 le {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}} {{month}} {{year}} {{hours}}:{{minutes}}:{{secondes}}", - "timeslider.month.january": "Janvier", - "timeslider.month.february": "F\u00e9vrier", - "timeslider.month.march": "Mars", - "timeslider.month.april": "Avril", - "timeslider.month.may": "Mai", - "timeslider.month.june": "Juin", - "timeslider.month.july": "Juillet", - "timeslider.month.august": "Ao\u00fbt", - "timeslider.month.september": "Septembre", - "timeslider.month.october": "Octobre", - "timeslider.month.november": "Novembre", - "timeslider.month.december": "D\u00e9cembre", - "timeslider.unnamedauthor": "{{num}} auteur anonyme", - "timeslider.unnamedauthors": "{{num}} auteurs anonymes", - "pad.savedrevs.marked": "Cette r\u00e9vision est maintenant marqu\u00e9e comme r\u00e9vision enregistr\u00e9e", - "pad.userlist.entername": "Entrez votre nom", - "pad.userlist.unnamed": "sans nom", - "pad.userlist.guest": "Invit\u00e9", - "pad.userlist.deny": "Refuser", - "pad.userlist.approve": "Approuver", - "pad.editbar.clearcolors": "Effacer les couleurs de paternit\u00e9 dans tout le document ?", - "pad.impexp.importbutton": "Importer maintenant", - "pad.impexp.importing": "Import en cours...", - "pad.impexp.confirmimport": "Importer un fichier \u00e9crasera le texte actuel du bloc. \u00cates-vous s\u00fbr de vouloir le faire?", - "pad.impexp.convertFailed": "Nous ne pouvons pas importer ce fichier. Veuillez utiliser un autre format de document ou faire un copier\/coller manuel", - "pad.impexp.uploadFailed": "Le t\u00e9l\u00e9chargement a \u00e9chou\u00e9, veuillez r\u00e9essayer", - "pad.impexp.importfailed": "\u00c9chec de l'importation", - "pad.impexp.copypaste": "Veuillez copier\/coller", - "pad.impexp.exportdisabled": "Exporter au format {{type}} est d\u00e9sactiv\u00e9. Veuillez contacter votre administrateur syst\u00e8me pour plus de d\u00e9tails." + "@metadata": { + "authors": { + "0": "Cquoi", + "1": "Crochet.david", + "2": "Gomoko", + "3": "Goofy", + "4": "Goofy-bz", + "5": "Jean-Frédéric", + "6": "Leviathan", + "7": "McDutchie", + "8": "Metroitendo", + "9": "Od1n", + "10": "Peter17", + "11": "Quenenni", + "12": "Rastus Vernon", + "14": "Stephane Cottin", + "15": "Tux-tn" + } + }, + "index.newPad": "Nouveau pad", + "index.createOpenPad": "ou créer/ouvrir un pad intitulé :", + "pad.toolbar.bold.title": "Gras (Ctrl-B)", + "pad.toolbar.italic.title": "Italique (Ctrl-I)", + "pad.toolbar.underline.title": "Souligné (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Barré", + "pad.toolbar.ol.title": "Liste ordonnée", + "pad.toolbar.ul.title": "Liste non ordonnée", + "pad.toolbar.indent.title": "Indenter", + "pad.toolbar.unindent.title": "Désindenter", + "pad.toolbar.undo.title": "Annuler (Ctrl-Z)", + "pad.toolbar.redo.title": "Rétablir (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Effacer les couleurs identifiant les auteurs", + "pad.toolbar.import_export.title": "Importer/Exporter de/vers un format de fichier différent", + "pad.toolbar.timeslider.title": "Historique dynamique", + "pad.toolbar.savedRevision.title": "Enregistrer la révision", + "pad.toolbar.settings.title": "Paramètres", + "pad.toolbar.embed.title": "Partager et intégrer ce pad", + "pad.toolbar.showusers.title": "Afficher les utilisateurs du pad", + "pad.colorpicker.save": "Enregistrer", + "pad.colorpicker.cancel": "Annuler", + "pad.loading": "Chargement…", + "pad.passwordRequired": "Vous avez besoin d'un mot de passe pour accéder à ce pad", + "pad.permissionDenied": "Il ne vous est pas permis 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 chat", + "pad.settings.colorcheck": "Couleurs d’identification", + "pad.settings.linenocheck": "Numéros de lignes", + "pad.settings.rtlcheck": "Lecture de droite à gauche", + "pad.settings.fontType": "Police :", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Vue d’ensemble", + "pad.settings.language": "Langue :", + "pad.importExport.import_export": "Importer/Exporter", + "pad.importExport.import": "Charger un texte ou un document", + "pad.importExport.importSuccessful": "Réussi!", + "pad.importExport.export": "Exporter le pad actuel comme :", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Texte brut", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "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 \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstaller abiword\u003C/a\u003E.", + "pad.modals.connected": "Connecté.", + "pad.modals.reconnecting": "Reconnexion vers votre pad...", + "pad.modals.forcereconnect": "Forcer la reconnexion", + "pad.modals.userdup": "Ouvert dans une autre fenêtre", + "pad.modals.userdup.explanation": "Ce pad semble être ouvert dans plus d'une fenêtre de navigateur 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 votre connexion soit protégée par un pare-feu ou un serveur mandataire incompatible.", + "pad.modals.initsocketfail": "Le serveur est introuvable.", + "pad.modals.initsocketfail.explanation": "Impossible de se connecter au serveur de synchronisation.", + "pad.modals.initsocketfail.cause": "Ceci est probablement dû à un problème avec votre navigateur ou votre connexion internet.", + "pad.modals.slowcommit.explanation": "Le serveur ne répond pas.", + "pad.modals.slowcommit.cause": "Ce problème peut venir d'une mauvaise connectivité au réseau.", + "pad.modals.badChangeset.explanation": "Une modification que vous avez effectuée a été classée comme illégale par le serveur de synchronisation.", + "pad.modals.badChangeset.cause": "Cela peut être dû à une mauvaise configuration du serveur ou à un autre comportement inattendu. Veuillez contacter l’administrateur du service, si vous pensez que c’est une erreur. Essayez de vous reconnecter pour continuer à modifier.", + "pad.modals.corruptPad.explanation": "Le bloc auquel vous essayez d’accéder est corrompu.", + "pad.modals.corruptPad.cause": "Cela peut être dû à une mauvaise configuration du serveur ou à un autre comportement inattendu. Veuillez contacter l’administrateur du service.", + "pad.modals.deleted": "Supprimé.", + "pad.modals.deleted.explanation": "Ce pad a été supprimé.", + "pad.modals.disconnected": "Vous avez été déconnecté.", + "pad.modals.disconnected.explanation": "La connexion au serveur a échoué.", + "pad.modals.disconnected.cause": "Il se peut que le serveur soit indisponible. Si le problème persiste, veuillez en informer l’administrateur du service.", + "pad.share": "Partager ce pad", + "pad.share.readonly": "Lecture seule", + "pad.share.link": "Lien", + "pad.share.emebdcode": "Incorporer un lien", + "pad.chat": "Chat", + "pad.chat.title": "Ouvrir le chat associé à ce pad.", + "pad.chat.loadmessages": "Charger davantage de messages", + "timeslider.pageTitle": "Historique dynamique de {{appTitle}}", + "timeslider.toolbar.returnbutton": "Retourner au pad", + "timeslider.toolbar.authors": "Auteurs :", + "timeslider.toolbar.authorsList": "Aucun auteur", + "timeslider.toolbar.exportlink.title": "Exporter", + "timeslider.exportCurrent": "Exporter la version actuelle en :", + "timeslider.version": "Version {{version}}", + "timeslider.saved": "Enregistré le {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Janvier", + "timeslider.month.february": "Février", + "timeslider.month.march": "Mars", + "timeslider.month.april": "Avril", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juin", + "timeslider.month.july": "Juillet", + "timeslider.month.august": "Août", + "timeslider.month.september": "Septembre", + "timeslider.month.october": "Octobre", + "timeslider.month.november": "Novembre", + "timeslider.month.december": "Décembre", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: auteur anonyme, other: auteurs anonymes ]}", + "pad.savedrevs.marked": "Cette révision est maintenant marquée comme révision enregistrée", + "pad.userlist.entername": "Entrez votre nom", + "pad.userlist.unnamed": "anonyme", + "pad.userlist.guest": "Invité", + "pad.userlist.deny": "Refuser", + "pad.userlist.approve": "Approuver", + "pad.editbar.clearcolors": "Effacer les couleurs de paternité dans tout le document ?", + "pad.impexp.importbutton": "Importer maintenant", + "pad.impexp.importing": "Import en cours...", + "pad.impexp.confirmimport": "Importer un fichier écrasera le texte actuel du pad. Êtes-vous sûr de vouloir le faire?", + "pad.impexp.convertFailed": "Nous ne pouvons pas importer ce fichier. Veuillez utiliser un autre format de document ou faire un copier/coller manuel", + "pad.impexp.uploadFailed": "Le téléchargement a échoué, veuillez réessayer", + "pad.impexp.importfailed": "Échec de l'importation", + "pad.impexp.copypaste": "Veuillez copier/coller", + "pad.impexp.exportdisabled": "Exporter au format {{type}} est désactivé. Veuillez contacter votre administrateur système pour plus de détails." } \ No newline at end of file diff --git a/src/locales/gl.json b/src/locales/gl.json index 261d28ef7..f728ec0b7 100644 --- a/src/locales/gl.json +++ b/src/locales/gl.json @@ -1,120 +1,122 @@ { - "@metadata": { - "authors": { - "1": "Toli\u00f1o" - } - }, - "index.newPad": "Novo documento", - "index.createOpenPad": "ou cree\/abra un documento co nome:", - "pad.toolbar.bold.title": "Negra (Ctrl-B)", - "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", - "pad.toolbar.underline.title": "Subli\u00f1ar (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Riscar", - "pad.toolbar.ol.title": "Lista ordenada", - "pad.toolbar.ul.title": "Lista sen ordenar", - "pad.toolbar.indent.title": "Sangr\u00eda", - "pad.toolbar.unindent.title": "Sen sangr\u00eda", - "pad.toolbar.undo.title": "Desfacer (Ctrl-Z)", - "pad.toolbar.redo.title": "Refacer (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Limpar as cores de identificaci\u00f3n dos autores", - "pad.toolbar.import_export.title": "Importar\/Exportar desde\/a diferentes formatos de ficheiro", - "pad.toolbar.timeslider.title": "Li\u00f1a do tempo", - "pad.toolbar.savedRevision.title": "Revisi\u00f3ns gardadas", - "pad.toolbar.settings.title": "Configuraci\u00f3ns", - "pad.toolbar.embed.title": "Incorporar este documento", - "pad.toolbar.showusers.title": "Mostrar os usuarios deste documento", - "pad.colorpicker.save": "Gardar", - "pad.colorpicker.cancel": "Cancelar", - "pad.loading": "Cargando...", - "pad.passwordRequired": "C\u00f3mpre un contrasinal para acceder a este documento", - "pad.permissionDenied": "Non ten permiso para acceder a este documento", - "pad.wrongPassword": "O contrasinal era incorrecto", - "pad.settings.padSettings": "Configuraci\u00f3ns do documento", - "pad.settings.myView": "A mi\u00f1a vista", - "pad.settings.stickychat": "Chat sempre visible", - "pad.settings.colorcheck": "Cores de identificaci\u00f3n", - "pad.settings.linenocheck": "N\u00fameros de li\u00f1a", - "pad.settings.fontType": "Tipo de letra:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monoespazada", - "pad.settings.globalView": "Vista global", - "pad.settings.language": "Lingua:", - "pad.importExport.import_export": "Importar\/Exportar", - "pad.importExport.import": "Cargar un ficheiro de texto ou documento", - "pad.importExport.importSuccessful": "Correcto!", - "pad.importExport.export": "Exportar o documento actual en formato:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Texto simple", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "S\u00f3 pode importar texto simple ou formatos HTML. Para obter m\u00e1is informaci\u00f3n sobre as caracter\u00edsticas de importaci\u00f3n avanzadas instale abiword<\/a>.", - "pad.modals.connected": "Conectado.", - "pad.modals.reconnecting": "Reconectando co seu documento...", - "pad.modals.forcereconnect": "Forzar a reconexi\u00f3n", - "pad.modals.userdup": "Aberto noutra vent\u00e1", - "pad.modals.userdup.explanation": "Semella que este documento est\u00e1 aberto en varias vent\u00e1s do navegador neste ordenador.", - "pad.modals.userdup.advice": "Reconectar para usar esta vent\u00e1.", - "pad.modals.unauth": "Non autorizado", - "pad.modals.unauth.explanation": "Os seus permisos cambiaron mentres estaba nesta p\u00e1xina. Intente a reconexi\u00f3n.", - "pad.modals.looping": "Desconectado.", - "pad.modals.looping.explanation": "Hai un problema de comunicaci\u00f3n co servidor de sincronizaci\u00f3n.", - "pad.modals.looping.cause": "Seica a s\u00faa conexi\u00f3n pasa a trav\u00e9s dun firewall ou proxy incompatible.", - "pad.modals.initsocketfail": "Non se pode alcanzar o servidor.", - "pad.modals.initsocketfail.explanation": "Non se pode conectar co servidor de sincronizaci\u00f3n.", - "pad.modals.initsocketfail.cause": "Isto acontece probablemente debido a un problema co navegador ou coa conexi\u00f3n \u00e1 internet.", - "pad.modals.slowcommit": "Desconectado.", - "pad.modals.slowcommit.explanation": "O servidor non responde.", - "pad.modals.slowcommit.cause": "Isto pode deberse a un problema de conexi\u00f3n \u00e1 rede.", - "pad.modals.deleted": "Borrado.", - "pad.modals.deleted.explanation": "Este documento foi eliminado.", - "pad.modals.disconnected": "Foi desconectado.", - "pad.modals.disconnected.explanation": "Perdeuse a conexi\u00f3n co servidor", - "pad.modals.disconnected.cause": "O servidor non est\u00e1 dispo\u00f1ible. P\u00f3\u00f1ase en contacto con n\u00f3s se o problema contin\u00faa.", - "pad.share": "Compartir este documento", - "pad.share.readonly": "Lectura s\u00f3", - "pad.share.link": "Ligaz\u00f3n", - "pad.share.emebdcode": "Incorporar o URL", - "pad.chat": "Chat", - "pad.chat.title": "Abrir o chat deste documento.", - "pad.chat.loadmessages": "Cargar m\u00e1is mensaxes", - "timeslider.pageTitle": "Li\u00f1a do tempo de {{appTitle}}", - "timeslider.toolbar.returnbutton": "Volver ao documento", - "timeslider.toolbar.authors": "Autores:", - "timeslider.toolbar.authorsList": "Ning\u00fan autor", - "timeslider.toolbar.exportlink.title": "Exportar", - "timeslider.exportCurrent": "Exportar a versi\u00f3n actual en formato:", - "timeslider.version": "Versi\u00f3n {{version}}", - "timeslider.saved": "Gardado o {{day}} de {{month}} de {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "xaneiro", - "timeslider.month.february": "febreiro", - "timeslider.month.march": "marzo", - "timeslider.month.april": "abril", - "timeslider.month.may": "maio", - "timeslider.month.june": "xu\u00f1o", - "timeslider.month.july": "xullo", - "timeslider.month.august": "agosto", - "timeslider.month.september": "setembro", - "timeslider.month.october": "outubro", - "timeslider.month.november": "novembro", - "timeslider.month.december": "decembro", - "timeslider.unnamedauthor": "{{num}} autor an\u00f3nimo", - "timeslider.unnamedauthors": "{{num}} autores an\u00f3nimos", - "pad.savedrevs.marked": "Esta revisi\u00f3n est\u00e1 agora marcada como revisi\u00f3n gardada", - "pad.userlist.entername": "Insira o seu nome", - "pad.userlist.unnamed": "an\u00f3nimo", - "pad.userlist.guest": "Convidado", - "pad.userlist.deny": "Rexeitar", - "pad.userlist.approve": "Aprobar", - "pad.editbar.clearcolors": "Quere limpar as cores de identificaci\u00f3n dos autores en todo o documento?", - "pad.impexp.importbutton": "Importar agora", - "pad.impexp.importing": "Importando...", - "pad.impexp.confirmimport": "A importaci\u00f3n dun ficheiro ha sobrescribir o texto actual do documento. Est\u00e1 seguro de querer continuar?", - "pad.impexp.convertFailed": "Non somos capaces de importar o ficheiro. Utilice un formato de documento diferente ou copie e pegue manualmente", - "pad.impexp.uploadFailed": "Houbo un erro ao cargar o ficheiro; int\u00e9nteo de novo", - "pad.impexp.importfailed": "Fallou a importaci\u00f3n", - "pad.impexp.copypaste": "Copie e pegue", - "pad.impexp.exportdisabled": "A exportaci\u00f3n en formato {{type}} est\u00e1 desactivada. P\u00f3\u00f1ase en contacto co administrador do sistema se quere m\u00e1is detalles." + "@metadata": { + "authors": { + "1": "Toliño" + } + }, + "index.newPad": "Novo documento", + "index.createOpenPad": "ou cree/abra un documento co nome:", + "pad.toolbar.bold.title": "Negra (Ctrl-B)", + "pad.toolbar.italic.title": "Cursiva (Ctrl-I)", + "pad.toolbar.underline.title": "Subliñar (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Riscar", + "pad.toolbar.ol.title": "Lista ordenada", + "pad.toolbar.ul.title": "Lista sen ordenar", + "pad.toolbar.indent.title": "Sangría", + "pad.toolbar.unindent.title": "Sen sangría", + "pad.toolbar.undo.title": "Desfacer (Ctrl-Z)", + "pad.toolbar.redo.title": "Refacer (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Limpar as cores de identificación dos autores", + "pad.toolbar.import_export.title": "Importar/Exportar desde/a diferentes formatos de ficheiro", + "pad.toolbar.timeslider.title": "Liña do tempo", + "pad.toolbar.savedRevision.title": "Gardar a revisión", + "pad.toolbar.settings.title": "Configuracións", + "pad.toolbar.embed.title": "Compartir e incorporar este documento", + "pad.toolbar.showusers.title": "Mostrar os usuarios deste documento", + "pad.colorpicker.save": "Gardar", + "pad.colorpicker.cancel": "Cancelar", + "pad.loading": "Cargando...", + "pad.passwordRequired": "Cómpre un contrasinal para acceder a este documento", + "pad.permissionDenied": "Non ten permiso para acceder a este documento", + "pad.wrongPassword": "O contrasinal era incorrecto", + "pad.settings.padSettings": "Configuracións do documento", + "pad.settings.myView": "A miña vista", + "pad.settings.stickychat": "Chat sempre visible", + "pad.settings.colorcheck": "Cores de identificación", + "pad.settings.linenocheck": "Números de liña", + "pad.settings.rtlcheck": "Quere ler o contido da dereita á esquerda?", + "pad.settings.fontType": "Tipo de letra:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monoespazada", + "pad.settings.globalView": "Vista global", + "pad.settings.language": "Lingua:", + "pad.importExport.import_export": "Importar/Exportar", + "pad.importExport.import": "Cargar un ficheiro de texto ou documento", + "pad.importExport.importSuccessful": "Correcto!", + "pad.importExport.export": "Exportar o documento actual en formato:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Texto simple", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Só pode importar texto simple ou formatos HTML. Para obter máis información sobre as características de importación avanzadas \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstale abiword\u003C/a\u003E.", + "pad.modals.connected": "Conectado.", + "pad.modals.reconnecting": "Reconectando co seu documento...", + "pad.modals.forcereconnect": "Forzar a reconexión", + "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á.", + "pad.modals.unauth": "Non autorizado", + "pad.modals.unauth.explanation": "Os seus permisos cambiaron mentres estaba nesta páxina. Intente a reconexión.", + "pad.modals.looping.explanation": "Hai un problema de comunicación co servidor de sincronización.", + "pad.modals.looping.cause": "Seica a súa conexión pasa a través dun firewall ou proxy incompatible.", + "pad.modals.initsocketfail": "Non se pode alcanzar o servidor.", + "pad.modals.initsocketfail.explanation": "Non se pode conectar co servidor de sincronización.", + "pad.modals.initsocketfail.cause": "Isto acontece probablemente debido a un problema co navegador ou coa conexión á internet.", + "pad.modals.slowcommit.explanation": "O servidor non responde.", + "pad.modals.slowcommit.cause": "Isto pode deberse a un problema de conexión á rede.", + "pad.modals.badChangeset.explanation": "O servidor de sincronización clasificou como ilegal unha das súas edicións.", + "pad.modals.badChangeset.cause": "Isto pode deberse a unha cofiguración errónea do servidor ou algún outro comportamento inesperado. Póñase en contacto co administrador do servizo, se pensa que isto é un erro. Intente reconectar para continuar editando.", + "pad.modals.corruptPad.explanation": "O documento ao que intenta acceder está corrompido.", + "pad.modals.corruptPad.cause": "Isto pode deberse a unha cofiguración errónea do servidor ou algún outro comportamento inesperado. Póñase en contacto co administrador do servizo.", + "pad.modals.deleted": "Borrado.", + "pad.modals.deleted.explanation": "Este documento foi eliminado.", + "pad.modals.disconnected": "Foi desconectado.", + "pad.modals.disconnected.explanation": "Perdeuse a conexión co servidor", + "pad.modals.disconnected.cause": "O servidor non está dispoñible. Póñase en contacto co administrador do servizo se o problema continúa.", + "pad.share": "Compartir este documento", + "pad.share.readonly": "Lectura só", + "pad.share.link": "Ligazón", + "pad.share.emebdcode": "Incorporar o URL", + "pad.chat": "Chat", + "pad.chat.title": "Abrir o chat deste documento.", + "pad.chat.loadmessages": "Cargar máis mensaxes", + "timeslider.pageTitle": "Liña do tempo de {{appTitle}}", + "timeslider.toolbar.returnbutton": "Volver ao documento", + "timeslider.toolbar.authors": "Autores:", + "timeslider.toolbar.authorsList": "Ningún autor", + "timeslider.toolbar.exportlink.title": "Exportar", + "timeslider.exportCurrent": "Exportar a versión actual en formato:", + "timeslider.version": "Versión {{version}}", + "timeslider.saved": "Gardado o {{day}} de {{month}} de {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "xaneiro", + "timeslider.month.february": "febreiro", + "timeslider.month.march": "marzo", + "timeslider.month.april": "abril", + "timeslider.month.may": "maio", + "timeslider.month.june": "xuño", + "timeslider.month.july": "xullo", + "timeslider.month.august": "agosto", + "timeslider.month.september": "setembro", + "timeslider.month.october": "outubro", + "timeslider.month.november": "novembro", + "timeslider.month.december": "decembro", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor anónimo, other: autores anónimos ]}", + "pad.savedrevs.marked": "Esta revisión está agora marcada como revisión gardada", + "pad.userlist.entername": "Insira o seu nome", + "pad.userlist.unnamed": "anónimo", + "pad.userlist.guest": "Convidado", + "pad.userlist.deny": "Rexeitar", + "pad.userlist.approve": "Aprobar", + "pad.editbar.clearcolors": "Quere limpar as cores de identificación dos autores en todo o documento?", + "pad.impexp.importbutton": "Importar agora", + "pad.impexp.importing": "Importando...", + "pad.impexp.confirmimport": "A importación dun ficheiro ha sobrescribir o texto actual do documento. Está seguro de querer continuar?", + "pad.impexp.convertFailed": "Non somos capaces de importar o ficheiro. Utilice un formato de documento diferente ou copie e pegue manualmente", + "pad.impexp.uploadFailed": "Houbo un erro ao cargar o ficheiro; inténteo de novo", + "pad.impexp.importfailed": "Fallou a importación", + "pad.impexp.copypaste": "Copie e pegue", + "pad.impexp.exportdisabled": "A exportación en formato {{type}} está desactivada. Póñase en contacto co administrador do sistema se quere máis detalles." } \ No newline at end of file diff --git a/src/locales/he.json b/src/locales/he.json index 7e5f3b048..908a27918 100644 --- a/src/locales/he.json +++ b/src/locales/he.json @@ -1,121 +1,125 @@ { - "@metadata": { - "authors": [ - "Amire80", - "Ofrahod" - ] - }, - "index.newPad": "\u05e4\u05e0\u05e7\u05e1 \u05d7\u05d3\u05e9", - "index.createOpenPad": "\u05d0\u05d5 \u05d9\u05e6\u05d9\u05e8\u05d4 \u05d0\u05d5 \u05e4\u05ea\u05d9\u05d7\u05d4 \u05e9\u05dc \u05e4\u05e0\u05e7\u05e1 \u05e2\u05dd \u05d1\u05e9\u05dd:", - "pad.toolbar.bold.title": "\u05d1\u05d5\u05dc\u05d8 (Ctrl-B)", - "pad.toolbar.italic.title": "\u05e0\u05d8\u05d5\u05d9 (Ctrl-I)", - "pad.toolbar.underline.title": "\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d9 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u05e7\u05d5 \u05de\u05d5\u05d7\u05e7", - "pad.toolbar.ol.title": "\u05e8\u05e9\u05d9\u05de\u05d4 \u05de\u05de\u05d5\u05e1\u05e4\u05e8\u05ea", - "pad.toolbar.ul.title": "\u05e8\u05e9\u05d9\u05de\u05d4", - "pad.toolbar.indent.title": "\u05d4\u05d6\u05d7\u05d4", - "pad.toolbar.unindent.title": "\u05e6\u05de\u05e6\u05d5\u05dd \u05d4\u05d6\u05d7\u05d4", - "pad.toolbar.undo.title": "\u05d1\u05d9\u05d8\u05d5\u05dc (Ctrl-Z)", - "pad.toolbar.redo.title": "\u05d1\u05d9\u05e6\u05d5\u05e2 \u05de\u05d7\u05d3\u05e9", - "pad.toolbar.clearAuthorship.title": "\u05e0\u05d9\u05e7\u05d5\u05d9 \u05e6\u05d1\u05e2\u05d9\u05dd", - "pad.toolbar.import_export.title": "\u05d9\u05d9\u05d1\u05d5\u05d0\/\u05d9\u05d9\u05e6\u05d0 \u05d1\u05ea\u05e1\u05d3\u05d9\u05e8\u05d9 \u05e7\u05d1\u05e6\u05d9\u05dd \u05e9\u05d5\u05e0\u05d9\u05dd", - "pad.toolbar.timeslider.title": "\u05d2\u05d5\u05dc\u05dc \u05d6\u05de\u05df", - "pad.toolbar.savedRevision.title": "\u05d2\u05e8\u05e1\u05d0\u05d5\u05ea \u05e9\u05de\u05d5\u05e8\u05d5\u05ea", - "pad.toolbar.settings.title": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea", - "pad.toolbar.embed.title": "\u05d4\u05d8\u05de\u05e2\u05ea \u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4", - "pad.toolbar.showusers.title": "\u05d4\u05e6\u05d2\u05ea \u05d4\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d1\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4", - "pad.colorpicker.save": "\u05e9\u05de\u05d9\u05e8\u05d4", - "pad.colorpicker.cancel": "\u05d1\u05d9\u05d8\u05d5\u05dc", - "pad.loading": "\u05d8\u05e2\u05d9\u05e0\u05d4...", - "pad.passwordRequired": "\u05d3\u05e8\u05d5\u05e9\u05d4 \u05e1\u05e1\u05de\u05d4 \u05db\u05d3\u05d9 \u05dc\u05d2\u05e9\u05ea \u05dc\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4", - "pad.permissionDenied": "\u05d0\u05d9\u05df \u05dc\u05da \u05d4\u05e8\u05e9\u05d0\u05d4 \u05dc\u05d2\u05e9\u05ea \u05dc\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4", - "pad.wrongPassword": "\u05e1\u05e1\u05de\u05ea\u05da \u05d4\u05d9\u05d9\u05ea\u05d4 \u05e9\u05d2\u05d5\u05d9\u05d4", - "pad.settings.padSettings": "\u05d4\u05d2\u05d3\u05e8\u05d5\u05ea \u05e4\u05e0\u05e7\u05e1", - "pad.settings.myView": "\u05d4\u05ea\u05e6\u05d5\u05d2\u05d4 \u05e9\u05dc\u05d9", - "pad.settings.stickychat": "\u05d4\u05e9\u05d9\u05d7\u05d4 \u05ea\u05de\u05d9\u05d3 \u05e2\u05dc \u05d4\u05de\u05e1\u05da", - "pad.settings.colorcheck": "\u05e6\u05d1\u05d9\u05e2\u05d4 \u05dc\u05e4\u05d9 \u05de\u05d7\u05d1\u05e8", - "pad.settings.linenocheck": "\u05de\u05e1\u05e4\u05e8\u05d9 \u05e9\u05d5\u05e8\u05d5\u05ea", - "pad.settings.fontType": "\u05e1\u05d5\u05d2 \u05d2\u05d5\u05e4\u05df:", - "pad.settings.fontType.normal": "\u05e8\u05d2\u05d9\u05dc", - "pad.settings.fontType.monospaced": "\u05d1\u05e8\u05d5\u05d7\u05d1 \u05e7\u05d1\u05d5\u05e2", - "pad.settings.globalView": "\u05ea\u05e6\u05d5\u05d2\u05d4 \u05dc\u05db\u05dc \u05d4\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd", - "pad.settings.language": "\u05e9\u05e4\u05d4:", - "pad.importExport.import_export": "\u05d9\u05d9\u05d1\u05d5\u05d0\/\u05d9\u05d9\u05e6\u05d5\u05d0", - "pad.importExport.import": "\u05d4\u05e2\u05dc\u05d0\u05ea \u05db\u05dc \u05e7\u05d5\u05d1\u05e5 \u05d8\u05e7\u05e1\u05d8 \u05d0\u05d5 \u05de\u05e1\u05de\u05da", - "pad.importExport.importSuccessful": "\u05d6\u05d4 \u05e2\u05d1\u05d3!", - "pad.importExport.export": "\u05d9\u05d9\u05e6\u05d5\u05d0 \u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05e0\u05d5\u05db\u05d7\u05d9 \u05d1\u05ea\u05d5\u05e8:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc", - "pad.importExport.exportword": "\u05de\u05d9\u05e7\u05e8\u05d5\u05e1\u05d5\u05e4\u05d8 \u05d5\u05d5\u05e8\u05d3", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u05d1\u05d0\u05e4\u05e9\u05e8\u05d5\u05ea\u05da \u05dc\u05d9\u05d9\u05d1\u05d0 \u05de\u05d8\u05e7\u05e1\u05d8 \u05e4\u05e9\u05d5\u05d8 \u05d0\u05d5 \u05de\u05beHTML. \u05dc\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d9\u05d9\u05d1\u05d5\u05d0 \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea \u05d9\u05d5\u05ea\u05e8 \u05d9\u05e9 \u05dc\u05d4\u05ea\u05e7\u05d9\u05df \u05d0\u05ea abiword<\/a>.", - "pad.modals.connected": "\u05de\u05d7\u05d5\u05d1\u05db\u05e8.", - "pad.modals.reconnecting": "\u05de\u05ea\u05d1\u05e6\u05e2 \u05d7\u05d9\u05d1\u05d5\u05e8 \u05de\u05d7\u05d3\u05e9...", - "pad.modals.forcereconnect": "\u05d7\u05d9\u05d1\u05d5\u05e8 \u05db\u05e4\u05d5\u05d9 \u05de\u05d7\u05d3\u05e9", - "pad.modals.userdup": "\u05e4\u05ea\u05d5\u05d7 \u05d1\u05d7\u05dc\u05d5\u05df \u05d0\u05d7\u05e8", - "pad.modals.userdup.explanation": "\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4 \u05e4\u05ea\u05d5\u05d7 \u05d1\u05d9\u05d5\u05ea\u05e8 \u05de\u05d7\u05dc\u05d5\u05df \u05d3\u05e4\u05d3\u05e4\u05df \u05d0\u05d7\u05d3 \u05d1\u05de\u05d7\u05e9\u05d1 \u05d4\u05d6\u05d4.", - "pad.modals.userdup.advice": "\u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05de\u05d7\u05d3\u05e9 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05d7\u05dc\u05d5\u05df \u05d4\u05d6\u05d4.", - "pad.modals.unauth": "\u05d0\u05d9\u05df \u05d4\u05e8\u05e9\u05d0\u05d4", - "pad.modals.unauth.explanation": "\u05d4\u05d4\u05e8\u05e9\u05d0\u05d5\u05ea \u05e9\u05dc\u05da \u05d4\u05e9\u05ea\u05e0\u05d5 \u05d1\u05d6\u05de\u05df \u05e9\u05e0\u05d9\u05e1\u05d9\u05ea \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8. \u05e0\u05d0 \u05dc\u05e0\u05e1\u05d5\u05ea \u05dc\u05d4\u05ea\u05d7\u05d1\u05e8 \u05de\u05d7\u05d3\u05e9.", - "pad.modals.looping": "\u05dc\u05d0 \u05de\u05d7\u05d5\u05d1\u05e8.", - "pad.modals.looping.explanation": "\u05d9\u05e9 \u05d1\u05e2\u05d9\u05d5\u05ea \u05d7\u05d9\u05d1\u05d5\u05e8 \u05e2\u05dd \u05d4\u05e9\u05e8\u05ea \u05d4\u05de\u05ea\u05d0\u05dd.", - "pad.modals.looping.cause": "\u05d9\u05d9\u05ea\u05db\u05df \u05e9\u05d4\u05ea\u05d7\u05d1\u05e8\u05ea \u05d3\u05e8\u05da \u05d7\u05d5\u05de\u05ea\u05be\u05d0\u05e9 \u05d0\u05d5 \u05e9\u05e8\u05ea \u05de\u05ea\u05d5\u05d5\u05da \u05e9\u05d0\u05d9\u05e0\u05dd \u05de\u05ea\u05d0\u05d9\u05de\u05d9\u05dd.", - "pad.modals.initsocketfail": "\u05d0\u05d9\u05df \u05ea\u05e7\u05e9\u05d5\u05e8\u05d5\u05ea \u05dc\u05e9\u05e8\u05ea.", - "pad.modals.initsocketfail.explanation": "\u05d4\u05ea\u05d7\u05d1\u05e8\u05d5\u05ea \u05dc\u05e9\u05e8\u05ea \u05d4\u05de\u05ea\u05d0\u05dd \u05dc\u05d0 \u05d4\u05e6\u05dc\u05d9\u05d7\u05d4.", - "pad.modals.initsocketfail.cause": "\u05d0\u05d5\u05dc\u05d9 \u05d6\u05d4 \u05d1\u05d2\u05dc\u05dc \u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da \u05d0\u05d5 \u05d7\u05d9\u05d1\u05d5\u05e8 \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8 \u05e9\u05dc\u05da.", - "pad.modals.slowcommit": "\u05de\u05e0\u05d5\u05ea\u05e7.", - "pad.modals.slowcommit.explanation": "\u05d4\u05e9\u05e8\u05ea \u05d0\u05d9\u05e0\u05d5 \u05de\u05d2\u05d9\u05d1.", - "pad.modals.slowcommit.cause": "\u05d0\u05d5\u05dc\u05d9 \u05d6\u05d4 \u05d1\u05d2\u05dc\u05dc \u05d1\u05e2\u05d9\u05d5\u05ea \u05e2\u05dd \u05ea\u05e7\u05e9\u05d5\u05e8\u05ea \u05dc\u05e8\u05e9\u05ea.", - "pad.modals.deleted": "\u05e0\u05de\u05d7\u05e7.", - "pad.modals.deleted.explanation": "\u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4 \u05d4\u05d5\u05e1\u05e8.", - "pad.modals.disconnected": "\u05e0\u05d5\u05ea\u05e7\u05ea.", - "pad.modals.disconnected.explanation": "\u05d4\u05ea\u05e7\u05e9\u05d5\u05e8\u05ea \u05dc\u05e9\u05e8\u05ea \u05d0\u05d1\u05d3\u05d4", - "pad.modals.disconnected.cause": "\u05d9\u05d9\u05ea\u05db\u05df \u05e9\u05d4\u05e9\u05e8\u05ea \u05d0\u05d9\u05e0\u05d5 \u05d6\u05de\u05d9\u05df. \u05e0\u05d0 \u05dc\u05d4\u05d5\u05e1\u05d9\u05e2 \u05dc\u05e0\u05d5 \u05d0\u05dd \u05d6\u05d4 \u05de\u05de\u05e9\u05d9\u05da \u05dc\u05e7\u05e8\u05d5\u05ea.", - "pad.share": "\u05e9\u05d9\u05ea\u05d5\u05e3 \u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4", - "pad.share.readonly": "\u05e7\u05d9\u05e9\u05d5\u05e8", - "pad.share.link": "\u05e7\u05d9\u05e9\u05d5\u05e8", - "pad.share.emebdcode": "\u05d4\u05d8\u05de\u05e2\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8", - "pad.chat": "\u05e9\u05d9\u05d7\u05d4", - "pad.chat.title": "\u05e4\u05ea\u05d9\u05d7\u05ea \u05d4\u05e9\u05d9\u05d7\u05d4 \u05e9\u05dc \u05d4\u05e4\u05e0\u05e7\u05e1 \u05d4\u05d6\u05d4.", - "pad.chat.loadmessages": "\u05d8\u05e2\u05d9\u05e0\u05ea \u05d4\u05d5\u05d3\u05e2\u05d5\u05ea \u05e0\u05d5\u05e1\u05e4\u05d5\u05ea", - "timeslider.pageTitle": "\u05d2\u05d5\u05dc\u05dc \u05d6\u05de\u05df \u05e9\u05dc {{appTitle}}", - "timeslider.toolbar.returnbutton": "\u05d7\u05d6\u05e8\u05d4 \u05d0\u05dc \u05d4\u05e4\u05e0\u05e7\u05e1", - "timeslider.toolbar.authors": "\u05db\u05d5\u05ea\u05d1\u05d9\u05dd:", - "timeslider.toolbar.authorsList": "\u05d0\u05d9\u05df \u05db\u05d5\u05ea\u05d1\u05d9\u05dd", - "timeslider.toolbar.exportlink.title": "\u05d9\u05e6\u05d5\u05d0", - "timeslider.exportCurrent": "\u05d9\u05d9\u05e6\u05d5\u05d0 \u05d4\u05db\u05e8\u05e1\u05d4 \u05d4\u05e0\u05d5\u05db\u05d7\u05d9\u05ea \u05d1\u05ea\u05d5\u05e8:", - "timeslider.version": "\u05d2\u05e8\u05e1\u05d4 {{version}}", - "timeslider.saved": "\u05e0\u05e9\u05de\u05e8\u05d4 \u05d1\u05be{{day}} \u05d1{{month}} {{year}}", - "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u05d9\u05e0\u05d5\u05d0\u05e8", - "timeslider.month.february": "\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8", - "timeslider.month.march": "\u05de\u05e8\u05e5", - "timeslider.month.april": "\u05d0\u05e4\u05e8\u05d9\u05dc", - "timeslider.month.may": "\u05de\u05d0\u05d9", - "timeslider.month.june": "\u05d9\u05d5\u05e0\u05d9", - "timeslider.month.july": "\u05d9\u05d5\u05dc\u05d9", - "timeslider.month.august": "\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8", - "timeslider.month.september": "\u05e1\u05e4\u05d8\u05de\u05d1\u05e8", - "timeslider.month.october": "\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8", - "timeslider.month.november": "\u05e0\u05d5\u05d1\u05de\u05d1\u05e8", - "timeslider.month.december": "\u05d3\u05e6\u05de\u05d1\u05e8", - "timeslider.unnamedauthor": "\u05db\u05d5\u05ea\u05d1 \u05d7\u05e1\u05e8\u05be\u05e9\u05dd \u05d0\u05d7\u05d3", - "timeslider.unnamedauthors": "{{num}} \u05db\u05d5\u05ea\u05d1\u05d9\u05dd \u05d7\u05e1\u05e8\u05d9\u05be\u05e9\u05dd", - "pad.savedrevs.marked": "\u05d2\u05e8\u05e1\u05d4 \u05d6\u05d5 \u05de\u05e1\u05d5\u05de\u05e0\u05ea \u05db\u05d2\u05e8\u05e1\u05d4 \u05e9\u05de\u05d5\u05e8\u05d4", - "pad.userlist.entername": "\u05e0\u05d0 \u05dc\u05d4\u05d6\u05d9\u05df \u05d0\u05ea \u05e9\u05de\u05da", - "pad.userlist.unnamed": "\u05dc\u05dc\u05d0 \u05e9\u05dd", - "pad.userlist.guest": "\u05d0\u05d5\u05e8\u05d7", - "pad.userlist.deny": "\u05dc\u05d3\u05d7\u05d5\u05ea", - "pad.userlist.approve": "\u05dc\u05d0\u05e9\u05e8", - "pad.editbar.clearcolors": "\u05dc\u05e0\u05e7\u05d5\u05ea \u05e6\u05d1\u05e2\u05d9\u05dd \u05dc\u05e1\u05d9\u05de\u05d5\u05df \u05db\u05d5\u05ea\u05d1\u05d9\u05dd \u05d1\u05db\u05dc \u05d4\u05de\u05e1\u05de\u05da?", - "pad.impexp.importbutton": "\u05dc\u05d9\u05d9\u05d1\u05d0 \u05db\u05e2\u05ea", - "pad.impexp.importing": "\u05d9\u05d9\u05d1\u05d5\u05d0...", - "pad.impexp.confirmimport": "\u05d9\u05d1\u05d5\u05d0 \u05e9\u05dc \u05e7\u05d5\u05d1\u05e5 \u05d9\u05d1\u05d8\u05dc \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d4\u05e0\u05d5\u05db\u05d7\u05d9 \u05d1\u05e4\u05e0\u05e7\u05e1. \u05d4\u05d0\u05dd \u05d0\u05ea\u05dd \u05d1\u05d8\u05d5\u05d7\u05d9\u05dd \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05db\u05dd \u05dc\u05d4\u05de\u05e9\u05d9\u05da?", - "pad.impexp.convertFailed": "\u05dc\u05d0 \u05d4\u05ea\u05d7\u05dc\u05dc\u05d0 \u05d4\u05e6\u05dc\u05d7\u05e0\u05d5 \u05dc\u05d9\u05d9\u05d1\u05d0 \u05d0\u05ea \u05d4\u05e7\u05d5\u05d1\u05e5 \u05d4\u05d6\u05d4. \u05e0\u05d0 \u05dc\u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05ea\u05e1\u05d3\u05d9\u05e8 \u05de\u05e1\u05de\u05da \u05e9\u05d5\u05e0\u05d4 \u05d0\u05d5 \u05dc\u05d4\u05e2\u05ea\u05d9\u05e7 \u05d5\u05dc\u05d4\u05d3\u05d1\u05d9\u05e7 \u05d9\u05d3\u05e0\u05d9\u05ea", - "pad.impexp.uploadFailed": "\u05d4\u05d4\u05e2\u05dc\u05d0\u05d4 \u05e0\u05db\u05e9\u05dc\u05d4, \u05e0\u05d0 \u05dc\u05e0\u05e1\u05d5\u05ea \u05e9\u05d5\u05d1", - "pad.impexp.importfailed": "\u05d4\u05d9\u05d9\u05d1\u05d5\u05d0 \u05e0\u05db\u05e9\u05dc", - "pad.impexp.copypaste": "\u05e0\u05d0 \u05dc\u05d4\u05e2\u05ea\u05d9\u05e7 \u05d5\u05dc\u05d4\u05d3\u05d1\u05d9\u05e7", - "pad.impexp.exportdisabled": "\u05d9\u05d9\u05e6\u05d5\u05d0 \u05d1\u05ea\u05e1\u05d3\u05d9\u05e8 {{type}} \u05d0\u05d9\u05e0\u05d5 \u05e4\u05e2\u05d9\u05dc. \u05de\u05e0\u05d4\u05dc \u05d4\u05de\u05e2\u05e8\u05db\u05ea \u05e9\u05dc\u05da \u05d9\u05d5\u05db\u05dc \u05dc\u05e1\u05e4\u05e8 \u05dc\u05da \u05e2\u05dc \u05d6\u05d4 \u05e2\u05d5\u05d3 \u05e4\u05e8\u05d8\u05d9\u05dd." + "@metadata": { + "authors": { + "0": "Amire80", + "1": "Ofrahod", + "3": "YaronSh", + "4": "תומר ט" + } + }, + "index.newPad": "פנקס חדש", + "index.createOpenPad": "ליצור ×ו לפתוח פנקס בש×:", + "pad.toolbar.bold.title": "בולט (Ctrl-B)", + "pad.toolbar.italic.title": "נטוי (Ctrl-I)", + "pad.toolbar.underline.title": "קו תחתי (Ctrl-U)", + "pad.toolbar.strikethrough.title": "קו מוחק", + "pad.toolbar.ol.title": "רשימה ממוספרת", + "pad.toolbar.ul.title": "רשימה", + "pad.toolbar.indent.title": "×”×–×—×”", + "pad.toolbar.unindent.title": "×¦×ž×¦×•× ×”×–×—×”", + "pad.toolbar.undo.title": "ביטול (Ctrl-Z)", + "pad.toolbar.redo.title": "ביצוע מחדש", + "pad.toolbar.clearAuthorship.title": "ניקוי צבעי×", + "pad.toolbar.import_export.title": "ייבו×/×™×™×¦×•× ×‘×ª×¡×“×™×¨×™ ×§×‘×¦×™× ×©×•× ×™×", + "pad.toolbar.timeslider.title": "גולל זמן", + "pad.toolbar.savedRevision.title": "שמירת גרסה", + "pad.toolbar.settings.title": "הגדרות", + "pad.toolbar.embed.title": "שיתוף והטמעה של הפנקס ×”×–×”", + "pad.toolbar.showusers.title": "הצגת ×”×ž×©×ª×ž×©×™× ×‘×¤× ×§×¡ ×”×–×”", + "pad.colorpicker.save": "שמירה", + "pad.colorpicker.cancel": "ביטול", + "pad.loading": "טעינה...", + "pad.passwordRequired": "דרושה ססמה כדי לגשת לפנקס ×”×–×”", + "pad.permissionDenied": "×ין לך הרש××” לגשת לפנקס ×”×–×”", + "pad.wrongPassword": "ססמתך הייתה שגויה", + "pad.settings.padSettings": "הגדרות פנקס", + "pad.settings.myView": "התצוגה שלי", + "pad.settings.stickychat": "השיחה תמיד על המסך", + "pad.settings.colorcheck": "צביעה לפי מחבר", + "pad.settings.linenocheck": "מספרי שורות", + "pad.settings.rtlcheck": "×œ×§×¨×•× ×ת התוכן מימין לשמ×ל?", + "pad.settings.fontType": "סוג גופן:", + "pad.settings.fontType.normal": "רגיל", + "pad.settings.fontType.monospaced": "ברוחב קבוע", + "pad.settings.globalView": "תצוגה לכל המשתמשי×", + "pad.settings.language": "שפה:", + "pad.importExport.import_export": "ייבו×/ייצו×", + "pad.importExport.import": "העל×ת כל קובץ טקסט ×ו מסמך", + "pad.importExport.importSuccessful": "×–×” עבד!", + "pad.importExport.export": "×™×™×¦×•× ×”×¤× ×§×¡ הנוכחי בתור:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "טקסט רגיל", + "pad.importExport.exportword": "מיקרוסופט וורד", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "ב×פשרותך ×œ×™×™×‘× ×ž×˜×§×¡×˜ פשוט ×ו מ־HTML. ל×פשרויות ×™×™×‘×•× ×ž×ª×§×“×ž×•×ª יותר יש \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eלהתקין ×ת abiword\u003C/a\u003E.", + "pad.modals.connected": "מחובר.", + "pad.modals.reconnecting": "מתבצע חיבור מחדש...", + "pad.modals.forcereconnect": "לכפות חיבור מחדש", + "pad.modals.userdup": "פתוח בחלון ×חר", + "pad.modals.userdup.explanation": "נר××” שהפנקס ×”×–×” פתוח ביותר מחלון דפדפן ×חד במחשב ×”×–×”.", + "pad.modals.userdup.advice": "להתחבר מחדש ב×מצעות החלון ×”×–×”.", + "pad.modals.unauth": "×ין הרש××”", + "pad.modals.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": "הטמעת קישור", + "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.dateformat": "{{year}}-{{month}}-{{day}} {{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": "{[plural(num) one: יוצר ×חד, other: {{num}} ×™×•×¦×¨×™× ]} ×œ×œ× ×©×", + "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.confirmimport": "×™×™×‘×•× ×©×œ קובץ יבטל ×ת הטקסט הנוכחי בפנקס. ×”×× ×‘×¨×¦×•× ×š להמשיך?", + "pad.impexp.convertFailed": "×œ× ×”×¦×œ×—× ×• ×œ×™×™×‘× ×ת הקובץ ×”×–×”. × × ×œ×”×©×ª×ž×© בתסדיר מסמך שונה ×ו להעתיק ולהדביק ידנית", + "pad.impexp.uploadFailed": "ההעל××” נכשלה, × × ×œ× ×¡×•×ª שוב", + "pad.impexp.importfailed": "×”×™×™×‘×•× × ×›×©×œ", + "pad.impexp.copypaste": "× × ×œ×”×¢×ª×™×§ ולהדביק", + "pad.impexp.exportdisabled": "×™×™×¦×•× ×‘×ª×¡×“×™×¨ {{type}} ×ינו פעיל. מנהל המערכת שלך יוכל לספר לך על ×–×” עוד פרטי×." } \ No newline at end of file diff --git a/src/locales/hu.json b/src/locales/hu.json index 6e6673002..8c01edf0a 100644 --- a/src/locales/hu.json +++ b/src/locales/hu.json @@ -1,111 +1,109 @@ { - "@metadata": { - "authors": { - "0": "Dj", - "1": "Misibacsi", - "2": "R-Joe", - "4": "Tgr" - } - }, - "index.newPad": "\u00daj notesz", - "index.createOpenPad": "vagy notesz l\u00e9trehoz\u00e1sa ezen a n\u00e9ven:", - "pad.toolbar.bold.title": "F\u00e9lk\u00f6v\u00e9r (Ctrl-B)", - "pad.toolbar.italic.title": "D\u0151lt (Ctrl-I)", - "pad.toolbar.underline.title": "Al\u00e1h\u00faz\u00e1s (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u00c1th\u00faz\u00e1s", - "pad.toolbar.ol.title": "Sz\u00e1mozott lista", - "pad.toolbar.ul.title": "Sz\u00e1mozatlan lista", - "pad.toolbar.indent.title": "Beh\u00faz\u00e1s n\u00f6vel\u00e9se", - "pad.toolbar.unindent.title": "Beh\u00faz\u00e1s cs\u00f6kkent\u00e9se", - "pad.toolbar.undo.title": "Vissza (Ctrl-Z)", - "pad.toolbar.redo.title": "\u00dajra (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Szerz\u0151k sz\u00ednez\u00e9s\u00e9nek kikapcsol\u00e1sa", - "pad.toolbar.import_export.title": "Import\u00e1l\u00e1s\/export\u00e1l\u00e1s k\u00fcl\u00f6nb\u00f6z\u0151 f\u00e1jlform\u00e1tumokb\u00f3l\/ba", - "pad.toolbar.timeslider.title": "Id\u0151cs\u00faszka", - "pad.toolbar.savedRevision.title": "Mentett \u00e1llapotok", - "pad.toolbar.settings.title": "Be\u00e1ll\u00edt\u00e1sok", - "pad.toolbar.embed.title": "Notesz be\u00e1gyaz\u00e1sa", - "pad.toolbar.showusers.title": "Notesz felhaszn\u00e1l\u00f3inak megmutat\u00e1sa", - "pad.colorpicker.save": "Ment\u00e9s", - "pad.colorpicker.cancel": "M\u00e9gsem", - "pad.loading": "Bet\u00f6lt\u00e9s\u2026", - "pad.passwordRequired": "Jelsz\u00f3ra van sz\u00fcks\u00e9ged ezen notesz el\u00e9r\u00e9s\u00e9hez", - "pad.permissionDenied": "Nincs enged\u00e9lyed ezen notesz el\u00e9r\u00e9s\u00e9hez", - "pad.wrongPassword": "A jelsz\u00f3 rossz volt", - "pad.settings.padSettings": "Notesz be\u00e1ll\u00edt\u00e1sai", - "pad.settings.myView": "Az \u00e9n n\u00e9zetem", - "pad.settings.stickychat": "Mindig mutasd a cseveg\u00e9s-dobozt", - "pad.settings.colorcheck": "Szerz\u0151k sz\u00ednei", - "pad.settings.linenocheck": "Sorok sz\u00e1moz\u00e1sa", - "pad.settings.fontType": "Bet\u0171t\u00edpus:", - "pad.settings.fontType.normal": "Szok\u00e1sos", - "pad.settings.fontType.monospaced": "\u00cdr\u00f3g\u00e9pes", - "pad.settings.globalView": "Glob\u00e1lis n\u00e9zet", - "pad.settings.language": "Nyelv:", - "pad.importExport.import_export": "Import\/export", - "pad.importExport.import": "Tetsz\u0151leges sz\u00f6vegf\u00e1jl vagy dokumentum felt\u00f6lt\u00e9se", - "pad.importExport.importSuccessful": "Siker!", - "pad.importExport.export": "Jelenlegi notesz export\u00e1l\u00e1sa \u00edgy:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Sima sz\u00f6veg", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document form\u00e1tum)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.modals.connected": "Kapcsol\u00f3dva.", - "pad.modals.reconnecting": "\u00dajrakapcsol\u00f3d\u00e1s a noteszhez...", - "pad.modals.forcereconnect": "\u00dajrakapcsol\u00f3d\u00e1s k\u00e9nyszer\u00edt\u00e9se", - "pad.modals.userdup.explanation": "\u00dagy t\u0171nik, ez a notesz t\u00f6bb k\u00fcl\u00f6nb\u00f6z\u0151 b\u00f6ng\u00e9sz\u0151ablakban is meg van nyitva a sz\u00e1m\u00edt\u00f3g\u00e9peden.", - "pad.modals.userdup.advice": "Kapcsol\u00f3dj \u00fajra, ha ezt az ablakot akarod haszn\u00e1lni.", - "pad.modals.unauth": "Nincs r\u00e1 jogosults\u00e1god", - "pad.modals.unauth.explanation": "A jogosults\u00e1gaid v\u00e1ltoztak, mik\u00f6zben n\u00e9zted ezt az oldalt. Pr\u00f3b\u00e1lj \u00fajrakapcsol\u00f3dni.", - "pad.modals.looping": "Kapcsolat bontva.", - "pad.modals.looping.explanation": "Nem siker\u00fclt a kommunik\u00e1ci\u00f3 a szinkroniz\u00e1ci\u00f3s szerverrel.", - "pad.modals.looping.cause": "Tal\u00e1n egy t\u00fal szigor\u00fa t\u0171zfalon vagy proxyn kereszt\u00fcl kapcsol\u00f3dt\u00e1l az internetre.", - "pad.modals.initsocketfail": "A szerver nem \u00e9rhet\u0151 el.", - "pad.modals.initsocketfail.explanation": "Nem siker\u00fclt kapcsol\u00f3dni a szinkroniz\u00e1ci\u00f3s szerverhez.", - "pad.modals.initsocketfail.cause": "Val\u00f3sz\u00edn\u0171leg a b\u00f6ng\u00e9sz\u0151ddel vagy az internetkapcsolatoddal van probl\u00e9ma.", - "pad.modals.slowcommit": "Megszakadt a kapcsolat.", - "pad.modals.slowcommit.explanation": "A szerver nem v\u00e1laszol.", - "pad.modals.slowcommit.cause": "Val\u00f3sz\u00edn\u0171leg az internetkapcsolattal van probl\u00e9ma.", - "pad.modals.deleted": "T\u00f6r\u00f6lve.", - "pad.modals.deleted.explanation": "Ez a notesz el lett t\u00e1vol\u00edtva.", - "pad.modals.disconnected": "Kapcsolat bontva.", - "pad.modals.disconnected.explanation": "A szerverrel val\u00f3 kapcsolat megsz\u0171nt.", - "pad.modals.disconnected.cause": "Lehet, hogy a szerver nem el\u00e9rhet\u0151. K\u00e9rlek, \u00e9rtes\u00edts minket, ha a probl\u00e9ma tart\u00f3san fenn\u00e1ll.", - "pad.share": "Notesz megoszt\u00e1sa", - "pad.share.readonly": "Csak olvashat\u00f3", - "pad.share.link": "Hivatkoz\u00e1s", - "pad.share.emebdcode": "URL be\u00e1gyaz\u00e1sa", - "pad.chat": "Cseveg\u00e9s", - "pad.chat.title": "A noteszhez tartoz\u00f3 cseveg\u00e9s megnyit\u00e1sa.", - "timeslider.pageTitle": "{{appTitle}} id\u0151cs\u00faszka", - "timeslider.toolbar.returnbutton": "Vissza a noteszhez", - "timeslider.toolbar.authors": "Szerz\u0151k:", - "timeslider.toolbar.authorsList": "Nincsenek szerz\u0151k", - "timeslider.exportCurrent": "Jelenlegi v\u00e1ltozat export\u00e1l\u00e1sa \u00edgy:", - "timeslider.version": "{{version}} verzi\u00f3", - "timeslider.saved": "{{year}}. {{month}} {{day}}-n elmentve", - "timeslider.dateformat": "{{year}}\/{{month}}\/{{day}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "janu\u00e1r", - "timeslider.month.february": "febru\u00e1r", - "timeslider.month.march": "m\u00e1rcius", - "timeslider.month.april": "\u00e1prilis", - "timeslider.month.may": "m\u00e1jus", - "timeslider.month.june": "j\u00fanius", - "timeslider.month.july": "j\u00falius", - "timeslider.month.august": "augusztus", - "timeslider.month.september": "szeptember", - "timeslider.month.october": "okt\u00f3ber", - "timeslider.month.november": "november", - "timeslider.month.december": "december", - "pad.userlist.entername": "Add meg a nevedet", - "pad.userlist.unnamed": "n\u00e9vtelen", - "pad.userlist.guest": "Vend\u00e9g", - "pad.userlist.deny": "Megtagad", - "pad.userlist.approve": "J\u00f3v\u00e1hagy", - "pad.impexp.importbutton": "Import\u00e1l\u00e1s most", - "pad.impexp.importing": "Import\u00e1l\u00e1s\u2026", - "pad.impexp.uploadFailed": "A felt\u00f6lt\u00e9s sikertelen, pr\u00f3b\u00e1ld meg \u00fajra", - "pad.impexp.importfailed": "Az import\u00e1l\u00e1s nem siker\u00fclt" + "@metadata": { + "authors": { + "0": "Dj", + "1": "Misibacsi", + "2": "R-Joe", + "4": "Tgr" + } + }, + "index.newPad": "Új notesz", + "index.createOpenPad": "vagy notesz létrehozása ezen a néven:", + "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", + "pad.toolbar.ol.title": "Számozott lista", + "pad.toolbar.ul.title": "Számozatlan lista", + "pad.toolbar.indent.title": "Behúzás növelése", + "pad.toolbar.unindent.title": "Behúzás csökkentése", + "pad.toolbar.undo.title": "Vissza (Ctrl-Z)", + "pad.toolbar.redo.title": "Újra (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "SzerzÅ‘k színezésének kikapcsolása", + "pad.toolbar.import_export.title": "Importálás/exportálás különbözÅ‘ fájlformátumokból/ba", + "pad.toolbar.timeslider.title": "IdÅ‘csúszka", + "pad.toolbar.savedRevision.title": "Mentett állapotok", + "pad.toolbar.settings.title": "Beállítások", + "pad.toolbar.embed.title": "Notesz beágyazása", + "pad.toolbar.showusers.title": "Notesz felhasználóinak megmutatása", + "pad.colorpicker.save": "Mentés", + "pad.colorpicker.cancel": "Mégsem", + "pad.loading": "Betöltés…", + "pad.passwordRequired": "Jelszóra van szükséged ezen notesz eléréséhez", + "pad.permissionDenied": "Nincs engedélyed ezen notesz eléréséhez", + "pad.wrongPassword": "A jelszó rossz volt", + "pad.settings.padSettings": "Notesz beállításai", + "pad.settings.myView": "Az én nézetem", + "pad.settings.stickychat": "Mindig mutasd a csevegés-dobozt", + "pad.settings.colorcheck": "SzerzÅ‘k színei", + "pad.settings.linenocheck": "Sorok számozása", + "pad.settings.fontType": "Betűtípus:", + "pad.settings.fontType.normal": "Szokásos", + "pad.settings.fontType.monospaced": "Ãrógépes", + "pad.settings.globalView": "Globális nézet", + "pad.settings.language": "Nyelv:", + "pad.importExport.import_export": "Import/export", + "pad.importExport.import": "TetszÅ‘leges szövegfájl vagy dokumentum feltöltése", + "pad.importExport.importSuccessful": "Siker!", + "pad.importExport.export": "Jelenlegi notesz exportálása így:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Sima szöveg", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document formátum)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "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.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.", + "pad.modals.unauth": "Nincs rá jogosultságod", + "pad.modals.unauth.explanation": "A jogosultságaid változtak, miközben nézted ezt az oldalt. Próbálj újrakapcsolódni.", + "pad.modals.looping.explanation": "Nem sikerült a kommunikáció a szinkronizációs szerverrel.", + "pad.modals.looping.cause": "Talán egy túl szigorú tűzfalon vagy proxyn keresztül kapcsolódtál az internetre.", + "pad.modals.initsocketfail": "A szerver nem érhetÅ‘ el.", + "pad.modals.initsocketfail.explanation": "Nem sikerült kapcsolódni a szinkronizációs szerverhez.", + "pad.modals.initsocketfail.cause": "Valószínűleg a böngészÅ‘ddel vagy az internetkapcsolatoddal van probléma.", + "pad.modals.slowcommit.explanation": "A szerver nem válaszol.", + "pad.modals.slowcommit.cause": "Valószínűleg az internetkapcsolattal van probléma.", + "pad.modals.deleted": "Törölve.", + "pad.modals.deleted.explanation": "Ez a notesz el lett távolítva.", + "pad.modals.disconnected": "Kapcsolat bontva.", + "pad.modals.disconnected.explanation": "A szerverrel való kapcsolat megszűnt.", + "pad.modals.disconnected.cause": "Lehet, hogy a szerver nem elérhetÅ‘. Kérlek, értesíts minket, ha a probléma tartósan fennáll.", + "pad.share": "Notesz megosztása", + "pad.share.readonly": "Csak olvasható", + "pad.share.link": "Hivatkozás", + "pad.share.emebdcode": "URL beágyazása", + "pad.chat": "Csevegés", + "pad.chat.title": "A noteszhez tartozó csevegés megnyitása.", + "timeslider.pageTitle": "{{appTitle}} idÅ‘csúszka", + "timeslider.toolbar.returnbutton": "Vissza a noteszhez", + "timeslider.toolbar.authors": "SzerzÅ‘k:", + "timeslider.toolbar.authorsList": "Nincsenek szerzÅ‘k", + "timeslider.exportCurrent": "Jelenlegi változat exportálása így:", + "timeslider.version": "{{version}} verzió", + "timeslider.saved": "{{year}}. {{month}} {{day}}-n elmentve", + "timeslider.dateformat": "{{year}}/{{month}}/{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "január", + "timeslider.month.february": "február", + "timeslider.month.march": "március", + "timeslider.month.april": "április", + "timeslider.month.may": "május", + "timeslider.month.june": "június", + "timeslider.month.july": "július", + "timeslider.month.august": "augusztus", + "timeslider.month.september": "szeptember", + "timeslider.month.october": "október", + "timeslider.month.november": "november", + "timeslider.month.december": "december", + "pad.userlist.entername": "Add meg a nevedet", + "pad.userlist.unnamed": "névtelen", + "pad.userlist.guest": "Vendég", + "pad.userlist.deny": "Megtagad", + "pad.userlist.approve": "Jóváhagy", + "pad.impexp.importbutton": "Importálás most", + "pad.impexp.importing": "Importálás…", + "pad.impexp.uploadFailed": "A feltöltés sikertelen, próbáld meg újra", + "pad.impexp.importfailed": "Az importálás nem sikerült" } \ No newline at end of file diff --git a/src/locales/ia.json b/src/locales/ia.json index 21b1d2919..3be72d9a5 100644 --- a/src/locales/ia.json +++ b/src/locales/ia.json @@ -1,92 +1,122 @@ { - "@metadata": { - "authors": [ - "McDutchie" - ] - }, - "index.newPad": "Nove pad", - "index.createOpenPad": "o crear\/aperir un pad con le nomine:", - "pad.toolbar.bold.title": "Grasse (Ctrl-B)", - "pad.toolbar.italic.title": "Italic (Ctrl-I)", - "pad.toolbar.underline.title": "Sublinear (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Cancellar", - "pad.toolbar.ol.title": "Lista ordinate", - "pad.toolbar.ul.title": "Lista non ordinate", - "pad.toolbar.indent.title": "Indentar", - "pad.toolbar.unindent.title": "Disindentar", - "pad.toolbar.undo.title": "Disfacer (Ctrl-Z)", - "pad.toolbar.redo.title": "Refacer (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Rader colores de autor", - "pad.toolbar.import_export.title": "Importar\/exportar in differente formatos de file", - "pad.toolbar.timeslider.title": "Glissa-tempore", - "pad.toolbar.savedRevision.title": "Versiones salveguardate", - "pad.toolbar.settings.title": "Configuration", - "pad.toolbar.embed.title": "Incorporar iste pad", - "pad.toolbar.showusers.title": "Monstrar le usatores de iste pad", - "pad.colorpicker.save": "Salveguardar", - "pad.colorpicker.cancel": "Cancellar", - "pad.loading": "Cargamento\u2026", - "pad.settings.padSettings": "Configuration del pad", - "pad.settings.myView": "Mi vista", - "pad.settings.stickychat": "Chat sempre visibile", - "pad.settings.colorcheck": "Colores de autor", - "pad.settings.linenocheck": "Numeros de linea", - "pad.settings.fontType": "Typo de litteras:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monospatial", - "pad.settings.globalView": "Vista global", - "pad.settings.language": "Lingua:", - "pad.importExport.import_export": "Importar\/Exportar", - "pad.importExport.import": "Incargar qualcunque file de texto o documento", - "pad.importExport.export": "Exportar le pad actual como:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Texto simple", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.modals.connected": "Connectite.", - "pad.modals.reconnecting": "Reconnecte a tu pad\u2026", - "pad.modals.forcereconnect": "Fortiar reconnexion", - "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.", - "pad.modals.unauth": "Non autorisate", - "pad.modals.unauth.explanation": "Tu permissiones ha cambiate durante que tu legeva iste pagina. Tenta reconnecter.", - "pad.modals.looping": "Disconnectite.", - "pad.modals.looping.explanation": "Il ha problemas de communication con le servitor de synchronisation.", - "pad.modals.looping.cause": "Il es possibile que tu connexion passa per un firewall o proxy incompatibile.", - "pad.modals.initsocketfail": "Le servitor es inattingibile.", - "pad.modals.initsocketfail.explanation": "Impossibile connecter al servitor de synchronisation.", - "pad.modals.initsocketfail.cause": "Isto es probabilemente causate per un problema con tu navigator o connexion a internet.", - "pad.modals.slowcommit": "Disconnectite.", - "pad.modals.slowcommit.explanation": "Le servitor non responde.", - "pad.modals.slowcommit.cause": "Isto pote esser causate per problemas con le connexion al rete.", - "pad.modals.deleted": "Delite.", - "pad.modals.deleted.explanation": "Iste pad ha essite removite.", - "pad.modals.disconnected": "Tu ha essite disconnectite.", - "pad.modals.disconnected.explanation": "Le connexion al servitor ha essite perdite.", - "pad.modals.disconnected.cause": "Le servitor pote esser indisponibile. Per favor notifica nos si isto continua a producer se.", - "pad.share": "Diffunder iste pad", - "pad.share.readonly": "Lectura solmente", - "pad.share.link": "Ligamine", - "pad.share.emebdcode": "Codice de incorporation", - "pad.chat": "Chat", - "pad.chat.title": "Aperir le chat pro iste pad.", - "timeslider.pageTitle": "Glissa-tempore pro {{appTitle}}", - "timeslider.toolbar.returnbutton": "Retornar al pad", - "timeslider.toolbar.authors": "Autores:", - "timeslider.toolbar.authorsList": "Nulle autor", - "timeslider.exportCurrent": "Exportar le version actual como:", - "timeslider.month.january": "januario", - "timeslider.month.february": "februario", - "timeslider.month.march": "martio", - "timeslider.month.april": "april", - "timeslider.month.may": "maio", - "timeslider.month.june": "junio", - "timeslider.month.july": "julio", - "timeslider.month.august": "augusto", - "timeslider.month.september": "septembre", - "timeslider.month.october": "octobre", - "timeslider.month.november": "novembre", - "timeslider.month.december": "decembre" + "@metadata": { + "authors": [ + "McDutchie" + ] + }, + "index.newPad": "Nove pad", + "index.createOpenPad": "o crear/aperir un pad con le nomine:", + "pad.toolbar.bold.title": "Grasse (Ctrl-B)", + "pad.toolbar.italic.title": "Italic (Ctrl-I)", + "pad.toolbar.underline.title": "Sublinear (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Cancellar", + "pad.toolbar.ol.title": "Lista ordinate", + "pad.toolbar.ul.title": "Lista non ordinate", + "pad.toolbar.indent.title": "Indentar", + "pad.toolbar.unindent.title": "Disindentar", + "pad.toolbar.undo.title": "Disfacer (Ctrl-Z)", + "pad.toolbar.redo.title": "Refacer (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Rader colores de autor", + "pad.toolbar.import_export.title": "Importar/exportar in differente formatos de file", + "pad.toolbar.timeslider.title": "Glissa-tempore", + "pad.toolbar.savedRevision.title": "Version salveguardate", + "pad.toolbar.settings.title": "Configuration", + "pad.toolbar.embed.title": "Divider e incorporar iste pad", + "pad.toolbar.showusers.title": "Monstrar le usatores de iste pad", + "pad.colorpicker.save": "Salveguardar", + "pad.colorpicker.cancel": "Cancellar", + "pad.loading": "Cargamento…", + "pad.passwordRequired": "Un contrasigno es necessari pro acceder a iste pad", + "pad.permissionDenied": "Tu non ha le permission de acceder a iste pad", + "pad.wrongPassword": "Le contrasigno es incorrecte", + "pad.settings.padSettings": "Configuration del pad", + "pad.settings.myView": "Mi vista", + "pad.settings.stickychat": "Chat sempre visibile", + "pad.settings.colorcheck": "Colores de autor", + "pad.settings.linenocheck": "Numeros de linea", + "pad.settings.rtlcheck": "Leger le contento de dextra a sinistra?", + "pad.settings.fontType": "Typo de litteras:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospatial", + "pad.settings.globalView": "Vista global", + "pad.settings.language": "Lingua:", + "pad.importExport.import_export": "Importar/Exportar", + "pad.importExport.import": "Incargar qualcunque file de texto o documento", + "pad.importExport.importSuccessful": "Succedite!", + "pad.importExport.export": "Exportar le pad actual como:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Texto simple", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Tu pote solmente importar files in formato de texto simple o HTML. Pro functionalitate de importation plus extense, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstalla AbiWord\u003C/a\u003E.", + "pad.modals.connected": "Connectite.", + "pad.modals.reconnecting": "Reconnecte a tu pad…", + "pad.modals.forcereconnect": "Fortiar reconnexion", + "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.", + "pad.modals.unauth": "Non autorisate", + "pad.modals.unauth.explanation": "Tu permissiones ha cambiate durante que tu legeva iste pagina. Tenta reconnecter.", + "pad.modals.looping.explanation": "Il ha problemas de communication con le servitor de synchronisation.", + "pad.modals.looping.cause": "Il es possibile que tu connexion passa per un firewall o proxy incompatibile.", + "pad.modals.initsocketfail": "Le servitor es inattingibile.", + "pad.modals.initsocketfail.explanation": "Impossibile connecter al servitor de synchronisation.", + "pad.modals.initsocketfail.cause": "Isto es probabilemente causate per un problema con tu navigator o connexion a internet.", + "pad.modals.slowcommit.explanation": "Le servitor non responde.", + "pad.modals.slowcommit.cause": "Isto pote esser causate per problemas con le connexion al rete.", + "pad.modals.badChangeset.explanation": "Un modification que tu ha facite ha essite classificate como incorrecte per le servitor de synchronisation.", + "pad.modals.badChangeset.cause": "Isto pote esser causate per un configuration incorrecte del servitor o per alcun altere comportamento impreviste. Per favor contacta le administrator del servicio si tu pensa que se tracta de un error. Tenta reconnecter te pro continuar a modificar.", + "pad.modals.corruptPad.explanation": "Le pad al qual tu tenta acceder es corrumpite.", + "pad.modals.corruptPad.cause": "Isto pote esser debite a un configuration incorrecte del servitor o a alcun altere comportamento impreviste. Per favor contacta le administrator del servicio.", + "pad.modals.deleted": "Delite.", + "pad.modals.deleted.explanation": "Iste pad ha essite removite.", + "pad.modals.disconnected": "Tu ha essite disconnectite.", + "pad.modals.disconnected.explanation": "Le connexion al servitor ha essite perdite.", + "pad.modals.disconnected.cause": "Le servitor pote esser indisponibile. Per favor notifica le administrator del servicio si isto continua a producer se.", + "pad.share": "Diffunder iste pad", + "pad.share.readonly": "Lectura solmente", + "pad.share.link": "Ligamine", + "pad.share.emebdcode": "Codice de incorporation", + "pad.chat": "Chat", + "pad.chat.title": "Aperir le chat pro iste pad.", + "pad.chat.loadmessages": "Cargar plus messages", + "timeslider.pageTitle": "Glissa-tempore pro {{appTitle}}", + "timeslider.toolbar.returnbutton": "Retornar al pad", + "timeslider.toolbar.authors": "Autores:", + "timeslider.toolbar.authorsList": "Nulle autor", + "timeslider.toolbar.exportlink.title": "Exportar", + "timeslider.exportCurrent": "Exportar le version actual como:", + "timeslider.version": "Version {{version}}", + "timeslider.saved": "Salveguardate le {{day}} de {{month}} {{year}}", + "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "januario", + "timeslider.month.february": "februario", + "timeslider.month.march": "martio", + "timeslider.month.april": "april", + "timeslider.month.may": "maio", + "timeslider.month.june": "junio", + "timeslider.month.july": "julio", + "timeslider.month.august": "augusto", + "timeslider.month.september": "septembre", + "timeslider.month.october": "octobre", + "timeslider.month.november": "novembre", + "timeslider.month.december": "decembre", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor, other: autores ]} sin nomine", + "pad.savedrevs.marked": "Iste version es ora marcate como version salveguardate", + "pad.userlist.entername": "Entra tu nomine", + "pad.userlist.unnamed": "sin nomine", + "pad.userlist.guest": "Invitato", + "pad.userlist.deny": "Refusar", + "pad.userlist.approve": "Approbar", + "pad.editbar.clearcolors": "Rader le colores de autor in tote le documento?", + "pad.impexp.importbutton": "Importar ora", + "pad.impexp.importing": "Importation in curso…", + "pad.impexp.confirmimport": "Le importation de un file superscribera le texto actual del pad. Es tu secur de voler continuar?", + "pad.impexp.convertFailed": "Nos non ha potite importar iste file. Per favor usa un altere formato de documento o copia e colla le texto manualmente.", + "pad.impexp.uploadFailed": "Le incargamento ha fallite. Per favor reproba.", + "pad.impexp.importfailed": "Importation fallite", + "pad.impexp.copypaste": "Per favor copia e colla", + "pad.impexp.exportdisabled": "Le exportation in formato {{type}} es disactivate. Per favor contacta le administrator del systema pro detalios." } \ No newline at end of file diff --git a/src/locales/it.json b/src/locales/it.json index 05569a322..8e98a6846 100644 --- a/src/locales/it.json +++ b/src/locales/it.json @@ -1,123 +1,125 @@ { - "@metadata": { - "authors": { - "0": "Beta16", - "1": "Gianfranco", - "2": "Muxator", - "4": "Vituzzu" - } - }, - "index.newPad": "Nuovo Pad", - "index.createOpenPad": "o creare o aprire un Pad con il nome:", - "pad.toolbar.bold.title": "Grassetto (Ctrl-B)", - "pad.toolbar.italic.title": "Corsivo (Ctrl-I)", - "pad.toolbar.underline.title": "Sottolineato (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Barrato", - "pad.toolbar.ol.title": "Elenco numerato", - "pad.toolbar.ul.title": "Elenco puntato", - "pad.toolbar.indent.title": "Rientro", - "pad.toolbar.unindent.title": "Riduci rientro", - "pad.toolbar.undo.title": "Annulla (Ctrl-Z)", - "pad.toolbar.redo.title": "Ripeti (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Elimina i colori che indicano gli autori", - "pad.toolbar.import_export.title": "Importa\/esporta da\/a diversi formati di file", - "pad.toolbar.timeslider.title": "Presentazione cronologia", - "pad.toolbar.savedRevision.title": "Revisioni salvate", - "pad.toolbar.settings.title": "Impostazioni", - "pad.toolbar.embed.title": "Incorpora questo Pad", - "pad.toolbar.showusers.title": "Visualizza gli utenti su questo Pad", - "pad.colorpicker.save": "Salva", - "pad.colorpicker.cancel": "Annulla", - "pad.loading": "Caricamento in corso\u2026", - "pad.passwordRequired": "Per accedere a questo Pad \u00e8 necessaria una password", - "pad.permissionDenied": "Non si dispone dei permessi necessari per accedere a questo Pad", - "pad.wrongPassword": "La password \u00e8 sbagliata", - "pad.settings.padSettings": "Impostazioni del Pad", - "pad.settings.myView": "Mia visualizzazione", - "pad.settings.stickychat": "Chat sempre sullo schermo", - "pad.settings.colorcheck": "Colori che indicano gli autori", - "pad.settings.linenocheck": "Numeri di riga", - "pad.settings.fontType": "Tipo di carattere:", - "pad.settings.fontType.normal": "Normale", - "pad.settings.fontType.monospaced": "A larghezza fissa", - "pad.settings.globalView": "Visualizzazione globale", - "pad.settings.language": "Lingua:", - "pad.importExport.import_export": "Importazione\/esportazione", - "pad.importExport.import": "Carica un file di testo o un documento", - "pad.importExport.importSuccessful": "Riuscito!", - "pad.importExport.export": "Esportare il Pad corrente come:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Solo testo", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u00c8 possibile importare solo i formati di testo semplice o HTML. Per metodi pi\u00f9 avanzati di importazione installare Abiword<\/a>.", - "pad.modals.connected": "Connesso.", - "pad.modals.reconnecting": "Riconnessione al pad in corso...", - "pad.modals.forcereconnect": "Forza la riconnessione", - "pad.modals.userdup": "Aperto in un'altra finestra", - "pad.modals.userdup.explanation": "Questo Pad sembra essere aperto in pi\u00f9 di una finestra del browser su questo computer.", - "pad.modals.userdup.advice": "Riconnettiti per utilizzare invece questa finestra.", - "pad.modals.unauth": "Non autorizzato", - "pad.modals.unauth.explanation": "Le tue autorizzazioni sono state modificate durante la visualizzazione di questa pagina. Prova a riconnetterti.", - "pad.modals.looping": "Disconnesso.", - "pad.modals.looping.explanation": "Ci sono problemi di comunicazione con il server di sincronizzazione.", - "pad.modals.looping.cause": "Forse sei connesso attraverso un firewall o un server proxy non compatibili.", - "pad.modals.initsocketfail": "Il server non \u00e8 raggiungibile.", - "pad.modals.initsocketfail.explanation": "Impossibile connettersi al server di sincronizzazione.", - "pad.modals.initsocketfail.cause": "Questo probabilmente \u00e8 dovuto a un problema con il tuo browser o con la tua connessione a internet.", - "pad.modals.slowcommit": "Disconnesso.", - "pad.modals.slowcommit.explanation": "Il server non risponde.", - "pad.modals.slowcommit.cause": "Questo potrebbe essere dovuto a problemi con la connettivit\u00e0 di rete.", - "pad.modals.deleted": "Cancellato.", - "pad.modals.deleted.explanation": "Questo Pad \u00e8 stato rimosso.", - "pad.modals.disconnected": "Sei stato disconnesso.", - "pad.modals.disconnected.explanation": "La connessione al server \u00e8 stata persa", - "pad.modals.disconnected.cause": "Il server potrebbe essere non disponibile. Per favore, fateci sapere se il problema persiste.", - "pad.share": "Condividi questo Pad", - "pad.share.readonly": "Sola lettura", - "pad.share.link": "Link", - "pad.share.emebdcode": "Incorpora URL", - "pad.chat": "Chat", - "pad.chat.title": "Apri la chat per questo Pad.", - "pad.chat.loadmessages": "Carica altri messaggi", - "timeslider.pageTitle": "Cronologia {{appTitle}}", - "timeslider.toolbar.returnbutton": "Ritorna al Pad", - "timeslider.toolbar.authors": "Autori:", - "timeslider.toolbar.authorsList": "Nessun autore", - "timeslider.toolbar.exportlink.title": "esporta", - "timeslider.exportCurrent": "Esporta la versione corrente come:", - "timeslider.version": "Versione {{version}}", - "timeslider.saved": "Salvato {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "gennaio", - "timeslider.month.february": "febbraio", - "timeslider.month.march": "marzo", - "timeslider.month.april": "aprile", - "timeslider.month.may": "maggio", - "timeslider.month.june": "giugno", - "timeslider.month.july": "luglio", - "timeslider.month.august": "agosto", - "timeslider.month.september": "settembre", - "timeslider.month.october": "ottobre", - "timeslider.month.november": "novembre", - "timeslider.month.december": "dicembre", - "timeslider.unnamedauthor": "{{num}} autore senza nome", - "timeslider.unnamedauthors": "{{num}} autori senza nome", - "pad.savedrevs.marked": "Questa revisione \u00e8 ora contrassegnata come una versione salvata", - "pad.userlist.entername": "Inserisci il tuo nome", - "pad.userlist.unnamed": "senza nome", - "pad.userlist.guest": "Ospite", - "pad.userlist.deny": "Nega", - "pad.userlist.approve": "Approva", - "pad.editbar.clearcolors": "Eliminare i colori degli autori sull'intero documento?", - "pad.impexp.importbutton": "Importa ora", - "pad.impexp.importing": "Importazione in corso...", - "pad.impexp.confirmimport": "L'importazione del file sovrascriver\u00e0 il testo attuale del Pad. Sei sicuro di voler procedere?", - "pad.impexp.convertFailed": "Non \u00e8 stato possibile importare questo file. Utilizzare un formato differente o copiare ed incollare a mano", - "pad.impexp.uploadFailed": "Caricamento non riuscito, riprovare", - "pad.impexp.importfailed": "Importazione fallita", - "pad.impexp.copypaste": "Si prega di copiare e incollare", - "pad.impexp.exportdisabled": "L'esportazione come {{type}} \u00e8 disabilitata. Contattare l'amministratore per i dettagli." + "@metadata": { + "authors": { + "0": "Beta16", + "1": "Gianfranco", + "2": "Muxator", + "4": "Vituzzu" + } + }, + "index.newPad": "Nuovo Pad", + "index.createOpenPad": "o creare o aprire un Pad con il nome:", + "pad.toolbar.bold.title": "Grassetto (Ctrl-B)", + "pad.toolbar.italic.title": "Corsivo (Ctrl-I)", + "pad.toolbar.underline.title": "Sottolineato (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Barrato", + "pad.toolbar.ol.title": "Elenco numerato", + "pad.toolbar.ul.title": "Elenco puntato", + "pad.toolbar.indent.title": "Rientro", + "pad.toolbar.unindent.title": "Riduci rientro", + "pad.toolbar.undo.title": "Annulla (Ctrl-Z)", + "pad.toolbar.redo.title": "Ripeti (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Elimina i colori che indicano gli autori", + "pad.toolbar.import_export.title": "Importa/esporta da/a diversi formati di file", + "pad.toolbar.timeslider.title": "Presentazione cronologia", + "pad.toolbar.savedRevision.title": "Versione salvata", + "pad.toolbar.settings.title": "Impostazioni", + "pad.toolbar.embed.title": "Condividi ed incorpora questo Pad", + "pad.toolbar.showusers.title": "Visualizza gli utenti su questo Pad", + "pad.colorpicker.save": "Salva", + "pad.colorpicker.cancel": "Annulla", + "pad.loading": "Caricamento in corso…", + "pad.passwordRequired": "Per accedere a questo Pad è necessaria una password", + "pad.permissionDenied": "Non si dispone dei permessi necessari per accedere a questo Pad", + "pad.wrongPassword": "La password è sbagliata", + "pad.settings.padSettings": "Impostazioni del Pad", + "pad.settings.myView": "Mia visualizzazione", + "pad.settings.stickychat": "Chat sempre sullo schermo", + "pad.settings.colorcheck": "Colori che indicano gli autori", + "pad.settings.linenocheck": "Numeri di riga", + "pad.settings.rtlcheck": "Leggere il contenuto da destra a sinistra?", + "pad.settings.fontType": "Tipo di carattere:", + "pad.settings.fontType.normal": "Normale", + "pad.settings.fontType.monospaced": "A larghezza fissa", + "pad.settings.globalView": "Visualizzazione globale", + "pad.settings.language": "Lingua:", + "pad.importExport.import_export": "Importazione/esportazione", + "pad.importExport.import": "Carica un file di testo o un documento", + "pad.importExport.importSuccessful": "Riuscito!", + "pad.importExport.export": "Esportare il Pad corrente come:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Solo testo", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "È possibile importare solo i formati di testo semplice o HTML. Per metodi più avanzati di importazione \u003Ca 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\u003Einstallare Abiword\u003C/a\u003E.", + "pad.modals.connected": "Connesso.", + "pad.modals.reconnecting": "Riconnessione al pad in corso...", + "pad.modals.forcereconnect": "Forza la riconnessione", + "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.", + "pad.modals.unauth": "Non autorizzato", + "pad.modals.unauth.explanation": "Le tue autorizzazioni sono state modificate durante la visualizzazione di questa pagina. Prova a riconnetterti.", + "pad.modals.looping.explanation": "Ci sono problemi di comunicazione con il server di sincronizzazione.", + "pad.modals.looping.cause": "Forse sei connesso attraverso un firewall o un server proxy non compatibili.", + "pad.modals.initsocketfail": "Il server non è raggiungibile.", + "pad.modals.initsocketfail.explanation": "Impossibile connettersi al server di sincronizzazione.", + "pad.modals.initsocketfail.cause": "Questo probabilmente è dovuto a un problema con il tuo browser o con la tua connessione a internet.", + "pad.modals.slowcommit.explanation": "Il server non risponde.", + "pad.modals.slowcommit.cause": "Questo potrebbe essere dovuto a problemi con la connettività di rete.", + "pad.modals.badChangeset.explanation": "Una modifica che hai fatto è stata considerata illegale dal server di sincronizzazione.", + "pad.modals.badChangeset.cause": "Ciò potrebbe essere causato da una errata configurazione del server o qualche altro comportamento imprevisto. Si prega di contattare l'amministratore del servizio, se si ritiene che questo sia un errore. Prova a riconnetterti per tentare di continuare a modificare.", + "pad.modals.corruptPad.explanation": "Il pad a cui stai tentando di accedere è danneggiato.", + "pad.modals.corruptPad.cause": "Ciò potrebbe essere causato da una errata configurazione del server o qualche altro comportamento imprevisto. Si prega di contattare l'amministratore del servizio.", + "pad.modals.deleted": "Cancellato.", + "pad.modals.deleted.explanation": "Questo Pad è stato rimosso.", + "pad.modals.disconnected": "Sei stato disconnesso.", + "pad.modals.disconnected.explanation": "La connessione al server è stata persa", + "pad.modals.disconnected.cause": "Il server potrebbe essere non disponibile. Informa l'amministrazione del servizio se il problema persiste.", + "pad.share": "Condividi questo Pad", + "pad.share.readonly": "Sola lettura", + "pad.share.link": "Link", + "pad.share.emebdcode": "Incorpora URL", + "pad.chat": "Chat", + "pad.chat.title": "Apri la chat per questo Pad.", + "pad.chat.loadmessages": "Carica altri messaggi", + "timeslider.pageTitle": "Cronologia {{appTitle}}", + "timeslider.toolbar.returnbutton": "Ritorna al Pad", + "timeslider.toolbar.authors": "Autori:", + "timeslider.toolbar.authorsList": "Nessun autore", + "timeslider.toolbar.exportlink.title": "esporta", + "timeslider.exportCurrent": "Esporta la versione corrente come:", + "timeslider.version": "Versione {{version}}", + "timeslider.saved": "Salvato {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "gennaio", + "timeslider.month.february": "febbraio", + "timeslider.month.march": "marzo", + "timeslider.month.april": "aprile", + "timeslider.month.may": "maggio", + "timeslider.month.june": "giugno", + "timeslider.month.july": "luglio", + "timeslider.month.august": "agosto", + "timeslider.month.september": "settembre", + "timeslider.month.october": "ottobre", + "timeslider.month.november": "novembre", + "timeslider.month.december": "dicembre", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autore, other: autori ]} senza nome", + "pad.savedrevs.marked": "Questa revisione è ora contrassegnata come una versione salvata", + "pad.userlist.entername": "Inserisci il tuo nome", + "pad.userlist.unnamed": "senza nome", + "pad.userlist.guest": "Ospite", + "pad.userlist.deny": "Nega", + "pad.userlist.approve": "Approva", + "pad.editbar.clearcolors": "Eliminare i colori degli autori sull'intero documento?", + "pad.impexp.importbutton": "Importa ora", + "pad.impexp.importing": "Importazione in corso...", + "pad.impexp.confirmimport": "L'importazione del file sovrascriverà il testo attuale del Pad. Sei sicuro di voler procedere?", + "pad.impexp.convertFailed": "Non è stato possibile importare questo file. Utilizzare un formato differente o copiare ed incollare a mano", + "pad.impexp.uploadFailed": "Caricamento non riuscito, riprovare", + "pad.impexp.importfailed": "Importazione fallita", + "pad.impexp.copypaste": "Si prega di copiare e incollare", + "pad.impexp.exportdisabled": "L'esportazione come {{type}} è disabilitata. Contattare l'amministratore per i dettagli." } \ No newline at end of file diff --git a/src/locales/ja.json b/src/locales/ja.json index c2f6da27b..b8aeb0797 100644 --- a/src/locales/ja.json +++ b/src/locales/ja.json @@ -1,120 +1,122 @@ { - "@metadata": { - "authors": [ - "Shirayuki" - ] - }, - "index.newPad": "\u65b0\u898f\u4f5c\u6210", - "index.createOpenPad": "\u307e\u305f\u306f\u4f5c\u6210\/\u7de8\u96c6\u3059\u308b\u30d1\u30c3\u30c9\u540d\u3092\u5165\u529b:", - "pad.toolbar.bold.title": "\u592a\u5b57 (Ctrl-B)", - "pad.toolbar.italic.title": "\u659c\u4f53 (Ctrl-I)", - "pad.toolbar.underline.title": "\u4e0b\u7dda (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u53d6\u308a\u6d88\u3057\u7dda", - "pad.toolbar.ol.title": "\u756a\u53f7\u4ed8\u304d\u30ea\u30b9\u30c8", - "pad.toolbar.ul.title": "\u756a\u53f7\u306a\u3057\u30ea\u30b9\u30c8", - "pad.toolbar.indent.title": "\u30a4\u30f3\u30c7\u30f3\u30c8", - "pad.toolbar.unindent.title": "\u30a4\u30f3\u30c7\u30f3\u30c8\u89e3\u9664", - "pad.toolbar.undo.title": "\u5143\u306b\u623b\u3059 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u3084\u308a\u76f4\u3057 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u4f5c\u8005\u306e\u8272\u5206\u3051\u3092\u6d88\u53bb", - "pad.toolbar.import_export.title": "\u4ed6\u306e\u5f62\u5f0f\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u30a4\u30f3\u30dd\u30fc\u30c8\/\u30a8\u30af\u30b9\u30dd\u30fc\u30c8", - "pad.toolbar.timeslider.title": "\u30bf\u30a4\u30e0\u30b9\u30e9\u30a4\u30c0\u30fc", - "pad.toolbar.savedRevision.title": "\u4fdd\u5b58\u6e08\u307f\u306e\u7248", - "pad.toolbar.settings.title": "\u8a2d\u5b9a", - "pad.toolbar.embed.title": "\u3053\u306e\u30d1\u30c3\u30c9\u3092\u57cb\u3081\u8fbc\u3080", - "pad.toolbar.showusers.title": "\u3053\u306e\u30d1\u30c3\u30c9\u306e\u30e6\u30fc\u30b6\u30fc\u3092\u8868\u793a", - "pad.colorpicker.save": "\u4fdd\u5b58", - "pad.colorpicker.cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb", - "pad.loading": "\u8aad\u307f\u8fbc\u307f\u4e2d...", - "pad.passwordRequired": "\u3053\u306e\u30d1\u30c3\u30c9\u306b\u30a2\u30af\u30bb\u30b9\u3059\u308b\u306b\u306f\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u5fc5\u8981\u3067\u3059", - "pad.permissionDenied": "\u3042\u306a\u305f\u306b\u306f\u3053\u306e\u30d1\u30c3\u30c9\u3078\u306e\u30a2\u30af\u30bb\u30b9\u8a31\u53ef\u304c\u3042\u308a\u307e\u305b\u3093", - "pad.wrongPassword": "\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059", - "pad.settings.padSettings": "\u30d1\u30c3\u30c9\u306e\u8a2d\u5b9a", - "pad.settings.myView": "\u500b\u4eba\u8a2d\u5b9a", - "pad.settings.stickychat": "\u753b\u9762\u306b\u30c1\u30e3\u30c3\u30c8\u3092\u5e38\u306b\u8868\u793a", - "pad.settings.colorcheck": "\u4f5c\u8005\u306e\u8272\u5206\u3051", - "pad.settings.linenocheck": "\u884c\u756a\u53f7", - "pad.settings.fontType": "\u30d5\u30a9\u30f3\u30c8\u306e\u7a2e\u985e:", - "pad.settings.fontType.normal": "\u901a\u5e38", - "pad.settings.fontType.monospaced": "\u56fa\u5b9a\u5e45", - "pad.settings.globalView": "\u30b0\u30ed\u30fc\u30d0\u30eb\u8a2d\u5b9a", - "pad.settings.language": "\u8a00\u8a9e:", - "pad.importExport.import_export": "\u30a4\u30f3\u30dd\u30fc\u30c8\/\u30a8\u30af\u30b9\u30dd\u30fc\u30c8", - "pad.importExport.import": "\u3042\u3089\u3086\u308b\u30c6\u30ad\u30b9\u30c8\u30d5\u30a1\u30a4\u30eb\u3084\u6587\u66f8\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059", - "pad.importExport.importSuccessful": "\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002", - "pad.importExport.export": "\u73fe\u5728\u306e\u30d1\u30c3\u30c9\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5f62\u5f0f:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u307e\u305f\u306f HTML \u30d5\u30a1\u30a4\u30eb\u304b\u3089\u306e\u307f\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u3059\u3002\u3088\u308a\u9ad8\u5ea6\u306a\u30a4\u30f3\u30dd\u30fc\u30c8\u6a5f\u80fd\u3092\u4f7f\u7528\u3059\u308b\u306b\u306f\u3001abiword \u3092\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb<\/a>\u3057\u3066\u304f\u3060\u3055\u3044\u3002", - "pad.modals.connected": "\u63a5\u7d9a\u3055\u308c\u307e\u3057\u305f\u3002", - "pad.modals.reconnecting": "\u30d1\u30c3\u30c9\u306b\u518d\u63a5\u7d9a\u4e2d...", - "pad.modals.forcereconnect": "\u5f37\u5236\u7684\u306b\u518d\u63a5\u7d9a", - "pad.modals.userdup": "\u5225\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u958b\u304b\u308c\u3066\u3044\u307e\u3059", - "pad.modals.userdup.explanation": "\u3053\u306e\u30b3\u30f3\u30d4\u30e5\u30fc\u30bf\u30fc\u306e\u8907\u6570\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u3001\u3053\u306e\u30d1\u30c3\u30c9\u3092\u958b\u3044\u3066\u3044\u308b\u3088\u3046\u3067\u3059\u3002", - "pad.modals.userdup.advice": "\u4ee3\u308f\u308a\u306b\u3053\u306e\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u518d\u63a5\u7d9a\u3057\u307e\u3059\u3002", - "pad.modals.unauth": "\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093", - "pad.modals.unauth.explanation": "\u3053\u306e\u30da\u30fc\u30b8\u306e\u95b2\u89a7\u4e2d\u306b\u3042\u306a\u305f\u306e\u6a29\u9650\u304c\u5909\u66f4\u3055\u308c\u307e\u3057\u305f\u3002\u518d\u63a5\u7d9a\u3092\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002", - "pad.modals.looping": "\u5207\u65ad\u3055\u308c\u307e\u3057\u305f\u3002", - "pad.modals.looping.explanation": "\u540c\u671f\u30b5\u30fc\u30d0\u30fc\u3068\u306e\u901a\u4fe1\u306b\u554f\u984c\u70b9\u304c\u3042\u308a\u307e\u3059\u3002", - "pad.modals.looping.cause": "\u3054\u4f7f\u7528\u4e2d\u306e\u30d5\u30a1\u30a4\u30a2\u30a6\u30a9\u30fc\u30eb\u307e\u305f\u306f\u30d7\u30ed\u30ad\u30b7\u3068\u306f\u4e92\u63db\u6027\u304c\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002", - "pad.modals.initsocketfail": "\u30b5\u30fc\u30d0\u30fc\u306b\u5230\u9054\u3067\u304d\u307e\u305b\u3093\u3002", - "pad.modals.initsocketfail.explanation": "\u540c\u671f\u30b5\u30fc\u30d0\u30fc\u306b\u63a5\u7d9a\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002", - "pad.modals.initsocketfail.cause": "\u3053\u308c\u306f\u3054\u4f7f\u7528\u4e2d\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u3084\u30a4\u30f3\u30bf\u30fc\u30cd\u30c3\u30c8\u63a5\u7d9a\u306e\u554f\u984c\u304c\u539f\u56e0\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002", - "pad.modals.slowcommit": "\u5207\u65ad\u3055\u308c\u307e\u3057\u305f\u3002", - "pad.modals.slowcommit.explanation": "\u30b5\u30fc\u30d0\u30fc\u304c\u5fdc\u7b54\u3057\u307e\u305b\u3093\u3002", - "pad.modals.slowcommit.cause": "\u3053\u308c\u306f\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u63a5\u7d9a\u306e\u554f\u984c\u304c\u539f\u56e0\u3067\u3042\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002", - "pad.modals.deleted": "\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002", - "pad.modals.deleted.explanation": "\u3053\u306e\u30d1\u30c3\u30c9\u306f\u524a\u9664\u3055\u308c\u307e\u3057\u305f\u3002", - "pad.modals.disconnected": "\u5207\u65ad\u3055\u308c\u307e\u3057\u305f\u3002", - "pad.modals.disconnected.explanation": "\u30b5\u30fc\u30d0\u30fc\u3068\u306e\u63a5\u7d9a\u304c\u5931\u308f\u308c\u307e\u3057\u305f", - "pad.modals.disconnected.cause": "\u30b5\u30fc\u30d0\u30fc\u306b\u5230\u9054\u3067\u304d\u306a\u3044\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u306e\u554f\u984c\u304c\u89e3\u6c7a\u3057\u306a\u3044\u5834\u5408\u306f\u304a\u77e5\u3089\u305b\u304f\u3060\u3055\u3044\u3002", - "pad.share": "\u3053\u306e\u30d1\u30c3\u30c9\u3092\u5171\u6709", - "pad.share.readonly": "\u8aad\u307f\u53d6\u308a\u5c02\u7528", - "pad.share.link": "\u30ea\u30f3\u30af", - "pad.share.emebdcode": "\u57cb\u3081\u8fbc\u307f\u7528 URL", - "pad.chat": "\u30c1\u30e3\u30c3\u30c8", - "pad.chat.title": "\u3053\u306e\u30d1\u30c3\u30c9\u306e\u30c1\u30e3\u30c3\u30c8\u3092\u958b\u304d\u307e\u3059\u3002", - "pad.chat.loadmessages": "\u305d\u306e\u4ed6\u306e\u30e1\u30c3\u30bb\u30fc\u30b8\u3092\u8aad\u307f\u8fbc\u3080", - "timeslider.pageTitle": "{{appTitle}} \u30bf\u30a4\u30e0\u30b9\u30e9\u30a4\u30c0\u30fc", - "timeslider.toolbar.returnbutton": "\u30d1\u30c3\u30c9\u306b\u623b\u308b", - "timeslider.toolbar.authors": "\u4f5c\u8005:", - "timeslider.toolbar.authorsList": "\u4f5c\u8005\u306a\u3057", - "timeslider.toolbar.exportlink.title": "\u30a8\u30af\u30b9\u30dd\u30fc\u30c8", - "timeslider.exportCurrent": "\u73fe\u5728\u306e\u7248\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3059\u308b\u5f62\u5f0f:", - "timeslider.version": "\u30d0\u30fc\u30b8\u30e7\u30f3 {{version}}", - "timeslider.saved": "| {{year}}\u5e74{{month}}{{day}}\u65e5\u306b\u4fdd\u5b58", - "timeslider.dateformat": "{{year}}\u5e74{{month}}{{day}}\u65e5 {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "1\u6708", - "timeslider.month.february": "2\u6708", - "timeslider.month.march": "3\u6708", - "timeslider.month.april": "4\u6708", - "timeslider.month.may": "5\u6708", - "timeslider.month.june": "6\u6708", - "timeslider.month.july": "7\u6708", - "timeslider.month.august": "8\u6708", - "timeslider.month.september": "9\u6708", - "timeslider.month.october": "10\u6708", - "timeslider.month.november": "11\u6708", - "timeslider.month.december": "12\u6708", - "timeslider.unnamedauthor": "{{num}} \u4eba\u306e\u533f\u540d\u306e\u4f5c\u8005", - "timeslider.unnamedauthors": "{{num}} \u4eba\u306e\u533f\u540d\u306e\u4f5c\u8005", - "pad.savedrevs.marked": "\u3053\u306e\u7248\u3092\u3001\u4fdd\u5b58\u6e08\u307f\u306e\u7248\u3068\u3057\u3066\u30de\u30fc\u30af\u3057\u307e\u3057\u305f\u3002", - "pad.userlist.entername": "\u540d\u524d\u3092\u5165\u529b", - "pad.userlist.unnamed": "\u540d\u524d\u306a\u3057", - "pad.userlist.guest": "\u30b2\u30b9\u30c8", - "pad.userlist.deny": "\u62d2\u5426", - "pad.userlist.approve": "\u627f\u8a8d", - "pad.editbar.clearcolors": "\u6587\u66f8\u5168\u4f53\u306e\u4f5c\u8005\u306e\u8272\u5206\u3051\u3092\u6d88\u53bb\u3057\u307e\u3059\u304b?", - "pad.impexp.importbutton": "\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b", - "pad.impexp.importing": "\u30a4\u30f3\u30dd\u30fc\u30c8\u4e2d...", - "pad.impexp.confirmimport": "\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u3068\u3001\u30d1\u30c3\u30c9\u306e\u73fe\u5728\u306e\u30c6\u30ad\u30b9\u30c8\u304c\u4e0a\u66f8\u304d\u3055\u308c\u307e\u3059\u3002\u672c\u5f53\u306b\u7d9a\u884c\u3057\u307e\u3059\u304b?", - "pad.impexp.convertFailed": "\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3067\u304d\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u4ed6\u306e\u6587\u66f8\u5f62\u5f0f\u3092\u4f7f\u7528\u3059\u308b\u304b\u3001\u624b\u4f5c\u696d\u3067\u30b3\u30d4\u30fc & \u30da\u30fc\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044", - "pad.impexp.uploadFailed": "\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044", - "pad.impexp.importfailed": "\u30a4\u30f3\u30dd\u30fc\u30c8\u306b\u5931\u6557\u3057\u307e\u3057\u305f", - "pad.impexp.copypaste": "\u30b3\u30d4\u30fc & \u30da\u30fc\u30b9\u30c8\u3057\u3066\u304f\u3060\u3055\u3044", - "pad.impexp.exportdisabled": "{{type}}\u5f62\u5f0f\u3067\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u306f\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002\u8a73\u7d30\u306f\u30b7\u30b9\u30c6\u30e0\u7ba1\u7406\u8005\u306b\u304a\u554f\u3044\u5408\u308f\u305b\u304f\u3060\u3055\u3044\u3002" + "@metadata": { + "authors": [ + "Shirayuki" + ] + }, + "index.newPad": "æ–°è¦ä½œæˆ", + "index.createOpenPad": "ã¾ãŸã¯ä½œæˆ/編集ã™ã‚‹ãƒ‘ッドåを入力:", + "pad.toolbar.bold.title": "太字 (Ctrl-B)", + "pad.toolbar.italic.title": "斜体 (Ctrl-I)", + "pad.toolbar.underline.title": "下線 (Ctrl-U)", + "pad.toolbar.strikethrough.title": "å–り消ã—ç·š", + "pad.toolbar.ol.title": "番å·ä»˜ãリスト", + "pad.toolbar.ul.title": "番å·ãªã—リスト", + "pad.toolbar.indent.title": "インデント (Tab)", + "pad.toolbar.unindent.title": "インデント解除 (Shift+Tab)", + "pad.toolbar.undo.title": "å…ƒã«æˆ»ã™ (Ctrl-Z)", + "pad.toolbar.redo.title": "やり直㗠(Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "作者ã®è‰²åˆ†ã‘を消去", + "pad.toolbar.import_export.title": "ä»–ã®å½¢å¼ã®ãƒ•ァイルã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆ/エクスãƒãƒ¼ãƒˆ", + "pad.toolbar.timeslider.title": "タイムスライダー", + "pad.toolbar.savedRevision.title": "版をä¿å­˜", + "pad.toolbar.settings.title": "設定", + "pad.toolbar.embed.title": "ã“ã®ãƒ‘ッドを共有ã™ã‚‹/埋ã‚込む", + "pad.toolbar.showusers.title": "ã“ã®ãƒ‘ッドã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚’表示", + "pad.colorpicker.save": "ä¿å­˜", + "pad.colorpicker.cancel": "キャンセル", + "pad.loading": "読ã¿è¾¼ã¿ä¸­...", + "pad.passwordRequired": "ã“ã®ãƒ‘ッドã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ã«ã¯ãƒ‘スワードãŒå¿…è¦ã§ã™", + "pad.permissionDenied": "ã‚ãªãŸã«ã¯ã“ã®ãƒ‘ッドã¸ã®ã‚¢ã‚¯ã‚»ã‚¹è¨±å¯ãŒã‚りã¾ã›ã‚“", + "pad.wrongPassword": "パスワードãŒé–“é•ã£ã¦ã„ã¾ã™", + "pad.settings.padSettings": "パッドã®è¨­å®š", + "pad.settings.myView": "個人設定", + "pad.settings.stickychat": "ç”»é¢ã«ãƒãƒ£ãƒƒãƒˆã‚’常ã«è¡¨ç¤º", + "pad.settings.colorcheck": "作者ã®è‰²åˆ†ã‘", + "pad.settings.linenocheck": "行番å·", + "pad.settings.rtlcheck": "峿¨ªæ›¸ãã«ã™ã‚‹", + "pad.settings.fontType": "フォントã®ç¨®é¡ž:", + "pad.settings.fontType.normal": "通常", + "pad.settings.fontType.monospaced": "固定幅", + "pad.settings.globalView": "グローãƒãƒ«è¨­å®š", + "pad.settings.language": "言語:", + "pad.importExport.import_export": "インãƒãƒ¼ãƒˆ/エクスãƒãƒ¼ãƒˆ", + "pad.importExport.import": "ã‚らゆるテキストファイルや文書をアップロードã§ãã¾ã™", + "pad.importExport.importSuccessful": "完了ã—ã¾ã—ãŸã€‚", + "pad.importExport.export": "ç¾åœ¨ã®ãƒ‘ッドをエクスãƒãƒ¼ãƒˆã™ã‚‹å½¢å¼:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "プレーンテキスト", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "プレーンテキストã¾ãŸã¯ HTML ファイルã‹ã‚‰ã®ã¿ã‚¤ãƒ³ãƒãƒ¼ãƒˆã§ãã¾ã™ã€‚より高度ãªã‚¤ãƒ³ãƒãƒ¼ãƒˆæ©Ÿèƒ½ã‚’使用ã™ã‚‹ã«ã¯ã€\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword をインストール\u003C/a\u003Eã—ã¦ãã ã•ã„。", + "pad.modals.connected": "接続ã•れã¾ã—ãŸã€‚", + "pad.modals.reconnecting": "パッドã«å†æŽ¥ç¶šä¸­...", + "pad.modals.forcereconnect": "強制的ã«å†æŽ¥ç¶š", + "pad.modals.userdup": "別ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã§é–‹ã‹ã‚Œã¦ã„ã¾ã™", + "pad.modals.userdup.explanation": "ã“ã®ã‚³ãƒ³ãƒ”ューターã®è¤‡æ•°ã®ãƒ–ラウザーウィンドウã§ã€ã“ã®ãƒ‘ッドを開ã„ã¦ã„るよã†ã§ã™ã€‚", + "pad.modals.userdup.advice": "代ã‚りã«ã“ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã‚’å†æŽ¥ç¶šã—ã¾ã™ã€‚", + "pad.modals.unauth": "権é™ãŒã‚りã¾ã›ã‚“", + "pad.modals.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": "| {{year}}å¹´{{month}}{{day}}æ—¥ã«ä¿å­˜", + "timeslider.dateformat": "{{year}}å¹´{{month}}月{{day}}æ—¥ {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "1月", + "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": "8月", + "timeslider.month.september": "9月", + "timeslider.month.october": "10月", + "timeslider.month.november": "11月", + "timeslider.month.december": "12月", + "timeslider.unnamedauthors": "{{num}} 人ã®åŒ¿åã®{[plural(num) other: 作者 ]}", + "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.confirmimport": "ファイルをインãƒãƒ¼ãƒˆã™ã‚‹ã¨ã€ãƒ‘ッドã®ç¾åœ¨ã®ãƒ†ã‚­ã‚¹ãƒˆãŒä¸Šæ›¸ãã•れã¾ã™ã€‚本当ã«ç¶šè¡Œã—ã¾ã™ã‹?", + "pad.impexp.convertFailed": "ã“ã®ãƒ•ァイルをインãƒãƒ¼ãƒˆã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ä»–ã®æ–‡æ›¸å½¢å¼ã‚’使用ã™ã‚‹ã‹ã€æ‰‹ä½œæ¥­ã§ã‚³ãƒ”ー \u0026 ペーストã—ã¦ãã ã•ã„", + "pad.impexp.uploadFailed": "アップロードã«å¤±æ•—ã—ã¾ã—ãŸã€‚ã‚‚ã†ä¸€åº¦ãŠè©¦ã—ãã ã•ã„", + "pad.impexp.importfailed": "インãƒãƒ¼ãƒˆã«å¤±æ•—ã—ã¾ã—ãŸ", + "pad.impexp.copypaste": "コピー \u0026 ペーストã—ã¦ãã ã•ã„", + "pad.impexp.exportdisabled": "{{type}}å½¢å¼ã§ã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆã¯ç„¡åйã«ãªã£ã¦ã„ã¾ã™ã€‚詳細ã¯ã‚·ã‚¹ãƒ†ãƒ ç®¡ç†è€…ã«ãŠå•ã„åˆã‚ã›ãã ã•ã„。" } \ No newline at end of file diff --git a/src/locales/km.json b/src/locales/km.json new file mode 100644 index 000000000..700ae1990 --- /dev/null +++ b/src/locales/km.json @@ -0,0 +1,52 @@ +{ + "@metadata": { + "authors": [ + "ážœáŸážŽážáž¶ážšáž·áž‘្ធ" + ] + }, + "index.newPad": "áž•áŸážážáŸ’មី", + "index.createOpenPad": "ឬបង្កើáž/បើកផáŸážážŠáŸ‚លមានឈ្មោះ៖", + "pad.toolbar.bold.title": "ដិហ(Ctrl-B)", + "pad.toolbar.italic.title": "ទ្រáŸáž (Ctrl-I)", + "pad.toolbar.underline.title": "គូសបន្ទាážáŸ‹ (Ctrl-U)", + "pad.toolbar.strikethrough.title": "ឆូážáž…ោល", + "pad.toolbar.ol.title": "បញ្ជីážáž¶áž˜ážáž˜áŸ’រៀប", + "pad.toolbar.ul.title": "បញ្ជីមិនážáž¶áž˜ážáž˜áŸ’រៀប", + "pad.toolbar.indent.title": "ážáž·ážáž…ូលក្នុង", + "pad.toolbar.unindent.title": "ážáž·ážáž…áŸáž‰áž€áŸ’រៅ", + "pad.toolbar.undo.title": "អាន់ឌូ (Ctrl-Z)", + "pad.toolbar.redo.title": "រីឌូ (Ctrl-Y)", + "pad.toolbar.import_export.title": "នាំចូល/នាំចáŸáž‰ ពី/ទៅប្រភáŸáž‘ឯកសារផ្សáŸáž„ទៀáž", + "pad.toolbar.settings.title": "ការកំណážáŸ‹â€‹", + "pad.colorpicker.save": "រក្សាទុក", + "pad.colorpicker.cancel": "បោះបង់", + "pad.loading": "កំពុងផ្ទុក…", + "pad.settings.fontType": "ប្រភáŸáž‘ពុម្ពអក្សរ៖", + "pad.settings.fontType.normal": "ធម្មážáž¶", + "pad.settings.language": "ភាសា៖", + "pad.importExport.import_export": "នាំចូល/នាំចáŸáž‰", + "pad.importExport.importSuccessful": "ដោយជោគជáŸáž™!", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Plain text", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "បាន​ážáž—្ជាប់​។", + "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.guest": "ភ្ញៀវ", + "pad.impexp.importbutton": "នាំចូលឥឡូវនáŸáŸ‡", + "pad.impexp.importing": "កំពុងនាំចូល​..." +} \ No newline at end of file diff --git a/src/locales/ko.json b/src/locales/ko.json index ccd7705ce..5e7d4308c 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1,120 +1,123 @@ { - "@metadata": { - "authors": { - "1": "\uc544\ub77c" - } - }, - "index.newPad": "\uc0c8 \ud328\ub4dc", - "index.createOpenPad": "\ub610\ub294 \ub2e4\uc74c \uc774\ub984\uc73c\ub85c \ud328\ub4dc \ub9cc\ub4e4\uae30\/\uc5f4\uae30:", - "pad.toolbar.bold.title": "\uad75\uac8c (Ctrl-B)", - "pad.toolbar.italic.title": "\uae30\uc6b8\uc784 (Ctrl-I)", - "pad.toolbar.underline.title": "\ubc11\uc904 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\ucde8\uc18c\uc120", - "pad.toolbar.ol.title": "\uc21c\uc11c \uc788\ub294 \ubaa9\ub85d", - "pad.toolbar.ul.title": "\uc21c\uc11c \uc5c6\ub294 \ubaa9\ub85d", - "pad.toolbar.indent.title": "\ub4e4\uc5ec\uc4f0\uae30", - "pad.toolbar.unindent.title": "\ub0b4\uc5b4\uc4f0\uae30", - "pad.toolbar.undo.title": "\uc2e4\ud589 \ucde8\uc18c (Ctrl-Z)", - "pad.toolbar.redo.title": "\ub2e4\uc2dc \uc2e4\ud589 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\uc800\uc790\uc758 \uc0c9 \uc9c0\uc6b0\uae30", - "pad.toolbar.import_export.title": "\ub2e4\ub978 \ud30c\uc77c \ud615\uc2dd\uc73c\ub85c \uac00\uc838\uc624\uae30\/\ub0b4\ubcf4\ub0b4\uae30", - "pad.toolbar.timeslider.title": "\uc2dc\uac04\uc2ac\ub77c\uc774\ub354", - "pad.toolbar.savedRevision.title": "\uc800\uc7a5\ud55c \ud310", - "pad.toolbar.settings.title": "\uc124\uc815", - "pad.toolbar.embed.title": "\uc774 \ud328\ub4dc \ud3ec\ud568\ud558\uae30", - "pad.toolbar.showusers.title": "\uc774 \ud328\ub4dc\uc5d0 \uc0ac\uc6a9\uc790 \ubcf4\uae30", - "pad.colorpicker.save": "\uc800\uc7a5", - "pad.colorpicker.cancel": "\ucde8\uc18c", - "pad.loading": "\ubd88\ub7ec\uc624\ub294 \uc911...", - "pad.passwordRequired": "\uc774 \ud328\ub4dc\uc5d0 \uc811\uadfc\ud558\ub824\uba74 \ube44\ubc00\ubc88\ud638\uac00 \ud544\uc694\ud569\ub2c8\ub2e4", - "pad.permissionDenied": "\uc774 \ud328\ub4dc\uc5d0 \uc811\uadfc\ud560 \uad8c\ud55c\uc774 \uc5c6\uc2b5\ub2c8\ub2e4", - "pad.wrongPassword": "\ube44\ubc00\ubc88\ud638\uac00 \uc798\ubabb\ub418\uc5c8\uc2b5\ub2c8\ub2e4", - "pad.settings.padSettings": "\ud328\ub4dc \uc124\uc815", - "pad.settings.myView": "\ub0b4 \ubcf4\uae30", - "pad.settings.stickychat": "\ud654\uba74\uc5d0 \ud56d\uc0c1 \ub300\ud654 \ubcf4\uae30", - "pad.settings.colorcheck": "\uc800\uc790 \uc0c9", - "pad.settings.linenocheck": "\uc904 \ubc88\ud638", - "pad.settings.fontType": "\uae00\uaf34 \uc885\ub958:", - "pad.settings.fontType.normal": "\ubcf4\ud1b5", - "pad.settings.fontType.monospaced": "\uace0\uc815 \ud3ed", - "pad.settings.globalView": "\uc804\uc5ed \ubcf4\uae30", - "pad.settings.language": "\uc5b8\uc5b4:", - "pad.importExport.import_export": "\uac00\uc838\uc624\uae30\/\ub0b4\ubcf4\ub0b4\uae30", - "pad.importExport.import": "\ud14d\uc2a4\ud2b8 \ud30c\uc77c\uc774\ub098 \ubb38\uc11c \uc62c\ub9ac\uae30", - "pad.importExport.importSuccessful": "\uc131\uacf5!", - "pad.importExport.export": "\ub2e4\uc74c\uc73c\ub85c \ud604\uc7ac \ud328\ub4dc \ub0b4\ubcf4\ub0b4\uae30:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\uc77c\ubc18 \ud14d\uc2a4\ud2b8", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\uc77c\ubc18 \ud14d\uc2a4\ud2b8\ub098 html \ud615\uc2dd\uc73c\ub85c\ub9cc \uac00\uc838\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uace0\uae09 \uac00\uc838\uc624\uae30 \uae30\ub2a5\uc5d0 \ub300\ud574\uc11c\ub294 abiword\ub97c \uc124\uce58<\/a>\ud558\uc138\uc694.", - "pad.modals.connected": "\uc5f0\uacb0\ud588\uc2b5\ub2c8\ub2e4.", - "pad.modals.reconnecting": "\ud328\ub4dc\uc5d0 \ub2e4\uc2dc \uc5f0\uacb0 \uc911..", - "pad.modals.forcereconnect": "\uac15\uc81c\ub85c \ub2e4\uc2dc \uc5f0\uacb0", - "pad.modals.userdup": "\ub2e4\ub978 \ucc3d\uc5d0\uc11c \uc5f4\ub9ac\uace0 \uc788\uc2b5\ub2c8\ub2e4", - "pad.modals.userdup.explanation": "\uc774 \ud328\ub4dc\ub294 \uc774 \ucef4\ud4e8\ud130\uc5d0 \ud558\ub098\ubcf4\ub2e4 \ub9ce\uc774 \ube0c\ub77c\uc6b0\uc800 \ucc3d\uc5d0\uc11c \uc5f4\ub9b0 \uac83 \uac19\uc2b5\ub2c8\ub2e4.", - "pad.modals.userdup.advice": "\ub300\uc2e0 \uc774 \ucc3d\uc744 \uc0ac\uc6a9\ud574 \ub2e4\uc2dc \uc5f0\uacb0\ud569\ub2c8\ub2e4.", - "pad.modals.unauth": "\uad8c\ud55c\uc774 \uc5c6\uc74c", - "pad.modals.unauth.explanation": "\uc774 \ubb38\uc11c\ub97c \ubcf4\ub294 \ub3d9\uc548 \uad8c\ud55c\uc774 \ubc14\ub00c\uc5c8\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc5f0\uacb0\uc744 \uc2dc\ub3c4\ud558\uc138\uc694.", - "pad.modals.looping": "\uc5f0\uacb0\uc774 \ub04a\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.", - "pad.modals.looping.explanation": "\ub3d9\uae30 \uc11c\ubc84\uc640\uc758 \ud1b5\uc2e0 \ubb38\uc81c\uac00 \uc788\uc2b5\ub2c8\ub2e4.", - "pad.modals.looping.cause": "\uc544\ub9c8 \ud638\ud658\ub418\uc9c0 \uc54a\ub294 \ubc29\ud654\ubcbd\uc774\ub098 \ud504\ub85d\uc2dc\ub97c \ud1b5\ud574 \uc5f0\uacb0\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4.", - "pad.modals.initsocketfail": "\uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", - "pad.modals.initsocketfail.explanation": "\ub3d9\uae30 \uc11c\ubc84\uc5d0 \uc5f0\uacb0\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.", - "pad.modals.initsocketfail.cause": "\uc544\ub9c8\ub3c4 \ube0c\ub77c\uc6b0\uc800\ub098 \uc778\ud130\ub137 \uc5f0\uacb0\uc5d0 \ubb38\uc81c\uac00 \uc788\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.", - "pad.modals.slowcommit": "\uc5f0\uacb0\uc774 \ub04a\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.", - "pad.modals.slowcommit.explanation": "\uc11c\ubc84\uac00 \uc751\ub2f5\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.", - "pad.modals.slowcommit.cause": "\ub124\ud2b8\uc6cc\ud06c \uc5f0\uacb0\uc5d0 \ubb38\uc81c\uac00 \uc788\uae30 \ub54c\ubb38\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.", - "pad.modals.deleted": "\uc0ad\uc81c\ub418\uc5c8\uc2b5\ub2c8\ub2e4.", - "pad.modals.deleted.explanation": "\uc774 \ud328\ub4dc\ub97c \uc81c\uac70\ud588\uc2b5\ub2c8\ub2e4.", - "pad.modals.disconnected": "\uc5f0\uacb0\uc774 \ub04a\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.", - "pad.modals.disconnected.explanation": "\uc11c\ubc84\uc5d0\uc11c \uc5f0\uacb0\uc744 \uc783\uc5c8\uc2b5\ub2c8\ub2e4", - "pad.modals.disconnected.cause": "\uc11c\ubc84\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc774 \ubb38\uc81c\uac00 \uacc4\uc18d \ubc1c\uc0dd\ud558\uba74 \uc54c\ub824\uc8fc\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4.", - "pad.share": "\uc774 \ud328\ub4dc \uacf5\uc720\ud558\uae30", - "pad.share.readonly": "\uc77d\uae30 \uc804\uc6a9", - "pad.share.link": "\ub9c1\ud06c", - "pad.share.emebdcode": "URL \ud3ec\ud568", - "pad.chat": "\ub300\ud654", - "pad.chat.title": "\uc774 \ud328\ub4dc\uc5d0 \ub300\ud654\ub97c \uc5fd\ub2c8\ub2e4.", - "pad.chat.loadmessages": "\ub354 \ub9ce\uc740 \uba54\uc2dc\uc9c0 \ubd88\ub7ec\uc624\uae30", - "timeslider.pageTitle": "{{appTitle}} \uc2dc\uac04\uc2ac\ub77c\uc774\ub354", - "timeslider.toolbar.returnbutton": "\ud328\ub4dc\ub85c \ub3cc\uc544\uac00\uae30", - "timeslider.toolbar.authors": "\uc800\uc790:", - "timeslider.toolbar.authorsList": "\uc800\uc790 \uc5c6\uc74c", - "timeslider.toolbar.exportlink.title": "\ub0b4\ubcf4\ub0b4\uae30", - "timeslider.exportCurrent": "\ud604\uc7ac \ubc84\uc804\uc73c\ub85c \ub0b4\ubcf4\ub0b4\uae30:", - "timeslider.version": "\ubc84\uc804 {{version}}", - "timeslider.saved": "{{year}}\ub144 {{month}} {{day}}\uc77c\uc5d0 \uc800\uc7a5\ud568", - "timeslider.dateformat": "{{year}}\ub144\/{{month}}\/{{day}}\uc77c {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "1\uc6d4", - "timeslider.month.february": "2\uc6d4", - "timeslider.month.march": "3\uc6d4", - "timeslider.month.april": "4\uc6d4", - "timeslider.month.may": "5\uc6d4", - "timeslider.month.june": "6\uc6d4", - "timeslider.month.july": "7\uc6d4", - "timeslider.month.august": "8\uc6d4", - "timeslider.month.september": "9\uc6d4", - "timeslider.month.october": "10\uc6d4", - "timeslider.month.november": "11\uc6d4", - "timeslider.month.december": "12\uc6d4", - "timeslider.unnamedauthor": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85", - "timeslider.unnamedauthors": "\uc774\ub984 \uc5c6\ub294 \uc800\uc790 {{num}}\uba85", - "pad.savedrevs.marked": "\uc774 \ud310\uc740 \uc774\uc81c \uc800\uc7a5\ud55c \ud310\uc73c\ub85c \ud45c\uc2dc\ud569\ub2c8\ub2e4.", - "pad.userlist.entername": "\uc774\ub984\uc744 \uc785\ub825\ud558\uc138\uc694", - "pad.userlist.unnamed": "\uc774\ub984\uc5c6\uc74c", - "pad.userlist.guest": "\uc190\ub2d8", - "pad.userlist.deny": "\uac70\ubd80", - "pad.userlist.approve": "\uc2b9\uc778", - "pad.editbar.clearcolors": "\uc804\uccb4 \ubb38\uc11c\uc758 \uc800\uc790 \uc0c9\uc744 \uc9c0\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", - "pad.impexp.importbutton": "\uc9c0\uae08 \uac00\uc838\uc624\uae30", - "pad.impexp.importing": "\uac00\uc838\uc624\ub294 \uc911...", - "pad.impexp.confirmimport": "\ud30c\uc77c\uc744 \uac00\uc838\uc624\uba74 \ud328\ub4dc\uc758 \ud604\uc7ac \ud14d\uc2a4\ud2b8\ub97c \ub36e\uc5b4\uc4f0\uac8c \ub429\ub2c8\ub2e4. \uc9c4\ud589\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?", - "pad.impexp.convertFailed": "\uc774 \ud30c\uc77c\uc744 \uac00\uc838\uc62c \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \ub2e4\ub978 \ubb38\uc11c \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uac70\ub098 \uc218\ub3d9\uc73c\ub85c \ubcf5\uc0ac\ud558\uc5ec \ubd99\uc5ec\ub123\uc73c\uc138\uc694", - "pad.impexp.uploadFailed": "\uc62c\ub9ac\uae30\ub97c \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694", - "pad.impexp.importfailed": "\uac00\uc838\uc624\uae30\ub97c \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4", - "pad.impexp.copypaste": "\ubcf5\uc0ac\ud558\uc5ec \ubd99\uc5ec\ub123\uc73c\uc138\uc694", - "pad.impexp.exportdisabled": "{{type}} \ud615\uc2dd\uc73c\ub85c \ub0b4\ubcf4\ub0b4\uae30\uac00 \ube44\ud65c\uc131\ud654\ub418\uc5b4 \uc788\uc2b5\ub2c8\ub2e4. \uc790\uc138\ud55c \ub0b4\uc6a9\uc740 \uc2dc\uc2a4\ud15c \uad00\ub9ac\uc790\uc5d0\uac8c \ubb38\uc758\ud558\uc2dc\uae30 \ubc14\ub78d\ub2c8\ub2e4." + "@metadata": { + "authors": { + "0": "Hym411", + "2": "ì•„ë¼" + } + }, + "index.newPad": "새 패드", + "index.createOpenPad": "ë˜ëŠ” ë‹¤ìŒ ì´ë¦„으로 패드 만들기/열기:", + "pad.toolbar.bold.title": "굵게 (Ctrl-B)", + "pad.toolbar.italic.title": "기울임 (Ctrl-I)", + "pad.toolbar.underline.title": "밑줄 (Ctrl-U)", + "pad.toolbar.strikethrough.title": "취소선", + "pad.toolbar.ol.title": "순서 있는 목ë¡", + "pad.toolbar.ul.title": "순서 없는 목ë¡", + "pad.toolbar.indent.title": "들여쓰기", + "pad.toolbar.unindent.title": "내어쓰기", + "pad.toolbar.undo.title": "실행 취소 (Ctrl-Z)", + "pad.toolbar.redo.title": "다시 실행 (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "ì €ìžì˜ 색 지우기", + "pad.toolbar.import_export.title": "다른 íŒŒì¼ í˜•ì‹ìœ¼ë¡œ 가져오기/내보내기", + "pad.toolbar.timeslider.title": "시간슬ë¼ì´ë”", + "pad.toolbar.savedRevision.title": "íŒ ì €ìž¥", + "pad.toolbar.settings.title": "설정", + "pad.toolbar.embed.title": "ì´ íŒ¨ë“œë¥¼ 공유하고 í¬í•¨í•˜ê¸°", + "pad.toolbar.showusers.title": "ì´ íŒ¨ë“œì— ì‚¬ìš©ìž ë³´ê¸°", + "pad.colorpicker.save": "저장", + "pad.colorpicker.cancel": "취소", + "pad.loading": "불러오는 중...", + "pad.passwordRequired": "ì´ íŒ¨ë“œì— ì ‘ê·¼í•˜ë ¤ë©´ 비밀번호가 필요합니다", + "pad.permissionDenied": "ì´ íŒ¨ë“œì— ì ‘ê·¼í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤", + "pad.wrongPassword": "비밀번호가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤", + "pad.settings.padSettings": "패드 설정", + "pad.settings.myView": "ë‚´ 보기", + "pad.settings.stickychat": "í™”ë©´ì— í•­ìƒ ëŒ€í™” 보기", + "pad.settings.colorcheck": "ì €ìž ìƒ‰", + "pad.settings.linenocheck": "줄 번호", + "pad.settings.rtlcheck": "우횡서(오른쪽ì—서 왼쪽으로)입니까?", + "pad.settings.fontType": "글꼴 종류:", + "pad.settings.fontType.normal": "보통", + "pad.settings.fontType.monospaced": "ê³ ì • í­", + "pad.settings.globalView": "ì „ì—­ 보기", + "pad.settings.language": "언어:", + "pad.importExport.import_export": "가져오기/내보내기", + "pad.importExport.import": "í…스트 파ì¼ì´ë‚˜ 문서 올리기", + "pad.importExport.importSuccessful": "성공!", + "pad.importExport.export": "다ìŒìœ¼ë¡œ 현재 패드 내보내기:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "ì¼ë°˜ í…스트", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "ì¼ë°˜ í…스트나 html 형ì‹ìœ¼ë¡œë§Œ 가져올 수 있습니다. 고급 가져오기 ê¸°ëŠ¥ì— ëŒ€í•´ì„œëŠ” \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eabiword를 설치\u003C/a\u003E하세요.", + "pad.modals.connected": "연결했습니다.", + "pad.modals.reconnecting": "íŒ¨ë“œì— ë‹¤ì‹œ ì—°ê²° 중..", + "pad.modals.forcereconnect": "강제로 다시 ì—°ê²°", + "pad.modals.userdup": "다른 ì°½ì—서 열리고 있습니다", + "pad.modals.userdup.explanation": "ì´ íŒ¨ë“œëŠ” ì´ ì»´í“¨í„°ì— í•˜ë‚˜ë³´ë‹¤ ë§Žì´ ë¸Œë¼ìš°ì € ì°½ì—서 열린 것 같습니다.", + "pad.modals.userdup.advice": "대신 ì´ ì°½ì„ ì‚¬ìš©í•´ 다시 연결합니다.", + "pad.modals.unauth": "ê¶Œí•œì´ ì—†ìŒ", + "pad.modals.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": "{{year}}ë…„ {{month}} {{day}}ì¼ì— 저장함", + "timeslider.dateformat": "{{year}}ë…„/{{month}}/{{day}}ì¼ {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "1ì›”", + "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": "8ì›”", + "timeslider.month.september": "9ì›”", + "timeslider.month.october": "10ì›”", + "timeslider.month.november": "11ì›”", + "timeslider.month.december": "12ì›”", + "timeslider.unnamedauthors": "ì´ë¦„ 없는 {[plural(num) one: ì €ìž, other: ì €ìž ]} {{num}}명", + "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.confirmimport": "파ì¼ì„ 가져오면 íŒ¨ë“œì˜ í˜„ìž¬ í…스트를 ë®ì–´ì“°ê²Œ ë©ë‹ˆë‹¤. 진행하시겠습니까?", + "pad.impexp.convertFailed": "ì´ íŒŒì¼ì„ 가져올 수 없습니다. 다른 문서 형ì‹ì„ 사용하거나 수ë™ìœ¼ë¡œ 복사하여 붙여넣으세요", + "pad.impexp.uploadFailed": "올리기를 실패했습니다. 다시 시ë„하세요", + "pad.impexp.importfailed": "가져오기를 실패했습니다", + "pad.impexp.copypaste": "복사하여 붙여넣으세요", + "pad.impexp.exportdisabled": "{{type}} 형ì‹ìœ¼ë¡œ 내보내기가 비활성화ë˜ì–´ 있습니다. ìžì„¸í•œ ë‚´ìš©ì€ ì‹œìŠ¤í…œ 관리ìžì—게 문ì˜í•˜ì‹œê¸° ë°”ëžë‹ˆë‹¤." } \ No newline at end of file diff --git a/src/locales/ksh.json b/src/locales/ksh.json index e4557e855..6bb49dff4 100644 --- a/src/locales/ksh.json +++ b/src/locales/ksh.json @@ -1,104 +1,122 @@ { - "@metadata": { - "authors": { - "1": "Purodha" - } - }, - "index.newPad": "Neu Padd", - "index.createOpenPad": "udder maach e Padd op med d\u00e4m Naame:", - "pad.toolbar.bold.title": "F\u00e4ttschreff (Strg-B)", - "pad.toolbar.italic.title": "Scheive Schreff (Strg-I)", - "pad.toolbar.underline.title": "Ongerstresche (Strg-U)", - "pad.toolbar.strikethrough.title": "Dorschjeschtresche", - "pad.toolbar.ol.title": "Le\u00df met Nommere", - "pad.toolbar.ul.title": "Le\u00df met Pongkte", - "pad.toolbar.indent.title": "Enjer\u00f6k", - "pad.toolbar.unindent.title": "U\u00dfjer\u00f6k", - "pad.toolbar.undo.title": "Retuur n\u00e4mme (Strg-Z)", - "pad.toolbar.redo.title": "Norrens (Strg-Y)", - "pad.toolbar.clearAuthorship.title": "d\u00e4 Schriiver ier F\u00e4rve fottn\u00e4mme", - "pad.toolbar.import_export.title": "Vun ongerscheidlijje Dattei_Fommaate empotteere udder \u00e4xpotteere", - "pad.toolbar.timeslider.title": "Verjangeheid afschpelle", - "pad.toolbar.savedRevision.title": "Fa\u00dfjehallde Versione", - "pad.toolbar.settings.title": "Enscht\u00e4llonge", - "pad.toolbar.embed.title": "Donn dat Padd enbenge", - "pad.toolbar.showusers.title": "Verbonge Metschriiver aanzeije", - "pad.colorpicker.save": "Fa\u00dfhallde", - "pad.colorpicker.cancel": "Oph\u00fc\u00fcre", - "pad.loading": "Aam Laade …", - "pad.settings.padSettings": "Dam P\u00e4dd sin Enscht\u00e4llonge", - "pad.settings.myView": "Anseesch", - "pad.settings.stickychat": "Donn der Klaaf emmer aanzeije", - "pad.settings.colorcheck": "F\u00e4rve f\u00f6r de Schriiver", - "pad.settings.linenocheck": "Nommere f\u00f6r de Reije", - "pad.settings.fontType": "Zoot Schreff", - "pad.settings.fontType.normal": "Nomaal", - "pad.settings.fontType.monospaced": "einheidlesch brejde Zeische", - "pad.settings.globalView": "Et U\u00dfsin f\u00f6r Alle", - "pad.settings.language": "Schprooch:", - "pad.importExport.import_export": "Empoot\/\u00c4xpoot", - "pad.importExport.import": "Donn jeede T\u00e4x udder jeede Zoot Dokem\u00e4nt huhlaade", - "pad.importExport.export": "Don dat P\u00e4dd \u00e4xpoteere al\u00df:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Eijfach T\u00e4x", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF (Poteerbaa Dokem\u00e4nte Fommaat)", - "pad.importExport.exportopen": "ODF (Offe Dokem\u00e4nte-Fommaat)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.modals.connected": "Verbonge.", - "pad.modals.reconnecting": "Ben wider aam Verbenge …", - "pad.modals.forcereconnect": "Wider verbenge", - "pad.modals.userdup.explanation": "Heh dat Padd schingk en mieh wi einem Finster vun enem Brauser op heh d\u00e4m R\u00e4\u00e4schner op ze sin.", - "pad.modals.userdup.advice": "En heh d\u00e4m Finster wider verbenge.", - "pad.modals.unauth": "Nit ber\u00e4\u00e4schtesch", - "pad.modals.unauth.explanation": "Ding Ber\u00e4\u00e4schtejong h\u00e4t sesch je\u00e4ndert, derwiehl De di Sigg aam beloore wohr\u00df. Vers\u00f6hk en neu Verbendong ze maache.", - "pad.modals.looping": "De Verbendong es fott.", - "pad.modals.looping.explanation": "Et jitt Probleeme met d\u00e4 Verbendong mem \u1e9e\u00f6\u00f6ver f\u00f6r de Schriiver ier Aandeile zesamme_ze_br\u00e4nge.", - "pad.modals.looping.cause": "K\u00fcnnt sin, Ding Verbendong jeiht dorj_ene onzopa\u00df proxy-\u1e9e\u00f6\u00f6ver udder firewall.", - "pad.modals.initsocketfail": "D\u00e4 \u1e9e\u00f6\u00f6ver es nit ze \u00e4reische.", - "pad.modals.initsocketfail.explanation": "Kein Verbendong met d\u00e4m \u1e9e\u00f6\u00f6ver ze krijje.", - "pad.modals.initsocketfail.cause": "Dat k\u00fcnnt aam Brauser udder aan d\u00e4m singer Verbendong \u00f6vver et Internet lijje.", - "pad.modals.slowcommit": "De Verbendong es fott.", - "pad.modals.slowcommit.explanation": "D\u00e4 \u1e9e\u00f6\u00f6ver antwoot nit.", - "pad.modals.slowcommit.cause": "Dat k\u00fcnnt aan Probleeme met Verbendonge em N\u00e4zw\u00e4rrek lijje.", - "pad.modals.deleted": "Fottjeschme\u00dfe.", - "pad.modals.deleted.explanation": "Dat P\u00e4dd es fottjeschme\u00dfe woode.", - "pad.modals.disconnected": "Do bes nit mieh verbonge.", - "pad.modals.disconnected.explanation": "De Verbendong mem \u1e9e\u00f6\u00f6ver es fott.", - "pad.modals.disconnected.cause": "D\u00e4 \u1e9e\u00f6\u00f6ver k\u00fcnnt nit loufe.\nSidd_esu jood und saat ons Bescheid, wann dat \u00f6fters pa\u00dfeet.", - "pad.share": "Maach heh dat Padd \u00f6ffentlesch", - "pad.share.readonly": "Nor zom L\u00e4sse", - "pad.share.link": "Lengk", - "pad.share.emebdcode": "URL enboue", - "pad.chat": "Klaaf", - "pad.chat.title": "Maach d\u00e4 Klaaf f\u00f6r heh dat P\u00e4dd op", - "timeslider.pageTitle": "{{appTitle}} - Verjangeheid affschpelle", - "timeslider.toolbar.returnbutton": "Jangk retuur nohm P\u00e4dd", - "timeslider.toolbar.authors": "Schriiver:", - "timeslider.toolbar.authorsList": "Kein Schriivere", - "timeslider.exportCurrent": "Donn de meu\u00dfte V\u00e4sjohn \u00e4xpotteere al\u00df:", - "timeslider.version": "V\u00e4sjon {{version}}", - "timeslider.saved": "Fa\u00dfjehallde aam {{day}}. {{month}} {{year}}", - "timeslider.dateformat": "amm {{day}}. {{month}} {{year}} \u00f6m {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Jannewaa", - "timeslider.month.february": "F\u00e4\u00e4browaa", - "timeslider.month.march": "M\u00e4\u00e4z", - "timeslider.month.april": "Apprell", - "timeslider.month.may": "Mai", - "timeslider.month.june": "Juuni", - "timeslider.month.july": "Juuli", - "timeslider.month.august": "Oujo\u00df", - "timeslider.month.september": "S\u00e4pt\u00e4mber", - "timeslider.month.october": "Oktoober", - "timeslider.month.november": "Nov\u00e4mber", - "timeslider.month.december": "Dez\u00e4mber", - "pad.userlist.entername": "Jif Dinge Naame en", - "pad.userlist.unnamed": "naamelo\u00df\u00df", - "pad.userlist.guest": "Ja\u00df\u00df", - "pad.userlist.deny": "Aflehne", - "pad.impexp.importing": "Ben aam Empotteere …", - "pad.impexp.uploadFailed": "Et Huhlaade es don\u00e4vve jejange, bes esu jood un probeer et norr_ens", - "pad.impexp.importfailed": "Et Empoteere es don\u00e4vve jejange", - "pad.impexp.copypaste": "Bes esu jood un donn et koppeere un enf\u00f6\u00f6je", - "pad.impexp.exportdisabled": "Et \u00c4xpotteere em {{type}}-Formmaat es affjeschalldt. De Verwallder vun heh d\u00e4 Sigge k\u00fcnne doh velleisch wiggerh\u00e4llefe." + "@metadata": { + "authors": { + "1": "Purodha" + } + }, + "index.newPad": "Neu Padd", + "index.createOpenPad": "udder maach e Padd op med däm Naame:", + "pad.toolbar.bold.title": "Fättschreff (Strg-B)", + "pad.toolbar.italic.title": "Scheive Schreff (Strg-I)", + "pad.toolbar.underline.title": "Ongerstresche (Strg-U)", + "pad.toolbar.strikethrough.title": "Dorschjeschtresche", + "pad.toolbar.ol.title": "Leß met Nommere", + "pad.toolbar.ul.title": "Leß met Pongkte", + "pad.toolbar.indent.title": "Enjerök", + "pad.toolbar.unindent.title": "Ußjerök", + "pad.toolbar.undo.title": "Retuur nämme (Strg-Z)", + "pad.toolbar.redo.title": "Norrens (Strg-Y)", + "pad.toolbar.clearAuthorship.title": "dä Schriiver ier Färve fottnämme", + "pad.toolbar.import_export.title": "Vun ongerscheidlijje Dattei_Fommaate empotteere udder äxpotteere", + "pad.toolbar.timeslider.title": "Verjangeheid afschpelle", + "pad.toolbar.savedRevision.title": "de Versjohn faßhallde", + "pad.toolbar.settings.title": "Enschtällonge", + "pad.toolbar.embed.title": "Donn dat Padd öffentlesch maache un enbenge", + "pad.toolbar.showusers.title": "Verbonge Metschriiver aanzeije", + "pad.colorpicker.save": "Faßhallde", + "pad.colorpicker.cancel": "Ophüüre", + "pad.loading": "Ben aam Laade\u0026nbsp;\u0026hellip;", + "pad.passwordRequired": "Do bruchs e Paßwoot för heh dat Pädd.", + "pad.permissionDenied": "Do häs nit dat Rääsch, op heh dat Pädd zohzejriife.", + "pad.wrongPassword": "Ding Paßwoot wohr verkeht.", + "pad.settings.padSettings": "Dam Pädd sin Enschtällonge", + "pad.settings.myView": "Anseesch", + "pad.settings.stickychat": "Donn der Klaaf emmer aanzeije", + "pad.settings.colorcheck": "Färve för de Schriiver", + "pad.settings.linenocheck": "Nommere för de Reije", + "pad.settings.rtlcheck": "Schreff vun Rääschß noh Lenks?", + "pad.settings.fontType": "Zoot Schreff", + "pad.settings.fontType.normal": "Nomaal", + "pad.settings.fontType.monospaced": "einheidlesch brejde Zeische", + "pad.settings.globalView": "Et Ußsin för Alle", + "pad.settings.language": "Schprooch:", + "pad.importExport.import_export": "Empoot/Äxpoot", + "pad.importExport.import": "Donn jeede Täx udder jeede Zoot Dokemänt huhlaade", + "pad.importExport.importSuccessful": "Jeschaff!", + "pad.importExport.export": "Don dat Pädd äxpoteere alß:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Eijfach Täx", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF (Poteerbaa Dokemänte Fommaat)", + "pad.importExport.exportopen": "ODF (Offe Dokemänte-Fommaat)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Mer künne bloß eijfaache Täxte udder HTML_Fommaate empoteere. Opwändejere Müjjeleschkeite fö der Empoot jon och, doför bruch mer en \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EEnschtallazjuhn met \u003Ci lang=\"en\"\u003EAbiword\u003C/i\u003E\u003C/a\u003E.", + "pad.modals.connected": "Verbonge.", + "pad.modals.reconnecting": "Ben wider aam Verbenge\u0026nbsp;\u0026hellip;", + "pad.modals.forcereconnect": "Wider verbenge", + "pad.modals.userdup": "En enem andere Finster en Ärbeid", + "pad.modals.userdup.explanation": "Heh dat Padd schingk en mieh wi einem Finster vun enem Brauser op heh däm Rääschner op ze sin.", + "pad.modals.userdup.advice": "En heh däm Finster wider verbenge.", + "pad.modals.unauth": "Nit berääschtesch", + "pad.modals.unauth.explanation": "Ding Berääschtejong hät sesch jeändert, derwiehl De di Sigg aam beloore wohrß. Versöhk en neu Verbendong ze maache.", + "pad.modals.looping.explanation": "Et jitt Probleeme met dä Verbendong mem ẞööver för de Schriiver ier Aandeile zesamme_ze_bränge.", + "pad.modals.looping.cause": "Künnt sin, Ding Verbendong jeiht dorj_ene onzopaß proxy-ẞööver udder firewall.", + "pad.modals.initsocketfail": "Dä ẞööver es nit ze äreische.", + "pad.modals.initsocketfail.explanation": "Kein Verbendong met däm ẞööver ze krijje.", + "pad.modals.initsocketfail.cause": "Dat künnt aam Brauser udder aan däm singer Verbendong övver et Internet lijje.", + "pad.modals.slowcommit.explanation": "Dä ẞööver antwoot nit.", + "pad.modals.slowcommit.cause": "Dat künnt aan Probleeme met Verbendonge em Näzwärrek lijje.", + "pad.modals.badChangeset.explanation": "En Änderong, di De jemaat häs, wood vum ẞööver nit aanjenumme.", + "pad.modals.badChangeset.cause": "Dat künnt sin wääje ener verkehte Enschtällong vum ẞööver udder ohnjät, wat mer nit äwaadt hät. Donn Desch aan däm ßööver singe Bedriever wände, wann De meins, dat dat ene Fähler wör. Donn desch neu verbende, öm mem Schriive wigger ze maache.", + "pad.modals.corruptPad.explanation": "Dat Pädd, wo De desch met verbenge wells, es kappott.", + "pad.modals.corruptPad.cause": "Dat künnt sin wääje ener verkehte Enschtällong vum ẞööver udder ohnjät, wat mer nit äwaadt hät. Donn Desch aan däm ßööver singe Bedriever wände.", + "pad.modals.deleted": "Fottjeschmeße.", + "pad.modals.deleted.explanation": "Dat Pädd es fottjeschmeße woode.", + "pad.modals.disconnected": "Do bes nit mieh verbonge.", + "pad.modals.disconnected.explanation": "De Verbendong mem ẞööver es fott.", + "pad.modals.disconnected.cause": "Dä ẞööver künnt nit mieh loufe.\nSidd_esu jood und saad ons Bescheid, wann dadd esu bliiv.", + "pad.share": "Maach heh dat Padd öffentlesch", + "pad.share.readonly": "Nor zom Lässe", + "pad.share.link": "Lengk", + "pad.share.emebdcode": "URL enboue", + "pad.chat": "Klaaf", + "pad.chat.title": "Maach dä Klaaf för heh dat Pädd op", + "pad.chat.loadmessages": "Mieh Nohresschte laade...", + "timeslider.pageTitle": "{{appTitle}} - Verjangeheid affschpelle", + "timeslider.toolbar.returnbutton": "Jangk retuur nohm Pädd", + "timeslider.toolbar.authors": "Schriiver:", + "timeslider.toolbar.authorsList": "Kein Schriivere", + "timeslider.toolbar.exportlink.title": "Äxpooteere", + "timeslider.exportCurrent": "Donn de meußte Väsjohn äxpotteere alß:", + "timeslider.version": "Väsjon {{version}}", + "timeslider.saved": "Faßjehallde aam {{day}}. {{month}} {{year}}", + "timeslider.dateformat": "amm {{day}}. {{month}} {{year}} öm {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Jannewaa", + "timeslider.month.february": "Fääbrowaa", + "timeslider.month.march": "Määz", + "timeslider.month.april": "Apprell", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juuni", + "timeslider.month.july": "Juuli", + "timeslider.month.august": "Oujoß", + "timeslider.month.september": "Säptämber", + "timeslider.month.october": "Oktoober", + "timeslider.month.november": "Novämber", + "timeslider.month.december": "Dezämber", + "timeslider.unnamedauthors": "{[plural(num) one: eine, other: {{num}} ]} naameloose Schriever", + "pad.savedrevs.marked": "Heh di Väsjohn es jäz faßjehallde.", + "pad.userlist.entername": "Jif Dinge Naame en", + "pad.userlist.unnamed": "naameloßß", + "pad.userlist.guest": "Jaßß", + "pad.userlist.deny": "Aflehne", + "pad.userlist.approve": "Joodheiße", + "pad.editbar.clearcolors": "Sulle mer de Färve för de Schriiver uss_em janze Täx fott maache?", + "pad.impexp.importbutton": "Jäz empoteere", + "pad.impexp.importing": "Ben aam Empotteere\u0026nbsp;\u0026hellip;", + "pad.impexp.confirmimport": "En Dattei ze empotteere määt der janze Täx em Pädd fott. Wess De dat verfaftesch hann?", + "pad.impexp.convertFailed": "Mer kunnte di Dattei nit empoteere. Nemm en ander Dattei-Fommaat udder donn dä Täx vun Hand kopeere un ennfööje.", + "pad.impexp.uploadFailed": "Et Huhlaade es donävve jejange, bes esu jood un probeer et norr_ens", + "pad.impexp.importfailed": "Et Empoteere es donävve jejange", + "pad.impexp.copypaste": "Bes esu jood un donn et koppeere un enfööje", + "pad.impexp.exportdisabled": "Et Äxpotteere em {{type}}-Formmaat es affjeschalldt. De Verwallder vun heh dä Sigge künne doh velleisch wiggerhällefe." } \ No newline at end of file diff --git a/src/locales/lb.json b/src/locales/lb.json new file mode 100644 index 000000000..641e61a05 --- /dev/null +++ b/src/locales/lb.json @@ -0,0 +1,54 @@ +{ + "@metadata": { + "authors": { + "0": "Robby", + "2": "Soued031" + } + }, + "index.newPad": "Neie Pad", + "pad.toolbar.ol.title": "Numeréiert Lëscht", + "pad.toolbar.ul.title": "Net-numeréiert Lëscht", + "pad.toolbar.undo.title": "Réckgängeg (Ctrl-Z)", + "pad.toolbar.redo.title": "Widderhuelen (Ctrl-Y)", + "pad.toolbar.savedRevision.title": "Versioun späicheren", + "pad.toolbar.settings.title": "Astellungen", + "pad.colorpicker.save": "Späicheren", + "pad.colorpicker.cancel": "Ofbriechen", + "pad.loading": "Lueden...", + "pad.wrongPassword": "Äert Passwuert ass falsch", + "pad.settings.fontType.normal": "Normal", + "pad.settings.language": "Sprooch:", + "pad.importExport.importSuccessful": "Erfollegräich", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.modals.unauth": "Net autoriséiert", + "pad.modals.slowcommit.explanation": "De Server äntwert net.", + "pad.modals.deleted": "Geläscht.", + "pad.share.readonly": "Nëmme liesen", + "pad.share.link": "Link", + "pad.chat.loadmessages": "Méi Message lueden", + "timeslider.toolbar.authors": "Auteuren:", + "timeslider.toolbar.authorsList": "Keng Auteuren", + "timeslider.exportCurrent": "Exportéiert déi aktuell Versioun als:", + "timeslider.version": "Versioun {{version}}", + "timeslider.saved": "Gespäichert de(n) {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "Mäerz", + "timeslider.month.april": "Abrëll", + "timeslider.month.may": "Mee", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Dezember", + "pad.userlist.entername": "Gitt Ären Numm an", + "pad.userlist.guest": "Gaascht", + "pad.impexp.importbutton": "Elo importéieren", + "pad.impexp.importing": "Importéieren..." +} \ No newline at end of file diff --git a/src/locales/lrc.json b/src/locales/lrc.json new file mode 100644 index 000000000..663b3f74d --- /dev/null +++ b/src/locales/lrc.json @@ -0,0 +1,60 @@ +{ + "@metadata": { + "authors": [ + "Mogoeilor" + ] + }, + "pad.toolbar.italic.title": "کج کوله(ctrl-l)", + "pad.toolbar.underline.title": "زیر خط دار بین (Ctrl-U)", + "pad.toolbar.ol.title": "نوم Ú¯Ù‡ منظم", + "pad.toolbar.ul.title": "نوم Ú¯Ù‡ بی نظم", + "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.settings.myView": "نظرگه مه", + "pad.settings.fontType": "نوع Ùونت:", + "pad.settings.fontType.normal": "عادی", + "pad.settings.fontType.monospaced": "تک جاگه", + "pad.settings.globalView": "دیئن جهونی", + "pad.settings.language": "زون:", + "pad.importExport.importSuccessful": "موÙÙ‚ بی!", + "pad.importExport.exporthtml": "اچ تی ام ال", + "pad.importExport.exportplain": "متن ساده", + "pad.importExport.exportword": "واجه پالایشتگر Ù…Ø§ÛŒÚ©Ø±ÙˆØ³Ø§ÙØª", + "pad.importExport.exportpdf": "Ù¾ÛŒ دی اÙ", + "pad.importExport.exportopen": "او دی اÙ(قالو سند وا بیه)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "وصل بیه", + "pad.modals.forcereconnect": "سی وصل بین مژبور Ú©Ùˆ", + "pad.modals.deleted": "پاک بیه", + "pad.share.readonly": "Ùقط بحون", + "pad.share.link": "هوم پیوند", + "pad.chat": "Ú¯Ù¾ زئن", + "pad.chat.loadmessages": "پیغومیا بیشتر نه سوار Ú©Ùˆ", + "timeslider.toolbar.authors": "نیسنه یا:", + "timeslider.toolbar.authorsList": "بی نیسنه", + "timeslider.toolbar.exportlink.title": "وه در ديئن", + "timeslider.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": "اصلا کردن" +} \ No newline at end of file diff --git a/src/locales/lt.json b/src/locales/lt.json new file mode 100644 index 000000000..401cc2c91 --- /dev/null +++ b/src/locales/lt.json @@ -0,0 +1,73 @@ +{ + "@metadata": { + "authors": [ + "Eitvys200", + "Mantak111" + ] + }, + "pad.toolbar.bold.title": "ParyÅ¡kintasis (Ctrl-B)", + "pad.toolbar.italic.title": "Pasvirasis (Ctrl-I)", + "pad.toolbar.underline.title": "Pabraukimas (Ctrl-U)", + "pad.toolbar.undo.title": "Anuliuoti (Ctrl-Z)", + "pad.toolbar.redo.title": "Perdaryti (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Tvarkyti autorystÄ—s spalvas", + "pad.toolbar.settings.title": "Nustatymai", + "pad.colorpicker.save": "IÅ¡saugoti", + "pad.colorpicker.cancel": "AtÅ¡aukti", + "pad.loading": "Ä®kraunama...", + "pad.settings.myView": "Mano Vaizdas", + "pad.settings.fontType": "Å rifto tipas:", + "pad.settings.fontType.normal": "Normalus", + "pad.settings.globalView": "Bendras Vaizdas", + "pad.settings.language": "Kalba:", + "pad.importExport.import_export": "Importuoti/Eksportuoti", + "pad.importExport.import": "Ä®kelkite bet kokį tekstinį failÄ… arba dokumentÄ…", + "pad.importExport.importSuccessful": "Pavyko!", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Paprastasis tekstas", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Atvirasis dokumento formatas)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "Prisijungta.", + "pad.modals.unauth": "Neleidžiama", + "pad.modals.initsocketfail": "Serveris yra nepasiekiamas.", + "pad.modals.slowcommit.explanation": "Serveris neatsako.", + "pad.modals.deleted": "IÅ¡trintas.", + "pad.modals.disconnected": "JÅ«s atsijungÄ—te.", + "pad.share.readonly": "Tik skaityti", + "pad.share.link": "Nuoroda", + "pad.share.emebdcode": "Ä®terptasis URL", + "pad.chat": "Pokalbiai", + "pad.chat.loadmessages": "Ä®krauti daugiau praneÅ¡imų", + "timeslider.toolbar.authors": "Autoriai:", + "timeslider.toolbar.authorsList": "NÄ—ra autorių", + "timeslider.toolbar.exportlink.title": "Eksportuoti", + "timeslider.exportCurrent": "Eksportuoti dabartinÄ™ versijÄ… kaip:", + "timeslider.version": "Versija {{version}}", + "timeslider.saved": "IÅ¡saugota {{year}},{{month}} {{day}}", + "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Sausis", + "timeslider.month.february": "Vasaris", + "timeslider.month.march": "Kovas", + "timeslider.month.april": "Balandis", + "timeslider.month.may": "Gegužė", + "timeslider.month.june": "Birželis", + "timeslider.month.july": "Liepa", + "timeslider.month.august": "RugpjÅ«tis", + "timeslider.month.september": "RugsÄ—jis", + "timeslider.month.october": "Spalis", + "timeslider.month.november": "Lapkritis", + "timeslider.month.december": "Gruodis", + "timeslider.unnamedauthors": "{{num}} bevardžiai(-ių) autoriai(-ių)", + "pad.userlist.entername": "Ä®veskite savo vardÄ…", + "pad.userlist.unnamed": "bevardis", + "pad.userlist.guest": "SveÄias", + "pad.userlist.deny": "Neigti", + "pad.userlist.approve": "Patvirtinti", + "pad.impexp.importbutton": "Importuoti dabar", + "pad.impexp.importing": "Importuojama...", + "pad.impexp.uploadFailed": "Ä®kÄ—limas nepavyko, bandykite dar kartÄ…", + "pad.impexp.importfailed": "Importuoti nepavyko", + "pad.impexp.copypaste": "PraÅ¡ome nukopijuoti ir įklijuoti" +} \ No newline at end of file diff --git a/src/locales/lv.json b/src/locales/lv.json new file mode 100644 index 000000000..a17a7551c --- /dev/null +++ b/src/locales/lv.json @@ -0,0 +1,84 @@ +{ + "@metadata": { + "authors": [ + "Admresdeserv.", + "Jmg.cmdi", + "Papuass" + ] + }, + "pad.toolbar.bold.title": "TreknrakstÄ (CTRL + B)", + "pad.toolbar.italic.title": "SlÄ«praksta (Ctrl-es)", + "pad.toolbar.underline.title": "PasvÄ«trojuma (CTRL + U)", + "pad.toolbar.strikethrough.title": "PÄrsvÄ«trojums", + "pad.toolbar.ol.title": "SakÄrtots saraksts", + "pad.toolbar.ul.title": "NesakÄrtots saraksts", + "pad.toolbar.indent.title": "AtkÄpe", + "pad.toolbar.unindent.title": "IzkÄpe", + "pad.toolbar.undo.title": "Atsaukt (CTRL + Z)", + "pad.toolbar.redo.title": "Atcelt atsaukÅ¡anu (CTRL + Y)", + "pad.toolbar.clearAuthorship.title": "NotÄ«rit autoru krÄsas", + "pad.toolbar.import_export.title": "Importēšanas/eksportēšanas no un uz citu failu formÄtiem", + "pad.toolbar.savedRevision.title": "SaglabÄt pÄrskatīšanu", + "pad.toolbar.settings.title": "IestatÄ«jumi", + "pad.toolbar.embed.title": "Koplietot un iegut Å¡o pad", + "pad.toolbar.showusers.title": "ParÄdÄ«t Å¡o padu lietotÄjus", + "pad.colorpicker.save": "SaglabÄt", + "pad.colorpicker.cancel": "Atcelt", + "pad.loading": "IelÄdē…", + "pad.passwordRequired": "Ir nepiecieÅ¡ama parole, lai piekļūtu Å¡im pad", + "pad.permissionDenied": "Atvaino, bet tev nav pieejas Å¡im pad.", + "pad.wrongPassword": "JÅ«su parole bija nepareiza", + "pad.settings.padSettings": "Pad Iestatijumi", + "pad.settings.myView": "Mans viedoklis", + "pad.settings.stickychat": "ÄŒats vienmÄ“r ekrÄnÄ", + "pad.settings.colorcheck": "AutorÄ«bas krÄsas", + "pad.settings.linenocheck": "Rindiņu numurus", + "pad.settings.rtlcheck": "LasÄ«t saturu no labÄs puses uz kreiso?", + "pad.settings.fontType": "Fonta tips:", + "pad.settings.fontType.normal": "NormÄls", + "pad.settings.globalView": "GlobÄlu skatÄ«jumu", + "pad.settings.language": "Valoda:", + "pad.importExport.import_export": "Importet/Eksportet", + "pad.importExport.import": "AugÅ¡upielÄdÄ“t jebkuru teksta failu vai dokumentu", + "pad.importExport.importSuccessful": "VeiksmÄ«gi!", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "VienkÄrÅ¡a teksta", + "pad.importExport.exportword": "Programma Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open dokumenta formÄts)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "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.", + "pad.modals.initsocketfail": "Serveris nav sasniedzams.", + "pad.modals.initsocketfail.explanation": "NevarÄ“ja izveidot savienojumu ar sinhronizÄcijas serveri.", + "pad.modals.slowcommit.explanation": "Serveris nereaģē.", + "pad.modals.deleted": "DzÄ“sts", + "pad.modals.disconnected": "JÅ«s esat atvienots.", + "pad.modals.disconnected.explanation": "Tika zaudÄ“ts savienojums ar serveri", + "pad.modals.disconnected.cause": "IespÄ“jams, ka serveris nav pieejams. LÅ«gums paziņot mums, ja tas turpina notikt.", + "pad.share": "Koplietot Å¡o pad", + "pad.share.readonly": "Tikai lasÄms", + "pad.share.link": "Saite", + "timeslider.toolbar.authors": "Autori:", + "timeslider.toolbar.authorsList": "Nav autoru", + "timeslider.toolbar.exportlink.title": "EksportÄ“t", + "timeslider.month.january": "JanvÄris", + "timeslider.month.february": "FebruÄris", + "timeslider.month.march": "Marts", + "timeslider.month.april": "AprÄ«lis", + "timeslider.month.may": "Maijs", + "timeslider.month.june": "JÅ«nijs", + "timeslider.month.july": "JÅ«lijs", + "timeslider.month.august": "Augusts", + "timeslider.month.september": "Septembris", + "timeslider.month.october": "Oktobris", + "timeslider.month.november": "Novembris", + "timeslider.month.december": "Decembris", + "pad.userlist.entername": "Ievadiet savu vÄrdu", + "pad.userlist.unnamed": "nenosaukts", + "pad.userlist.guest": "Viesis", + "pad.impexp.importbutton": "ImportÄ“t tÅ«lÄ«t", + "pad.impexp.importing": "ImportÄ“...", + "pad.impexp.importfailed": "Imports neizdevÄs" +} \ No newline at end of file diff --git a/src/locales/map-bms.json b/src/locales/map-bms.json new file mode 100644 index 000000000..fee220d44 --- /dev/null +++ b/src/locales/map-bms.json @@ -0,0 +1,118 @@ +{ + "@metadata": { + "authors": [ + "StefanusRA" + ] + }, + "index.newPad": "Pad Anyar", + "index.createOpenPad": "utawa gawe/bukak Pad nganggo jeneng:", + "pad.toolbar.bold.title": "Kandhel (Ctrl-B)", + "pad.toolbar.italic.title": "Miring (Ctrl-I)", + "pad.toolbar.underline.title": "Garisngisor (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Corettengaeh", + "pad.toolbar.ol.title": "Daftar nganggo nomer", + "pad.toolbar.ul.title": "Daftar ora nganggo nomer", + "pad.toolbar.indent.title": "Nggantung", + "pad.toolbar.unindent.title": "nggantung njaba", + "pad.toolbar.undo.title": "Batalna (Ctrl-Z)", + "pad.toolbar.redo.title": "Baleni (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Busek ''Authorship Colors''", + "pad.toolbar.import_export.title": "Impor/Ekspor sekang/maring format berkas sejen", + "pad.toolbar.timeslider.title": "Timeslider", + "pad.toolbar.savedRevision.title": "Simpen revisi", + "pad.toolbar.settings.title": "Pangaturan", + "pad.toolbar.embed.title": "Sebarna lan ''embed'' pad kiye", + "pad.toolbar.showusers.title": "Tidokna panganggo-panganggo nang pad kiye", + "pad.colorpicker.save": "Simpen", + "pad.colorpicker.cancel": "Batalna", + "pad.loading": "Muatna...", + "pad.passwordRequired": "Rika perlu tembung sandhi kanggo ngakses pad kiye", + "pad.permissionDenied": "Rika ora duwe idin kanggo ngakses pad kiye", + "pad.wrongPassword": "Tembung sandhine Rika salah", + "pad.settings.padSettings": "Pangaturan Pad", + "pad.settings.myView": "Delengane Inyong", + "pad.settings.stickychat": "Dopokan mesti nang layar", + "pad.settings.colorcheck": "Authorship colors", + "pad.settings.linenocheck": "Nomer baris", + "pad.settings.rtlcheck": "Waca isi sekang tengen maring kiwe?", + "pad.settings.fontType": "Tipe Font:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Global View", + "pad.settings.language": "Basa:", + "pad.importExport.import_export": "Impor/Ekspor", + "pad.importExport.import": "Unggahna berkas teks utawa dokumen", + "pad.importExport.importSuccessful": "Sukses!", + "pad.importExport.export": "Ekspor pad kiye dadi:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "t", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Rika mung teyeng impor sekang format plain text utawa HTML. Kanggo fitur impor sing lewih maju monggo \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Emasang abiword\u003C/a\u003E.", + "pad.modals.connected": "Nyambung.", + "pad.modals.reconnecting": "Mbaleli nyambung ming pad Rika...", + "pad.modals.forcereconnect": "Maksa nyambung maning", + "pad.modals.userdup": "Bukak nang jendela sejen", + "pad.modals.userdup.explanation": "Pad kiye kayane dibukak nang lewih sekang siji browser nang komputer kiye.", + "pad.modals.userdup.advice": "Nyambung maning nganggo jendela kiye baen.", + "pad.modals.unauth": "Not authorized", + "pad.modals.unauth.explanation": "Idin-e Rika wis diowahi dong lagi ndeleng kaca kiye. Jajal nyambung maning.", + "pad.modals.looping.explanation": "Pra ana masalah komunikasi karo server sinkronisasi.", + "pad.modals.looping.cause": "Ndeyan Rika gole nyambung nganggo firewall utawa proksi sing ora pas.", + "pad.modals.initsocketfail": "Server ora teyeng dihubungi.", + "pad.modals.initsocketfail.explanation": "Ora teyeng nyambung maring sinkronisasi server.", + "pad.modals.initsocketfail.cause": "Kiye ndeyan ana masalah karo perambanne Rika utawa sambungan internete Rika.", + "pad.modals.slowcommit.explanation": "Server ora respon.", + "pad.modals.slowcommit.cause": "Kiye ndeyan ana masalah karo sambungan jaringan.", + "pad.modals.deleted": "Dibusek.", + "pad.modals.deleted.explanation": "Pad kiye wis dibusek.", + "pad.modals.disconnected": "Rika wis dipedot sambungane.", + "pad.modals.disconnected.explanation": "Sambungan maring server wis ilang", + "pad.modals.disconnected.cause": "Servere ndeyan ora ana. Monggo tidokna inyong angger kahanan kiye terus kedaden maning.", + "pad.share": "Sebarna pad kiye", + "pad.share.readonly": "Waca thok", + "pad.share.link": "Pranala", + "pad.share.emebdcode": "Embed URL", + "pad.chat": "Dopokan", + "pad.chat.title": "Buka dopokan kanggo pad kiye.", + "pad.chat.loadmessages": "Muatna pesen lewih akeh", + "timeslider.pageTitle": "{{appTitle}} Timeslider", + "timeslider.toolbar.returnbutton": "Mbalik ming pad", + "timeslider.toolbar.authors": "Penulise:", + "timeslider.toolbar.authorsList": "Ora ana penulise", + "timeslider.toolbar.exportlink.title": "Ekspor", + "timeslider.exportCurrent": "Ekspor versi sekiye dadi:", + "timeslider.version": "Versi {{version}}", + "timeslider.saved": "Simpen {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januari", + "timeslider.month.february": "Februari", + "timeslider.month.march": "Maret", + "timeslider.month.april": "April", + "timeslider.month.may": "Mei", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "Agustus", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Desember", + "timeslider.unnamedauthors": "{{num}} durung dijenengi {[plural(num) one: author, other: authors ]}", + "pad.savedrevs.marked": "Revisi kiye sekiye ditandani dadi revisi sing wis disimpen", + "pad.userlist.entername": "Lebokna jenenge Rika", + "pad.userlist.unnamed": "durungdijenengi", + "pad.userlist.guest": "Dayoh", + "pad.userlist.deny": "Ora olih", + "pad.userlist.approve": "Sarujuk", + "pad.editbar.clearcolors": "Busek ''authorship colors'' nang kabeh dokumen?", + "pad.impexp.importbutton": "Impor Sekiye", + "pad.impexp.importing": "Lagi ngimpor...", + "pad.impexp.confirmimport": "Ngimpor berkas bakal dadi nindih teks sekiye nang pad. Apa Rika wis mantep arep mroses kiye?", + "pad.impexp.convertFailed": "Inyong ora teyeng ngimpor berkas kiye. Jajal nganggo format dokumen sejen utawa salin-tempel manual.", + "pad.impexp.uploadFailed": "Gole ngunggah gagal, monggo dijajal maning", + "pad.impexp.importfailed": "Gole ngimpor gagal", + "pad.impexp.copypaste": "Monggo salin-tempel", + "pad.impexp.exportdisabled": "Ngekspor maring format {{type}} ora olih. Monggo takon maring administrator sisteme Rika kanggo detile." +} \ No newline at end of file diff --git a/src/locales/mk.json b/src/locales/mk.json index 94d73bd85..0894b47a4 100644 --- a/src/locales/mk.json +++ b/src/locales/mk.json @@ -1,121 +1,123 @@ { - "@metadata": { - "authors": [ - "Bjankuloski06", - "Brest" - ] - }, - "index.newPad": "\u041d\u043e\u0432\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430", - "index.createOpenPad": "\u0438\u043b\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u0435\u0442\u0435\/\u043e\u0442\u0432\u043e\u0440\u0435\u0442\u0435 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430 \u0441\u043e \u0438\u043c\u0435\u0442\u043e:", - "pad.toolbar.bold.title": "\u0417\u0430\u0434\u0435\u0431\u0435\u043b\u0435\u043d\u043e (Ctrl-B)", - "pad.toolbar.italic.title": "\u041a\u043e\u0441\u043e (Ctrl-I)", - "pad.toolbar.underline.title": "\u041f\u043e\u0434\u0432\u043b\u0435\u0447\u0435\u043d\u043e (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u041f\u0440\u0435\u0446\u0440\u0442\u0430\u043d\u043e", - "pad.toolbar.ol.title": "\u041f\u043e\u0434\u0440\u0435\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a", - "pad.toolbar.ul.title": "\u041d\u0435\u043f\u043e\u0434\u0440\u0435\u0434\u0435\u043d \u0441\u043f\u0438\u0441\u043e\u043a", - "pad.toolbar.indent.title": "\u0412\u043e\u0432\u043b\u0435\u043a\u0443\u0432\u0430\u045a\u0435", - "pad.toolbar.unindent.title": "\u041e\u0442\u0441\u0442\u0430\u043f", - "pad.toolbar.undo.title": "\u0412\u0440\u0430\u0442\u0438 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u041f\u043e\u043d\u0438\u0448\u0442\u0438 \u0433\u0438 \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0442\u0435 \u0431\u043e\u0438", - "pad.toolbar.import_export.title": "\u0423\u0432\u043e\u0437\/\u0418\u0437\u0432\u043e\u0437 \u043e\u0434\/\u0432\u043e \u0440\u0430\u0437\u043d\u0438 \u043f\u043e\u0434\u0430\u0442\u043e\u0442\u0435\u0447\u043d\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438", - "pad.toolbar.timeslider.title": "\u0418\u0441\u0442\u043e\u0440\u0438\u0441\u043a\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434", - "pad.toolbar.savedRevision.title": "\u0417\u0430\u0447\u0443\u0432\u0430\u043d\u0438 \u0440\u0435\u0432\u0438\u0437\u0438\u0438", - "pad.toolbar.settings.title": "\u041f\u043e\u0441\u0442\u0430\u0432\u043a\u0438", - "pad.toolbar.embed.title": "\u0412\u043c\u0435\u0442\u043d\u0438 \u0458\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0432\u0430", - "pad.toolbar.showusers.title": "\u041f\u0440\u0438\u043a\u0430\u0436. \u043a\u043e\u0440\u0438\u0441\u043d\u0438\u0446\u0438\u0442\u0435 \u043d\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0432\u0430", - "pad.colorpicker.save": "\u0417\u0430\u0447\u0443\u0432\u0430\u0458", - "pad.colorpicker.cancel": "\u041e\u0442\u043a\u0430\u0436\u0438", - "pad.loading": "\u0412\u0447\u0438\u0442\u0443\u0432\u0430\u043c...", - "pad.passwordRequired": "\u041f\u043e\u0442\u0440\u0435\u0431\u043d\u0430 \u0435 \u043b\u043e\u0437\u0438\u043d\u043a\u0430 \u0437\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f", - "pad.permissionDenied": "\u0417\u0430 \u043e\u0432\u0434\u0435 \u043d\u0435 \u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u0430 \u0434\u043e\u0437\u0432\u043e\u043b\u0430 \u0437\u0430 \u043f\u0440\u0438\u0441\u0442\u0430\u043f", - "pad.wrongPassword": "\u041f\u043e\u0433\u0440\u0435\u0448\u043d\u0430 \u043b\u043e\u0437\u0438\u043d\u043a\u0430", - "pad.settings.padSettings": "\u041f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u043d\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0442\u0430", - "pad.settings.myView": "\u041c\u043e\u0458 \u043f\u043e\u0433\u043b\u0435\u0434", - "pad.settings.stickychat": "\u0420\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0438\u0442\u0435 \u0441\u0435\u043a\u043e\u0433\u0430\u0448 \u043d\u0430 \u0435\u043a\u0440\u0430\u043d\u043e\u0442", - "pad.settings.colorcheck": "\u0410\u0432\u0442\u043e\u0440\u0441\u043a\u0438 \u0431\u043e\u0438", - "pad.settings.linenocheck": "\u0411\u0440\u043e\u0435\u0432\u0438 \u043d\u0430 \u0440\u0435\u0434\u043e\u0432\u0438\u0442\u0435", - "pad.settings.fontType": "\u0422\u0438\u043f \u043d\u0430 \u0444\u043e\u043d\u0442:", - "pad.settings.fontType.normal": "\u041d\u043e\u0440\u043c\u0430\u043b\u0435\u043d", - "pad.settings.fontType.monospaced": "\u041d\u0435\u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u043e\u043d\u0430\u043b\u0435\u043d", - "pad.settings.globalView": "\u0413\u043e\u0431\u0430\u043b\u0435\u043d \u043f\u043e\u0433\u043b\u0435\u0434", - "pad.settings.language": "\u0408\u0430\u0437\u0438\u043a:", - "pad.importExport.import_export": "\u0423\u0432\u043e\u0437\/\u0418\u0437\u0432\u043e\u0437", - "pad.importExport.import": "\u041f\u043e\u0434\u0438\u0433\u0430\u045a\u0435 \u043d\u0430 \u0431\u0438\u043b\u043e \u043a\u0430\u043a\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0443\u0430\u043b\u043d\u0430 \u043f\u043e\u0434\u0430\u0442\u043e\u0442\u0435\u043a\u0430 \u0438\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", - "pad.importExport.importSuccessful": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!", - "pad.importExport.export": "\u0418\u0437\u0432\u0435\u0437\u0438 \u0458\u0430 \u0442\u0435\u043a\u043e\u0432\u043d\u0430\u0442\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430 \u043a\u0430\u043a\u043e", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u041f\u0440\u043e\u0441\u0442 \u0442\u0435\u043a\u0441\u0442", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u041c\u043e\u0436\u0435\u0442\u0435 \u0434\u0430 \u0443\u0432\u0435\u0437\u0443\u0432\u0430\u0442\u0435 \u0441\u0430\u043c\u043e \u043e\u0434 \u043f\u0440\u043e\u0441\u0442 \u0442\u0435\u043a\u0441\u0442 \u0438 html-\u0444\u043e\u0440\u043c\u0430\u0442. \u041f\u043e\u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0438 \u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0437\u0430 \u0443\u0432\u043e\u0437 \u045c\u0435 \u0434\u043e\u0431\u0438\u0435\u0442\u0435 \u0430\u043a\u043e \u0438\u043d\u0441\u0442\u0430\u043b\u0438\u0440\u0430\u0442\u0435 AbiWord<\/a>.", - "pad.modals.connected": "\u041f\u043e\u0432\u0440\u0437\u0430\u043d\u043e.", - "pad.modals.reconnecting": "\u0412\u0435 \u043f\u0440\u0435\u043f\u043e\u0432\u0440\u0437\u0443\u0432\u0430\u043c \u0441\u043e \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0442\u0430...", - "pad.modals.forcereconnect": "\u041d\u0430\u043c\u0435\u0442\u043d\u0438 \u043f\u0440\u0435\u043f\u043e\u0432\u0440\u0437\u0443\u0432\u0430\u045a\u0435", - "pad.modals.userdup": "\u041e\u0442\u0432\u043e\u0440\u0435\u043d\u043e \u0432\u043e \u0434\u0440\u0443\u0433 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446", - "pad.modals.userdup.explanation": "\u041e\u0432\u0430\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430 \u0435 \u043e\u0442\u0432\u043e\u0440\u0435\u043d\u0430 \u043d\u0430 \u043f\u043e\u0432\u0435\u045c\u0435 \u043e\u0434 \u0435\u0434\u0435\u043d \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 (\u0432\u043e \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447) \u043d\u0430 \u0441\u043c\u0435\u0442\u0430\u0447\u043e\u0442.", - "pad.modals.userdup.advice": "\u041f\u0440\u0435\u043f\u043e\u0432\u0440\u0437\u0435\u0442\u0435 \u0441\u0435 \u0437\u0430 \u0434\u0430 \u0433\u043e \u043a\u043e\u0440\u0438\u0441\u0442\u0438\u0442\u0435 \u043e\u0432\u043e\u0458 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446.", - "pad.modals.unauth": "\u041d\u0435\u043e\u0432\u043b\u0430\u0441\u0442\u0435\u043d\u043e", - "pad.modals.unauth.explanation": "\u0412\u0430\u0448\u0438\u0442\u0435 \u0434\u043e\u0437\u0432\u043e\u043b\u0438 \u0441\u0435 \u0438\u043c\u0430\u0430\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u0442\u043e \u0434\u043e\u0434\u0435\u043a\u0430 \u0458\u0430 \u0433\u043b\u0435\u0434\u0430\u0432\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0432\u0430. \u041e\u0431\u0438\u0434\u0435\u0442\u0435 \u0441\u0435 \u0434\u0430 \u0441\u0435 \u043f\u0440\u0435\u043f\u043e\u0432\u0440\u0437\u0435\u0442\u0435.", - "pad.modals.looping": "\u0412\u0440\u0441\u043a\u0430\u0442\u0430 \u0435 \u043f\u0440\u0435\u043a\u0438\u043d\u0430\u0442\u0430.", - "pad.modals.looping.explanation": "\u0421\u0435 \u0458\u0430\u0432\u0438\u0458\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438 \u0441\u043e \u0432\u0440\u0441\u043a\u0430\u0442\u0430 \u0441\u043e \u0443\u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u043b\u043d\u0438\u043e\u0442 \u043e\u043f\u0441\u043b\u0443\u0436\u0443\u0432\u0430\u0447.", - "pad.modals.looping.cause": "\u041c\u043e\u0436\u0435\u0431\u0438 \u0441\u0442\u0435 \u043f\u043e\u0432\u0440\u0437\u0430\u043d\u0438 \u043f\u0440\u0435\u043a\u0443 \u043d\u0435\u0441\u043a\u043b\u0430\u0434\u0435\u043d \u043e\u0433\u043d\u0435\u043d \u0455\u0438\u0434 \u0438\u043b\u0438 \u0437\u0430\u0441\u0442\u0430\u043f\u043d\u0438\u043a.", - "pad.modals.initsocketfail": "\u041e\u043f\u0441\u043b\u0443\u0436\u0443\u0432\u0430\u0447\u043e\u0442 \u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u043f\u0435\u043d.", - "pad.modals.initsocketfail.explanation": "\u041d\u0435 \u043c\u043e\u0436\u0435\u0432 \u0434\u0430 \u0441\u0435 \u043f\u043e\u0432\u0440\u0437\u0430\u043c \u0441\u043e \u0443\u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0435\u043b\u043d\u0438\u043e\u0442 \u043e\u043f\u0441\u043b\u0443\u0436\u0443\u0432\u0430\u0447.", - "pad.modals.initsocketfail.cause": "\u041e\u0432\u0430 \u0432\u0435\u0440\u043e\u0458\u0430\u0442\u043d\u043e \u0441\u0435 \u0434\u043e\u043b\u0436\u0438 \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441\u043e \u0432\u0430\u0448\u0438\u043e\u0442 \u043f\u0440\u0435\u043b\u0438\u0441\u0442\u0443\u0432\u0430\u0447 \u0438\u043b\u0438 \u0432\u0440\u0441\u043a\u0430\u0442\u0430 \u0441\u043e \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442.", - "pad.modals.slowcommit": "\u041f\u0440\u0435\u043a\u0438\u043d\u0430\u0442\u043e.", - "pad.modals.slowcommit.explanation": "\u041e\u043f\u0441\u043b\u0443\u0436\u0443\u0432\u0430\u0447\u043e\u0442 \u043d\u0435 \u0441\u0435 \u043e\u0434\u0455\u0438\u0432\u0430.", - "pad.modals.slowcommit.cause": "\u041e\u0432\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0441\u0435 \u0434\u043e\u043b\u0436\u0438 \u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0438 \u0441\u043e \u043c\u0440\u0435\u0436\u043d\u043e\u0442\u043e \u043f\u043e\u0432\u0440\u0437\u0443\u0432\u0430\u045a\u0435.", - "pad.modals.deleted": "\u0418\u0437\u0431\u0440\u0438\u0448\u0430\u043d\u043e.", - "pad.modals.deleted.explanation": "\u041e\u0432\u0430\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430 \u0435 \u043e\u0442\u0441\u0442\u0440\u0430\u043d\u0435\u0442\u0430.", - "pad.modals.disconnected": "\u0412\u0440\u0441\u043a\u0430\u0442\u0430 \u0435 \u043f\u0440\u0435\u043a\u0438\u043d\u0430\u0442\u0430.", - "pad.modals.disconnected.explanation": "\u0412\u0440\u0441\u043a\u0430\u0442\u0430 \u0441\u043e \u043e\u043f\u0441\u043b\u0443\u0436\u0443\u0432\u0430\u0447\u043e\u0442 \u0435 \u043f\u0440\u0435\u043a\u0438\u043d\u0430\u0442\u0430", - "pad.modals.disconnected.cause": "\u041e\u043f\u0441\u043b\u0443\u0436\u0443\u0432\u0430\u0447\u043e\u0442 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u043f\u0435\u043d. \u0418\u0437\u0432\u0435\u0441\u0442\u0435\u0442\u0435 \u043d\u00e8 \u0430\u043a\u043e \u043e\u0432\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438 \u0434\u0430 \u0432\u0438 \u0441\u0435 \u0441\u043b\u0443\u0447\u0443\u0432\u0430.", - "pad.share": "\u0421\u043f\u043e\u0434\u0435\u043b\u0438 \u0458\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0432\u0430", - "pad.share.readonly": "\u0421\u0430\u043c\u043e \u0447\u0438\u0442\u0430\u045a\u0435", - "pad.share.link": "\u0412\u0440\u0441\u043a\u0430", - "pad.share.emebdcode": "\u0412\u043c\u0435\u0442\u043d\u0438 URL", - "pad.chat": "\u0420\u0430\u0437\u0433\u043e\u0432\u043e\u0440", - "pad.chat.title": "\u041e\u0442\u0432\u043e\u0440\u0438 \u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u043e\u0442 \u0437\u0430 \u043e\u0432\u0430\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430.", - "pad.chat.loadmessages": "\u0412\u0447\u0438\u0442\u0430\u0458 \u0443\u0448\u0442\u0435 \u043f\u043e\u0440\u0430\u043a\u0438", - "timeslider.pageTitle": "{{appTitle}} \u0418\u0441\u0442\u043e\u0440\u0438\u0441\u043a\u0438 \u043f\u0440\u0435\u0433\u043b\u0435\u0434", - "timeslider.toolbar.returnbutton": "\u041d\u0430\u0437\u0430\u0434 \u043d\u0430 \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0442\u0430", - "timeslider.toolbar.authors": "\u0410\u0432\u0442\u043e\u0440\u0438:", - "timeslider.toolbar.authorsList": "\u041d\u0435\u043c\u0430 \u0430\u0432\u0442\u043e\u0440\u0438", - "timeslider.toolbar.exportlink.title": "\u0418\u0437\u0432\u043e\u0437", - "timeslider.exportCurrent": "\u0418\u0437\u0432\u0435\u0437\u0438 \u0458\u0430 \u0442\u0435\u043a\u043e\u0432\u043d\u0430\u0442\u0430 \u0432\u0435\u0440\u0437\u0438\u0458\u0430 \u043a\u0430\u043a\u043e:", - "timeslider.version": "\u0412\u0435\u0440\u0437\u0438\u0458\u0430 {{version}}", - "timeslider.saved": "\u0417\u0430\u0447\u0443\u0432\u0430\u043d\u043e \u043d\u0430 {{day}} {{month}} {{year}} \u0433.", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u0458\u0430\u043d\u0443\u0430\u0440\u0438", - "timeslider.month.february": "\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438", - "timeslider.month.march": "\u043c\u0430\u0440\u0442", - "timeslider.month.april": "\u0430\u043f\u0440\u0438\u043b", - "timeslider.month.may": "\u043c\u0430\u0458", - "timeslider.month.june": "\u0458\u0443\u043d\u0438", - "timeslider.month.july": "\u0458\u0443\u043b\u0438", - "timeslider.month.august": "\u0430\u0432\u0433\u0443\u0441\u0442", - "timeslider.month.september": "\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438", - "timeslider.month.october": "\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438", - "timeslider.month.november": "\u043d\u043e\u0435\u043c\u0432\u0440\u0438", - "timeslider.month.december": "\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438", - "timeslider.unnamedauthor": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d \u0430\u0432\u0442\u043e\u0440", - "timeslider.unnamedauthors": "{{num}} \u043d\u0435\u0438\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0430\u0432\u0442\u043e\u0440\u0438", - "pad.savedrevs.marked": "\u041e\u0432\u0430\u0430 \u0440\u0435\u0432\u0438\u0437\u0438\u0458\u0430 \u0441\u0435\u0433\u0430 \u0435 \u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0430 \u043a\u0430\u043a\u043e \u0437\u0430\u0447\u0443\u0432\u0430\u043d\u0430", - "pad.userlist.entername": "\u0412\u043d\u0435\u0441\u0435\u0442\u0435 \u0433\u043e \u0432\u0430\u0448\u0435\u0442\u043e \u0438\u043c\u0435", - "pad.userlist.unnamed": "\u0431\u0435\u0437 \u0438\u043c\u0435", - "pad.userlist.guest": "\u0413\u043e\u0441\u0442\u0438\u043d", - "pad.userlist.deny": "\u041e\u0434\u0431\u0438\u0458", - "pad.userlist.approve": "\u041e\u0434\u043e\u0431\u0440\u0438", - "pad.editbar.clearcolors": "\u0414\u0430 \u0433\u0438 \u043e\u0442\u0441\u0442\u0440\u0430\u043d\u0430\u043c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0442\u0435 \u0431\u043e\u0438 \u043e\u0434 \u0446\u0435\u043b\u0438\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442?", - "pad.impexp.importbutton": "\u0423\u0432\u0435\u0437\u0438 \u0441\u0435\u0433\u0430", - "pad.impexp.importing": "\u0423\u0432\u0435\u0437\u0443\u0432\u0430\u043c...", - "pad.impexp.confirmimport": "\u0423\u0432\u0435\u0437\u0443\u0432\u0430\u0458\u045c\u0438 \u0458\u0430 \u043f\u043e\u0434\u0430\u0442\u043e\u0442\u0435\u043a\u0430\u0442\u0430 \u045c\u0435 \u0433\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435 \u0446\u0435\u043b\u0438\u043e\u0442 \u0434\u043e\u0441\u0435\u0433\u0430\u0448\u0435\u043d \u0442\u0435\u043a\u0441\u0442 \u0432\u043e \u0442\u0435\u0442\u0440\u0430\u0442\u043a\u0430\u0442\u0430. \u0414\u0430\u043b\u0438 \u0441\u0442\u0435 \u0441\u0438\u0433\u0443\u0440\u043d\u0438 \u0434\u0435\u043a\u0430 \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435?", - "pad.impexp.convertFailed": "\u041d\u0435 \u043c\u043e\u0436\u0435\u0432 \u0434\u0430 \u0458\u0430 \u0443\u0432\u0435\u0437\u0430\u043c \u043f\u043e\u0434\u0430\u0442\u043e\u0442\u0435\u043a\u0430\u0442\u0430. \u041f\u043e\u0441\u043b\u0443\u0436\u0435\u0442\u0435 \u0441\u0435 \u0441\u043e \u043f\u043e\u0438\u043d\u0430\u043a\u043e\u0432 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u043b\u0438 \u043f\u0440\u0435\u043a\u043e\u043f\u0438\u0440\u0430\u0458\u0442\u0435 \u0433\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0442 \u0440\u0430\u0447\u043d\u043e.", - "pad.impexp.uploadFailed": "\u041f\u043e\u0434\u0438\u0433\u0430\u045a\u0435\u0442\u043e \u043d\u0435 \u0443\u0441\u043f\u0435\u0430. \u041e\u0431\u0438\u0434\u0435\u0442\u0435 \u0441\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e.", - "pad.impexp.importfailed": "\u0423\u0432\u043e\u0437\u043e\u0442 \u043d\u0435 \u0443\u0441\u043f\u0435\u0430", - "pad.impexp.copypaste": "\u041f\u0440\u0435\u043a\u043e\u043f\u0438\u0440\u0430\u0458\u0442\u0435", - "pad.impexp.exportdisabled": "\u0418\u0437\u0432\u043e\u0437\u043e\u0442 \u0432\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0442 {{type}} \u0435 \u043e\u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u0435\u043d. \u0410\u043a\u043e \u0441\u0430\u043a\u0430\u0442\u0435 \u0434\u0430 \u0434\u043e\u0437\u043d\u0430\u0435\u0442\u0435 \u043f\u043e\u0432\u0435\u045c\u0435 \u0437\u0430 \u043e\u0432\u0430, \u043e\u0431\u0440\u0430\u0442\u0435\u0442\u0435 \u0441\u0435 \u043a\u0430\u0458 \u0441\u0438\u0441\u0442\u0435\u043c\u0441\u043a\u0438\u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440." + "@metadata": { + "authors": [ + "Bjankuloski06", + "Brest" + ] + }, + "index.newPad": "Ðова тетратка", + "index.createOpenPad": "или направете/отворете тетратка Ñо името:", + "pad.toolbar.bold.title": "Задебелено (Ctrl-B)", + "pad.toolbar.italic.title": "КоÑо (Ctrl-I)", + "pad.toolbar.underline.title": "Подвлечено (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Прецртано", + "pad.toolbar.ol.title": "Подреден ÑпиÑок", + "pad.toolbar.ul.title": "Ðеподреден ÑпиÑок", + "pad.toolbar.indent.title": "Вовлекување", + "pad.toolbar.unindent.title": "ОтÑтап", + "pad.toolbar.undo.title": "Врати (Ctrl-Z)", + "pad.toolbar.redo.title": "Повтори (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Поништи ги авторÑките бои", + "pad.toolbar.import_export.title": "Увоз/Извоз од/во разни податотечни формати", + "pad.toolbar.timeslider.title": "ИÑториÑки преглед", + "pad.toolbar.savedRevision.title": "Зачувај ревизија", + "pad.toolbar.settings.title": "ПоÑтавки", + "pad.toolbar.embed.title": "Споделете и вметнете ја тетраткава", + "pad.toolbar.showusers.title": "Прикаж. кориÑниците на тетраткава", + "pad.colorpicker.save": "Зачувај", + "pad.colorpicker.cancel": "Откажи", + "pad.loading": "Вчитувам...", + "pad.passwordRequired": "Потребна е лозинка за приÑтап", + "pad.permissionDenied": "За овде не е потребна дозвола за приÑтап", + "pad.wrongPassword": "Погрешна лозинка", + "pad.settings.padSettings": "ПоÑтавки на тетратката", + "pad.settings.myView": "Мој поглед", + "pad.settings.stickychat": "Разговорите Ñекогаш на екранот", + "pad.settings.colorcheck": "ÐвторÑки бои", + "pad.settings.linenocheck": "Броеви на редовите", + "pad.settings.rtlcheck": "Содржините да Ñе читаат од деÑно на лево?", + "pad.settings.fontType": "Тип на фонт:", + "pad.settings.fontType.normal": "Ðормален", + "pad.settings.fontType.monospaced": "Ðепропорционален", + "pad.settings.globalView": "Гобален поглед", + "pad.settings.language": "Јазик:", + "pad.importExport.import_export": "Увоз/Извоз", + "pad.importExport.import": "Подигање на било каква текÑтуална податотека или документ", + "pad.importExport.importSuccessful": "УÑпешно!", + "pad.importExport.export": "Извези ја тековната тетратка како", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "ПроÑÑ‚ текÑÑ‚", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Можете да увезувате Ñамо од проÑÑ‚ текÑÑ‚ и html-формат. Понапредни можноÑти за увоз ќе добиете ако \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EинÑталирате AbiWord\u003C/a\u003E.", + "pad.modals.connected": "Поврзано.", + "pad.modals.reconnecting": "Ве преповрзувам Ñо тетратката...", + "pad.modals.forcereconnect": "Ðаметни преповрзување", + "pad.modals.userdup": "Отворено во друг прозорец", + "pad.modals.userdup.explanation": "Оваа тетратка е отворена на повеќе од еден прозорец (во прелиÑтувач) на Ñметачот.", + "pad.modals.userdup.advice": "Преповрзете Ñе за да го кориÑтите овој прозорец.", + "pad.modals.unauth": "ÐеовлаÑтено", + "pad.modals.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.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}} {[plural(num) one: неименуван автор, other: неименувани автори ]}", + "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.confirmimport": "Увезувајќи ја податотеката ќе го замените целиот доÑегашен текÑÑ‚ во тетратката. Дали Ñте Ñигурни дека Ñакате да продолжите?", + "pad.impexp.convertFailed": "Ðе можев да ја увезам податотеката. ПоÑлужете Ñе Ñо поинаков формат или прекопирајте го текÑтот рачно.", + "pad.impexp.uploadFailed": "Подигањето не уÑпеа. Обидете Ñе повторно.", + "pad.impexp.importfailed": "Увозот не уÑпеа", + "pad.impexp.copypaste": "Прекопирајте", + "pad.impexp.exportdisabled": "Извозот во форматот {{type}} е оневозможен. Ðко Ñакате да дознаете повеќе за ова, обратете Ñе кај ÑиÑтемÑкиот админиÑтратор." } \ No newline at end of file diff --git a/src/locales/ml.json b/src/locales/ml.json index e82504348..1a51cc99e 100644 --- a/src/locales/ml.json +++ b/src/locales/ml.json @@ -1,119 +1,126 @@ { - "@metadata": { - "authors": [ - "Hrishikesh.kb", - "Praveenp", - "Santhosh.thottingal" - ] - }, - "index.newPad": "\u0d2a\u0d41\u0d24\u0d3f\u0d2f \u0d2a\u0d3e\u0d21\u0d4d", - "index.createOpenPad": "\u0d05\u0d32\u0d4d\u0d32\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d \u0d2a\u0d47\u0d30\u0d41\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d1a\u0d4d\u0d1a\u0d4d \u0d2a\u0d3e\u0d21\u0d4d \u0d38\u0d43\u0d37\u0d4d\u0d1f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15\/\u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15:", - "pad.toolbar.bold.title": "\u0d15\u0d1f\u0d4d\u0d1f\u0d3f\u0d15\u0d42\u0d1f\u0d4d\u0d1f\u0d3f\u0d2f\u0d46\u0d34\u0d41\u0d24\u0d41\u0d15 (Ctrl-B)", - "pad.toolbar.italic.title": "\u0d1a\u0d46\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d46\u0d34\u0d41\u0d24\u0d41\u0d15 (Ctrl-I)", - "pad.toolbar.underline.title": "\u0d05\u0d1f\u0d3f\u0d35\u0d30\u0d2f\u0d3f\u0d1f\u0d41\u0d15 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u0d35\u0d46\u0d1f\u0d4d\u0d1f\u0d41\u0d15", - "pad.toolbar.ol.title": "\u0d15\u0d4d\u0d30\u0d2e\u0d24\u0d4d\u0d24\u0d3f\u0d32\u0d41\u0d33\u0d4d\u0d33 \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15", - "pad.toolbar.ul.title": "\u0d15\u0d4d\u0d30\u0d2e\u0d30\u0d39\u0d3f\u0d24 \u0d2a\u0d1f\u0d4d\u0d1f\u0d3f\u0d15", - "pad.toolbar.indent.title": "\u0d35\u0d32\u0d24\u0d4d\u0d24\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d33\u0d4d\u0d33\u0d41\u0d15", - "pad.toolbar.unindent.title": "\u0d07\u0d1f\u0d24\u0d4d\u0d24\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d33\u0d4d\u0d33\u0d41\u0d15", - "pad.toolbar.undo.title": "\u0d24\u0d3f\u0d30\u0d38\u0d4d\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d7e\u0d15\u0d4d\u0d15\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3f\u0d31\u0d02 \u0d15\u0d33\u0d2f\u0d41\u0d15", - "pad.toolbar.import_export.title": "\u0d35\u0d4d\u0d2f\u0d24\u0d4d\u0d2f\u0d38\u0d4d\u0d24 \u0d2b\u0d2f\u0d7d \u0d24\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d\/\u0d24\u0d30\u0d19\u0d4d\u0d19\u0d33\u0d3f\u0d7d \u0d28\u0d3f\u0d28\u0d4d\u0d28\u0d4d \u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f\/\u0d15\u0d2f\u0d31\u0d4d\u0d31\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.toolbar.timeslider.title": "\u0d38\u0d2e\u0d2f\u0d30\u0d47\u0d16", - "pad.toolbar.savedRevision.title": "\u0d38\u0d47\u0d35\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d41\u0d15\u0d7e", - "pad.toolbar.settings.title": "\u0d38\u0d1c\u0d4d\u0d1c\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e", - "pad.toolbar.embed.title": "\u0d08 \u0d2a\u0d3e\u0d21\u0d4d \u0d0e\u0d02\u0d2c\u0d46\u0d21\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.toolbar.showusers.title": "\u0d08 \u0d2a\u0d3e\u0d21\u0d3f\u0d32\u0d41\u0d33\u0d4d\u0d33 \u0d09\u0d2a\u0d2f\u0d4b\u0d15\u0d4d\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d33\u0d46 \u0d2a\u0d4d\u0d30\u0d26\u0d7c\u0d36\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.colorpicker.save": "\u0d38\u0d47\u0d35\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.colorpicker.cancel": "\u0d31\u0d26\u0d4d\u0d26\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.loading": "\u0d36\u0d47\u0d16\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41...", - "pad.passwordRequired": "\u0d08 \u0d2a\u0d3e\u0d21\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d3f\u0d28\u0d3e\u0d2f\u0d3f \u0d12\u0d30\u0d41 \u0d30\u0d39\u0d38\u0d4d\u0d2f\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d28\u0d7d\u0d15\u0d47\u0d23\u0d4d\u0d1f\u0d24\u0d3e\u0d23\u0d4d", - "pad.permissionDenied": "\u0d08 \u0d2a\u0d3e\u0d21\u0d4d \u0d15\u0d3e\u0d23\u0d41\u0d35\u0d3e\u0d7b \u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d7e\u0d15\u0d4d\u0d15\u0d4d \u0d05\u0d28\u0d41\u0d2e\u0d24\u0d3f\u0d2f\u0d3f\u0d32\u0d4d\u0d32", - "pad.wrongPassword": "\u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d7e \u0d28\u0d32\u0d4d\u0d15\u0d3f\u0d2f \u0d30\u0d39\u0d38\u0d4d\u0d2f\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d46\u0d31\u0d4d\u0d31\u0d3e\u0d2f\u0d3f\u0d30\u0d41\u0d28\u0d4d\u0d28\u0d41", - "pad.settings.padSettings": "\u0d2a\u0d3e\u0d21\u0d4d \u0d38\u0d1c\u0d4d\u0d1c\u0d40\u0d15\u0d30\u0d23\u0d19\u0d4d\u0d19\u0d7e", - "pad.settings.myView": "\u0d0e\u0d28\u0d4d\u0d31\u0d46 \u0d15\u0d3e\u0d34\u0d4d\u0d1a", - "pad.settings.stickychat": "\u0d24\u0d24\u0d4d\u0d38\u0d2e\u0d2f\u0d02 \u0d38\u0d02\u0d35\u0d3e\u0d26\u0d02 \u0d0e\u0d2a\u0d4d\u0d2a\u0d4b\u0d34\u0d41\u0d02 \u0d38\u0d4d\u0d15\u0d4d\u0d30\u0d40\u0d28\u0d3f\u0d7d \u0d15\u0d3e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.settings.colorcheck": "\u0d0e\u0d34\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15\u0d3e\u0d7c\u0d15\u0d4d\u0d15\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3f\u0d31\u0d19\u0d4d\u0d19\u0d7e", - "pad.settings.linenocheck": "\u0d35\u0d30\u0d3f\u0d15\u0d33\u0d41\u0d1f\u0d46 \u0d15\u0d4d\u0d30\u0d2e\u0d38\u0d02\u0d16\u0d4d\u0d2f", - "pad.settings.fontType": "\u0d2b\u0d4b\u0d23\u0d4d\u0d1f\u0d4d \u0d24\u0d30\u0d02:", - "pad.settings.fontType.normal": "\u0d38\u0d3e\u0d27\u0d3e\u0d30\u0d23\u0d02", - "pad.settings.fontType.monospaced": "\u0d2e\u0d4b\u0d23\u0d4b\u0d38\u0d4d\u0d2a\u0d47\u0d38\u0d4d", - "pad.settings.globalView": "\u0d2e\u0d4a\u0d24\u0d4d\u0d24\u0d15\u0d4d\u0d15\u0d3e\u0d34\u0d4d\u0d1a", - "pad.settings.language": "\u0d2d\u0d3e\u0d37:", - "pad.importExport.import_export": "\u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f\/\u0d15\u0d2f\u0d31\u0d4d\u0d31\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.importExport.import": "\u0d0e\u0d28\u0d4d\u0d24\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d32\u0d41\u0d02 \u0d0e\u0d34\u0d41\u0d24\u0d4d\u0d24\u0d41 \u0d2a\u0d4d\u0d30\u0d2e\u0d3e\u0d23\u0d2e\u0d4b \u0d30\u0d47\u0d16\u0d2f\u0d4b \u0d05\u0d2a\u0d4d\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.importExport.importSuccessful": "\u0d35\u0d3f\u0d1c\u0d2f\u0d15\u0d30\u0d02!", - "pad.importExport.export": "\u0d07\u0d2a\u0d4d\u0d2a\u0d4b\u0d34\u0d24\u0d4d\u0d24\u0d46 \u0d2a\u0d3e\u0d21\u0d4d \u0d07\u0d19\u0d4d\u0d19\u0d28\u0d46 \u0d15\u0d2f\u0d31\u0d4d\u0d31\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15:", - "pad.importExport.exporthtml": "\u0d0e\u0d1a\u0d4d\u0d1a\u0d4d.\u0d31\u0d4d\u0d31\u0d3f.\u0d0e\u0d02.\u0d0e\u0d7d.", - "pad.importExport.exportplain": "\u0d35\u0d46\u0d31\u0d41\u0d02 \u0d0e\u0d34\u0d41\u0d24\u0d4d\u0d24\u0d4d", - "pad.importExport.exportword": "\u0d2e\u0d48\u0d15\u0d4d\u0d30\u0d4b\u0d38\u0d4b\u0d2b\u0d4d\u0d31\u0d4d\u0d31\u0d4d \u0d35\u0d47\u0d21\u0d4d", - "pad.importExport.exportpdf": "\u0d2a\u0d3f.\u0d21\u0d3f.\u0d0e\u0d2b\u0d4d.", - "pad.importExport.exportopen": "\u0d12.\u0d21\u0d3f.\u0d0e\u0d2b\u0d4d. (\u0d13\u0d2a\u0d4d\u0d2a\u0d7a \u0d21\u0d4b\u0d15\u0d4d\u0d2f\u0d41\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d4d \u0d2b\u0d4b\u0d7c\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d4d)", - "pad.importExport.exportdokuwiki": "\u0d21\u0d4b\u0d15\u0d41\u0d35\u0d3f\u0d15\u0d4d\u0d15\u0d3f", - "pad.modals.connected": "\u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41.", - "pad.modals.reconnecting": "\u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d33\u0d41\u0d1f\u0d46 \u0d2a\u0d3e\u0d21\u0d3f\u0d32\u0d47\u0d2f\u0d4d\u0d15\u0d4d\u0d15\u0d4d \u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02 \u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41...", - "pad.modals.forcereconnect": "\u0d0e\u0d28\u0d4d\u0d24\u0d3e\u0d2f\u0d3e\u0d32\u0d41\u0d02 \u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.modals.userdup": "\u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d1c\u0d3e\u0d32\u0d15\u0d24\u0d4d\u0d24\u0d3f\u0d7d \u0d24\u0d41\u0d31\u0d28\u0d4d\u0d28\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41", - "pad.modals.userdup.explanation": "\u0d08 \u0d15\u0d2e\u0d4d\u0d2a\u0d4d\u0d2f\u0d42\u0d1f\u0d4d\u0d1f\u0d31\u0d3f\u0d7d \u0d08 \u0d2a\u0d3e\u0d21\u0d4d \u0d12\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d27\u0d3f\u0d15\u0d02 \u0d2c\u0d4d\u0d30\u0d57\u0d38\u0d7c \u0d1c\u0d3e\u0d32\u0d15\u0d19\u0d4d\u0d19\u0d33\u0d3f\u0d7d \u0d24\u0d41\u0d31\u0d28\u0d4d\u0d28\u0d24\u0d3e\u0d2f\u0d3f \u0d15\u0d3e\u0d23\u0d41\u0d28\u0d4d\u0d28\u0d41.", - "pad.modals.userdup.advice": "\u0d08 \u0d1c\u0d3e\u0d32\u0d15\u0d02 \u0d24\u0d28\u0d4d\u0d28\u0d46 \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d28\u0d3e\u0d2f\u0d3f \u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.modals.unauth": "\u0d05\u0d28\u0d41\u0d35\u0d3e\u0d26\u0d2e\u0d3f\u0d32\u0d4d\u0d32", - "pad.modals.unauth.explanation": "\u0d08 \u0d24\u0d3e\u0d7e \u0d15\u0d23\u0d4d\u0d1f\u0d41\u0d15\u0d4a\u0d23\u0d4d\u0d1f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d46 \u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d7e\u0d15\u0d4d\u0d15\u0d41\u0d33\u0d4d\u0d33 \u0d05\u0d28\u0d41\u0d2e\u0d24\u0d3f\u0d15\u0d33\u0d3f\u0d7d \u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d2e\u0d41\u0d23\u0d4d\u0d1f\u0d3e\u0d2f\u0d3f. \u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02 \u0d2c\u0d28\u0d4d\u0d27\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d3e\u0d7b \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15.", - "pad.modals.looping": "\u0d35\u0d47\u0d7c\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41.", - "pad.modals.looping.explanation": "\u0d38\u0d3f\u0d02\u0d15\u0d4d\u0d30\u0d23\u0d48\u0d38\u0d47\u0d37\u0d7b \u0d38\u0d46\u0d7c\u0d35\u0d31\u0d41\u0d2e\u0d3e\u0d2f\u0d41\u0d33\u0d4d\u0d33 \u0d06\u0d36\u0d2f\u0d35\u0d3f\u0d28\u0d3f\u0d2e\u0d2f\u0d24\u0d4d\u0d24\u0d3f\u0d7d \u0d2a\u0d4d\u0d30\u0d36\u0d4d\u0d28\u0d19\u0d4d\u0d19\u0d33\u0d41\u0d23\u0d4d\u0d1f\u0d4d.", - "pad.modals.looping.cause": "\u0d12\u0d30\u0d41\u0d2a\u0d15\u0d4d\u0d37\u0d47 \u0d2a\u0d4a\u0d30\u0d41\u0d24\u0d4d\u0d24\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d3e\u0d24\u0d4d\u0d24 \u0d2b\u0d2f\u0d7c\u0d35\u0d3e\u0d33\u0d3f\u0d32\u0d42\u0d1f\u0d46\u0d2f\u0d4b \u0d2a\u0d4d\u0d30\u0d4b\u0d15\u0d4d\u0d38\u0d3f\u0d2f\u0d3f\u0d32\u0d42\u0d1f\u0d46\u0d2f\u0d4b \u0d06\u0d15\u0d3e\u0d02 \u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d7e \u0d2c\u0d28\u0d4d\u0d27\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d30\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d.", - "pad.modals.initsocketfail": "\u0d38\u0d46\u0d7c\u0d35\u0d31\u0d3f\u0d32\u0d46\u0d24\u0d4d\u0d24\u0d3e\u0d7b \u0d2a\u0d31\u0d4d\u0d31\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32.", - "pad.modals.initsocketfail.explanation": "\u0d38\u0d3f\u0d02\u0d15\u0d4d\u0d30\u0d23\u0d48\u0d38\u0d47\u0d37\u0d7b \u0d38\u0d46\u0d7c\u0d35\u0d31\u0d41\u0d2e\u0d3e\u0d2f\u0d3f \u0d2c\u0d28\u0d4d\u0d27\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d3e\u0d7b \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d3f\u0d32\u0d4d\u0d32.", - "pad.modals.initsocketfail.cause": "\u0d07\u0d28\u0d4d\u0d31\u0d7c\u0d28\u0d46\u0d31\u0d4d\u0d31\u0d4d \u0d15\u0d23\u0d15\u0d4d\u0d37\u0d28\u0d4d\u0d31\u0d46\u0d2f\u0d4b \u0d2c\u0d4d\u0d30\u0d57\u0d38\u0d31\u0d3f\u0d28\u0d4d\u0d31\u0d46\u0d2f\u0d4b \u0d2a\u0d4d\u0d30\u0d36\u0d4d\u0d28\u0d2e\u0d3e\u0d15\u0d3e\u0d02", - "pad.modals.slowcommit": "\u0d35\u0d47\u0d7c\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41.", - "pad.modals.slowcommit.explanation": "\u0d38\u0d46\u0d7c\u0d35\u0d7c \u0d2a\u0d4d\u0d30\u0d24\u0d3f\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d3f\u0d32\u0d4d\u0d32.", - "pad.modals.slowcommit.cause": "\u0d28\u0d46\u0d31\u0d4d\u0d31\u0d4d\u200c\u0d35\u0d7c\u0d15\u0d4d\u0d15\u0d4d \u0d2a\u0d4d\u0d30\u0d36\u0d4d\u0d28\u0d02 \u0d15\u0d3e\u0d30\u0d23\u0d2e\u0d3e\u0d15\u0d3e\u0d02.", - "pad.modals.deleted": "\u0d2e\u0d3e\u0d2f\u0d4d\u0d1a\u0d4d\u0d1a\u0d41", - "pad.modals.deleted.explanation": "\u0d08 \u0d2a\u0d3e\u0d21\u0d4d \u0d28\u0d40\u0d15\u0d4d\u0d15\u0d02 \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d41.", - "pad.modals.disconnected": "\u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d7e \u0d35\u0d47\u0d7c\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41.", - "pad.modals.disconnected.explanation": "\u0d38\u0d46\u0d7c\u0d35\u0d31\u0d41\u0d2e\u0d3e\u0d2f\u0d41\u0d33\u0d4d\u0d33 \u0d2c\u0d28\u0d4d\u0d27\u0d02 \u0d28\u0d37\u0d4d\u0d1f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41", - "pad.modals.disconnected.cause": "\u0d38\u0d46\u0d7c\u0d35\u0d7c \u0d32\u0d2d\u0d4d\u0d2f\u0d2e\u0d32\u0d4d\u0d32\u0d3e\u0d2f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d02. \u0d07\u0d24\u0d4d \u0d24\u0d41\u0d1f\u0d7c\u0d1a\u0d4d\u0d1a\u0d2f\u0d3e\u0d2f\u0d3f \u0d38\u0d02\u0d2d\u0d35\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41\u0d23\u0d4d\u0d1f\u0d46\u0d19\u0d4d\u0d15\u0d3f\u0d7d \u0d26\u0d2f\u0d35\u0d3e\u0d2f\u0d3f \u0d1e\u0d19\u0d4d\u0d19\u0d33\u0d46 \u0d05\u0d31\u0d3f\u0d2f\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15.", - "pad.share": "\u0d08 \u0d2a\u0d3e\u0d21\u0d4d \u0d2a\u0d19\u0d4d\u0d15\u0d3f\u0d1f\u0d41\u0d15", - "pad.share.readonly": "\u0d35\u0d3e\u0d2f\u0d3f\u0d15\u0d4d\u0d15\u0d7d \u0d2e\u0d3e\u0d24\u0d4d\u0d30\u0d02", - "pad.share.link": "\u0d15\u0d23\u0d4d\u0d23\u0d3f", - "pad.share.emebdcode": "\u0d0e\u0d02\u0d2c\u0d46\u0d21\u0d4d \u0d2f\u0d41.\u0d06\u0d7c.\u0d0e\u0d7d.", - "pad.chat": "\u0d24\u0d24\u0d4d\u0d38\u0d2e\u0d2f\u0d38\u0d02\u0d35\u0d3e\u0d26\u0d02", - "pad.chat.title": "\u0d08 \u0d2a\u0d3e\u0d21\u0d3f\u0d28\u0d4d\u0d31\u0d46 \u0d24\u0d24\u0d4d\u0d38\u0d2e\u0d2f\u0d38\u0d02\u0d35\u0d3e\u0d26\u0d02 \u0d24\u0d41\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d15.", - "pad.chat.loadmessages": "\u0d15\u0d42\u0d1f\u0d41\u0d24\u0d7d \u0d38\u0d28\u0d4d\u0d26\u0d47\u0d36\u0d19\u0d4d\u0d19\u0d7e \u0d0e\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15", - "timeslider.pageTitle": "{{appTitle}} \u0d38\u0d2e\u0d2f\u0d30\u0d47\u0d16", - "timeslider.toolbar.returnbutton": "\u0d2a\u0d3e\u0d21\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d3f\u0d30\u0d3f\u0d1a\u0d4d\u0d1a\u0d41\u0d2a\u0d4b\u0d35\u0d41\u0d15", - "timeslider.toolbar.authors": "\u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d7e:", - "timeslider.toolbar.authorsList": "\u0d06\u0d30\u0d41\u0d02 \u0d0e\u0d34\u0d41\u0d24\u0d3f\u0d2f\u0d3f\u0d1f\u0d4d\u0d1f\u0d3f\u0d32\u0d4d\u0d32", - "timeslider.toolbar.exportlink.title": "\u0d15\u0d2f\u0d31\u0d4d\u0d31\u0d41\u0d2e\u0d24\u0d3f", - "timeslider.exportCurrent": "\u0d08 \u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d \u0d07\u0d19\u0d4d\u0d19\u0d28\u0d46 \u0d0e\u0d1f\u0d41\u0d15\u0d4d\u0d15\u0d41\u0d15:", - "timeslider.version": "\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d {{version}}", - "timeslider.saved": "\u0d38\u0d47\u0d35\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d24\u0d4d {{month}} {{day}}, {{year}}", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f", - "timeslider.month.february": "\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f", - "timeslider.month.march": "\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d", - "timeslider.month.april": "\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d", - "timeslider.month.may": "\u0d2e\u0d47\u0d2f\u0d4d", - "timeslider.month.june": "\u0d1c\u0d42\u0d7a", - "timeslider.month.july": "\u0d1c\u0d42\u0d32\u0d48", - "timeslider.month.august": "\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d", - "timeslider.month.september": "\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c", - "timeslider.month.october": "\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c", - "timeslider.month.november": "\u0d28\u0d35\u0d02\u0d2c\u0d7c", - "timeslider.month.december": "\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c", - "pad.savedrevs.marked": "\u0d08 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d4d \u0d38\u0d47\u0d35\u0d4d \u0d1a\u0d46\u0d2f\u0d4d\u0d24\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3e\u0d7e\u0d2a\u0d4d\u0d2a\u0d24\u0d3f\u0d2a\u0d4d\u0d2a\u0d3e\u0d2f\u0d3f \u0d05\u0d1f\u0d2f\u0d3e\u0d33\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d24\u0d4d\u0d24\u0d3f\u0d2f\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41", - "pad.userlist.entername": "\u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d33\u0d41\u0d1f\u0d46 \u0d2a\u0d47\u0d30\u0d4d \u0d28\u0d7d\u0d15\u0d41\u0d15", - "pad.userlist.unnamed": "\u0d2a\u0d47\u0d30\u0d3f\u0d32\u0d4d\u0d32\u0d3e\u0d24\u0d4d\u0d24", - "pad.userlist.guest": "\u0d05\u0d24\u0d3f\u0d25\u0d3f", - "pad.userlist.deny": "\u0d28\u0d3f\u0d30\u0d38\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.userlist.approve": "\u0d05\u0d02\u0d17\u0d40\u0d15\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.editbar.clearcolors": "\u0d21\u0d4b\u0d15\u0d4d\u0d2f\u0d41\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d3f\u0d7d \u0d30\u0d1a\u0d2f\u0d3f\u0d24\u0d3e\u0d15\u0d4d\u0d15\u0d33\u0d46 \u0d38\u0d42\u0d1a\u0d3f\u0d2a\u0d4d\u0d2a\u0d3f\u0d15\u0d4d\u0d15\u0d3e\u0d28\u0d3e\u0d2f\u0d3f \u0d28\u0d7d\u0d15\u0d3f\u0d2f\u0d3f\u0d1f\u0d4d\u0d1f\u0d41\u0d33\u0d4d\u0d33 \u0d28\u0d3f\u0d31\u0d19\u0d4d\u0d19\u0d7e \u0d12\u0d34\u0d3f\u0d35\u0d3e\u0d15\u0d4d\u0d15\u0d1f\u0d4d\u0d1f\u0d46?", - "pad.impexp.importbutton": "\u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.impexp.importing": "\u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d41...", - "pad.impexp.confirmimport": "\u0d12\u0d30\u0d41 \u0d2a\u0d4d\u0d30\u0d2e\u0d3e\u0d23\u0d02 \u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d \u0d28\u0d3f\u0d32\u0d35\u0d3f\u0d32\u0d41\u0d33\u0d4d\u0d33 \u0d0e\u0d34\u0d41\u0d24\u0d4d\u0d24\u0d41\u0d15\u0d7e \u0d28\u0d37\u0d4d\u0d1f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d3e\u0d28\u0d3f\u0d1f\u0d2f\u0d3e\u0d15\u0d4d\u0d15\u0d41\u0d02, \u0d24\u0d41\u0d1f\u0d30\u0d23\u0d2e\u0d46\u0d28\u0d4d\u0d28\u0d4d \u0d09\u0d31\u0d2a\u0d4d\u0d2a\u0d3e\u0d23\u0d4b?", - "pad.impexp.convertFailed": "\u0d08 \u0d2a\u0d4d\u0d30\u0d2e\u0d3e\u0d23\u0d02 \u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d3e\u0d7b \u0d38\u0d3e\u0d27\u0d3f\u0d1a\u0d4d\u0d1a\u0d3f\u0d32\u0d4d\u0d32. \u0d26\u0d2f\u0d35\u0d3e\u0d2f\u0d3f \u0d2e\u0d31\u0d4d\u0d31\u0d4a\u0d30\u0d41 \u0d21\u0d4b\u0d15\u0d4d\u0d2f\u0d41\u0d2e\u0d46\u0d28\u0d4d\u0d31\u0d4d \u0d2b\u0d4b\u0d7c\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d4d \u0d09\u0d2a\u0d2f\u0d4b\u0d17\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d2f\u0d4b, \u0d38\u0d4d\u0d35\u0d28\u0d4d\u0d24\u0d2e\u0d3e\u0d2f\u0d3f \u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f \u0d1a\u0d47\u0d7c\u0d15\u0d4d\u0d15\u0d41\u0d15\u0d2f\u0d4b \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d15", - "pad.impexp.uploadFailed": "\u0d05\u0d2a\u0d4d\u200c\u200c\u0d32\u0d4b\u0d21\u0d4d \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41. \u0d26\u0d2f\u0d35\u0d3e\u0d2f\u0d3f \u0d35\u0d40\u0d23\u0d4d\u0d1f\u0d41\u0d02 \u0d36\u0d4d\u0d30\u0d2e\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.impexp.importfailed": "\u0d07\u0d31\u0d15\u0d4d\u0d15\u0d41\u0d2e\u0d24\u0d3f \u0d2a\u0d30\u0d3e\u0d1c\u0d2f\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d4d\u0d1f\u0d41", - "pad.impexp.copypaste": "\u0d26\u0d2f\u0d35\u0d3e\u0d2f\u0d3f \u0d2a\u0d15\u0d7c\u0d24\u0d4d\u0d24\u0d3f \u0d1a\u0d47\u0d7c\u0d15\u0d4d\u0d15\u0d41\u0d15", - "pad.impexp.exportdisabled": "{{type}} \u0d2b\u0d4b\u0d7c\u0d2e\u0d3e\u0d31\u0d4d\u0d31\u0d3f\u0d7d \u0d15\u0d2f\u0d31\u0d4d\u0d31\u0d41\u0d2e\u0d24\u0d3f \u0d1a\u0d46\u0d2f\u0d4d\u0d2f\u0d41\u0d28\u0d4d\u0d28\u0d24\u0d4d \u0d24\u0d1f\u0d1e\u0d4d\u0d1e\u0d3f\u0d30\u0d3f\u0d15\u0d4d\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d41. \u0d15\u0d42\u0d1f\u0d41\u0d24\u0d7d \u0d35\u0d3f\u0d35\u0d30\u0d19\u0d4d\u0d19\u0d7e\u0d15\u0d4d\u0d15\u0d4d \u0d24\u0d3e\u0d19\u0d4d\u0d15\u0d33\u0d41\u0d1f\u0d46 \u0d38\u0d3f\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d02 \u0d05\u0d21\u0d4d\u0d2e\u0d3f\u0d28\u0d3f\u0d38\u0d4d\u0d1f\u0d4d\u0d30\u0d47\u0d31\u0d4d\u0d31\u0d31\u0d41\u0d2e\u0d3e\u0d2f\u0d3f \u0d2c\u0d28\u0d4d\u0d27\u0d2a\u0d4d\u0d2a\u0d46\u0d1f\u0d41\u0d15." + "@metadata": { + "authors": [ + "Akhilan", + "Clockery", + "Hrishikesh.kb", + "Praveenp", + "Santhosh.thottingal" + ] + }, + "index.newPad": "à´ªàµà´¤à´¿à´¯ പാഡàµ", + "index.createOpenPad": "à´…à´²àµà´²àµ†à´™àµà´•ിൽ പേരàµà´ªà´¯àµ‹à´—à´¿à´šàµà´šàµ പാഡൠസൃഷàµà´Ÿà´¿à´•àµà´•àµà´•/à´¤àµà´±à´•àµà´•àµà´•:", + "pad.toolbar.bold.title": "à´•à´Ÿàµà´ªàµà´ªà´¤àµà´¤à´¿àµ½ (Ctrl-B)", + "pad.toolbar.italic.title": "ചെരിചàµà´šàµ†à´´àµà´¤àµà´• (Ctrl-I)", + "pad.toolbar.underline.title": "അടിവരയിടàµà´• (Ctrl-U)", + "pad.toolbar.strikethrough.title": "വെടàµà´Ÿàµà´•", + "pad.toolbar.ol.title": "à´•àµà´°à´®à´¤àµà´¤à´¿à´²àµà´³àµà´³ പടàµà´Ÿà´¿à´•", + "pad.toolbar.ul.title": "à´•àµà´°à´®à´°à´¹à´¿à´¤ പടàµà´Ÿà´¿à´•", + "pad.toolbar.indent.title": "വലതàµà´¤àµ‡à´•àµà´•ൠതളàµà´³àµà´• (ടാബàµ)", + "pad.toolbar.unindent.title": "ഇടതàµà´¤àµ‡à´•àµà´•ൠതളàµà´³àµà´• (à´·à´¿à´«àµà´±àµà´±àµ+ടാബàµ)", + "pad.toolbar.undo.title": "തിരസàµà´•à´°à´¿à´•àµà´•àµà´• (Ctrl-Z)", + "pad.toolbar.redo.title": "വീണàµà´Ÿàµà´‚ ചെയàµà´¯àµà´• (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "രചയിതാകàµà´•ൾകàµà´•àµà´³àµà´³ നിറം കളയàµà´•", + "pad.toolbar.import_export.title": "à´µàµà´¯à´¤àµà´¯à´¸àµà´¤ ഫയൽ തരങàµà´™à´³à´¿à´²àµ‡à´•àµà´•àµ/തരങàµà´™à´³à´¿àµ½ നിനàµà´¨àµ ഇറകàµà´•àµà´®à´¤à´¿/കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´•", + "pad.toolbar.timeslider.title": "സമയരേഖ", + "pad.toolbar.savedRevision.title": "നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµ സേവൠചെയàµà´¯àµà´•", + "pad.toolbar.settings.title": "സജàµà´œàµ€à´•രണങàµà´™àµ¾", + "pad.toolbar.embed.title": "à´ˆ പാഡൠപങàµà´•ൠവെയàµà´•àµà´•àµà´•, എംബെഡൠചെയàµà´¯àµà´•", + "pad.toolbar.showusers.title": "à´ˆ പാഡിലàµà´³àµà´³ ഉപയോകàµà´¤à´¾à´•àµà´•ളെ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•", + "pad.colorpicker.save": "സേവൠചെയàµà´¯àµà´•", + "pad.colorpicker.cancel": "റദàµà´¦à´¾à´•àµà´•àµà´•", + "pad.loading": "ശേഖരികàµà´•àµà´¨àµà´¨àµ...", + "pad.passwordRequired": "à´ˆ പാഡൠഉപയോഗികàµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾à´¯à´¿ ഒരൠരഹസàµà´¯à´µà´¾à´•àµà´•ൠനൽകേണàµà´Ÿà´¤à´¾à´£àµ", + "pad.permissionDenied": "à´ˆ പാഡൠകാണàµà´µà´¾àµ» താങàµà´•ൾകàµà´•ൠഅനàµà´®à´¤à´¿à´¯à´¿à´²àµà´²", + "pad.wrongPassword": "താങàµà´•ൾ നലàµà´•à´¿à´¯ രഹസàµà´¯à´µà´¾à´•àµà´•ൠതെറàµà´±à´¾à´¯à´¿à´°àµà´¨àµà´¨àµ", + "pad.settings.padSettings": "പാഡൠസജàµà´œàµ€à´•രണങàµà´™àµ¾", + "pad.settings.myView": "à´Žà´¨àµà´±àµ† കാഴàµà´š", + "pad.settings.stickychat": "തതàµà´¸à´®à´¯à´¸à´‚വാദം à´Žà´ªàµà´ªàµ‹à´´àµà´‚ à´¸àµà´•àµà´°àµ€à´¨à´¿àµ½ കാണികàµà´•àµà´•", + "pad.settings.colorcheck": "à´Žà´´àµà´¤àµà´¤àµà´•ാർകàµà´•àµà´³àµà´³ നിറങàµà´™àµ¾", + "pad.settings.linenocheck": "വരികളàµà´Ÿàµ† à´•àµà´°à´®à´¸à´‚à´–àµà´¯", + "pad.settings.rtlcheck": "ഉളàµà´³à´Ÿà´•àµà´•à´‚ വലതàµà´¤àµà´¨à´¿à´¨àµà´¨àµ ഇടതàµà´¤àµ‹à´Ÿàµà´Ÿà´¾à´£àµ‹ വായികàµà´•േണàµà´Ÿà´¤àµ?", + "pad.settings.fontType": "ഫോണàµà´Ÿàµ തരം:", + "pad.settings.fontType.normal": "സാധാരണം", + "pad.settings.fontType.monospaced": "മോണോസàµà´ªàµ‡à´¸àµ", + "pad.settings.globalView": "മൊതàµà´¤à´•àµà´•ാഴàµà´š", + "pad.settings.language": "ഭാഷ:", + "pad.importExport.import_export": "ഇറകàµà´•àµà´®à´¤à´¿/കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´•", + "pad.importExport.import": "à´Žà´¨àµà´¤àµ†à´™àµà´•à´¿à´²àµà´‚ à´Žà´´àµà´¤àµà´¤àµ à´ªàµà´°à´®à´¾à´£à´®àµ‹ രേഖയോ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´•", + "pad.importExport.importSuccessful": "വിജയകരം!", + "pad.importExport.export": "ഇപàµà´ªàµ‹à´´à´¤àµà´¤àµ† പാഡൠഇങàµà´™à´¨àµ† കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´•:", + "pad.importExport.exporthtml": "à´Žà´šàµà´šàµ.à´±àµà´±à´¿.à´Žà´‚.എൽ.", + "pad.importExport.exportplain": "വെറàµà´‚ à´Žà´´àµà´¤àµà´¤àµ", + "pad.importExport.exportword": "മൈകàµà´°àµ‹à´¸àµ‹à´«àµà´±àµà´±àµ വേഡàµ", + "pad.importExport.exportpdf": "പി.à´¡à´¿.à´Žà´«àµ.", + "pad.importExport.exportopen": "à´’.à´¡à´¿.à´Žà´«àµ. (à´“à´ªàµà´ªàµº ഡോകàµà´¯àµà´®àµ†à´¨àµà´±àµ ഫോർമാറàµà´±àµ)", + "pad.importExport.exportdokuwiki": "ഡോകàµà´µà´¿à´•àµà´•à´¿", + "pad.importExport.abiword.innerHTML": "à´ªàµà´²àµ†à´¯à´¿àµ» ടെകàµà´¸àµà´±àµà´±àµ‹ à´Žà´šàµà´šàµ.à´±àµà´±à´¿.à´Žà´‚.എൽ. തരമോ മാതàµà´°à´®àµ‡ താങàµà´•ൾകàµà´•ൠഇറകàµà´•àµà´®à´¤à´¿ ചെയàµà´¯à´¾à´¨à´¾à´µàµ‚. കൂടàµà´¤àµ½ വിപàµà´²àµ€à´•ൃത ഇറകàµà´•àµà´®à´¤à´¿ സൗകരàµà´¯à´™àµà´™àµ¾à´•àµà´•ായി ദയവായി \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Eഅബിവേഡൠഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¯àµà´•\u003C/a\u003E.", + "pad.modals.connected": "ബനàµà´§à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.", + "pad.modals.reconnecting": "താങàµà´•à´³àµà´Ÿàµ† പാഡിലേയàµà´•àµà´•ൠവീണàµà´Ÿàµà´‚ ബനàµà´§à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨àµ...", + "pad.modals.forcereconnect": "à´Žà´¨àµà´¤à´¾à´¯à´¾à´²àµà´‚ ബനàµà´§à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•", + "pad.modals.userdup": "മറàµà´±àµŠà´°àµ ജാലകതàµà´¤à´¿àµ½ à´¤àµà´±à´¨àµà´¨à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ", + "pad.modals.userdup.explanation": "à´ˆ à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿àµ½ à´ˆ പാഡൠഒനàµà´¨à´¿à´²à´§à´¿à´•à´‚ à´¬àµà´°àµ—സർ ജാലകങàµà´™à´³à´¿àµ½ à´¤àµà´±à´¨àµà´¨à´¤à´¾à´¯à´¿ കാണàµà´¨àµà´¨àµ.", + "pad.modals.userdup.advice": "à´ˆ ജാലകം തനàµà´¨àµ† ഉപയോഗികàµà´•ാനായി ബനàµà´§à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•", + "pad.modals.unauth": "à´…à´¨àµà´µà´¾à´¦à´®à´¿à´²àµà´²", + "pad.modals.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": "എംബെഡൠയàµ.ആർ.എൽ.", + "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": "സേവൠചെയàµà´¤à´¤àµ {{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": "ഡിസംബർ", + "timeslider.unnamedauthors": "{{num}} പേരിലàµà´²à´¾à´¤àµà´¤ {[plural(num) one: രചയിതാവàµ, other: രചയിതാകàµà´•ൾ }}", + "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.confirmimport": "ഒരൠപàµà´°à´®à´¾à´£à´‚ ഇറകàµà´•àµà´®à´¤à´¿ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ നിലവിലàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµà´•ൾ നഷàµà´Ÿà´ªàµà´ªàµ†à´Ÿà´¾à´¨à´¿à´Ÿà´¯à´¾à´•àµà´•àµà´‚, à´¤àµà´Ÿà´°à´£à´®àµ†à´¨àµà´¨àµ ഉറപàµà´ªà´¾à´£àµ‹?", + "pad.impexp.convertFailed": "à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ ഇറകàµà´•àµà´®à´¤à´¿ ചെയàµà´¯à´¾àµ» സാധിചàµà´šà´¿à´²àµà´². ദയവായി മറàµà´±àµŠà´°àµ ഡോകàµà´¯àµà´®àµ†à´¨àµà´±àµ ഫോർമാറàµà´±àµ ഉപയോഗികàµà´•àµà´•യോ, à´¸àµà´µà´¨àµà´¤à´®à´¾à´¯à´¿ പകർതàµà´¤à´¿ ചേർകàµà´•àµà´•യോ ചെയàµà´¯àµà´•", + "pad.impexp.uploadFailed": "à´…à´ªàµâ€Œâ€Œà´²àµ‹à´¡àµ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ. ദയവായി വീണàµà´Ÿàµà´‚ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•", + "pad.impexp.importfailed": "ഇറകàµà´•àµà´®à´¤à´¿ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ", + "pad.impexp.copypaste": "ദയവായി പകർതàµà´¤à´¿ ചേർകàµà´•àµà´•", + "pad.impexp.exportdisabled": "{{type}} ഫോർമാറàµà´±à´¿àµ½ കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ തടഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾à´•àµà´•ൠതാങàµà´•à´³àµà´Ÿàµ† സിസàµà´±àµà´±à´‚ à´…à´¡àµà´®à´¿à´¨à´¿à´¸àµà´Ÿàµà´°àµ‡à´±àµà´±à´±àµà´®à´¾à´¯à´¿ ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´•." } \ No newline at end of file diff --git a/src/locales/mr.json b/src/locales/mr.json new file mode 100644 index 000000000..df9368bb0 --- /dev/null +++ b/src/locales/mr.json @@ -0,0 +1,57 @@ +{ + "@metadata": { + "authors": [ + "Ganeshgiram", + "V.narsikar", + "Ydyashad" + ] + }, + "index.newPad": "नव पान", + "pad.toolbar.bold.title": "ठळक (Ctrl-B)", + "pad.toolbar.italic.title": "तिरपी मà¥à¤¦à¥à¤°à¤¾à¤•à¥à¤·à¤°à¥‡ (Ctrl-I)", + "pad.toolbar.underline.title": "अधोरेखन (Ctrl-U)", + "pad.toolbar.strikethrough.title": "अकà¥à¤·à¤°à¤¾à¤‚वर काट", + "pad.toolbar.savedRevision.title": "आवृतà¥à¤¤à¥€ जतन करा", + "pad.toolbar.settings.title": "संरचना", + "pad.colorpicker.save": "जतन करा", + "pad.colorpicker.cancel": "रदà¥à¤¦ करा", + "pad.loading": "पà¥à¤°à¤­à¤¾à¤°à¤£ करीत आहे", + "pad.wrongPassword": "आपला परवलीचा शबà¥à¤¦ चूक होता", + "pad.settings.myView": "माà¤à¥‡ दृशà¥à¤¯", + "pad.settings.linenocheck": "रेषांचे कà¥à¤°à¤®à¤¾à¤‚क", + "pad.settings.language": "भाषा", + "pad.importExport.import_export": "आयात/निरà¥à¤¯à¤¾à¤¤", + "pad.importExport.importSuccessful": "यशसà¥à¤µà¥€!", + "pad.importExport.exportplain": "साधा मजकूर", + "pad.importExport.exportword": "मायकà¥à¤°à¥‹à¤¸à¥‰à¤«à¥à¤Ÿ वरà¥à¤¡", + "pad.importExport.exportpdf": "पीडीà¤à¤«", + "pad.importExport.exportopen": "ओडीà¤à¤«(ओपन डॉकà¥à¤¯à¥‚मेंट फॉरमॅट)", + "pad.importExport.exportdokuwiki": "डà¥à¤•à¥à¤µà¤¿à¤•ि", + "pad.modals.connected": "अनà¥à¤¬à¤‚धित", + "pad.modals.initsocketfail": "विदागारास पोच नाही.", + "pad.modals.deleted": "वगळले.", + "pad.modals.disconnected.cause": "बहà¥à¤¤à¥‡à¤• सरवर उपलबà¥à¤§ होणार नाही। अस वारंवार à¤à¤¾à¤²à¥à¤¯à¤¾à¤¸ कृपया आमà¥à¤¹à¤¾à¤²à¤¾ कळवा।", + "pad.share.link": "दà¥à¤µà¤¾", + "pad.chat": "गपà¥à¤ªà¤¾", + "timeslider.toolbar.authorsList": "लेखक नाही", + "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": "मंजूर करा", + "pad.impexp.importbutton": "आता आयात करा", + "pad.impexp.importing": "आयात करीत आहे...", + "pad.impexp.importfailed": "आयात अयशसà¥à¤µà¥€", + "pad.impexp.copypaste": "कृपया नकल-डकवा" +} \ No newline at end of file diff --git a/src/locales/ms.json b/src/locales/ms.json index 04055d26e..2d8e94105 100644 --- a/src/locales/ms.json +++ b/src/locales/ms.json @@ -1,120 +1,118 @@ { - "@metadata": { - "authors": [ - "Anakmalaysia" - ] - }, - "index.newPad": "Pad baru", - "index.createOpenPad": "atau cipta\/buka Pad yang bernama:", - "pad.toolbar.bold.title": "Tebal (Ctrl-B)", - "pad.toolbar.italic.title": "Miring (Ctrl-I)", - "pad.toolbar.underline.title": "Garis bawah (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Garis lorek", - "pad.toolbar.ol.title": "Senarai tertib", - "pad.toolbar.ul.title": "Senarai tak tertib", - "pad.toolbar.indent.title": "Engsot ke dalam", - "pad.toolbar.unindent.title": "Engsot ke luar", - "pad.toolbar.undo.title": "Buat asal (Ctrl-Z)", - "pad.toolbar.redo.title": "Buat semula (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Padamkan Warna Pengarang", - "pad.toolbar.import_export.title": "Import\/Eksport dari\/ke format-format fail berbeza", - "pad.toolbar.timeslider.title": "Gelangsar masa", - "pad.toolbar.savedRevision.title": "Semakan Tersimpan", - "pad.toolbar.settings.title": "Tetapan", - "pad.toolbar.embed.title": "Benamkan pad ini", - "pad.toolbar.showusers.title": "Tunjukkan pengguna pada pad ini", - "pad.colorpicker.save": "Simpan", - "pad.colorpicker.cancel": "Batalkan", - "pad.loading": "Sedang dimuatkan...", - "pad.passwordRequired": "Anda memerlukan kata laluan untuk mengakses pad ini", - "pad.permissionDenied": "Anda tiada kebenaran untuk mengakses pad ini", - "pad.wrongPassword": "Kata laluan anda salah", - "pad.settings.padSettings": "Tetapan Pad", - "pad.settings.myView": "Paparan Saya", - "pad.settings.stickychat": "Sentiasa bersembang pada skrin", - "pad.settings.colorcheck": "Warna pengarang", - "pad.settings.linenocheck": "Nombor baris", - "pad.settings.fontType": "Jenis fon:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Paparan Sejagat", - "pad.settings.language": "Bahasa:", - "pad.importExport.import_export": "Import\/Eksport", - "pad.importExport.import": "Muat naik sebarang fail teks atau dokumen", - "pad.importExport.importSuccessful": "Berjaya!", - "pad.importExport.export": "Eksport pad semasa sebagai:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Teks biasa", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Anda hanya boleh mengimport dari format teks biasa atau html. Untuk ciri-ciri import yang lebih maju, sila memasang abiword<\/a>.", - "pad.modals.connected": "Bersambung.", - "pad.modals.reconnecting": "Bersambung semula dengan pad anda...", - "pad.modals.forcereconnect": "Sambung semula secara paksa", - "pad.modals.userdup": "Dibuka di tetingkap lain", - "pad.modals.userdup.explanation": "Pad ini nampaknya telah dibuka di lebih daripada satu tetingkap pelayar pada komputer ini.", - "pad.modals.userdup.advice": "Sambung semula untuk menggunakan tetingkap ini pula.", - "pad.modals.unauth": "Tidak dibenarkan", - "pad.modals.unauth.explanation": "Kebenaran anda telah berubah sewaktu memaparkan halaman ini. Cuba bersambung semula.", - "pad.modals.looping": "Terputus.", - "pad.modals.looping.explanation": "Terdapat masalah komunikasi dengan pelayan penyegerakan.", - "pad.modals.looping.cause": "Mungkin anda telah bersambung melalui tembok api atau proksi yang tidak serasi.", - "pad.modals.initsocketfail": "Pelayan tidak boleh dicapai.", - "pad.modals.initsocketfail.explanation": "Tidak dapat bersambung dengan pelayar penyegerakan.", - "pad.modals.initsocketfail.cause": "Ini mungkin disebabkan oleh masalah dengan pelayar atau sambungan internet anda.", - "pad.modals.slowcommit": "Terputus.", - "pad.modals.slowcommit.explanation": "Pelayan tidak membalas.", - "pad.modals.slowcommit.cause": "Ini mungkin disebabkan oleh masalah dengan kesambungan rangkaian anda.", - "pad.modals.deleted": "Dihapuskan.", - "pad.modals.deleted.explanation": "Pad ini telah dibuang.", - "pad.modals.disconnected": "Sambungan anda telah diputuskan.", - "pad.modals.disconnected.explanation": "Sambungan ke pelayan terputus", - "pad.modals.disconnected.cause": "Pelayan mungkin tidak dapat dicapai. Sila beritahu kami jika masalah ini berterusan.", - "pad.share": "Kongsikan pad ini", - "pad.share.readonly": "Baca sahaja", - "pad.share.link": "Pautan", - "pad.share.emebdcode": "Benamkan URL", - "pad.chat": "Sembang", - "pad.chat.title": "Buka ruang sembang untuk pad ini.", - "pad.chat.loadmessages": "Muatkan banyak lagi pesanan", - "timeslider.pageTitle": "Gelangsar Masa {{appTitle}}", - "timeslider.toolbar.returnbutton": "Kembali ke pad", - "timeslider.toolbar.authors": "Pengarang:", - "timeslider.toolbar.authorsList": "Tiada Pengarang", - "timeslider.toolbar.exportlink.title": "Eksport", - "timeslider.exportCurrent": "Eksport versi semasa sebagai:", - "timeslider.version": "Versi {{version}}", - "timeslider.saved": "Disimpan pada {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Januari", - "timeslider.month.february": "Februari", - "timeslider.month.march": "Mac", - "timeslider.month.april": "April", - "timeslider.month.may": "Mei", - "timeslider.month.june": "Jun", - "timeslider.month.july": "Julai", - "timeslider.month.august": "Ogos", - "timeslider.month.september": "September", - "timeslider.month.october": "Oktober", - "timeslider.month.november": "November", - "timeslider.month.december": "Disember", - "timeslider.unnamedauthor": "{{num}} orang pengarang awanama", - "timeslider.unnamedauthors": "{{num}} orang pengarang awanama", - "pad.savedrevs.marked": "Semakan ini telah ditandai sebagai semakan tersimpan", - "pad.userlist.entername": "Taipkan nama anda", - "pad.userlist.unnamed": "tanpa nama", - "pad.userlist.guest": "Tetamu", - "pad.userlist.deny": "Tolak", - "pad.userlist.approve": "Terima", - "pad.editbar.clearcolors": "Padamkan warna pengarang pada seluruh dokumen?", - "pad.impexp.importbutton": "Import Sekarang", - "pad.impexp.importing": "Sedang mengimport...", - "pad.impexp.confirmimport": "Mengimport fail akan menulis ganti teks semasa pada pad ini. Adakah anda benar-benar ingin teruskan?", - "pad.impexp.convertFailed": "Fail tidak dapat diimport. Sila gunakan format dokumen yang lain atau salin tampal secara manual", - "pad.impexp.uploadFailed": "Muat naik gagal, sila cuba lagi", - "pad.impexp.importfailed": "Import gagal", - "pad.impexp.copypaste": "Sila salin tampal", - "pad.impexp.exportdisabled": "Mengeksport dalam format {{type}} dilarang. Sila hubungi pentadbir sistem anda untuk keterangan lanjut." + "@metadata": { + "authors": [ + "Anakmalaysia" + ] + }, + "index.newPad": "Pad baru", + "index.createOpenPad": "atau cipta/buka Pad yang bernama:", + "pad.toolbar.bold.title": "Tebal (Ctrl-B)", + "pad.toolbar.italic.title": "Miring (Ctrl-I)", + "pad.toolbar.underline.title": "Garis bawah (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Garis lorek", + "pad.toolbar.ol.title": "Senarai tertib", + "pad.toolbar.ul.title": "Senarai tak tertib", + "pad.toolbar.indent.title": "Engsot ke dalam", + "pad.toolbar.unindent.title": "Engsot ke luar", + "pad.toolbar.undo.title": "Buat asal (Ctrl-Z)", + "pad.toolbar.redo.title": "Buat semula (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Padamkan Warna Pengarang", + "pad.toolbar.import_export.title": "Import/Eksport dari/ke format-format fail berbeza", + "pad.toolbar.timeslider.title": "Gelangsar masa", + "pad.toolbar.savedRevision.title": "Simpan Semakan", + "pad.toolbar.settings.title": "Tetapan", + "pad.toolbar.embed.title": "Kongsikan dan Terapkan pad ini", + "pad.toolbar.showusers.title": "Tunjukkan pengguna pada pad ini", + "pad.colorpicker.save": "Simpan", + "pad.colorpicker.cancel": "Batalkan", + "pad.loading": "Sedang dimuatkan...", + "pad.passwordRequired": "Anda memerlukan kata laluan untuk mengakses pad ini", + "pad.permissionDenied": "Anda tiada kebenaran untuk mengakses pad ini", + "pad.wrongPassword": "Kata laluan anda salah", + "pad.settings.padSettings": "Tetapan Pad", + "pad.settings.myView": "Paparan Saya", + "pad.settings.stickychat": "Sentiasa bersembang pada skrin", + "pad.settings.colorcheck": "Warna pengarang", + "pad.settings.linenocheck": "Nombor baris", + "pad.settings.rtlcheck": "Membaca dari kanan ke kiri?", + "pad.settings.fontType": "Jenis fon:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Paparan Sejagat", + "pad.settings.language": "Bahasa:", + "pad.importExport.import_export": "Import/Eksport", + "pad.importExport.import": "Muat naik sebarang fail teks atau dokumen", + "pad.importExport.importSuccessful": "Berjaya!", + "pad.importExport.export": "Eksport pad semasa sebagai:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Teks biasa", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Anda hanya boleh mengimport dari format teks biasa atau html. Untuk ciri-ciri import yang lebih maju, sila \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Ememasang abiword\u003C/a\u003E.", + "pad.modals.connected": "Bersambung.", + "pad.modals.reconnecting": "Bersambung semula dengan pad anda...", + "pad.modals.forcereconnect": "Sambung semula secara paksa", + "pad.modals.userdup": "Dibuka di tetingkap lain", + "pad.modals.userdup.explanation": "Pad ini nampaknya telah dibuka di lebih daripada satu tetingkap pelayar pada komputer ini.", + "pad.modals.userdup.advice": "Sambung semula untuk menggunakan tetingkap ini pula.", + "pad.modals.unauth": "Tidak dibenarkan", + "pad.modals.unauth.explanation": "Kebenaran anda telah berubah sewaktu memaparkan halaman ini. Cuba bersambung semula.", + "pad.modals.looping.explanation": "Terdapat masalah komunikasi dengan pelayan penyegerakan.", + "pad.modals.looping.cause": "Mungkin anda telah bersambung melalui tembok api atau proksi yang tidak serasi.", + "pad.modals.initsocketfail": "Pelayan tidak boleh dicapai.", + "pad.modals.initsocketfail.explanation": "Tidak dapat bersambung dengan pelayar penyegerakan.", + "pad.modals.initsocketfail.cause": "Ini mungkin disebabkan oleh masalah dengan pelayar atau sambungan internet anda.", + "pad.modals.slowcommit.explanation": "Pelayan tidak membalas.", + "pad.modals.slowcommit.cause": "Ini mungkin disebabkan oleh masalah dengan kesambungan rangkaian anda.", + "pad.modals.deleted": "Dihapuskan.", + "pad.modals.deleted.explanation": "Pad ini telah dibuang.", + "pad.modals.disconnected": "Sambungan anda telah diputuskan.", + "pad.modals.disconnected.explanation": "Sambungan ke pelayan terputus", + "pad.modals.disconnected.cause": "Pelayan mungkin tidak dapat dicapai. Sila beritahu kami jika masalah ini berterusan.", + "pad.share": "Kongsikan pad ini", + "pad.share.readonly": "Baca sahaja", + "pad.share.link": "Pautan", + "pad.share.emebdcode": "Benamkan URL", + "pad.chat": "Sembang", + "pad.chat.title": "Buka ruang sembang untuk pad ini.", + "pad.chat.loadmessages": "Muatkan banyak lagi pesanan", + "timeslider.pageTitle": "Gelangsar Masa {{appTitle}}", + "timeslider.toolbar.returnbutton": "Kembali ke pad", + "timeslider.toolbar.authors": "Pengarang:", + "timeslider.toolbar.authorsList": "Tiada Pengarang", + "timeslider.toolbar.exportlink.title": "Eksport", + "timeslider.exportCurrent": "Eksport versi semasa sebagai:", + "timeslider.version": "Versi {{version}}", + "timeslider.saved": "Disimpan pada {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januari", + "timeslider.month.february": "Februari", + "timeslider.month.march": "Mac", + "timeslider.month.april": "April", + "timeslider.month.may": "Mei", + "timeslider.month.june": "Jun", + "timeslider.month.july": "Julai", + "timeslider.month.august": "Ogos", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Disember", + "timeslider.unnamedauthors": "{{num}} orang {[plural(num) other: pengarang]} awanama", + "pad.savedrevs.marked": "Semakan ini telah ditandai sebagai semakan tersimpan", + "pad.userlist.entername": "Taipkan nama anda", + "pad.userlist.unnamed": "tanpa nama", + "pad.userlist.guest": "Tetamu", + "pad.userlist.deny": "Tolak", + "pad.userlist.approve": "Terima", + "pad.editbar.clearcolors": "Padamkan warna pengarang pada seluruh dokumen?", + "pad.impexp.importbutton": "Import Sekarang", + "pad.impexp.importing": "Sedang mengimport...", + "pad.impexp.confirmimport": "Mengimport fail akan menulis ganti teks semasa pada pad ini. Adakah anda benar-benar ingin teruskan?", + "pad.impexp.convertFailed": "Fail tidak dapat diimport. Sila gunakan format dokumen yang lain atau salin tampal secara manual", + "pad.impexp.uploadFailed": "Muat naik gagal, sila cuba lagi", + "pad.impexp.importfailed": "Import gagal", + "pad.impexp.copypaste": "Sila salin tampal", + "pad.impexp.exportdisabled": "Mengeksport dalam format {{type}} dilarang. Sila hubungi pentadbir sistem anda untuk keterangan lanjut." } \ No newline at end of file diff --git a/src/locales/nb.json b/src/locales/nb.json new file mode 100644 index 000000000..3e45e5382 --- /dev/null +++ b/src/locales/nb.json @@ -0,0 +1,118 @@ +{ + "@metadata": { + "authors": [ + "Laaknor" + ] + }, + "index.newPad": "Ny Pad", + "index.createOpenPad": "eller opprette/Ã¥pne en ny Pad med dette navnet:", + "pad.toolbar.bold.title": "Fet (Ctrl-B)", + "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", + "pad.toolbar.underline.title": "Understreking (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Gjennomstreking", + "pad.toolbar.ol.title": "Nummerert liste", + "pad.toolbar.ul.title": "Punktliste", + "pad.toolbar.indent.title": "Innrykk", + "pad.toolbar.unindent.title": "Rykk ut", + "pad.toolbar.undo.title": "Angre (Ctrl-Z)", + "pad.toolbar.redo.title": "Gjør omigjen (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Fjern forfatterfarger", + "pad.toolbar.import_export.title": "Importer/eksporter fra/til forskjellige filformater", + "pad.toolbar.timeslider.title": "Tidslinje", + "pad.toolbar.savedRevision.title": "Lagre revisjoner", + "pad.toolbar.settings.title": "Innstillinger", + "pad.toolbar.embed.title": "Bygg inn denne padden", + "pad.toolbar.showusers.title": "Vis brukerne av denne padden", + "pad.colorpicker.save": "Lagre", + "pad.colorpicker.cancel": "Avbryt", + "pad.loading": "Laster inn...", + "pad.passwordRequired": "Du trenger et passord for Ã¥ fÃ¥ tilgang til denne padden", + "pad.permissionDenied": "Du har ikke tilgang til denne padden", + "pad.wrongPassword": "Feil passord", + "pad.settings.padSettings": "Padinnstillinger", + "pad.settings.myView": "Min visning", + "pad.settings.stickychat": "Chat alltid synlig", + "pad.settings.colorcheck": "Forfatterfarger", + "pad.settings.linenocheck": "Linjenummer", + "pad.settings.rtlcheck": "Les innhold fra høyre til venstre?", + "pad.settings.fontType": "Skrifttype:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Fast bredde", + "pad.settings.globalView": "Global visning", + "pad.settings.language": "SprÃ¥k:", + "pad.importExport.import_export": "Importer/eksporter", + "pad.importExport.import": "Last opp tekstfil eller dokument", + "pad.importExport.importSuccessful": "Vellykket!", + "pad.importExport.export": "Eksporter padden som:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Ren tekst", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Du kan bare importere fra ren tekst eller HTML-formater. For mer avanserte importfunksjoner, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstaller abiword\u003C/a\u003E.", + "pad.modals.connected": "Tilkoblet.", + "pad.modals.reconnecting": "Kobler til din pad pÃ¥ nytt...", + "pad.modals.forcereconnect": "Tving gjenoppkobling", + "pad.modals.userdup": "Ã…pnet i nytt vindu", + "pad.modals.userdup.explanation": "Denne padden 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.", + "pad.modals.unauth": "Ikke tillatt", + "pad.modals.unauth.explanation": "Dine rettigheter har blitt endret mens du sÃ¥ pÃ¥ denne siden. Prøv Ã¥ koble til pÃ¥ nytt", + "pad.modals.looping.explanation": "Det er kommunikasjonsproblemer med synkroniseringsserveren.", + "pad.modals.looping.cause": "Kanskje du koblet til en inkompatibel brannmur eller mellomtjener", + "pad.modals.initsocketfail": "Serveren er utilgjengelig", + "pad.modals.initsocketfail.explanation": "Kunne ikke koble til synkroniseringsserveren.", + "pad.modals.initsocketfail.cause": "Dette er sannsynligvis pÃ¥ grunn av et problem med nettleseren eller din internettoppkobling", + "pad.modals.slowcommit.explanation": "Serveren svarer ikke.", + "pad.modals.slowcommit.cause": "Dette kan være et problem med nettverkstilkoblingen", + "pad.modals.deleted": "Slettet.", + "pad.modals.deleted.explanation": "Denne padden har blitt fjernet", + "pad.modals.disconnected": "Du har blitt frakoblet.", + "pad.modals.disconnected.explanation": "Mistet tilkobling til serveren.", + "pad.modals.disconnected.cause": "Serveren kan være utilgjengelig. Vennligst si i fra til oss hvis dette fortsetter Ã¥ skje", + "pad.share": "Del denne padden", + "pad.share.readonly": "Skrivebeskyttet", + "pad.share.link": "Lenke", + "pad.share.emebdcode": "URL for innbygging", + "pad.chat": "Chat", + "pad.chat.title": "Ã…pne chatten for denne padden.", + "pad.chat.loadmessages": "Last flere beskjeder", + "timeslider.pageTitle": "{{appTitle}} Tidslinje", + "timeslider.toolbar.returnbutton": "GÃ¥ tilbake til pad", + "timeslider.toolbar.authors": "Forfattere:", + "timeslider.toolbar.authorsList": "Ingen forfattere", + "timeslider.toolbar.exportlink.title": "Eksporter", + "timeslider.exportCurrent": "Eksporter nÃ¥værende versjon som:", + "timeslider.version": "Versjon {{version}}", + "timeslider.saved": "Lagret {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "januar", + "timeslider.month.february": "februar", + "timeslider.month.march": "mars", + "timeslider.month.april": "april", + "timeslider.month.may": "mai", + "timeslider.month.june": "juni", + "timeslider.month.july": "juli", + "timeslider.month.august": "august", + "timeslider.month.september": "september", + "timeslider.month.october": "oktober", + "timeslider.month.november": "november", + "timeslider.month.december": "desember", + "timeslider.unnamedauthors": "{{num}} navnløse forfattere", + "pad.savedrevs.marked": "Denne revisjonen er nÃ¥ markert som en lagret revisjon", + "pad.userlist.entername": "Skriv inn ditt navn", + "pad.userlist.unnamed": "navnløs", + "pad.userlist.guest": "Gjest", + "pad.userlist.deny": "Nekt", + "pad.userlist.approve": "Godkjenn", + "pad.editbar.clearcolors": "Fjern forfatterfarger pÃ¥ hele dokumentet?", + "pad.impexp.importbutton": "Importer nÃ¥", + "pad.impexp.importing": "Importerer...", + "pad.impexp.confirmimport": "Importering av en fil vil overskrive den nÃ¥værende teksten pÃ¥ padden. Er du sikker pÃ¥ at du vil fortsette?", + "pad.impexp.convertFailed": "Vi greide ikke Ã¥ importere denne filen. Bruk et annet dokumentformat eller kopier og lim inn teksten manuelt", + "pad.impexp.uploadFailed": "Opplastning feilet. Prøv igjen", + "pad.impexp.importfailed": "Import feilet", + "pad.impexp.copypaste": "Vennligst kopier og lim inn", + "pad.impexp.exportdisabled": "Eksporterer som {{type}} er deaktivert. Vennligst kontakt din systemadministrator for detaljer." +} \ No newline at end of file diff --git a/src/locales/nds.json b/src/locales/nds.json new file mode 100644 index 000000000..15986de30 --- /dev/null +++ b/src/locales/nds.json @@ -0,0 +1,119 @@ +{ + "@metadata": { + "authors": [ + "Gthoele", + "Joachim Mos" + ] + }, + "index.newPad": "Nee'et Pad", + "index.createOpenPad": "oder Pad mit düssen Naam apen maken:", + "pad.toolbar.bold.title": "Fett (Strg-B)", + "pad.toolbar.italic.title": "Kursiv (Strg-I)", + "pad.toolbar.underline.title": "Mit Streek dor ünner (Strg-U)", + "pad.toolbar.strikethrough.title": "Mit Streek dor dör", + "pad.toolbar.ol.title": "List na Nummern", + "pad.toolbar.ul.title": "List ahn Nummern", + "pad.toolbar.indent.title": "Text na rechts", + "pad.toolbar.unindent.title": "Text na links", + "pad.toolbar.undo.title": "Een Stapp retuur (Strg-Z)", + "pad.toolbar.redo.title": "Noch mal (Strg-Y)", + "pad.toolbar.clearAuthorship.title": "Klöör vun den Schriever wegnehmen", + "pad.toolbar.import_export.title": "Rinhalen/Rutgeven in verscheden Dateiformate", + "pad.toolbar.timeslider.title": "Geschicht vun de Pad-Faten wiesen", + "pad.toolbar.savedRevision.title": "Faten sekern", + "pad.toolbar.settings.title": "Instellungen", + "pad.toolbar.embed.title": "Düt Pad verdelen oder annerswo ringeven", + "pad.toolbar.showusers.title": "Wokeen is online?", + "pad.colorpicker.save": "Spiekern", + "pad.colorpicker.cancel": "Afbreken", + "pad.loading": "Läädt…", + "pad.passwordRequired": "Du bruukst en Passwoort, wenn du in düt Pad rinwullt", + "pad.permissionDenied": "In düt Pad dröffst du nich rin", + "pad.wrongPassword": "Dien Passwoort weer nich richtig", + "pad.settings.padSettings": "So is dat Pad instellt", + "pad.settings.myView": "So heff ik dat instellt", + "pad.settings.stickychat": "Chat jümmers wiesen", + "pad.settings.colorcheck": "Klören vun de Schrievers wiesen", + "pad.settings.linenocheck": "Nummer vun de Reeg", + "pad.settings.rtlcheck": "Lees Pad vun rechts nach links", + "pad.settings.fontType": "Schriftoort:", + "pad.settings.fontType.normal": "Normaal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Ansicht för all", + "pad.settings.language": "Spraak:", + "pad.importExport.import_export": "Rinhalen/Rutgeven", + "pad.importExport.import": "Datei oder Dokument hoochladen", + "pad.importExport.importSuccessful": "Hett slumpt!", + "pad.importExport.export": "Düt Pad rutgeven as:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Textdatei", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Se köönt blots wat vun Kloortext oder HTML-Stücken röverhalen. Mit \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003E köönt Se ok anner Saken röverhalen. Dorför mööt Se bidde abiword inrichten\u003C/a\u003E.", + "pad.modals.connected": "Verbindung steiht.", + "pad.modals.reconnecting": "En Verbindung wedder opboen ...", + "pad.modals.forcereconnect": "Noch mal verbinnen", + "pad.modals.userdup": "In en anner Fenster op", + "pad.modals.userdup.explanation": "Dat lett, düt Pat is op düssen Reekner in mehr as een Browser-Fenster op.", + "pad.modals.userdup.advice": "Wullt du düt Fenster bruken, bidde noch mal de Verbindung opboen.", + "pad.modals.unauth": "Nich freegeven.", + "pad.modals.unauth.explanation": "Du hest nu anner Rechten för düt Pad. Maak dat bidde noch mal wedder nee op.", + "pad.modals.looping.explanation": "Dat gifft Kummer bi de Verbindung mit den Pad-Server.", + "pad.modals.looping.cause": "Mag ween un du hest Verbindung mit den Padserver över en Firewall, de nich passt, oder en Proxy, de nich passt.", + "pad.modals.initsocketfail": "Wi köönt den Pad-Server nich faat kriegen.", + "pad.modals.initsocketfail.explanation": "De Verbindung mit den Pad-Server hett nich klappt.", + "pad.modals.initsocketfail.cause": "Mag ween un dat liggt an dien Browser oder an dien Internet-Verbindung.", + "pad.modals.slowcommit.explanation": "De Pad-Server gifft keen Antwoort.", + "pad.modals.slowcommit.cause": "Kunn wenn un dat liggt an dat Nettwark, oder dor arbeidt jüst to veel Lüüd op den Pad-Server.", + "pad.modals.deleted": "Weg is dat!", + "pad.modals.deleted.explanation": "Düt Pad is nu weg.", + "pad.modals.disconnected": "De Kuntakt is afreten.", + "pad.modals.disconnected.explanation": "De Kuntakt mit den Pad-Server is afreten.", + "pad.modals.disconnected.cause": "Mag ween un wi köönt den Pad-Server jüst nich faat kriegen. Schull dat so wiedergahn, segg man Bescheed.", + "pad.share": "Düt Pad ok anner Lüüd wiesen", + "pad.share.readonly": "Se köönt hier jüst blots lesen", + "pad.share.link": "Link", + "pad.share.emebdcode": "In Websiet ringeven", + "pad.chat": "Chat", + "pad.chat.title": "Den Chat vun düt Pad apen maken", + "pad.chat.loadmessages": "Mehr Narichten laden", + "timeslider.pageTitle": "{{appTitle}} Öllere Faten vun dat Pad", + "timeslider.toolbar.returnbutton": "Retuur na dat Pad", + "timeslider.toolbar.authors": "Schrievers:", + "timeslider.toolbar.authorsList": "keen Schrievers", + "timeslider.toolbar.exportlink.title": "Rutschicken", + "timeslider.exportCurrent": "Schick düsse Faten rut as:", + "timeslider.version": "Faten {{version}}", + "timeslider.saved": "Sekert an den {{day}}.{{month}}.{{year}}", + "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "März", + "timeslider.month.april": "April", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Juni", + "timeslider.month.july": "Juli", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "timeslider.month.november": "November", + "timeslider.month.december": "Dezember", + "timeslider.unnamedauthors": "{{num}} Schriever ohn Naam {[plural(num) one: Schriever, other: Schrievers ]}", + "pad.savedrevs.marked": "Düsse Faten hett nu dat Teken: sekerte Faten", + "pad.userlist.entername": "Schriev dien Naam", + "pad.userlist.unnamed": "hett keen Naam", + "pad.userlist.guest": "Besöker", + "pad.userlist.deny": "Deit uns Leed, wieder geiht dat nich", + "pad.userlist.approve": "Man to!", + "pad.editbar.clearcolors": "Klören vun de Schrievers in dat ganze Dokument torüchsetten?", + "pad.impexp.importbutton": "Nu rinhalen", + "pad.impexp.importing": "Haal dat rin …", + "pad.impexp.confirmimport": "Wenn du nu en Datei rinhaalst, warrt de Text in dat Pad överschreven. Wullt du würklich wieder maken?", + "pad.impexp.convertFailed": "Wi köönt düsse Datei nich rinhalen. Ännert Se bidde dat Format vun dat Dokument oder haalt Se den Text mit de Hand rin.", + "pad.impexp.uploadFailed": "Dat Hoochladen hett nich slumpt. Versöök dat man noch mal.", + "pad.impexp.importfailed": "Dat Rinhalen hett nich slumpt", + "pad.impexp.copypaste": "Bidde koperen un rinsetten", + "pad.impexp.exportdisabled": "Du kannst dat nich in dat {{type}}-Format rutschicken. Wenn du mehr weten wullt, fraag man den Systemadministrator." +} \ No newline at end of file diff --git a/src/locales/nl.json b/src/locales/nl.json index 9b1c773bf..342487bb5 100644 --- a/src/locales/nl.json +++ b/src/locales/nl.json @@ -1,120 +1,122 @@ { - "@metadata": { - "authors": [ - "Siebrand" - ] - }, - "index.newPad": "Nieuw pad", - "index.createOpenPad": "Maak of open pad met de naam:", - "pad.toolbar.bold.title": "Vet (Ctrl-B)", - "pad.toolbar.italic.title": "Cursief (Ctrl-I)", - "pad.toolbar.underline.title": "Onderstrepen (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Doorhalen", - "pad.toolbar.ol.title": "Geordende lijst", - "pad.toolbar.ul.title": "Ongeordende lijst", - "pad.toolbar.indent.title": "Inspringen", - "pad.toolbar.unindent.title": "Inspringing verkleinen", - "pad.toolbar.undo.title": "Ongedaan maken (Ctrl-Z)", - "pad.toolbar.redo.title": "Opnieuw uitvoeren (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Kleuren auteurs wissen", - "pad.toolbar.import_export.title": "Naar\/van andere opmaak exporteren\/importeren", - "pad.toolbar.timeslider.title": "Tijdlijn", - "pad.toolbar.savedRevision.title": "Opgeslagen versies", - "pad.toolbar.settings.title": "Instellingen", - "pad.toolbar.embed.title": "Pad insluiten", - "pad.toolbar.showusers.title": "Gebruikers van dit pad weergeven", - "pad.colorpicker.save": "Opslaan", - "pad.colorpicker.cancel": "Annuleren", - "pad.loading": "Bezig met laden\u2026", - "pad.passwordRequired": "U hebt een wachtwoord nodig om toegang te krijgen tot deze pad", - "pad.permissionDenied": "U hebt geen rechten om deze pad te bekijken", - "pad.wrongPassword": "U hebt een onjuist wachtwoord ingevoerd", - "pad.settings.padSettings": "Padinstellingen", - "pad.settings.myView": "Mijn overzicht", - "pad.settings.stickychat": "Chat altijd zichtbaar", - "pad.settings.colorcheck": "Kleuren auteurs", - "pad.settings.linenocheck": "Regelnummers", - "pad.settings.fontType": "Lettertype:", - "pad.settings.fontType.normal": "Normaal", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Globaal overzicht", - "pad.settings.language": "Taal:", - "pad.importExport.import_export": "Importeren\/exporteren", - "pad.importExport.import": "Upload een tekstbestand of document", - "pad.importExport.importSuccessful": "Afgerond", - "pad.importExport.export": "Huidige pad exporteren als", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Tekst zonder opmaak", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "U kunt alleen importeren vanuit platte tekst of een HTML-opmaak. Installeer abiword<\/a> om meer geavanceerde importmogelijkheden te krijgen.", - "pad.modals.connected": "Verbonden.", - "pad.modals.reconnecting": "Opnieuw verbinding maken met uw pad...", - "pad.modals.forcereconnect": "Opnieuw verbinden", - "pad.modals.userdup": "In een ander venster geopend", - "pad.modals.userdup.explanation": "Dit pad is meer dan \u00e9\u00e9n keer geopend in een browservenster op deze computer.", - "pad.modals.userdup.advice": "Maak opnieuw verbinding als u dit venster wilt gebruiken.", - "pad.modals.unauth": "Niet toegestaan", - "pad.modals.unauth.explanation": "Uw rechten zijn gewijzigd terwijl u de pagina aan het bekijken was. Probeer opnieuw te verbinden.", - "pad.modals.looping": "Verbinding verbroken.", - "pad.modals.looping.explanation": "Er is een probleem opgetreden tijdens de communicatie met de synchronisatieserver.", - "pad.modals.looping.cause": "Mogelijk gebruikt de server een niet compatibele firewall of proxy server.", - "pad.modals.initsocketfail": "Server is niet bereikbaar.", - "pad.modals.initsocketfail.explanation": "Het was niet mogelijk te verbinden met de synchronisatieserver.", - "pad.modals.initsocketfail.cause": "Mogelijk komt dit door uw browser of internetverbinding.", - "pad.modals.slowcommit": "Verbinding verbroken.", - "pad.modals.slowcommit.explanation": "De server reageert niet.", - "pad.modals.slowcommit.cause": "Dit komt mogelijk door netwerkproblemen.", - "pad.modals.deleted": "Verwijderd.", - "pad.modals.deleted.explanation": "Dit pad is verwijderd.", - "pad.modals.disconnected": "Uw verbinding is verbroken.", - "pad.modals.disconnected.explanation": "De verbinding met de server is verbroken", - "pad.modals.disconnected.cause": "De server is mogelijk niet beschikbaar. Stel alstublieft de beheerder op de hoogte.", - "pad.share": "Pad delen", - "pad.share.readonly": "Alleen-lezen", - "pad.share.link": "Koppeling", - "pad.share.emebdcode": "URL insluiten", - "pad.chat": "Chatten", - "pad.chat.title": "Chat voor dit pad opnenen", - "pad.chat.loadmessages": "Meer berichten laden", - "timeslider.pageTitle": "Tijdlijn voor {{appTitle}}", - "timeslider.toolbar.returnbutton": "Terug naar pad", - "timeslider.toolbar.authors": "Auteurs:", - "timeslider.toolbar.authorsList": "Geen auteurs", - "timeslider.toolbar.exportlink.title": "Exporteren", - "timeslider.exportCurrent": "Huidige versie exporteren als:", - "timeslider.version": "Versie {{version}}", - "timeslider.saved": "Opgeslagen op {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "januari", - "timeslider.month.february": "februari", - "timeslider.month.march": "maart", - "timeslider.month.april": "april", - "timeslider.month.may": "mei", - "timeslider.month.june": "juni", - "timeslider.month.july": "juli", - "timeslider.month.august": "augustus", - "timeslider.month.september": "september", - "timeslider.month.october": "oktober", - "timeslider.month.november": "november", - "timeslider.month.december": "december", - "timeslider.unnamedauthor": "{{num}} onbekende auteur", - "timeslider.unnamedauthors": "{{num}} onbekende auteurs", - "pad.savedrevs.marked": "Deze versie is nu gemarkeerd als opgeslagen versie", - "pad.userlist.entername": "Geef uw naam op", - "pad.userlist.unnamed": "zonder naam", - "pad.userlist.guest": "Gast", - "pad.userlist.deny": "Weigeren", - "pad.userlist.approve": "Goedkeuren", - "pad.editbar.clearcolors": "Auteurskleuren voor het hele document wissen?", - "pad.impexp.importbutton": "Nu importeren", - "pad.impexp.importing": "Bezig met importeren\u2026", - "pad.impexp.confirmimport": "Door een bestand te importeren overschrijft u de huidige tekst van de pad. Wilt u echt doorgaan?", - "pad.impexp.convertFailed": "Het was niet mogelijk dit bestand te importeren. Gebruik een andere documentopmaak of kopieer en plak de inhoud handmatig", - "pad.impexp.uploadFailed": "Het uploaden is mislukt. Probeer het opnieuw", - "pad.impexp.importfailed": "Importeren is mislukt", - "pad.impexp.copypaste": "Gebruik kopi\u00ebren en plakken", - "pad.impexp.exportdisabled": "Exporteren als {{type}} is uitgeschakeld. Neem contact op met de systeembeheerder voor details." + "@metadata": { + "authors": [ + "Siebrand" + ] + }, + "index.newPad": "Nieuw pad", + "index.createOpenPad": "Maak of open pad met de naam:", + "pad.toolbar.bold.title": "Vet (Ctrl-B)", + "pad.toolbar.italic.title": "Cursief (Ctrl-I)", + "pad.toolbar.underline.title": "Onderstrepen (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Doorhalen", + "pad.toolbar.ol.title": "Geordende lijst", + "pad.toolbar.ul.title": "Ongeordende lijst", + "pad.toolbar.indent.title": "Inspringen (Tab)", + "pad.toolbar.unindent.title": "Inspringing verkleinen (Shift+Tab)", + "pad.toolbar.undo.title": "Ongedaan maken (Ctrl-Z)", + "pad.toolbar.redo.title": "Opnieuw uitvoeren (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Kleuren auteurs wissen", + "pad.toolbar.import_export.title": "Naar/van andere opmaak exporteren/importeren", + "pad.toolbar.timeslider.title": "Tijdlijn", + "pad.toolbar.savedRevision.title": "Versie opslaan", + "pad.toolbar.settings.title": "Instellingen", + "pad.toolbar.embed.title": "Pad delen en insluiten", + "pad.toolbar.showusers.title": "Gebruikers van dit pad weergeven", + "pad.colorpicker.save": "Opslaan", + "pad.colorpicker.cancel": "Annuleren", + "pad.loading": "Bezig met laden…", + "pad.passwordRequired": "U hebt een wachtwoord nodig om toegang te krijgen tot deze pad", + "pad.permissionDenied": "U hebt geen rechten om deze pad te bekijken", + "pad.wrongPassword": "U hebt een onjuist wachtwoord ingevoerd", + "pad.settings.padSettings": "Padinstellingen", + "pad.settings.myView": "Mijn overzicht", + "pad.settings.stickychat": "Chat altijd zichtbaar", + "pad.settings.colorcheck": "Kleuren auteurs", + "pad.settings.linenocheck": "Regelnummers", + "pad.settings.rtlcheck": "Inhoud van rechts naar links lezen?", + "pad.settings.fontType": "Lettertype:", + "pad.settings.fontType.normal": "Normaal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Globaal overzicht", + "pad.settings.language": "Taal:", + "pad.importExport.import_export": "Importeren/exporteren", + "pad.importExport.import": "Upload een tekstbestand of document", + "pad.importExport.importSuccessful": "Afgerond", + "pad.importExport.export": "Huidige pad exporteren als", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Tekst zonder opmaak", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "Pdf", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "U kunt alleen importeren vanuit platte tekst of een HTML-opmaak. \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EInstalleer abiword\u003C/a\u003E om meer geavanceerde importmogelijkheden te krijgen.", + "pad.modals.connected": "Verbonden.", + "pad.modals.reconnecting": "Opnieuw verbinding maken met uw pad...", + "pad.modals.forcereconnect": "Opnieuw verbinden", + "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.", + "pad.modals.unauth": "Niet toegestaan", + "pad.modals.unauth.explanation": "Uw rechten zijn gewijzigd terwijl u de pagina aan het bekijken was. Probeer opnieuw te verbinden.", + "pad.modals.looping.explanation": "Er is een probleem opgetreden tijdens de communicatie met de synchronisatieserver.", + "pad.modals.looping.cause": "Mogelijk gebruikt de server een niet compatibele firewall of proxy server.", + "pad.modals.initsocketfail": "Server is niet bereikbaar.", + "pad.modals.initsocketfail.explanation": "Het was niet mogelijk te verbinden met de synchronisatieserver.", + "pad.modals.initsocketfail.cause": "Mogelijk komt dit door uw browser of internetverbinding.", + "pad.modals.slowcommit.explanation": "De server reageert niet.", + "pad.modals.slowcommit.cause": "Dit komt mogelijk door netwerkproblemen.", + "pad.modals.badChangeset.explanation": "Een door u gemaakte bewerking is door de synchronisatieserver als incorrect aangemerkt.", + "pad.modals.badChangeset.cause": "Dit kan komen door een onjuiste serverinstelling of door ander onverwacht gedrag. Neem contact op met de servicebeheerder als u denkt dat er een onverwachte uitkomst is. Probeer opnieuw te verbinden om door te gaan met bewerken.", + "pad.modals.corruptPad.explanation": "Het pad dat u wilt openen is beschadigd.", + "pad.modals.corruptPad.cause": "Dit kan komen door een onjuiste serverinstelling of door ander onverwacht gedrag. Neem contact op met de servicebeheerder.", + "pad.modals.deleted": "Verwijderd.", + "pad.modals.deleted.explanation": "Dit pad is verwijderd.", + "pad.modals.disconnected": "Uw verbinding is verbroken.", + "pad.modals.disconnected.explanation": "De verbinding met de server is verbroken", + "pad.modals.disconnected.cause": "De server is mogelijk niet beschikbaar. Stel de servicebeheerder op de hoogte.", + "pad.share": "Pad delen", + "pad.share.readonly": "Alleen-lezen", + "pad.share.link": "Koppeling", + "pad.share.emebdcode": "URL insluiten", + "pad.chat": "Chatten", + "pad.chat.title": "Chat voor dit pad opnenen", + "pad.chat.loadmessages": "Meer berichten laden", + "timeslider.pageTitle": "Tijdlijn voor {{appTitle}}", + "timeslider.toolbar.returnbutton": "Terug naar pad", + "timeslider.toolbar.authors": "Auteurs:", + "timeslider.toolbar.authorsList": "Geen auteurs", + "timeslider.toolbar.exportlink.title": "Exporteren", + "timeslider.exportCurrent": "Huidige versie exporteren als:", + "timeslider.version": "Versie {{version}}", + "timeslider.saved": "Opgeslagen op {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "januari", + "timeslider.month.february": "februari", + "timeslider.month.march": "maart", + "timeslider.month.april": "april", + "timeslider.month.may": "mei", + "timeslider.month.june": "juni", + "timeslider.month.july": "juli", + "timeslider.month.august": "augustus", + "timeslider.month.september": "september", + "timeslider.month.october": "oktober", + "timeslider.month.november": "november", + "timeslider.month.december": "december", + "timeslider.unnamedauthors": "{{num}} onbekende {[plural(num) one: auteur, other: auteurs ]}", + "pad.savedrevs.marked": "Deze versie is nu gemarkeerd als opgeslagen versie", + "pad.userlist.entername": "Geef uw naam op", + "pad.userlist.unnamed": "zonder naam", + "pad.userlist.guest": "Gast", + "pad.userlist.deny": "Weigeren", + "pad.userlist.approve": "Goedkeuren", + "pad.editbar.clearcolors": "Auteurskleuren voor het hele document wissen?", + "pad.impexp.importbutton": "Nu importeren", + "pad.impexp.importing": "Bezig met importeren…", + "pad.impexp.confirmimport": "Door een bestand te importeren overschrijft u de huidige tekst van de pad. Wilt u echt doorgaan?", + "pad.impexp.convertFailed": "Het was niet mogelijk dit bestand te importeren. Gebruik een andere documentopmaak of kopieer en plak de inhoud handmatig", + "pad.impexp.uploadFailed": "Het uploaden is mislukt. Probeer het opnieuw", + "pad.impexp.importfailed": "Importeren is mislukt", + "pad.impexp.copypaste": "Gebruik kopiëren en plakken", + "pad.impexp.exportdisabled": "Exporteren als {{type}} is uitgeschakeld. Neem contact op met de systeembeheerder voor details." } \ No newline at end of file diff --git a/src/locales/nn.json b/src/locales/nn.json index e8004e8d5..5a98353ea 100644 --- a/src/locales/nn.json +++ b/src/locales/nn.json @@ -1,117 +1,115 @@ { - "@metadata": { - "authors": { - "1": "Unhammer" - } - }, - "index.newPad": "Ny blokk", - "index.createOpenPad": "eller opprett\/opna ei blokk med namnet:", - "pad.toolbar.bold.title": "Feit (Ctrl-B)", - "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", - "pad.toolbar.underline.title": "Understreking (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Gjennomstreking", - "pad.toolbar.ol.title": "Nummerert liste", - "pad.toolbar.ul.title": "Punktliste", - "pad.toolbar.indent.title": "Innrykk", - "pad.toolbar.unindent.title": "Rykk ut", - "pad.toolbar.undo.title": "Angra (Ctrl-Z)", - "pad.toolbar.redo.title": "Gjer om (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Fjern forfattarfargar", - "pad.toolbar.import_export.title": "Importer\/eksporter til\/fr\u00e5 ulike filformat", - "pad.toolbar.timeslider.title": "Tidslinje", - "pad.toolbar.savedRevision.title": "Lagra utg\u00e5ver", - "pad.toolbar.settings.title": "Innstillingar", - "pad.toolbar.embed.title": "Bygg inn blokka i ei nettside", - "pad.toolbar.showusers.title": "Syn brukarane p\u00e5 blokka", - "pad.colorpicker.save": "Lagra", - "pad.colorpicker.cancel": "Avbryt", - "pad.loading": "Lastar \u2026", - "pad.passwordRequired": "Du treng eit passord for \u00e5 opna denne blokka", - "pad.permissionDenied": "Du har ikkje tilgang til denne blokka", - "pad.wrongPassword": "Feil passord", - "pad.settings.padSettings": "Blokkinnstillingar", - "pad.settings.myView": "Mi visning", - "pad.settings.stickychat": "Prat alltid synleg", - "pad.settings.colorcheck": "Forfattarfargar", - "pad.settings.linenocheck": "Linjenummer", - "pad.settings.fontType": "Skrifttype:", - "pad.settings.fontType.normal": "Vanleg", - "pad.settings.fontType.monospaced": "Fast breidd", - "pad.settings.globalView": "Global visning", - "pad.settings.language": "Spr\u00e5k:", - "pad.importExport.import_export": "Importer\/eksporter", - "pad.importExport.import": "Last opp tekstfiler eller dokument", - "pad.importExport.importSuccessful": "Vellukka!", - "pad.importExport.export": "Eksporter blokka som:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Rein tekst", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Du kan berre importera fr\u00e5 rein tekst- eller HTML-format. Ver venleg og installer Abiword<\/a> om du treng meir avanserte importfunksjonar.", - "pad.modals.connected": "Tilkopla.", - "pad.modals.reconnecting": "Gjenopprettar tilkoplinga til blokka di \u2026", - "pad.modals.forcereconnect": "Tving gjentilkopling", - "pad.modals.userdup": "Opna i eit anna vindauge", - "pad.modals.userdup.explanation": "Det ser ut som om denne blokka er open i meir enn eitt nettlesarvindauge p\u00e5 denne maskinen.", - "pad.modals.userdup.advice": "Kopla til om att for \u00e5 bruka dette vinduage i staden.", - "pad.modals.unauth": "Ikkje tillate", - "pad.modals.unauth.explanation": "Rettane dine blei endra under visning av denne sida. Pr\u00f8v \u00e5 kopla til p\u00e5 nytt.", - "pad.modals.looping": "Fr\u00e5kopla.", - "pad.modals.looping.explanation": "Det oppstod kommunikasjonsproblem med synkroniseringstenaren.", - "pad.modals.looping.cause": "Kanskje du kopla til gjennom ein inkompatibel brannmur eller mellomtenar.", - "pad.modals.initsocketfail": "Klarte ikkje \u00e5 n\u00e5 tenaren.", - "pad.modals.initsocketfail.explanation": "Klarte ikkje \u00e5 kopla til synkroniseringstenaren.", - "pad.modals.initsocketfail.cause": "Dette er sannsynlegvis p\u00e5 grunn av eit problem med nettlesaren eller internettilkoplinga di.", - "pad.modals.slowcommit": "Fr\u00e5kopla.", - "pad.modals.slowcommit.explanation": "Tenaren svarer ikkje.", - "pad.modals.slowcommit.cause": "Dette kan vera p\u00e5 grunn av problem med nettilkoplinga.", - "pad.modals.deleted": "Sletta.", - "pad.modals.deleted.explanation": "Denne blokka er fjerna.", - "pad.modals.disconnected": "Du blei fr\u00e5kopla.", - "pad.modals.disconnected.explanation": "Mista tilkoplinga til tenaren", - "pad.modals.disconnected.cause": "Tenaren er ikkje tilgjengeleg. Ver venleg og gi oss ei melding om dette skjer fleire gonger.", - "pad.share": "Del denne blokka", - "pad.share.readonly": "Skriveverna", - "pad.share.link": "Lenkje", - "pad.share.emebdcode": "URL for innebygging", - "pad.chat": "Prat", - "pad.chat.title": "Opna pratepanelet for denne blokka.", - "timeslider.pageTitle": "Tidslinje for {{appTitle}}", - "timeslider.toolbar.returnbutton": "Attende til blokka", - "timeslider.toolbar.authors": "Forfattarar:", - "timeslider.toolbar.authorsList": "Ingen forfattarar", - "timeslider.toolbar.exportlink.title": "Eksporter", - "timeslider.exportCurrent": "Eksporter denne utg\u00e5va som:", - "timeslider.version": "Utg\u00e5ve {{version}}", - "timeslider.saved": "Lagra {{day}}. {{month}}, {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}.{{minutes}}.{{seconds}}", - "timeslider.month.january": "januar", - "timeslider.month.february": "februar", - "timeslider.month.march": "mars", - "timeslider.month.april": "april", - "timeslider.month.may": "mai", - "timeslider.month.june": "juni", - "timeslider.month.july": "juli", - "timeslider.month.august": "august", - "timeslider.month.september": "september", - "timeslider.month.october": "oktober", - "timeslider.month.november": "november", - "timeslider.month.december": "desember", - "pad.savedrevs.marked": "Denne utg\u00e5va er no merkt som ei lagra utg\u00e5ve", - "pad.userlist.entername": "Skriv namnet ditt", - "pad.userlist.unnamed": "utan namn", - "pad.userlist.guest": "Gjest", - "pad.userlist.deny": "Nekt", - "pad.userlist.approve": "Godkjenn", - "pad.editbar.clearcolors": "Fjern forfattarfargar i heile dokumentet?", - "pad.impexp.importbutton": "Importer no", - "pad.impexp.importing": "Importerer \u2026", - "pad.impexp.confirmimport": "Viss du importerer ei fil, vil denne blokka bli overskriven. Er du sikker p\u00e5 at du vil fortsetja?", - "pad.impexp.convertFailed": "Me klarte ikkje \u00e5 importera denne fila. Ver venleg og bruk eit anna dokumentformat, eller kopier og lim inn for hand.", - "pad.impexp.uploadFailed": "Feil ved opplasting, ver venleg og pr\u00f8v om att", - "pad.impexp.importfailed": "Feil ved importering", - "pad.impexp.copypaste": "Ver venleg og kopier og lim inn", - "pad.impexp.exportdisabled": "Eksport av {{type}} er skrudd av. Ver venleg og ta kontakt med systemadministrator for meir informasjon." + "@metadata": { + "authors": { + "1": "Unhammer" + } + }, + "index.newPad": "Ny blokk", + "index.createOpenPad": "eller opprett/opna ei blokk med namnet:", + "pad.toolbar.bold.title": "Feit (Ctrl-B)", + "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", + "pad.toolbar.underline.title": "Understreking (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Gjennomstreking", + "pad.toolbar.ol.title": "Nummerert liste", + "pad.toolbar.ul.title": "Punktliste", + "pad.toolbar.indent.title": "Innrykk", + "pad.toolbar.unindent.title": "Rykk ut", + "pad.toolbar.undo.title": "Angra (Ctrl-Z)", + "pad.toolbar.redo.title": "Gjer om (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Fjern forfattarfargar", + "pad.toolbar.import_export.title": "Importer/eksporter til/frÃ¥ ulike filformat", + "pad.toolbar.timeslider.title": "Tidslinje", + "pad.toolbar.savedRevision.title": "Lagra utgÃ¥ver", + "pad.toolbar.settings.title": "Innstillingar", + "pad.toolbar.embed.title": "Bygg inn blokka i ei nettside", + "pad.toolbar.showusers.title": "Syn brukarane pÃ¥ blokka", + "pad.colorpicker.save": "Lagra", + "pad.colorpicker.cancel": "Avbryt", + "pad.loading": "Lastar …", + "pad.passwordRequired": "Du treng eit passord for Ã¥ opna denne blokka", + "pad.permissionDenied": "Du har ikkje tilgang til denne blokka", + "pad.wrongPassword": "Feil passord", + "pad.settings.padSettings": "Blokkinnstillingar", + "pad.settings.myView": "Mi visning", + "pad.settings.stickychat": "Prat alltid synleg", + "pad.settings.colorcheck": "Forfattarfargar", + "pad.settings.linenocheck": "Linjenummer", + "pad.settings.fontType": "Skrifttype:", + "pad.settings.fontType.normal": "Vanleg", + "pad.settings.fontType.monospaced": "Fast breidd", + "pad.settings.globalView": "Global visning", + "pad.settings.language": "SprÃ¥k:", + "pad.importExport.import_export": "Importer/eksporter", + "pad.importExport.import": "Last opp tekstfiler eller dokument", + "pad.importExport.importSuccessful": "Vellukka!", + "pad.importExport.export": "Eksporter blokka som:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Rein tekst", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Du kan berre importera frÃ¥ rein tekst- eller HTML-format. Ver venleg og \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstaller Abiword\u003C/a\u003E om du treng meir avanserte importfunksjonar.", + "pad.modals.connected": "Tilkopla.", + "pad.modals.reconnecting": "Gjenopprettar tilkoplinga til blokka di …", + "pad.modals.forcereconnect": "Tving gjentilkopling", + "pad.modals.userdup": "Opna i eit anna vindauge", + "pad.modals.userdup.explanation": "Det ser ut som om denne blokka er open i meir enn eitt nettlesarvindauge pÃ¥ denne maskinen.", + "pad.modals.userdup.advice": "Kopla til om att for Ã¥ bruka dette vinduage i staden.", + "pad.modals.unauth": "Ikkje tillate", + "pad.modals.unauth.explanation": "Rettane dine blei endra under visning av denne sida. Prøv Ã¥ kopla til pÃ¥ nytt.", + "pad.modals.looping.explanation": "Det oppstod kommunikasjonsproblem med synkroniseringstenaren.", + "pad.modals.looping.cause": "Kanskje du kopla til gjennom ein inkompatibel brannmur eller mellomtenar.", + "pad.modals.initsocketfail": "Klarte ikkje Ã¥ nÃ¥ tenaren.", + "pad.modals.initsocketfail.explanation": "Klarte ikkje Ã¥ kopla til synkroniseringstenaren.", + "pad.modals.initsocketfail.cause": "Dette er sannsynlegvis pÃ¥ grunn av eit problem med nettlesaren eller internettilkoplinga di.", + "pad.modals.slowcommit.explanation": "Tenaren svarer ikkje.", + "pad.modals.slowcommit.cause": "Dette kan vera pÃ¥ grunn av problem med nettilkoplinga.", + "pad.modals.deleted": "Sletta.", + "pad.modals.deleted.explanation": "Denne blokka er fjerna.", + "pad.modals.disconnected": "Du blei frÃ¥kopla.", + "pad.modals.disconnected.explanation": "Mista tilkoplinga til tenaren", + "pad.modals.disconnected.cause": "Tenaren er ikkje tilgjengeleg. Ver venleg og gi oss ei melding om dette skjer fleire gonger.", + "pad.share": "Del denne blokka", + "pad.share.readonly": "Skriveverna", + "pad.share.link": "Lenkje", + "pad.share.emebdcode": "URL for innebygging", + "pad.chat": "Prat", + "pad.chat.title": "Opna pratepanelet for denne blokka.", + "timeslider.pageTitle": "Tidslinje for {{appTitle}}", + "timeslider.toolbar.returnbutton": "Attende til blokka", + "timeslider.toolbar.authors": "Forfattarar:", + "timeslider.toolbar.authorsList": "Ingen forfattarar", + "timeslider.toolbar.exportlink.title": "Eksporter", + "timeslider.exportCurrent": "Eksporter denne utgÃ¥va som:", + "timeslider.version": "UtgÃ¥ve {{version}}", + "timeslider.saved": "Lagra {{day}}. {{month}}, {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}.{{minutes}}.{{seconds}}", + "timeslider.month.january": "januar", + "timeslider.month.february": "februar", + "timeslider.month.march": "mars", + "timeslider.month.april": "april", + "timeslider.month.may": "mai", + "timeslider.month.june": "juni", + "timeslider.month.july": "juli", + "timeslider.month.august": "august", + "timeslider.month.september": "september", + "timeslider.month.october": "oktober", + "timeslider.month.november": "november", + "timeslider.month.december": "desember", + "pad.savedrevs.marked": "Denne utgÃ¥va er no merkt som ei lagra utgÃ¥ve", + "pad.userlist.entername": "Skriv namnet ditt", + "pad.userlist.unnamed": "utan namn", + "pad.userlist.guest": "Gjest", + "pad.userlist.deny": "Nekt", + "pad.userlist.approve": "Godkjenn", + "pad.editbar.clearcolors": "Fjern forfattarfargar i heile dokumentet?", + "pad.impexp.importbutton": "Importer no", + "pad.impexp.importing": "Importerer …", + "pad.impexp.confirmimport": "Viss du importerer ei fil, vil denne blokka bli overskriven. Er du sikker pÃ¥ at du vil fortsetja?", + "pad.impexp.convertFailed": "Me klarte ikkje Ã¥ importera denne fila. Ver venleg og bruk eit anna dokumentformat, eller kopier og lim inn for hand.", + "pad.impexp.uploadFailed": "Feil ved opplasting, ver venleg og prøv om att", + "pad.impexp.importfailed": "Feil ved importering", + "pad.impexp.copypaste": "Ver venleg og kopier og lim inn", + "pad.impexp.exportdisabled": "Eksport av {{type}} er skrudd av. Ver venleg og ta kontakt med systemadministrator for meir informasjon." } \ No newline at end of file diff --git a/src/locales/oc.json b/src/locales/oc.json index 08390825b..3c5d29e07 100644 --- a/src/locales/oc.json +++ b/src/locales/oc.json @@ -1,118 +1,122 @@ { - "@metadata": { - "authors": [ - "Cedric31" - ] - }, - "index.newPad": "Pad nov\u00e8l", - "index.createOpenPad": "o crear\/dobrir un Pad intitulat :", - "pad.toolbar.bold.title": "Gras (Ctrl-B)", - "pad.toolbar.italic.title": "Italica (Ctrl-I)", - "pad.toolbar.underline.title": "Soslinhat (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Raiat", - "pad.toolbar.ol.title": "Lista ordenada", - "pad.toolbar.ul.title": "Lista amb de piuses", - "pad.toolbar.indent.title": "Indentar", - "pad.toolbar.unindent.title": "Desindentar", - "pad.toolbar.undo.title": "Anullar (Ctrl-Z)", - "pad.toolbar.redo.title": "Restablir (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Escafar las colors qu'identifican los autors", - "pad.toolbar.import_export.title": "Importar\/Exportar de\/cap a un format de fichi\u00e8r diferent", - "pad.toolbar.timeslider.title": "Istoric dinamic", - "pad.toolbar.savedRevision.title": "Versions enregistradas", - "pad.toolbar.settings.title": "Param\u00e8tres", - "pad.toolbar.embed.title": "Integrar aqueste Pad", - "pad.toolbar.showusers.title": "Afichar los utilizaires del Pad", - "pad.colorpicker.save": "Enregistrar", - "pad.colorpicker.cancel": "Anullar", - "pad.loading": "Cargament...", - "pad.passwordRequired": "Av\u00e8tz besonh d'un senhal per accedir a aqueste Pad", - "pad.permissionDenied": "Vos es pas perm\u00e9s d\u2019accedir a aqueste Pad.", - "pad.wrongPassword": "Senhal incorr\u00e8cte", - "pad.settings.padSettings": "Param\u00e8tres del Pad", - "pad.settings.myView": "Ma vista", - "pad.settings.stickychat": "Afichar totjorn lo chat", - "pad.settings.colorcheck": "Colors d\u2019identificacion", - "pad.settings.linenocheck": "Num\u00e8ros de linhas", - "pad.settings.fontType": "Tipe de poli\u00e7a :", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Vista d\u2019ensemble", - "pad.settings.language": "Lenga :", - "pad.importExport.import_export": "Importar\/Exportar", - "pad.importExport.import": "Cargar un t\u00e8xte o un document", - "pad.importExport.importSuccessful": "Capitat !", - "pad.importExport.export": "Exportar lo Pad actual coma :", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "T\u00e8xte brut", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Pod\u00e8tz pas importar que de formats t\u00e8xte brut o html. Per de foncionalitats d'importacion mai evoluadas, installatz abiword<\/a>.", - "pad.modals.connected": "Connectat.", - "pad.modals.reconnecting": "Reconnexion cap a v\u00f2stre Pad...", - "pad.modals.forcereconnect": "For\u00e7ar la reconnexion.", - "pad.modals.userdup": "Dob\u00e8rt dins una autra fen\u00e8stra", - "pad.modals.userdup.explanation": "Sembla qu'aqueste Pad es dob\u00e8rt dins mai d'una fen\u00e8stra de v\u00f2stre navigador sus aqueste ordenador.", - "pad.modals.userdup.advice": "Se reconnectar en utilizant aquesta fen\u00e8stra.", - "pad.modals.unauth": "Pas autorizat", - "pad.modals.unauth.explanation": "V\u00f2stras permissions son estadas cambiadas al moment de l'afichatge d'aquesta pagina. Ensajatz de vos reconnectar.", - "pad.modals.looping": "Desconnectat", - "pad.modals.looping.explanation": "Av\u00e8m un probl\u00e8ma de comunicacion amb lo servidor de sincronizacion.", - "pad.modals.looping.cause": "Es possible que v\u00f2stra connexion si\u00e1 protegida per un parafu\u00f2c incompatible o un servidor proxy incompatible.", - "pad.modals.initsocketfail": "Lo servidor es introbable.", - "pad.modals.initsocketfail.explanation": "Impossible de se connectar al servidor de sincronizacion.", - "pad.modals.initsocketfail.cause": "Lo probl\u00e8ma p\u00f2t venir de v\u00f2stre navigador web o de v\u00f2stra connexion Internet.", - "pad.modals.slowcommit": "Desconnectat", - "pad.modals.slowcommit.explanation": "Lo servidor respond pas.", - "pad.modals.slowcommit.cause": "Aqueste probl\u00e8ma p\u00f2t venir d'una marrida connectivitat a la ret.", - "pad.modals.deleted": "Suprimit.", - "pad.modals.deleted.explanation": "Aqueste Pad es estat suprimit.", - "pad.modals.disconnected": "S\u00e8tz estat desconnectat.", - "pad.modals.disconnected.explanation": "La connexion al servidor a fracassat.", - "pad.modals.disconnected.cause": "Es possible que lo servidor si\u00e1 indisponible. Informatz-nos-ne se lo probl\u00e8ma persist\u00eds.", - "pad.share": "Partejar aqueste Pad", - "pad.share.readonly": "Lectura sola", - "pad.share.link": "Ligam", - "pad.share.emebdcode": "Ligam d'integrar", - "pad.chat": "Chat", - "pad.chat.title": "Dobrir lo chat associat a aqueste pad.", - "pad.chat.loadmessages": "Cargar mai de messatges.", - "timeslider.pageTitle": "Istoric dinamic de {{appTitle}}", - "timeslider.toolbar.returnbutton": "Retorn a aqueste Pad.", - "timeslider.toolbar.authors": "Autors :", - "timeslider.toolbar.authorsList": "Pas cap d'autor", - "timeslider.toolbar.exportlink.title": "Exportar", - "timeslider.exportCurrent": "Exportar la version actuala en\u00a0:", - "timeslider.version": "Version {{version}}", - "timeslider.saved": "Enregistrat lo {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Geni\u00e8r", - "timeslider.month.february": "Febri\u00e8r", - "timeslider.month.march": "Mar\u00e7", - "timeslider.month.april": "Abril", - "timeslider.month.may": "Mai", - "timeslider.month.june": "Junh", - "timeslider.month.july": "Julhet", - "timeslider.month.august": "Agost", - "timeslider.month.september": "Setembre", - "timeslider.month.october": "Octobre", - "timeslider.month.november": "Novembre", - "timeslider.month.december": "Decembre", - "pad.savedrevs.marked": "Aquesta revision es ara marcada coma revision enregistrada", - "pad.userlist.entername": "Entratz v\u00f2stre nom", - "pad.userlist.unnamed": "sens nom", - "pad.userlist.guest": "Convidat", - "pad.userlist.deny": "Refusar", - "pad.userlist.approve": "Aprovar", - "pad.editbar.clearcolors": "Escafar las colors de paternitat dins tot lo document ?", - "pad.impexp.importbutton": "Importar ara", - "pad.impexp.importing": "Imp\u00f2rt en cors...", - "pad.impexp.confirmimport": "Importar un fichi\u00e8r espotir\u00e0 lo t\u00e8xte actual del bl\u00f2t. S\u00e8tz segur que lo vol\u00e8tz far ?", - "pad.impexp.convertFailed": "Pod\u00e8m pas importar aqueste fichi\u00e8r. Utilizatz un autre format de document o fas\u00e8tz un copiar\/pegar manual", - "pad.impexp.uploadFailed": "Lo telecargament a fracassat, reensajatz", - "pad.impexp.importfailed": "Frac\u00e0s de l'importacion", - "pad.impexp.copypaste": "Copiatz\/pegatz", - "pad.impexp.exportdisabled": "Exportar al format {{type}} es desactivat. Contactatz v\u00f2stre administrator del sist\u00e8ma per mai de detalhs." + "@metadata": { + "authors": [ + "Cedric31" + ] + }, + "index.newPad": "Pad novèl", + "index.createOpenPad": "o crear/dobrir un Pad intitulat :", + "pad.toolbar.bold.title": "Gras (Ctrl-B)", + "pad.toolbar.italic.title": "Italica (Ctrl-I)", + "pad.toolbar.underline.title": "Soslinhat (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Raiat", + "pad.toolbar.ol.title": "Lista ordenada", + "pad.toolbar.ul.title": "Lista amb de piuses", + "pad.toolbar.indent.title": "Indentar", + "pad.toolbar.unindent.title": "Desindentar", + "pad.toolbar.undo.title": "Anullar (Ctrl-Z)", + "pad.toolbar.redo.title": "Restablir (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Escafar las colors qu'identifican los autors", + "pad.toolbar.import_export.title": "Importar/Exportar de/cap a un format de fichièr diferent", + "pad.toolbar.timeslider.title": "Istoric dinamic", + "pad.toolbar.savedRevision.title": "Enregistrar la revision", + "pad.toolbar.settings.title": "Paramètres", + "pad.toolbar.embed.title": "Partejar e integrar aqueste Pad", + "pad.toolbar.showusers.title": "Afichar los utilizaires del Pad", + "pad.colorpicker.save": "Enregistrar", + "pad.colorpicker.cancel": "Anullar", + "pad.loading": "Cargament...", + "pad.passwordRequired": "Avètz besonh d'un senhal per accedir a aqueste Pad", + "pad.permissionDenied": "Vos es pas permés d’accedir a aqueste Pad.", + "pad.wrongPassword": "Senhal incorrècte", + "pad.settings.padSettings": "Paramètres del Pad", + "pad.settings.myView": "Ma vista", + "pad.settings.stickychat": "Afichar totjorn lo chat", + "pad.settings.colorcheck": "Colors d’identificacion", + "pad.settings.linenocheck": "Numèros de linhas", + "pad.settings.rtlcheck": "Lectura de drecha a esquèrra", + "pad.settings.fontType": "Tipe de poliça :", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Vista d’ensemble", + "pad.settings.language": "Lenga :", + "pad.importExport.import_export": "Importar/Exportar", + "pad.importExport.import": "Cargar un tèxte o un document", + "pad.importExport.importSuccessful": "Capitat !", + "pad.importExport.export": "Exportar lo Pad actual coma :", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Tèxte brut", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Podètz pas importar que de formats tèxte brut o html. Per de foncionalitats d'importacion mai evoluadas, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstallatz abiword\u003C/a\u003E.", + "pad.modals.connected": "Connectat.", + "pad.modals.reconnecting": "Reconnexion cap a vòstre Pad...", + "pad.modals.forcereconnect": "Forçar la reconnexion.", + "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 ordenador.", + "pad.modals.userdup.advice": "Se reconnectar en utilizant aquesta fenèstra.", + "pad.modals.unauth": "Pas autorizat", + "pad.modals.unauth.explanation": "Vòstras permissions son estadas cambiadas al moment de l'afichatge d'aquesta pagina. Ensajatz de vos reconnectar.", + "pad.modals.looping.explanation": "Avèm un problèma de comunicacion amb lo servidor de sincronizacion.", + "pad.modals.looping.cause": "Es possible que vòstra connexion siá protegida per un parafuòc incompatible o un servidor proxy incompatible.", + "pad.modals.initsocketfail": "Lo servidor es introbable.", + "pad.modals.initsocketfail.explanation": "Impossible de se connectar al servidor de sincronizacion.", + "pad.modals.initsocketfail.cause": "Lo problèma pòt venir de vòstre navigador web o de vòstra connexion Internet.", + "pad.modals.slowcommit.explanation": "Lo servidor respond pas.", + "pad.modals.slowcommit.cause": "Aqueste problèma pòt venir d'una marrida connectivitat a la ret.", + "pad.modals.badChangeset.explanation": "Una modificacion qu'avètz efectuada es estada classada coma illegala pel servidor de sincronizacion.", + "pad.modals.badChangeset.cause": "Aquò pòt èsser degut a una marrida configuracion del servidor o a un autre comportament inesperat. Contactatz l’administrator del servici, si pensatz qu’es una error. Ensajatz de vos reconnectar per contunhar de modificar.", + "pad.modals.corruptPad.explanation": "Lo blòt al qual ensajatz d’accedir es corromput.", + "pad.modals.corruptPad.cause": "Aquò pòt èsser degut a una marrida configuracion del servidor o a un autre comportament inesperat. Contactatz l’administrator del servici.", + "pad.modals.deleted": "Suprimit.", + "pad.modals.deleted.explanation": "Aqueste Pad es estat suprimit.", + "pad.modals.disconnected": "Sètz estat desconnectat.", + "pad.modals.disconnected.explanation": "La connexion al servidor a fracassat.", + "pad.modals.disconnected.cause": "Es possible que lo servidor siá indisponible. Se lo problèma contunha, informatz-ne l'administrator del servici.", + "pad.share": "Partejar aqueste Pad", + "pad.share.readonly": "Lectura sola", + "pad.share.link": "Ligam", + "pad.share.emebdcode": "Ligam d'integrar", + "pad.chat": "Chat", + "pad.chat.title": "Dobrir lo chat associat a aqueste pad.", + "pad.chat.loadmessages": "Cargar mai de messatges.", + "timeslider.pageTitle": "Istoric dinamic de {{appTitle}}", + "timeslider.toolbar.returnbutton": "Retorn a aqueste Pad.", + "timeslider.toolbar.authors": "Autors :", + "timeslider.toolbar.authorsList": "Pas cap d'autor", + "timeslider.toolbar.exportlink.title": "Exportar", + "timeslider.exportCurrent": "Exportar la version actuala en :", + "timeslider.version": "Version {{version}}", + "timeslider.saved": "Enregistrat lo {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Genièr", + "timeslider.month.february": "Febrièr", + "timeslider.month.march": "Març", + "timeslider.month.april": "Abril", + "timeslider.month.may": "Mai", + "timeslider.month.june": "Junh", + "timeslider.month.july": "Julhet", + "timeslider.month.august": "Agost", + "timeslider.month.september": "Setembre", + "timeslider.month.october": "Octobre", + "timeslider.month.november": "Novembre", + "timeslider.month.december": "Decembre", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor anonim, other: autors anonims ]}", + "pad.savedrevs.marked": "Aquesta revision es ara marcada coma revision enregistrada", + "pad.userlist.entername": "Entratz vòstre nom", + "pad.userlist.unnamed": "sens nom", + "pad.userlist.guest": "Convidat", + "pad.userlist.deny": "Refusar", + "pad.userlist.approve": "Aprovar", + "pad.editbar.clearcolors": "Escafar las colors de paternitat dins tot lo document ?", + "pad.impexp.importbutton": "Importar ara", + "pad.impexp.importing": "Impòrt en cors...", + "pad.impexp.confirmimport": "Importar un fichièr espotirà lo tèxte actual del blòt. Sètz segur que lo volètz far ?", + "pad.impexp.convertFailed": "Podèm pas importar aqueste fichièr. Utilizatz un autre format de document o fasètz un copiar/pegar manual", + "pad.impexp.uploadFailed": "Lo telecargament a fracassat, reensajatz", + "pad.impexp.importfailed": "Fracàs de l'importacion", + "pad.impexp.copypaste": "Copiatz/pegatz", + "pad.impexp.exportdisabled": "Exportar al format {{type}} es desactivat. Contactatz vòstre administrator del sistèma per mai de detalhs." } \ No newline at end of file diff --git a/src/locales/os.json b/src/locales/os.json index 4acfad7ec..99a9efb0e 100644 --- a/src/locales/os.json +++ b/src/locales/os.json @@ -1,117 +1,118 @@ { - "@metadata": { - "authors": [ - "Bouron" - ] - }, - "index.newPad": "\u041d\u043e\u0433", - "index.createOpenPad": "\u043a\u04d5\u043d\u04d5 \u0441\u0430\u0440\u0430\u0437\/\u0431\u0430\u043a\u04d5\u043d \u043d\u043e\u0433 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0430\u0445\u04d5\u043c \u043d\u043e\u043c\u0438\u043c\u04d5:", - "pad.toolbar.bold.title": "\u0411\u04d5\u0437\u0434\u0436\u044b\u043d (Ctrl-B)", - "pad.toolbar.italic.title": "\u041a\u044a\u04d5\u0434\u0437 (Ctrl-I)", - "pad.toolbar.underline.title": "\u0411\u044b\u043d\u044b\u043b\u0445\u0430\u0445\u0445 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u0425\u0430\u0445\u0445", - "pad.toolbar.ol.title": "\u041d\u044b\u043c\u0430\u0434 \u043d\u043e\u043c\u0445\u044b\u0433\u044a\u0434", - "pad.toolbar.ul.title": "\u04d4\u043d\u04d5\u043d\u044b\u043c\u0430\u0434 \u043d\u043e\u043c\u0445\u044b\u0433\u044a\u0434", - "pad.toolbar.indent.title": "\u0425\u0430\u0441\u0442", - "pad.toolbar.unindent.title": "\u04d4\u0442\u0442\u04d5\u043c\u04d5\u0445\u0430\u0441\u0442", - "pad.toolbar.undo.title": "\u0420\u0430\u0437\u0434\u04d5\u0445\u044b\u043d (Ctrl-Z)", - "pad.toolbar.redo.title": "\u0420\u0430\u0446\u0430\u0440\u0430\u0437\u044b\u043d (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u0424\u044b\u0441\u0441\u04d5\u0434\u0436\u044b \u043d\u044b\u0441\u04d5\u043d\u0442\u0442\u04d5 \u0430\u0439\u0441\u044b\u043d\u04d5\u043d", - "pad.toolbar.import_export.title": "\u0418\u043c\u043f\u043e\u0440\u0442\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u04d5\u043d\u0434\u04d5\u0440 \u0444\u0430\u0439\u043b\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u0442\u04d5\u0439\/\u0444\u043e\u0440\u043c\u0430\u0442\u0442\u04d5\u043c", - "pad.toolbar.timeslider.title": "\u0420\u04d5\u0441\u0442\u04d5\u0434\u0436\u044b \u0445\u0430\u0445\u0445", - "pad.toolbar.savedRevision.title": "\u04d4\u0432\u04d5\u0440\u0434 \u0444\u04d5\u043b\u0442\u04d5\u0440\u0442\u04d5", - "pad.toolbar.settings.title": "\u0423\u0430\u0433\u04d5\u0432\u04d5\u0440\u0434\u0442\u04d5", - "pad.toolbar.embed.title": "\u0410\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0431\u0430\u0444\u0442\u0430\u0443\u044b\u043d", - "pad.toolbar.showusers.title": "\u0410\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0430\u0440\u0445\u0430\u0439\u0434\u0436\u044b\u0442\u044b \u0440\u0430\u0432\u0434\u0438\u0441\u044b\u043d", - "pad.colorpicker.save": "\u041d\u044b\u0432\u00e6\u0440\u044b\u043d", - "pad.colorpicker.cancel": "\u041d\u044b\u0443\u0443\u0430\u0434\u0437\u044b\u043d", - "pad.loading": "\u00c6\u0432\u0433\u00e6\u0434 \u0446\u00e6\u0443\u044b...", - "pad.passwordRequired": "\u0410\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043c\u04d5 \u0440\u044b\u0432\u043d\u0430\u043b\u044b\u043d\u04d5\u043d \u0434\u04d5 \u0445\u044a\u04d5\u0443\u044b \u043f\u0430\u0440\u043e\u043b\u044c", - "pad.permissionDenied": "\u0414\u04d5\u0443\u04d5\u043d \u043d\u04d5\u0439 \u0431\u0430\u0440 \u0430\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043c\u04d5 \u0440\u044b\u0432\u043d\u0430\u043b\u044b\u043d", - "pad.wrongPassword": "\u0414\u04d5 \u043f\u0430\u0440\u043e\u043b\u044c \u0440\u0430\u0441\u0442 \u043d\u04d5\u0443", - "pad.settings.padSettings": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0443\u0430\u0433\u04d5\u0432\u04d5\u0440\u0434\u0442\u044b\u0442\u04d5", - "pad.settings.myView": "\u041c\u04d5 \u0443\u044b\u043d\u0434", - "pad.settings.stickychat": "\u041d\u044b\u0445\u0430\u0441 \u0430\u043b\u043a\u0443\u044b\u0434\u04d5\u0440 \u04d5\u0432\u0434\u0438\u0441\u044b\u043d", - "pad.settings.colorcheck": "\u0424\u044b\u0441\u0441\u04d5\u0434\u0436\u044b \u0445\u0443\u044b\u0437\u0442\u04d5", - "pad.settings.linenocheck": "\u0420\u04d5\u043d\u0445\u044a\u044b\u0442\u044b \u043d\u043e\u043c\u044b\u0440\u0442\u04d5", - "pad.settings.fontType": "\u0428\u0440\u0438\u0444\u0442\u044b \u0445\u0443\u044b\u0437:", - "pad.settings.fontType.normal": "\u0425\u0443\u044b\u043c\u04d5\u0442\u04d5\u0433", - "pad.settings.fontType.monospaced": "\u04d4\u043c\u0443\u04d5\u0440\u04d5\u0445", - "pad.settings.globalView": "\u0418\u0443\u0443\u044b\u043b\u044b \u0443\u044b\u043d\u0434", - "pad.settings.language": "\u00c6\u0432\u0437\u0430\u0433:", - "pad.importExport.import_export": "\u0418\u043c\u043f\u043e\u0440\u0442\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442", - "pad.importExport.import": "\u0418\u0441\u0442\u044b \u0442\u0435\u043a\u0441\u0442 \u0444\u0430\u0439\u043b \u043a\u04d5\u043d\u04d5 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0431\u0430\u0432\u0433\u04d5\u043d\u044b\u043d", - "pad.importExport.importSuccessful": "\u04d4\u043d\u0442\u044b\u0441\u0442!", - "pad.importExport.export": "\u041d\u044b\u0440\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441\u044d\u043a\u043f\u043e\u0440\u0442 \u043a\u04d5\u043d\u044b\u043d \u043a\u0443\u044b\u0434:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u0425\u0443\u044b\u043c\u00e6\u0442\u00e6\u0433 \u0442\u0435\u043a\u0441\u0442", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u0414\u04d5 \u0431\u043e\u043d \u0443 \u0438\u043c\u043f\u043e\u0440\u0442 \u043a\u04d5\u043d\u044b\u043d \u04d5\u0440\u043c\u04d5\u0441\u0442 \u0445\u0443\u044b\u043c\u04d5\u0442\u04d5\u0433 \u0442\u0435\u043a\u0441\u0442 \u043a\u04d5\u043d\u04d5 html \u0444\u043e\u0440\u043c\u0430\u0442\u04d5\u0439. \u041b\u04d5\u043c\u0431\u044b\u043d\u04d5\u0433 \u0438\u043c\u043f\u043e\u0440\u0442\u044b \u043c\u0438\u043d\u0438\u0443\u0434\u0436\u044b\u0442\u04d5\u043d, \u0434\u04d5 \u0445\u043e\u0440\u0437\u04d5\u0445\u04d5\u0439, \u0441\u04d5\u0432\u04d5\u0440 abiword<\/a>.", - "pad.modals.connected": "\u0418\u0443\u0433\u043e\u043d\u0434.", - "pad.modals.reconnecting": "\u0414\u04d5 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043c\u04d5 \u043d\u043e\u0433\u04d5\u0439 \u0438\u0443\u0433\u043e\u043d\u0434 \u0446\u04d5\u0443\u044b..", - "pad.modals.forcereconnect": "\u0422\u044b\u0445\u0445\u04d5\u0439 \u0431\u0430\u0438\u0443 \u043a\u04d5\u043d\u044b\u043d", - "pad.modals.userdup": "\u041d\u043e\u0433 \u0440\u0443\u0434\u0437\u044b\u043d\u0434\u0436\u044b \u0431\u0430\u043a\u04d5\u043d\u044b\u043d", - "pad.modals.userdup.explanation": "\u0410\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u04d5\u0432\u04d5\u0446\u0446\u04d5\u0433\u04d5\u043d \u0430\u0446\u044b \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u044b \u0438\u0443\u04d5\u0439 \u0444\u044b\u043b\u0434\u04d5\u0440 \u0440\u0443\u0434\u0437\u044b\u043d\u0434\u0436\u044b \u0443 \u0433\u043e\u043c.", - "pad.modals.userdup.advice": "\u041d\u043e\u0433\u04d5\u0439 \u0431\u0430\u0438\u0443 \u0443\u044b\u043d, \u0430\u0446\u044b \u0440\u0443\u0434\u0437\u044b\u043d\u0433\u04d5\u0439 \u0430\u0440\u0445\u0430\u0439\u044b\u043d\u044b \u0431\u04d5\u0441\u0442\u044b.", - "pad.modals.unauth": "\u041d\u04d5 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0433\u043e\u043d\u0434", - "pad.modals.unauth.explanation": "\u0414\u04d5 \u0431\u0430\u0440\u0442\u04d5 \u0444\u04d5\u0438\u0432\u0442\u043e\u0439, \u0446\u0430\u043b\u044b\u043d\u043c\u04d5 \u0434\u044b \u0430\u0446\u044b \u0444\u0430\u0440\u0441 \u043a\u0430\u0441\u0442\u04d5. \u0411\u0430\u0444\u04d5\u043b\u0432\u0430\u0440 \u043d\u043e\u0433\u04d5\u0439 \u0431\u0430\u0438\u0443 \u0443\u044b\u043d.", - "pad.modals.looping": "\u0425\u0438\u0446\u04d5\u043d.", - "pad.modals.looping.explanation": "\u0421\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0439\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u0438\u043c\u04d5 \u0431\u0430\u0438\u0443 \u043a\u04d5\u043d\u044b\u043d\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u04d5.", - "pad.modals.looping.cause": "\u0423\u04d5\u0446\u0446\u04d5\u0433\u04d5\u043d \u0434\u044b \u0431\u0430\u0438\u0443 \u0434\u04d5 \u04d5\u043d\u04d5\u043c\u0431\u04d5\u043b\u0433\u04d5 \u0444\u0430\u0439\u0440\u0432\u043e\u043b \u043a\u04d5\u043d\u04d5 \u043f\u0440\u043e\u043a\u0441\u0438\u0439\u044b \u0443\u044b\u043b\u0442\u044b.", - "pad.modals.initsocketfail": "\u0421\u0435\u0440\u0432\u0435\u0440\u043c\u04d5 \u0431\u0430\u0438\u0443\u0433\u04d5\u043d\u04d5\u043d \u043d\u04d5\u0439.", - "pad.modals.initsocketfail.explanation": "\u041d\u04d5 \u0440\u0430\u0443\u0430\u0434\u0438\u0441 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0439\u044b \u0441\u0435\u0440\u0432\u0435\u0440\u043c\u04d5 \u0431\u0430\u0438\u0443 \u0443\u044b\u043d.", - "pad.modals.initsocketfail.cause": "\u0410\u0439 \u0443\u04d5\u0446\u0446\u04d5\u0433\u04d5\u043d \u0434\u04d5 \u0441\u0433\u0430\u0440\u04d5\u043d \u043a\u04d5\u043d\u04d5 \u0434\u04d5 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u044b \u0442\u044b\u0445\u0445\u04d5\u0439 \u0443.", - "pad.modals.slowcommit": "\u0425\u0438\u0446\u04d5\u043d\u0433\u043e\u043d\u0434.", - "pad.modals.slowcommit.explanation": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u04d5 \u0434\u0437\u0443\u0430\u043f\u043f \u043a\u04d5\u043d\u044b.", - "pad.modals.slowcommit.cause": "\u0410\u0439 \u0433\u04d5\u043d\u04d5\u043d \u0438\u0441 \u0443 \u0445\u044b\u0437\u044b \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u04d5\u0439\u044b \u0442\u044b\u0445\u0445\u04d5\u0439.", - "pad.modals.deleted": "\u0425\u0430\u0444\u0442.", - "pad.modals.deleted.explanation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0445\u0430\u0444\u0442 \u04d5\u0440\u0446\u044b\u0434.", - "pad.modals.disconnected": "\u0414\u044b \u0445\u0438\u0446\u04d5\u043d\u0433\u043e\u043d\u0434 \u04d5\u0440\u0446\u044b\u0434\u0442\u04d5.", - "pad.modals.disconnected.explanation": "\u0421\u0435\u0440\u0432\u0435\u0440\u0438\u043c\u04d5 \u0438\u0443\u0433\u043e\u043d\u0434 \u0444\u0435\u0441\u04d5\u0444\u0442\u0438\u0441", - "pad.modals.disconnected.cause": "\u0421\u0435\u0440\u0432\u0435\u0440\u043c\u04d5 \u0433\u04d5\u043d\u04d5\u043d \u0438\u0441 \u0431\u0430\u0438\u0443\u0433\u04d5\u043d\u04d5\u043d \u043d\u04d5\u0439. \u0414\u04d5 \u0445\u043e\u0440\u0437\u04d5\u0445\u04d5\u0439, \u0444\u0435\u0445\u044a\u0443\u0441\u044b\u043d \u043d\u044b\u043d \u04d5\u0439 \u043a\u04d5\u043d, \u043a\u04d5\u0434 \u0430\u0444\u0442\u04d5 \u0434\u0430\u0440\u0434\u0434\u04d5\u0440 \u043a\u04d5\u043d\u0430.", - "pad.share": "\u0410\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0439\u0443\u0430\u0440\u044b\u043d", - "pad.share.readonly": "\u04d4\u0440\u043c\u04d5\u0441\u0442 \u0444\u04d5\u0440\u0441\u044b\u043d\u04d5\u043d", - "pad.share.link": "\u04d4\u0440\u0432\u0438\u0442\u04d5\u043d", - "pad.share.emebdcode": "URL \u0431\u0430\u0432\u04d5\u0440\u044b\u043d", - "pad.chat": "\u041d\u044b\u0445\u0430\u0441", - "pad.chat.title": "\u041e\u0446\u044b \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u04d5\u043d \u0447\u0430\u0442 \u0431\u0430\u043a\u04d5\u043d.", - "timeslider.pageTitle": "{{appTitle}}-\u044b \u0440\u04d5\u0442\u04d5\u0434\u0436\u044b \u0445\u0430\u0445\u0445", - "timeslider.toolbar.returnbutton": "\u0424\u04d5\u0441\u0442\u04d5\u043c\u04d5, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043c\u04d5", - "timeslider.toolbar.authors": "\u0424\u044b\u0441\u0441\u04d5\u0434\u0436\u044b\u0442\u04d5:", - "timeslider.toolbar.authorsList": "\u0424\u044b\u0441\u0441\u04d5\u0434\u0436\u044b\u0442\u04d5 \u043d\u04d5\u0439", - "timeslider.toolbar.exportlink.title": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442", - "timeslider.exportCurrent": "\u0421\u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u043a\u04d5\u043d\u044b\u043d \u043d\u044b\u0440\u044b \u0444\u04d5\u043b\u0442\u04d5\u0440 \u043a\u0443\u044b\u0434:", - "timeslider.version": "\u0412\u0435\u0440\u0441\u0438 {{version}}", - "timeslider.saved": "\u04d4\u0432\u04d5\u0440\u0434 \u04d5\u0440\u0446\u044b\u0434 {{year}}-\u04d5\u043c \u0430\u0437\u044b, {{day}}-\u04d5\u043c {{month}}-\u044b", - "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u044f\u043d\u0432\u0430\u0440\u044c", - "timeslider.month.february": "\u0444\u0435\u0432\u0440\u0430\u043b\u044c", - "timeslider.month.march": "\u043c\u0430\u0440\u0442\u044a\u0438", - "timeslider.month.april": "\u0430\u043f\u0440\u0435\u043b\u044c", - "timeslider.month.may": "\u043c\u0430\u0439", - "timeslider.month.june": "\u0438\u044e\u043d\u044c", - "timeslider.month.july": "\u0438\u044e\u043b\u044c", - "timeslider.month.august": "\u0430\u0432\u0433\u0443\u0441\u0442", - "timeslider.month.september": "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c", - "timeslider.month.october": "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", - "timeslider.month.november": "\u043d\u043e\u044f\u0431\u0440\u044c", - "timeslider.month.december": "\u0434\u0435\u043a\u0430\u0431\u0440\u044c", - "pad.savedrevs.marked": "\u0410\u0446\u044b \u0444\u04d5\u043b\u0442\u04d5\u0440 \u043d\u044b\u0440 \u043a\u0443\u044b\u0434 \u04d5\u0432\u04d5\u0440\u0434 \u0444\u04d5\u043b\u0442\u04d5\u0440 \u043d\u044b\u0441\u0430\u043d\u0433\u043e\u043d\u0434 \u04d5\u0440\u0446\u044b\u0434", - "pad.userlist.entername": "\u0414\u04d5 \u043d\u043e\u043c \u0431\u0430\u0444\u044b\u0441\u0441", - "pad.userlist.unnamed": "\u04d5\u043d\u04d5\u043d\u043e\u043c", - "pad.userlist.guest": "\u0423\u0430\u0437\u04d5\u0433", - "pad.userlist.deny": "\u041d\u044b\u0443\u0443\u0430\u0434\u0437\u044b\u043d", - "pad.userlist.approve": "\u0421\u0431\u04d5\u043b\u0432\u044b\u0440\u0434 \u043a\u04d5\u043d\u044b\u043d", - "pad.editbar.clearcolors": "\u04d4\u043d\u04d5\u0445\u044a\u04d5\u043d \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u04d5\u0439 \u0445\u044a\u04d5\u0443\u044b \u0430\u0439\u0441\u044b\u043d \u0444\u044b\u0441\u0441\u04d5\u0434\u0436\u044b\u0442\u044b \u043d\u044b\u0441\u04d5\u043d\u0442\u0442\u04d5?", - "pad.impexp.importbutton": "\u0415\u043d\u044b\u0440 \u0441\u0438\u043c\u043f\u043e\u0440\u0442 \u043a\u04d5\u043d\u044b\u043d", - "pad.impexp.importing": "\u0418\u043c\u043f\u043e\u0440\u0442 \u0446\u04d5\u0443\u044b...", - "pad.impexp.confirmimport": "\u0424\u0430\u0439\u043b\u044b \u0438\u043c\u043f\u043e\u0440\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u043d\u044b\u0440\u044b \u0442\u0435\u043a\u0441\u0442 \u0431\u044b\u043d\u0442\u043e\u043d \u0444\u04d5\u0438\u0432\u0434\u0437\u04d5\u043d\u0438\u0441. \u04d4\u0446\u04d5\u0433 \u0434\u04d5 \u0444\u04d5\u043d\u0434\u044b \u0443\u044b\u0439 \u0441\u0430\u0440\u0430\u0437\u044b\u043d?", - "pad.impexp.convertFailed": "\u041c\u0430\u0445\u04d5\u043d \u043d\u04d5 \u0431\u043e\u043d \u043d\u0435 \u0441\u0441\u0438\u0441 \u0430\u0446\u044b \u0444\u0430\u0439\u043b \u0441\u0438\u043c\u043f\u043e\u0440\u0442 \u043a\u04d5\u043d\u044b\u043d. \u0414\u04d5 \u0445\u043e\u0440\u0437\u04d5\u0445\u04d5\u0439, \u0441\u043f\u0430\u0439\u0434\u0430 \u043a\u04d5\u043d \u04d5\u043d\u0434\u04d5\u0440 \u0444\u0430\u0439\u043b\u044b \u0444\u043e\u0440\u043c\u0430\u0442\u04d5\u0439, \u043a\u04d5\u043d\u04d5 \u0441\u043a\u044a\u043e\u043f\u0438 \u043a\u04d5\u043d \u04d5\u043c\u04d5 \u0431\u0430\u0442\u044b\u0441\u0441 \u0442\u0435\u043a\u0441\u0442 \u0434\u04d5\u0445\u04d5\u0434\u04d5\u0433.", - "pad.impexp.uploadFailed": "\u0411\u0430\u0432\u0433\u04d5\u043d\u044b\u043d \u043d\u04d5 \u0440\u0430\u0443\u0430\u0434, \u0434\u04d5 \u0445\u043e\u0440\u0437\u04d5\u0445\u04d5\u0439, \u0444\u04d5\u0441\u0442\u04d5\u0434\u04d5\u0440 \u0431\u0430\u0444\u04d5\u043b\u0432\u0430\u0440", - "pad.impexp.importfailed": "\u0418\u043c\u043f\u043e\u0440\u0442 \u043d\u04d5 \u0440\u0430\u0443\u0430\u0434", - "pad.impexp.copypaste": "\u0414\u04d5 \u0445\u043e\u0440\u0437\u04d5\u0445\u04d5\u0439, \u043a\u044a\u043e\u043f\u0438 \u043a\u04d5\u043d \u04d5\u043c\u04d5 \u04d5\u0432\u04d5\u0440", - "pad.impexp.exportdisabled": "{{type}} \u0444\u043e\u0440\u043c\u0430\u0442\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0445\u0438\u0446\u04d5\u043d \u0443. \u0414\u04d5 \u0445\u043e\u0440\u0437\u04d5\u0445\u04d5\u0439, \u0431\u0430\u0434\u0437\u0443\u0440 \u0434\u04d5 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u043d \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0442\u04d5\u043c \u0444\u044b\u043b\u0434\u04d5\u0440 \u0431\u0430\u0437\u043e\u043d\u044b\u043d\u04d5\u043d." + "@metadata": { + "authors": [ + "Bouron" + ] + }, + "index.newPad": "Ðог", + "index.createOpenPad": "кӕнӕ Ñараз/бакӕн ног документ ахӕм номимӕ:", + "pad.toolbar.bold.title": "Бӕзджын (Ctrl-B)", + "pad.toolbar.italic.title": "Къӕдз (Ctrl-I)", + "pad.toolbar.underline.title": "Бынылхахх (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Хахх", + "pad.toolbar.ol.title": "Ðымад номхыгъд", + "pad.toolbar.ul.title": "Ӕнӕнымад номхыгъд", + "pad.toolbar.indent.title": "ХаÑÑ‚", + "pad.toolbar.unindent.title": "ӔттӕмӕхаÑÑ‚", + "pad.toolbar.undo.title": "Раздӕхын (Ctrl-Z)", + "pad.toolbar.redo.title": "Рацаразын (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "ФыÑÑӕджы ныÑӕнттӕ айÑынӕн", + "pad.toolbar.import_export.title": "Импорт/ÑкÑпорт ӕндӕр файлы форматтӕй/форматтӕм", + "pad.toolbar.timeslider.title": "РӕÑтӕджы хахх", + "pad.toolbar.savedRevision.title": "Фӕлтӕр бавӕрынӕн", + "pad.toolbar.settings.title": "Уагӕвӕрдтӕ", + "pad.toolbar.embed.title": "Ðцы документ бафтау æмæ йæ тыххæй ахъæр кæн", + "pad.toolbar.showusers.title": "Ðцы документы архайджыты равдиÑын", + "pad.colorpicker.save": "Ðывæрын", + "pad.colorpicker.cancel": "Ðыууадзын", + "pad.loading": "Æвгæд цæуы...", + "pad.passwordRequired": "Ðцы документмӕ рывналынӕн дӕ хъӕуы пароль", + "pad.permissionDenied": "Дӕуӕн нӕй бар ацы документмӕ рывналын", + "pad.wrongPassword": "Дӕ пароль раÑÑ‚ нӕу", + "pad.settings.padSettings": "Документы уагӕвӕрдтытӕ", + "pad.settings.myView": "Мӕ уынд", + "pad.settings.stickychat": "ÐÑ‹Ñ…Ð°Ñ Ð°Ð»ÐºÑƒÑ‹Ð´Ó•Ñ€ ӕвдиÑын", + "pad.settings.colorcheck": "ФыÑÑӕджы хуызтӕ", + "pad.settings.linenocheck": "Рӕнхъыты номыртӕ", + "pad.settings.rtlcheck": "ÐœÐ¸Ð´Ð¸Ñ Ñ€Ð°Ñ…Ð¸Ð·Ó•Ð¹ галиумӕ хъӕуы фӕрÑын?", + "pad.settings.fontType": "Шрифты хуыз:", + "pad.settings.fontType.normal": "Хуымӕтӕг", + "pad.settings.fontType.monospaced": "Ӕмуӕрӕх", + "pad.settings.globalView": "Иууылы уынд", + "pad.settings.language": "Æвзаг:", + "pad.importExport.import_export": "Импорт/ÑкÑпорт", + "pad.importExport.import": "ИÑты текÑÑ‚ файл кӕнӕ документ бавгӕнын", + "pad.importExport.importSuccessful": "ӔнтыÑÑ‚!", + "pad.importExport.export": "Ðыры документ ÑÑкпорт кӕнын куыд:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Хуымæтæг текÑÑ‚", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Дӕ бон у импорт кӕнын ӕрмӕÑÑ‚ хуымӕтӕг текÑÑ‚ кӕнӕ html форматӕй. Лӕмбынӕг импорты миниуджытӕн, дӕ хорзӕхӕй, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EÑӕвӕр abiword\u003C/a\u003E.", + "pad.modals.connected": "Иугонд.", + "pad.modals.reconnecting": "Дӕ документмӕ ногӕй иугонд цӕуы..", + "pad.modals.forcereconnect": "Тыххӕй баиу кӕнын", + "pad.modals.userdup": "Ðог рудзынджы бакӕнын", + "pad.modals.userdup.explanation": "Ðцы документ ӕвӕццӕгӕн ацы компьютеры иуӕй фылдӕр рудзынджы у гом.", + "pad.modals.userdup.advice": "Ðогӕй баиу уын, ацы рудзынгӕй архайыны бӕÑты.", + "pad.modals.unauth": "ÐÓ• авторизацигонд", + "pad.modals.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.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": "Ӕвӕрд ӕрцыд {{year}}-ӕм азы, {{day}}-ӕм {{month}}-Ñ‹", + "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.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.uploadFailed": "Бавгӕнын нӕ рауад, дӕ хорзӕхӕй, фӕÑтӕдӕр бафӕлвар", + "pad.impexp.importfailed": "Импорт нӕ рауад", + "pad.impexp.copypaste": "Дӕ хорзӕхӕй, къопи кӕн ӕмӕ ӕвӕр", + "pad.impexp.exportdisabled": "{{type}} форматы ÑкÑпорт хицӕн у. Дӕ хорзӕхӕй, бадзур дӕ ÑиÑтемон админиÑтратортӕм фылдӕр базонынӕн." } \ No newline at end of file diff --git a/src/locales/pa.json b/src/locales/pa.json new file mode 100644 index 000000000..70231805a --- /dev/null +++ b/src/locales/pa.json @@ -0,0 +1,104 @@ +{ + "@metadata": { + "authors": [ + "Aalam" + ] + }, + "index.newPad": "ਨਵਾਂ ਪੈਡ", + "index.createOpenPad": "ਜਾਂ ਨਾਂ ਨਾਲ ਨਵਾਂ ਪੈਡ ਬਣਾਓ/ਖੋਲà©à¨¹à©‹:", + "pad.toolbar.bold.title": "ਗੂੜà©à¨¹à¨¾ (Ctrl-B)", + "pad.toolbar.italic.title": "ਤਿਰਛਾ (Ctrl-I)", + "pad.toolbar.underline.title": "ਹੇਠਾਂ-ਰੇਖਾ (Ctrl-U)", + "pad.toolbar.strikethrough.title": "ਵਿੰਨà©à¨¹à©‹ ਵਿਨੋ", + "pad.toolbar.ol.title": "ਲੜੀਵਾਰ ਲਿਸਟ", + "pad.toolbar.ul.title": "ਬਿਨ-ਲੜੀਬੱਧ ਸੂਚੀ", + "pad.toolbar.indent.title": "ਹਾਸ਼ੀਠਤੋਂ ਦੂਰ", + "pad.toolbar.undo.title": "ਵਾਪਸ (Ctrl-Z)", + "pad.toolbar.redo.title": "ਪਰਤਾਓ (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "ਪਰਮਾਣਕਿਤਾ ਰੰਗ ਸਾਫ਼ ਕਰੋ", + "pad.toolbar.import_export.title": "ਵੱਖ-ਵੱਖ ਫਾਇਲ ਫਾਰਮੈਟ ਤੋਂ/ਵਿੱਚ ਇੰਪੋਰਟ/à¨à¨•ਸਪੋਰਟ ਕਰੋ", + "pad.toolbar.timeslider.title": "ਸਮਾਂ-ਲਕੀਰ", + "pad.toolbar.savedRevision.title": "ਰੀਵਿਜ਼ਨ ਸੰਭਾਲੋ", + "pad.toolbar.settings.title": "ਸੈਟਿੰਗ", + "pad.toolbar.embed.title": "ਇਹ ਪੈਡ ਸਾਂà¨à¨¾ ਤੇ ਇੰਬੈੱਡ ਕਰੋ", + "pad.toolbar.showusers.title": "ਇਹ ਪੈਡ ਉੱਤੇ ਯੂਜ਼ਰ ਵੇਖਾਓ", + "pad.colorpicker.save": "ਸੰਭਾਲੋ", + "pad.colorpicker.cancel": "ਰੱਦ ਕਰੋ", + "pad.loading": "…ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", + "pad.passwordRequired": "ਇਹ ਪੈਡ ਦੀ ਵਰਤੋਂ ਕਰਨ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਪਾਸਵਰਡ ਚਾਹੀਦਾ ਹੈ", + "pad.permissionDenied": "ਇਹ ਪੈਡ ਵਰਤਨ ਲਈ ਤà©à¨¹à¨¾à¨¨à©‚à©° ਅਧਿਕਾਰ ਨਹੀਂ ਹਨ", + "pad.wrongPassword": "ਤà©à¨¹à¨¾à¨¡à¨¾ ਪਾਸਵਰਡ ਗਲਤੀ ਸੀ", + "pad.settings.padSettings": "ਪੈਡ ਸੈਟਿੰਗ", + "pad.settings.myView": "ਮੇਰੀ à¨à¨²à¨•", + "pad.settings.stickychat": "ਹਮੇਸ਼ਾ ਸਕਰੀਨ ਉੱਤੇ ਗੱਲ ਕਰੋ", + "pad.settings.linenocheck": "ਲਾਈਨ ਨੰਬਰ", + "pad.settings.rtlcheck": "ਸਮੱਗਰੀ ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਪੜà©à¨¹à¨¨à©€ ਹੈ?", + "pad.settings.fontType": "ਫੋਂਟ ਕਿਸਮ:", + "pad.settings.fontType.normal": "ਸਧਾਰਨ", + "pad.settings.fontType.monospaced": "ਮੋਨੋਸਪੇਸ", + "pad.settings.globalView": "ਗਲੋਬਲ à¨à¨²à¨•", + "pad.settings.language": "ਭਾਸ਼ਾ:", + "pad.importExport.import_export": "ਇੰਪੋਰਟ/à¨à¨•ਸਪੋਰਟ", + "pad.importExport.import": "ਕੋਈ ਵੀ ਟੈਕਸਟ ਫਾਇਲ ਜਾਂ ਦਸਤਾਵੇਜ਼ ਅੱਪਲੋਡ ਕਰੋ", + "pad.importExport.importSuccessful": "ਸਫ਼ਲ!", + "pad.importExport.export": "ਮੌਜੂਦਾ ਪੈਡ ਨੂੰ à¨à¨•ਸਪੋਰਟ ਕਰੋ:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "ਸਧਾਰਨ ਟੈਕਸਟ", + "pad.importExport.exportword": "ਮਾਈਕਰੋਸਾਫਟ ਵਰਡ", + "pad.importExport.exportpdf": "ਪੀਡੀà¨à¨«", + "pad.importExport.exportopen": "ODF (ਓਪਨ ਡੌਕੂਮੈਂਟ ਫਾਰਮੈਟ)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "ਕà©à¨¨à©ˆà¨•ਟ ਹੈ।", + "pad.modals.reconnecting": "..ਤà©à¨¹à¨¾à¨¡à©‡ ਪੈਡ ਨਾਲ ਮà©à©œ-ਕà©à¨¨à©ˆà¨•ਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", + "pad.modals.forcereconnect": "ਧੱਕੇ ਨਾਲ ਮà©à©œ-ਕà©à¨¨à©ˆà¨•ਟ ਕਰੋ", + "pad.modals.userdup": "ਹੋਰ ਵਿੰਡੋ ਵਿੱਚ ਖà©à©±à¨²à©à¨¹à¨¿à¨† ਹੈ", + "pad.modals.unauth": "ਪਰਮਾਣਿਤ ਨਹੀਂ ਹੈ", + "pad.modals.initsocketfail": "ਸਰਵਰ ਪਹà©à©°à¨š ਵਿੱਚ ਨਹੀਂ ਹੈ।", + "pad.modals.slowcommit.explanation": "ਸਰਵਰ ਜਵਾਬ ਨਹੀਂ ਦੇ ਰਿਹਾ ਹੈ।", + "pad.modals.slowcommit.cause": "ਇਹ ਨੈੱਟਵਰਕ ਕà©à¨¨à©ˆà¨•ਸ਼ਨ ਨਾਲ ਸਮੱਸਿਆ ਕਰਕੇ ਹੋ ਸਕਦਾ ਹੈ।", + "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": "ਇੰਬੈੱਡ 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.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.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": "ਅੱਪਲੋਡ ਲਈ ਫੇਲà©à¨¹ ਹੈ, ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।", + "pad.impexp.importfailed": "ਇੰਪੋਰਟ ਫੇਲà©à¨¹ ਹੈ", + "pad.impexp.copypaste": "ਕਾਪੀ ਕਰੋ ਚੇਪੋ ਜੀ" +} \ No newline at end of file diff --git a/src/locales/pl.json b/src/locales/pl.json index 3481cafc5..4f4d7a92a 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -1,120 +1,125 @@ { - "@metadata": { - "authors": { - "0": "Rezonansowy", - "2": "WTM", - "3": "Woytecr" - } - }, - "index.newPad": "Nowy Dokument", - "index.createOpenPad": "lub stw\u00f3rz\/otw\u00f3rz dokument o nazwie:", - "pad.toolbar.bold.title": "Pogrubienie (Ctrl-B)", - "pad.toolbar.italic.title": "Kursywa (Ctrl-I)", - "pad.toolbar.underline.title": "Podkre\u015blenie (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Przekre\u015blenie", - "pad.toolbar.ol.title": "Lista uporz\u0105dkowana", - "pad.toolbar.ul.title": "Lista nieuporz\u0105dkowana", - "pad.toolbar.indent.title": "Wci\u0119cie", - "pad.toolbar.unindent.title": "Zmniejsz wci\u0119cie", - "pad.toolbar.undo.title": "Cofnij (Ctrl-Z)", - "pad.toolbar.redo.title": "Pon\u00f3w (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Usu\u0144 kolory autor\u00f3w", - "pad.toolbar.import_export.title": "Import\/eksport z\/do r\u00f3\u017cnych format\u00f3w plik\u00f3w", - "pad.toolbar.timeslider.title": "O\u015b czasu", - "pad.toolbar.savedRevision.title": "Zapisane wersje", - "pad.toolbar.settings.title": "Ustawienia", - "pad.toolbar.embed.title": "Umie\u015b\u0107 ten Notatnik", - "pad.toolbar.showusers.title": "Poka\u017c u\u017cytkownik\u00f3w", - "pad.colorpicker.save": "Zapisz", - "pad.colorpicker.cancel": "Anuluj", - "pad.loading": "\u0141adowanie...", - "pad.passwordRequired": "Musisz poda\u0107 has\u0142o aby uzyska\u0107 dost\u0119p do tego dokumentu", - "pad.permissionDenied": "Nie masz uprawnie\u0144 dost\u0119pu do tego dokumentu", - "pad.wrongPassword": "Nieprawid\u0142owe has\u0142o", - "pad.settings.padSettings": "Ustawienia dokumentu", - "pad.settings.myView": "M\u00f3j widok", - "pad.settings.stickychat": "Czat zawsze na ekranie", - "pad.settings.colorcheck": "Kolory autorstwa", - "pad.settings.linenocheck": "Numery linii", - "pad.settings.fontType": "Rodzaj czcionki:", - "pad.settings.fontType.normal": "Normalna", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Widok og\u00f3lny", - "pad.settings.language": "J\u0119zyk:", - "pad.importExport.import_export": "Import\/eksport", - "pad.importExport.import": "Prze\u015blij dowolny plik tekstowy lub dokument", - "pad.importExport.importSuccessful": "Sukces!", - "pad.importExport.export": "Eksportuj bie\u017c\u0105cy dokument jako:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Zwyk\u0142y tekst", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Mo\u017cesz importowa\u0107 pliki tylko w formacie zwyk\u0142ego tekstu lub html. Aby umo\u017cliwi\u0107 bardziej zaawansowane funkcje importu, zainstaluj abiword<\/a>.", - "pad.modals.connected": "Po\u0142\u0105czony.", - "pad.modals.reconnecting": "Ponowne \u0142\u0105czenie z dokumentem...", - "pad.modals.forcereconnect": "Wymu\u015b ponowne po\u0142\u0105czenie", - "pad.modals.userdup": "Otwarty w innym oknie", - "pad.modals.userdup.explanation": "Ten dokument prawdopodobnie zosta\u0142 otwarty w wi\u0119cej ni\u017c jednym oknie przegl\u0105darki.", - "pad.modals.userdup.advice": "Po\u0142\u0105cz ponownie przy u\u017cyciu tego okna.", - "pad.modals.unauth": "Brak autoryzacji", - "pad.modals.unauth.explanation": "Twoje uprawnienia uleg\u0142y zmianie podczas przegl\u0105dania tej strony. Spr\u00f3buj ponownie si\u0119 po\u0142\u0105czy\u0107.", - "pad.modals.looping": "Roz\u0142\u0105czony.", - "pad.modals.looping.explanation": "Wyst\u0105pi\u0142y problemy z komunikacj\u0105 z serwerem synchronizacji.", - "pad.modals.looping.cause": "By\u0107 mo\u017ce jeste\u015b po\u0142\u0105czony przez niezgodn\u0105 zapor\u0119 lub serwer proxy.", - "pad.modals.initsocketfail": "Serwer jest nieosi\u0105galny.", - "pad.modals.initsocketfail.explanation": "Nie uda\u0142o si\u0119 po\u0142\u0105czy\u0107 z serwerem synchronizacji.", - "pad.modals.initsocketfail.cause": "Przyczyn\u0105 s\u0105 prawdopodobnie problemy z przegl\u0105darka lub po\u0142\u0105czeniem z internetem.", - "pad.modals.slowcommit": "Roz\u0142\u0105czony.", - "pad.modals.slowcommit.explanation": "Serwer nie odpowiada.", - "pad.modals.slowcommit.cause": "Mo\u017ce by\u0107 to spowodowane problemami z Twoim po\u0142\u0105czeniem z sieci\u0105.", - "pad.modals.deleted": "Usuni\u0119to.", - "pad.modals.deleted.explanation": "Ten dokument zosta\u0142 usuni\u0119ty.", - "pad.modals.disconnected": "Zosta\u0142e\u015b roz\u0142\u0105czony.", - "pad.modals.disconnected.explanation": "Utracono po\u0142\u0105czenie z serwerem", - "pad.modals.disconnected.cause": "Serwer mo\u017ce by\u0107 niedost\u0119pny. Poinformuj nas je\u017celi problem b\u0119dzie si\u0119 powtarza\u0142.", - "pad.share": "Udost\u0119pnij ten dokument", - "pad.share.readonly": "Tylko do odczytu", - "pad.share.link": "Link", - "pad.share.emebdcode": "Kod do umieszczenia", - "pad.chat": "Czat", - "pad.chat.title": "Otw\u00f3rz czat dla tego dokumentu.", - "pad.chat.loadmessages": "Za\u0142aduj wi\u0119cej wiadomo\u015bci", - "timeslider.pageTitle": "O\u015b czasu {{appTitle}}", - "timeslider.toolbar.returnbutton": "Powr\u00f3\u0107 do dokumentu", - "timeslider.toolbar.authors": "Autorzy:", - "timeslider.toolbar.authorsList": "Brak autor\u00f3w", - "timeslider.toolbar.exportlink.title": "Eksportuj", - "timeslider.exportCurrent": "Eksportuj bie\u017c\u0105c\u0105 wersj\u0119 jako:", - "timeslider.version": "Wersja {{version}}", - "timeslider.saved": "Zapisano {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Stycze\u0144", - "timeslider.month.february": "Luty", - "timeslider.month.march": "Marzec", - "timeslider.month.april": "Kwiecie\u0144", - "timeslider.month.may": "Maj", - "timeslider.month.june": "Czerwiec", - "timeslider.month.july": "Lipiec", - "timeslider.month.august": "Sierpie\u0144", - "timeslider.month.september": "Wrzesie\u0144", - "timeslider.month.october": "Pa\u017adziernik", - "timeslider.month.november": "Listopad", - "timeslider.month.december": "Grudzie\u0144", - "pad.savedrevs.marked": "Ta wersja zosta\u0142a w\u0142a\u015bnie oznaczona jako zapisana.", - "pad.userlist.entername": "Wprowad\u017a swoj\u0105 nazw\u0119", - "pad.userlist.unnamed": "bez nazwy", - "pad.userlist.guest": "Go\u015b\u0107", - "pad.userlist.deny": "Zabro\u0144", - "pad.userlist.approve": "Akceptuj", - "pad.editbar.clearcolors": "Wyczy\u015bci\u0107 kolory autorstwa w ca\u0142ym dokumencie?", - "pad.impexp.importbutton": "Importuj teraz", - "pad.impexp.importing": "Importowanie...", - "pad.impexp.confirmimport": "Importowanie pliku spowoduje zast\u0105pienie bie\u017c\u0105cego tekstu. Czy na pewno chcesz kontynuowa\u0107?", - "pad.impexp.convertFailed": "Nie byli\u015bmy w stanie zaimportowa\u0107 tego pliku. Prosz\u0119 u\u017cy\u0107 innego formatu dokumentu lub skopiowa\u0107 i wklei\u0107 r\u0119cznie", - "pad.impexp.uploadFailed": "Przesy\u0142anie nie powiod\u0142o si\u0119, prosz\u0119 spr\u00f3bowa\u0107 jeszcze raz", - "pad.impexp.importfailed": "Importowanie nie powiod\u0142o si\u0119", - "pad.impexp.copypaste": "Prosz\u0119 skopiowa\u0107 i wklei\u0107", - "pad.impexp.exportdisabled": "Eksport do formatu {{type}} jest wy\u0142\u0105czony. Prosz\u0119 skontaktowa\u0107 si\u0119 z administratorem aby uzyska\u0107 wi\u0119cej szczeg\u00f3\u0142\u00f3w." + "@metadata": { + "authors": { + "0": "Rezonansowy", + "2": "Ty221", + "3": "WTM", + "4": "Woytecr" + } + }, + "index.newPad": "Nowy dokument", + "index.createOpenPad": "lub stwórz/otwórz dokument o nazwie:", + "pad.toolbar.bold.title": "Pogrubienie (Ctrl-B)", + "pad.toolbar.italic.title": "Kursywa (Ctrl-I)", + "pad.toolbar.underline.title": "PodkreÅ›lenie (Ctrl-U)", + "pad.toolbar.strikethrough.title": "PrzekreÅ›lenie", + "pad.toolbar.ol.title": "Lista uporzÄ…dkowana", + "pad.toolbar.ul.title": "Lista nieuporzÄ…dkowana", + "pad.toolbar.indent.title": "WciÄ™cie", + "pad.toolbar.unindent.title": "Zmniejsz wciÄ™cie", + "pad.toolbar.undo.title": "Cofnij (Ctrl-Z)", + "pad.toolbar.redo.title": "Ponów (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "UsuÅ„ kolory autorów", + "pad.toolbar.import_export.title": "Import/eksport z/do różnych formatów plików", + "pad.toolbar.timeslider.title": "OÅ› czasu", + "pad.toolbar.savedRevision.title": "Zapisz wersjÄ™", + "pad.toolbar.settings.title": "Ustawienia", + "pad.toolbar.embed.title": "Podziel siÄ™ i osadź ten dokument", + "pad.toolbar.showusers.title": "Pokaż użytkowników", + "pad.colorpicker.save": "Zapisz", + "pad.colorpicker.cancel": "Anuluj", + "pad.loading": "Åadowanie...", + "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", + "pad.settings.padSettings": "Ustawienia dokumentu", + "pad.settings.myView": "Mój widok", + "pad.settings.stickychat": "Czat zawsze na ekranie", + "pad.settings.colorcheck": "Kolory autorstwa", + "pad.settings.linenocheck": "Numery linii", + "pad.settings.rtlcheck": "Czytasz treść od prawej do lewej?", + "pad.settings.fontType": "Rodzaj czcionki:", + "pad.settings.fontType.normal": "Normalna", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Widok ogólny", + "pad.settings.language": "JÄ™zyk:", + "pad.importExport.import_export": "Import/eksport", + "pad.importExport.import": "PrzeÅ›lij dowolny plik tekstowy lub dokument", + "pad.importExport.importSuccessful": "Sukces!", + "pad.importExport.export": "Eksportuj bieżący dokument jako:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "ZwykÅ‚y tekst", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Możesz importować pliki tylko w formacie zwykÅ‚ego tekstu lub html. Aby umożliwić bardziej zaawansowane funkcje importu, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Ezainstaluj abiword\u003C/a\u003E.", + "pad.modals.connected": "Połączony.", + "pad.modals.reconnecting": "Ponowne łączenie z dokumentem...", + "pad.modals.forcereconnect": "WymuÅ› ponowne połączenie", + "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.", + "pad.modals.unauth": "Brak autoryzacji", + "pad.modals.unauth.explanation": "Twoje uprawnienia ulegÅ‚y zmianie podczas przeglÄ…dania tej strony. Spróbuj ponownie siÄ™ połączyć.", + "pad.modals.looping.explanation": "WystÄ…piÅ‚y problemy z komunikacjÄ… z serwerem synchronizacji.", + "pad.modals.looping.cause": "Być może jesteÅ› połączony przez niezgodnÄ… zaporÄ™ lub serwer proxy.", + "pad.modals.initsocketfail": "Serwer jest nieosiÄ…galny.", + "pad.modals.initsocketfail.explanation": "Nie udaÅ‚o siÄ™ połączyć z serwerem synchronizacji.", + "pad.modals.initsocketfail.cause": "PrzyczynÄ… sÄ… prawdopodobnie problemy z przeglÄ…darka lub połączeniem z internetem.", + "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.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.", + "pad.modals.deleted.explanation": "Ten dokument zostaÅ‚ usuniÄ™ty.", + "pad.modals.disconnected": "ZostaÅ‚eÅ› rozłączony.", + "pad.modals.disconnected.explanation": "Utracono połączenie z serwerem", + "pad.modals.disconnected.cause": "Serwer może być niedostÄ™pny. Poinformuj administratora serwisu jeżeli problem bÄ™dzie siÄ™ powtarzaÅ‚.", + "pad.share": "UdostÄ™pnij ten dokument", + "pad.share.readonly": "Tylko do odczytu", + "pad.share.link": "Link", + "pad.share.emebdcode": "URL do umieszczenia", + "pad.chat": "Czat", + "pad.chat.title": "Otwórz czat dla tego dokumentu.", + "pad.chat.loadmessages": "ZaÅ‚aduj wiÄ™cej wiadomoÅ›ci", + "timeslider.pageTitle": "OÅ› czasu {{appTitle}}", + "timeslider.toolbar.returnbutton": "Powróć do dokumentu", + "timeslider.toolbar.authors": "Autorzy:", + "timeslider.toolbar.authorsList": "Brak autorów", + "timeslider.toolbar.exportlink.title": "Eksportuj", + "timeslider.exportCurrent": "Eksportuj bieżącÄ… wersjÄ™ jako:", + "timeslider.version": "Wersja {{version}}", + "timeslider.saved": "Zapisano {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{year}}-{{month}}-{{day}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "StyczeÅ„", + "timeslider.month.february": "Luty", + "timeslider.month.march": "Marzec", + "timeslider.month.april": "KwiecieÅ„", + "timeslider.month.may": "Maj", + "timeslider.month.june": "Czerwiec", + "timeslider.month.july": "Lipiec", + "timeslider.month.august": "SierpieÅ„", + "timeslider.month.september": "WrzesieÅ„", + "timeslider.month.october": "Październik", + "timeslider.month.november": "Listopad", + "timeslider.month.december": "GrudzieÅ„", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: autor, other: autorów ]} bez nazw", + "pad.savedrevs.marked": "Ta wersja zostaÅ‚a wÅ‚aÅ›nie oznaczona jako zapisana.", + "pad.userlist.entername": "Wprowadź swojÄ… nazwÄ™", + "pad.userlist.unnamed": "bez nazwy", + "pad.userlist.guest": "Gość", + "pad.userlist.deny": "ZabroÅ„", + "pad.userlist.approve": "Akceptuj", + "pad.editbar.clearcolors": "WyczyÅ›cić kolory autorstwa w caÅ‚ym dokumencie?", + "pad.impexp.importbutton": "Importuj teraz", + "pad.impexp.importing": "Importowanie...", + "pad.impexp.confirmimport": "Importowanie pliku spowoduje zastÄ…pienie bieżącego tekstu. Czy na pewno chcesz kontynuować?", + "pad.impexp.convertFailed": "Nie byliÅ›my w stanie zaimportować tego pliku. ProszÄ™ użyć innego formatu dokumentu lub skopiować i wkleić rÄ™cznie", + "pad.impexp.uploadFailed": "PrzesyÅ‚anie nie powiodÅ‚o siÄ™, proszÄ™ spróbować jeszcze raz", + "pad.impexp.importfailed": "Importowanie nie powiodÅ‚o siÄ™", + "pad.impexp.copypaste": "ProszÄ™ skopiować i wkleić", + "pad.impexp.exportdisabled": "Eksport do formatu {{type}} jest wyłączony. ProszÄ™ skontaktować siÄ™ z administratorem aby uzyskać wiÄ™cej szczegółów." } \ No newline at end of file diff --git a/src/locales/ps.json b/src/locales/ps.json index b992a56ad..ac3b145be 100644 --- a/src/locales/ps.json +++ b/src/locales/ps.json @@ -1,53 +1,70 @@ { - "@metadata": { - "authors": [ - "Ahmed-Najib-Biabani-Ibrahimkhel" - ] - }, - "pad.toolbar.bold.title": "\u0632\u063a\u0631\u062f (Ctrl-B)", - "pad.toolbar.italic.title": "\u0631\u06d0\u0648\u0646\u062f (Ctrl-I)", - "pad.toolbar.undo.title": "\u0646\u0627\u06a9\u0693\u0644 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u0628\u064a\u0627\u06a9\u0693\u0644 (Ctrl-Y)", - "pad.toolbar.settings.title": "\u0627\u0645\u0633\u062a\u0646\u06d0", - "pad.colorpicker.save": "\u062e\u0648\u0646\u062f\u064a \u06a9\u0648\u0644", - "pad.colorpicker.cancel": "\u0646\u0627\u06ab\u0627\u0631\u0644", - "pad.loading": "\u0628\u0631\u0633\u06d0\u0631\u06d0\u062f\u0646\u06d0 \u06a9\u06d0 \u062f\u06cc...", - "pad.wrongPassword": "\u067e\u067c\u0646\u0648\u0645 \u0645\u0648 \u0633\u0645 \u0646\u0647 \u0648", - "pad.settings.myView": "\u0632\u0645\u0627 \u06a9\u062a\u0646\u0647", - "pad.settings.fontType": "\u0644\u064a\u06a9\u0628\u06bc\u06d0 \u0689\u0648\u0644:", - "pad.settings.fontType.normal": "\u0646\u0648\u0631\u0645\u0627\u0644", - "pad.settings.fontType.monospaced": "\u0645\u0648\u0646\u0648\u0633\u067e\u06d0\u0633", - "pad.settings.globalView": "\u0646\u0693\u06d0\u0648\u0627\u0644\u0647 \u069a\u06a9\u0627\u0631\u06d0\u062f\u0646\u0647", - "pad.settings.language": "\u0698\u0628\u0647:", - "pad.importExport.importSuccessful": "\u0628\u0631\u064a\u0627\u0644\u06cc \u0634\u0648!", - "pad.importExport.exporthtml": "\u0627\u0686 \u067c\u064a \u0627\u0645 \u0627\u06d0\u0644", - "pad.importExport.exportplain": "\u0633\u0627\u062f\u0647 \u0645\u062a\u0646", - "pad.importExport.exportword": "\u0645\u0627\u064a\u06a9\u0631\u0648\u0633\u0627\u0641\u067c \u0648\u0631\u0689", - "pad.importExport.exportpdf": "\u067e\u064a \u0689\u064a \u0627\u06d0\u0641", - "pad.importExport.exportopen": "ODF (\u0627\u0648\u067e\u0646 \u0689\u0627\u06a9\u0648\u0645\u0646\u067c \u0641\u0627\u0631\u0645\u067c)", - "pad.modals.deleted": "\u0693\u0646\u06ab \u0634\u0648.", - "pad.share.readonly": "\u064a\u0648\u0627\u0632\u06d0 \u0644\u0648\u0633\u062a\u0646\u0647", - "pad.share.link": "\u062a\u0693\u0646\u0647", - "pad.share.emebdcode": "\u064a\u0648 \u0622\u0631 \u0627\u06d0\u0644 \u067c\u0648\u0645\u0628\u0644", - "pad.chat": "\u0628\u0627\u0646\u0689\u0627\u0631", - "pad.chat.loadmessages": "\u0646\u0648\u0631 \u067e\u064a\u063a\u0627\u0645\u0648\u0646\u0647 \u0628\u0631\u0633\u06d0\u0631\u0648\u0644", - "timeslider.toolbar.authors": "\u0644\u064a\u06a9\u0648\u0627\u0644:", - "timeslider.toolbar.authorsList": "\u0628\u06d0 \u0644\u064a\u06a9\u0648\u0627\u0644\u0647", - "timeslider.month.january": "\u062c\u0646\u0648\u0631\u064a", - "timeslider.month.february": "\u0641\u0628\u0631\u0648\u0631\u064a", - "timeslider.month.march": "\u0645\u0627\u0631\u0686", - "timeslider.month.april": "\u0627\u067e\u0631\u06d0\u0644", - "timeslider.month.may": "\u0645\u06cd", - "timeslider.month.june": "\u062c\u0648\u0646", - "timeslider.month.july": "\u062c\u0648\u0644\u0627\u06cc", - "timeslider.month.august": "\u0627\u06ab\u0633\u067c", - "timeslider.month.september": "\u0633\u06d0\u067e\u062a\u0645\u0628\u0631", - "timeslider.month.october": "\u0627\u06a9\u062a\u0648\u0628\u0631", - "timeslider.month.november": "\u0646\u0648\u0645\u0628\u0631", - "timeslider.month.december": "\u0689\u064a\u0633\u0645\u0628\u0631", - "pad.userlist.entername": "\u0646\u0648\u0645 \u0645\u0648 \u0648\u0631\u06a9\u0693\u06cd", - "pad.userlist.unnamed": "\u0628\u06d0 \u0646\u0648\u0645\u0647", - "pad.userlist.guest": "\u0645\u06d0\u0644\u0645\u0647", - "pad.userlist.deny": "\u0631\u062f\u0648\u0644", - "pad.userlist.approve": "\u0645\u0646\u0644" + "@metadata": { + "authors": [ + "Ahmed-Najib-Biabani-Ibrahimkhel" + ] + }, + "index.newPad": "Ù†ÙˆÛ Ù„ÙŠÚ©Ú†Ù‡", + "index.createOpenPad": "يا په Ù‡Ù…Ø¯Û Ù†ÙˆÙ… يوه Ù†ÙˆÛ Ù„ÙŠÚ©Ú†Ù‡ جوړول/پرانيستل:", + "pad.toolbar.bold.title": "زغرد (Ctrl-B)", + "pad.toolbar.italic.title": "رÛوند (Ctrl-I)", + "pad.toolbar.undo.title": "ناکړل (Ctrl-Z)", + "pad.toolbar.redo.title": "بياکړل (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "د Ù„ÙŠÚ©ÙˆØ§Ù„Û Ø±Ù†Ú«ÙˆÙ†Ù‡ سپينول", + "pad.toolbar.savedRevision.title": "مخکتنه خوندي کول", + "pad.toolbar.settings.title": "امستنÛ", + "pad.colorpicker.save": "خوندي کول", + "pad.colorpicker.cancel": "ناگارل", + "pad.loading": "Ø¨Ø±Ø³ÛØ±ÛØ¯Ù†Û Ú©Û Ø¯ÛŒ...", + "pad.passwordRequired": "Ø¯Û Ù„ÙŠÚ©Ú†Û ØªÙ‡ د لاسرسي لپاره ØªØ§Ø³Û ÙŠÙˆ پټنوم ته اړتيا لرÛ", + "pad.wrongPassword": "پټنوم مو سم نه Ùˆ", + "pad.settings.padSettings": "د Ù„ÙŠÚ©Ú†Û Ø§Ù…Ø³ØªÙ†Û", + "pad.settings.myView": "زما کتنه", + "pad.settings.colorcheck": "د Ù„ÙŠÚ©ÙˆØ§Ù„Û Ø±Ù†Ú«ÙˆÙ†Ù‡", + "pad.settings.fontType": "Ù„ÙŠÚ©Ø¨Ú¼Û Ú‰ÙˆÙ„:", + "pad.settings.fontType.normal": "نورمال", + "pad.settings.fontType.monospaced": "Ù…ÙˆÙ†ÙˆØ³Ù¾ÛØ³", + "pad.settings.globalView": "Ù†Ú“Ûواله ÚšÚ©Ø§Ø±ÛØ¯Ù†Ù‡", + "pad.settings.language": "ژبه:", + "pad.importExport.importSuccessful": "بريالی شو!", + "pad.importExport.exporthtml": "اچ ټي ام اÛÙ„", + "pad.importExport.exportplain": "ساده متن", + "pad.importExport.exportword": "مايکروساÙÙ¼ ورډ", + "pad.importExport.exportpdf": "پي Ú‰ÙŠ اÛÙ", + "pad.importExport.exportopen": "ODF (اوپن ډاکومنټ ÙØ§Ø±Ù…Ù¼)", + "pad.importExport.exportdokuwiki": "ډوکوويکي", + "pad.modals.connected": "اړيکمن شو.", + "pad.modals.slowcommit.explanation": "پالنگر Úواب نه وايي.", + "pad.modals.slowcommit.cause": "دا Ú©ÛØ¯Ø§ÛŒ شي د جال د اړيکتيايي ستونزو په سبب وي.", + "pad.modals.deleted": "Ú“Ù†Ú¯ شو.", + "pad.share.readonly": "ÙŠÙˆØ§Ø²Û Ù„ÙˆØ³ØªÙ†Ù‡", + "pad.share.link": "تړنه", + "pad.share.emebdcode": "يو آر اÛÙ„ ټومبل", + "pad.chat": "بانډار", + "pad.chat.loadmessages": "نور پيغامونه Ø¨Ø±Ø³ÛØ±ÙˆÙ„", + "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": "ډيسمبر", + "timeslider.unnamedauthors": "{{num}} بÛنومه ليکوالان", + "pad.savedrevs.marked": "اوس دا مخکتنه د ÙŠÙˆÛ Ø®ÙˆÙ†Ø¯ÙŠ Ø´ÙˆÛ Ù…Ø®Ú©ØªÙ†Û Ù¾Ù‡ توگه په Ù†ÚšÙ‡ شوه", + "pad.userlist.entername": "نوم مو ورکړÛ", + "pad.userlist.unnamed": "Ø¨Û Ù†ÙˆÙ…Ù‡", + "pad.userlist.guest": "Ù…Ûلمه", + "pad.userlist.deny": "ردول", + "pad.userlist.approve": "منل" } \ No newline at end of file diff --git a/src/locales/pt-br.json b/src/locales/pt-br.json index 6562681a6..31debf4dc 100644 --- a/src/locales/pt-br.json +++ b/src/locales/pt-br.json @@ -1,118 +1,127 @@ { - "@metadata": { - "authors": [ - "Tuliouel" - ] - }, - "index.newPad": "Nova Nota", - "index.createOpenPad": "ou criar-abrir uma Nota com o nome:", - "pad.toolbar.bold.title": "Negrito (Ctrl-B)", - "pad.toolbar.italic.title": "It\u00e1lico (Ctrl-I)", - "pad.toolbar.underline.title": "Sublinhar (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Tachado", - "pad.toolbar.ol.title": "Lista ordenada", - "pad.toolbar.ul.title": "Lista n\u00e3o ordenada", - "pad.toolbar.indent.title": "Aumentar Recuo", - "pad.toolbar.unindent.title": "Diminuir Recuo", - "pad.toolbar.undo.title": "Desfazer (Ctrl-Z)", - "pad.toolbar.redo.title": "Refazer (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Limpar as cores de identifica\u00e7\u00e3o de autoria", - "pad.toolbar.import_export.title": "Importar\/Exportar de\/para diferentes formatos de arquivo", - "pad.toolbar.timeslider.title": "Linha do tempo", - "pad.toolbar.savedRevision.title": "Revis\u00f5es Salvas", - "pad.toolbar.settings.title": "Configura\u00e7\u00f5es", - "pad.toolbar.embed.title": "Incorporar esta Nota", - "pad.toolbar.showusers.title": "Mostrar os usuarios nesta Nota", - "pad.colorpicker.save": "Salvar", - "pad.colorpicker.cancel": "Cancelar", - "pad.loading": "Carregando...", - "pad.passwordRequired": "Voc\u00ea precisa de uma senha para acessar esta Nota", - "pad.permissionDenied": "Voc\u00ea n\u00e3o tem permiss\u00e3o para acessar esta nota", - "pad.wrongPassword": "Senha incorreta", - "pad.settings.padSettings": "Configura\u00e7\u00f5es da Nota", - "pad.settings.myView": "Minha Vis\u00e3o", - "pad.settings.stickychat": "Conversa sempre vis\u00edvel", - "pad.settings.colorcheck": "Cores de autoria", - "pad.settings.linenocheck": "N\u00fameros de linha", - "pad.settings.fontType": "Tipo de fonte:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monoespa\u00e7ada", - "pad.settings.globalView": "Vis\u00e3o global", - "pad.settings.language": "Idioma:", - "pad.importExport.import_export": "Importar\/Exportar", - "pad.importExport.import": "Enviar um arquivo texto ou documento", - "pad.importExport.importSuccessful": "Completo!", - "pad.importExport.export": "Exportar a presente nota como:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Texto puro", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Voc\u00ea s\u00f3 pode importar de formatos de texto puro ou html. Para recursos de importa\u00e7\u00e3o mais avan\u00e7ados instale o abiword<\/a>.", - "pad.modals.connected": "Conectado.", - "pad.modals.reconnecting": "Reconectando \u00e0 sua nota...", - "pad.modals.forcereconnect": "For\u00e7ar reconex\u00e3o", - "pad.modals.userdup": "Aberto noutra 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.", - "pad.modals.unauth": "N\u00e3o autorizado", - "pad.modals.unauth.explanation": "Suas permiss\u00f5es foram mudadas enquanto visualizava esta p\u00e1gina. Tente reconectar.", - "pad.modals.looping": "Reconectado.", - "pad.modals.looping.explanation": "H\u00e1 problemas de comunica\u00e7\u00e3o com o servidor de sincroniza\u00e7\u00e3o.", - "pad.modals.looping.cause": "Talvez voc\u00ea tenha conectado por um firewall ou proxy incompat\u00edvel.", - "pad.modals.initsocketfail": "Servidor \u00e9 inalcan\u00e7\u00e1vel.", - "pad.modals.initsocketfail.explanation": "N\u00e3o foi poss\u00edvel conectar com o servidor de sincroniza\u00e7\u00e3o.", - "pad.modals.initsocketfail.cause": "Isto provavelmente ocorreu por um problema em seu navegador ou conex\u00e3o.", - "pad.modals.slowcommit": "Desconectado.", - "pad.modals.slowcommit.explanation": "O servidor n\u00e3o responde.", - "pad.modals.slowcommit.cause": "Isto pode ser por problemas com a conex\u00e3o de rede.", - "pad.modals.deleted": "Exclu\u00eddo", - "pad.modals.deleted.explanation": "Esta nota foi removida.", - "pad.modals.disconnected": "Voc\u00ea foi desconectado.", - "pad.modals.disconnected.explanation": "A conex\u00e3o com o servidor foi perdida", - "pad.modals.disconnected.cause": "O servidor pode estar indispon\u00edvel. Comunique-nos caso isso continue.", - "pad.share": "Compartilhar esta nota", - "pad.share.readonly": "Somente leitura", - "pad.share.link": "Liga\u00e7\u00e3o", - "pad.share.emebdcode": "Incorporar o URL", - "pad.chat": "Bate-papo", - "pad.chat.title": "Abrir o bate-papo desta nota.", - "pad.chat.loadmessages": "Carregar mais mensagens", - "timeslider.pageTitle": "Linha do tempo de {{appTitle}}", - "timeslider.toolbar.returnbutton": "Retornar para a nota", - "timeslider.toolbar.authors": "Autores:", - "timeslider.toolbar.authorsList": "Sem autores", - "timeslider.toolbar.exportlink.title": "Exportar", - "timeslider.exportCurrent": "Exportar a vers\u00e3o atual em formato:", - "timeslider.version": "Vers\u00e3o {{version}}", - "timeslider.saved": "Salvo em {{day}} de {{month}} de {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Janeiro", - "timeslider.month.february": "Fevereiro", - "timeslider.month.march": "Mar\u00e7o", - "timeslider.month.april": "Abril", - "timeslider.month.may": "Maio", - "timeslider.month.june": "Junho", - "timeslider.month.july": "Julho", - "timeslider.month.august": "Agosto", - "timeslider.month.september": "Setembro", - "timeslider.month.october": "Outubro", - "timeslider.month.november": "Novembro", - "timeslider.month.december": "Dezembro", - "pad.savedrevs.marked": "Esta revis\u00e3o foi marcada como salva", - "pad.userlist.entername": "Insira o seu nome", - "pad.userlist.unnamed": "Sem t\u00edtulo", - "pad.userlist.guest": "Convidado", - "pad.userlist.deny": "Negar", - "pad.userlist.approve": "Aprovar", - "pad.editbar.clearcolors": "Deseja limpar cores de autoria em todo o documento?", - "pad.impexp.importbutton": "Importar agora", - "pad.impexp.importing": "Importando...", - "pad.impexp.confirmimport": "Importar um arquivo sobrescrever\u00e1 o atual texto da nota. Tem certeza de que deseja prosseguir?", - "pad.impexp.convertFailed": "N\u00e3o foi poss\u00edvel importar este arquivo. Use outro formato ou copie e cole manualmente", - "pad.impexp.uploadFailed": "O envio falhou. Tente outra vez", - "pad.impexp.importfailed": "A importa\u00e7\u00e3o falhou", - "pad.impexp.copypaste": "Copie e cole", - "pad.impexp.exportdisabled": "A exposta\u00e7\u00e3o em formato {{type}} est\u00e1 desativada. Comunique-se com o administrador do sistema para detalhes." + "@metadata": { + "authors": [ + "Gusta", + "Luckas", + "Prilopes", + "TheGabrielZaum", + "Titoncio", + "Tuliouel" + ] + }, + "index.newPad": "Nova Nota", + "index.createOpenPad": "ou criar-abrir uma Nota com o nome:", + "pad.toolbar.bold.title": "Negrito (Ctrl-B)", + "pad.toolbar.italic.title": "Itálico (Ctrl-I)", + "pad.toolbar.underline.title": "Sublinhar (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Tachado", + "pad.toolbar.ol.title": "Lista ordenada", + "pad.toolbar.ul.title": "Lista não ordenada", + "pad.toolbar.indent.title": "Aumentar Recuo (TAB)", + "pad.toolbar.unindent.title": "Diminuir Recuo (Shift+TAB)", + "pad.toolbar.undo.title": "Desfazer (Ctrl-Z)", + "pad.toolbar.redo.title": "Refazer (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Limpar as cores de identificação de autoria", + "pad.toolbar.import_export.title": "Importar/Exportar de/para diferentes formatos de arquivo", + "pad.toolbar.timeslider.title": "Linha do tempo", + "pad.toolbar.savedRevision.title": "Salvar revisão", + "pad.toolbar.settings.title": "Configurações", + "pad.toolbar.embed.title": "Compartilhar e incorporar esta nota", + "pad.toolbar.showusers.title": "Mostrar os usuarios nesta Nota", + "pad.colorpicker.save": "Salvar", + "pad.colorpicker.cancel": "Cancelar", + "pad.loading": "Carregando...", + "pad.passwordRequired": "Você precisa de uma senha para acessar esta Nota", + "pad.permissionDenied": "Você não tem permissão para acessar esta nota", + "pad.wrongPassword": "Senha incorreta", + "pad.settings.padSettings": "Configurações da Nota", + "pad.settings.myView": "Minha Visão", + "pad.settings.stickychat": "Conversa sempre visível", + "pad.settings.colorcheck": "Cores de autoria", + "pad.settings.linenocheck": "Números de linha", + "pad.settings.rtlcheck": "Ler conteúdo da direita para esquerda?", + "pad.settings.fontType": "Tipo de fonte:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monoespaçada", + "pad.settings.globalView": "Visão global", + "pad.settings.language": "Idioma:", + "pad.importExport.import_export": "Importar/Exportar", + "pad.importExport.import": "Enviar um arquivo texto ou documento", + "pad.importExport.importSuccessful": "Completo!", + "pad.importExport.export": "Exportar a presente nota como:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Texto puro", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Você só pode importar de formatos de texto puro ou html. Para recursos de importação mais avançados \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstale o abiword\u003C/a\u003E.", + "pad.modals.connected": "Conectado.", + "pad.modals.reconnecting": "Reconectando à sua nota...", + "pad.modals.forcereconnect": "Forçar reconexão", + "pad.modals.userdup": "Aberto noutra 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.", + "pad.modals.unauth": "Não autorizado", + "pad.modals.unauth.explanation": "Suas permissões foram mudadas enquanto visualizava esta página. Tente reconectar.", + "pad.modals.looping.explanation": "Há problemas de comunicação com o servidor de sincronização.", + "pad.modals.looping.cause": "Talvez você tenha conectado por um firewall ou proxy incompatível.", + "pad.modals.initsocketfail": "Servidor é inalcançável.", + "pad.modals.initsocketfail.explanation": "Não foi possível conectar com o servidor de sincronização.", + "pad.modals.initsocketfail.cause": "Isto provavelmente ocorreu por um problema em seu navegador ou conexão.", + "pad.modals.slowcommit.explanation": "O servidor não responde.", + "pad.modals.slowcommit.cause": "Isto pode ser por problemas com a conexão de rede.", + "pad.modals.badChangeset.explanation": "Uma edição que você 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 contate o administrador, se você acredita que é um erro. Tente reconectar para continuar editando.", + "pad.modals.corruptPad.explanation": "O pad que você está tentando acessar está corrompido.", + "pad.modals.corruptPad.cause": "Isto pode ocorrer devido a uma configuração errada do servidor ou algum outro comportamento inesperado. Por favor contate o administrador.", + "pad.modals.deleted": "Excluído", + "pad.modals.deleted.explanation": "Esta nota foi removida.", + "pad.modals.disconnected": "Você foi desconectado.", + "pad.modals.disconnected.explanation": "A conexão com o servidor foi perdida", + "pad.modals.disconnected.cause": "O servidor pode estar indisponível. Por favor, notifique o administrador caso isso continue.", + "pad.share": "Compartilhar esta nota", + "pad.share.readonly": "Somente leitura", + "pad.share.link": "Ligação", + "pad.share.emebdcode": "Incorporar o URL", + "pad.chat": "Bate-papo", + "pad.chat.title": "Abrir o bate-papo desta nota.", + "pad.chat.loadmessages": "Carregar mais mensagens", + "timeslider.pageTitle": "Linha do tempo de {{appTitle}}", + "timeslider.toolbar.returnbutton": "Retornar para a nota", + "timeslider.toolbar.authors": "Autores:", + "timeslider.toolbar.authorsList": "Sem autores", + "timeslider.toolbar.exportlink.title": "Exportar", + "timeslider.exportCurrent": "Exportar a versão atual em formato:", + "timeslider.version": "Versão {{version}}", + "timeslider.saved": "Salvo em {{day}} de {{month}} de {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Janeiro", + "timeslider.month.february": "Fevereiro", + "timeslider.month.march": "Março", + "timeslider.month.april": "Abril", + "timeslider.month.may": "Maio", + "timeslider.month.june": "Junho", + "timeslider.month.july": "Julho", + "timeslider.month.august": "Agosto", + "timeslider.month.september": "Setembro", + "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 foi marcada como salva", + "pad.userlist.entername": "Insira o seu nome", + "pad.userlist.unnamed": "Sem título", + "pad.userlist.guest": "Convidado", + "pad.userlist.deny": "Negar", + "pad.userlist.approve": "Aprovar", + "pad.editbar.clearcolors": "Deseja limpar cores de autoria em todo o documento?", + "pad.impexp.importbutton": "Importar agora", + "pad.impexp.importing": "Importando...", + "pad.impexp.confirmimport": "Importar um arquivo sobrescreverá o atual texto da nota. Tem certeza de que deseja prosseguir?", + "pad.impexp.convertFailed": "Não foi possível importar este arquivo. Use outro formato ou copie e cole manualmente", + "pad.impexp.uploadFailed": "O envio falhou. Tente outra vez", + "pad.impexp.importfailed": "A importação falhou", + "pad.impexp.copypaste": "Copie e cole", + "pad.impexp.exportdisabled": "A expostação em formato {{type}} está desativada. Comunique-se com o administrador do sistema para detalhes." } \ No newline at end of file diff --git a/src/locales/pt.json b/src/locales/pt.json index 0e651fe8a..cf32223bd 100644 --- a/src/locales/pt.json +++ b/src/locales/pt.json @@ -1,59 +1,76 @@ { - "@metadata": { - "authors": { - "1": "Waldir" - } - }, - "index.newPad": "Novo Pad", - "index.createOpenPad": "ou criar\/abrir um Pad com o nome:", - "pad.toolbar.bold.title": "Negrito (Ctrl-B)", - "pad.toolbar.italic.title": "It\u00e1lico (Ctrl-I)", - "pad.toolbar.underline.title": "Sublinhado (Ctrl-U)", - "pad.toolbar.ol.title": "Lista numerada", - "pad.toolbar.ul.title": "Lista", - "pad.toolbar.undo.title": "Desfazer (Ctrl-Z)", - "pad.toolbar.redo.title": "Refazer (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Limpar cores de autoria", - "pad.toolbar.import_export.title": "Importar\/exportar de\/para diferentes formatos de ficheiro", - "pad.toolbar.timeslider.title": "Linha de tempo", - "pad.toolbar.savedRevision.title": "Vers\u00f5es gravadas", - "pad.toolbar.settings.title": "Configura\u00e7\u00f5es", - "pad.toolbar.embed.title": "Incorporar este Pad", - "pad.toolbar.showusers.title": "Mostrar os utilizadores neste Pad", - "pad.colorpicker.save": "Gravar", - "pad.colorpicker.cancel": "Cancelar", - "pad.loading": "A carregar\u2026", - "pad.settings.padSettings": "Configura\u00e7\u00f5es do Pad", - "pad.settings.myView": "Minha vista", - "pad.settings.colorcheck": "Cores de autoria", - "pad.settings.linenocheck": "N\u00fameros de linha", - "pad.settings.fontType": "Tipo de letra:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Monoespa\u00e7ada", - "pad.settings.globalView": "Vista global", - "pad.settings.language": "L\u00edngua:", - "pad.importExport.import_export": "Importar\/Exportar", - "pad.importExport.import": "Carregar qualquer ficheiro de texto ou documento", - "pad.importExport.export": "Exportar o Pad actual como:", - "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.exportdokuwiki": "DokuWiki", - "pad.modals.connected": "Ligado.", - "pad.modals.reconnecting": "Reconectando-se ao seu bloco\u2026", - "pad.modals.forcereconnect": "For\u00e7ar reconex\u00e3o", - "timeslider.month.january": "Janeiro", - "timeslider.month.february": "Fevereiro", - "timeslider.month.march": "Mar\u00e7o", - "timeslider.month.april": "Abril\ufffd\ufffd", - "timeslider.month.may": "Maio", - "timeslider.month.june": "Junho", - "timeslider.month.july": "Julho", - "timeslider.month.august": "Agosto", - "timeslider.month.september": "Setembro", - "timeslider.month.october": "Outubro", - "timeslider.month.november": "Novembro", - "timeslider.month.december": "Dezembro" + "@metadata": { + "authors": { + "0": "Hamilton Abreu", + "1": "Luckas", + "3": "Tuliouel", + "4": "Waldir" + } + }, + "index.newPad": "Nova Nota", + "index.createOpenPad": "ou crie/abra uma Nota com o nome:", + "pad.toolbar.bold.title": "Negrito (Ctrl-B)", + "pad.toolbar.italic.title": "Itálico (Ctrl-I)", + "pad.toolbar.underline.title": "Sublinhado (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Riscar", + "pad.toolbar.ol.title": "Lista numerada", + "pad.toolbar.ul.title": "Lista", + "pad.toolbar.indent.title": "Avançar", + "pad.toolbar.unindent.title": "Recuar", + "pad.toolbar.undo.title": "Desfazer (Ctrl-Z)", + "pad.toolbar.redo.title": "Refazer (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Limpar cores de autoria", + "pad.toolbar.import_export.title": "Importar/exportar de/para diferentes formatos de ficheiro", + "pad.toolbar.timeslider.title": "Linha de tempo", + "pad.toolbar.savedRevision.title": "Salvar revisão", + "pad.toolbar.settings.title": "Configurações", + "pad.toolbar.embed.title": "Incorporar este Pad", + "pad.toolbar.showusers.title": "Mostrar os utilizadores nesta Nota", + "pad.colorpicker.save": "Gravar", + "pad.colorpicker.cancel": "Cancelar", + "pad.loading": "A carregar…", + "pad.settings.padSettings": "Configurações da Nota", + "pad.settings.myView": "Minha vista", + "pad.settings.colorcheck": "Cores de autoria", + "pad.settings.linenocheck": "Números de linha", + "pad.settings.fontType": "Tipo de letra:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Monoespaçada", + "pad.settings.globalView": "Vista global", + "pad.settings.language": "Língua:", + "pad.importExport.import_export": "Importar/Exportar", + "pad.importExport.import": "Carregar qualquer ficheiro de texto ou documento", + "pad.importExport.export": "Exportar a Nota atual como:", + "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.exportdokuwiki": "DokuWiki", + "pad.modals.connected": "Ligado.", + "pad.modals.reconnecting": "Reconectando-se ao seu bloco…", + "pad.modals.forcereconnect": "Forçar reconexão", + "pad.modals.unauth": "Não autorizado", + "pad.modals.slowcommit.explanation": "O servidor não está respondendo.", + "timeslider.toolbar.authors": "Autores:", + "timeslider.toolbar.exportlink.title": "Exportar", + "timeslider.month.january": "Janeiro", + "timeslider.month.february": "Fevereiro", + "timeslider.month.march": "Março", + "timeslider.month.april": "Abril", + "timeslider.month.may": "Maio", + "timeslider.month.june": "Junho", + "timeslider.month.july": "Julho", + "timeslider.month.august": "Agosto", + "timeslider.month.september": "Setembro", + "timeslider.month.october": "Outubro", + "timeslider.month.november": "Novembro", + "timeslider.month.december": "Dezembro", + "pad.userlist.entername": "Insira o seu nome", + "pad.userlist.unnamed": "sem nome", + "pad.userlist.guest": "Convidado", + "pad.userlist.deny": "Negar", + "pad.userlist.approve": "Aprovar", + "pad.impexp.importbutton": "Importar agora", + "pad.impexp.importing": "Importando..." } \ No newline at end of file diff --git a/src/locales/ru.json b/src/locales/ru.json index 4e4c40506..d74e75927 100644 --- a/src/locales/ru.json +++ b/src/locales/ru.json @@ -1,123 +1,126 @@ { - "@metadata": { - "authors": [ - "Amire80", - "DCamer", - "Eleferen", - "Volkov" - ] - }, - "index.newPad": "\u0421\u043e\u0437\u0434\u0430\u0442\u044c", - "index.createOpenPad": "\u0438\u043b\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c\/\u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0441 \u0438\u043c\u0435\u043d\u0435\u043c:", - "pad.toolbar.bold.title": "\u043f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 (Ctrl-B)", - "pad.toolbar.italic.title": "\u043a\u0443\u0440\u0441\u0438\u0432 (Ctrl-I)", - "pad.toolbar.underline.title": "\u043f\u043e\u0434\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435 (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u0437\u0430\u0447\u0451\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435", - "pad.toolbar.ol.title": "\u0423\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", - "pad.toolbar.ul.title": "\u041d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", - "pad.toolbar.indent.title": "\u041e\u0442\u0441\u0442\u0443\u043f", - "pad.toolbar.unindent.title": "\u0412\u044b\u0441\u0442\u0443\u043f", - "pad.toolbar.undo.title": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c (Ctrl-Z)", - "pad.toolbar.redo.title": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", - "pad.toolbar.import_export.title": "\u0418\u043c\u043f\u043e\u0440\u0442\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u043e\u0432 \u0444\u0430\u0439\u043b\u043e\u0432", - "pad.toolbar.timeslider.title": "\u0428\u043a\u0430\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438", - "pad.toolbar.savedRevision.title": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0441\u0438\u0438", - "pad.toolbar.settings.title": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438", - "pad.toolbar.embed.title": "\u0412\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", - "pad.toolbar.showusers.title": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435", - "pad.colorpicker.save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", - "pad.colorpicker.cancel": "\u041e\u0442\u043c\u0435\u043d\u0430", - "pad.loading": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...", - "pad.passwordRequired": "\u0412\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430", - "pad.permissionDenied": "\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f", - "pad.wrongPassword": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0440\u043e\u043b\u044c", - "pad.settings.padSettings": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", - "pad.settings.myView": "\u041c\u043e\u0439 \u0432\u0438\u0434", - "pad.settings.stickychat": "\u0412\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0447\u0430\u0442", - "pad.settings.colorcheck": "\u0426\u0432\u0435\u0442\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", - "pad.settings.linenocheck": "\u041d\u043e\u043c\u0435\u0440\u0430 \u0441\u0442\u0440\u043e\u043a", - "pad.settings.fontType": "\u0422\u0438\u043f \u0448\u0440\u0438\u0444\u0442\u0430:", - "pad.settings.fontType.normal": "\u041e\u0431\u044b\u0447\u043d\u044b\u0439", - "pad.settings.fontType.monospaced": "\u041c\u043e\u043d\u043e\u0448\u0438\u0440\u0438\u043d\u043d\u044b\u0439", - "pad.settings.globalView": "\u041e\u0431\u0449\u0438\u0439 \u0432\u0438\u0434", - "pad.settings.language": "\u042f\u0437\u044b\u043a:", - "pad.importExport.import_export": "\u0418\u043c\u043f\u043e\u0440\u0442\/\u044d\u043a\u0441\u043f\u043e\u0440\u0442", - "pad.importExport.import": "\u0417\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043b\u044e\u0431\u043e\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", - "pad.importExport.importSuccessful": "\u0423\u0441\u043f\u0435\u0448\u043d\u043e!", - "pad.importExport.export": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043a\u0430\u043a:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u041e\u0431\u044b\u0447\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 OpenOffice)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u043b\u0438 HTML. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0438\u043c\u043f\u043e\u0440\u0442\u0430, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0435 AbiWord<\/a>.", - "pad.modals.connected": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d.", - "pad.modals.reconnecting": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.modals.forcereconnect": "\u041f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u0435\u0440\u0435\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435", - "pad.modals.userdup": "\u041e\u0442\u043a\u0440\u044b\u0442\u043e \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u043e\u043a\u043d\u0435", - "pad.modals.userdup.explanation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0442\u043a\u0440\u044b\u0442 \u0431\u043e\u043b\u0435\u0435 \u0447\u0435\u043c \u0432 \u043e\u0434\u043d\u043e\u043c \u043e\u043a\u043d\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043d\u0430 \u044d\u0442\u043e\u043c \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u0435.", - "pad.modals.userdup.advice": "\u041f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044d\u0442\u043e\u0433\u043e \u043e\u043a\u043d\u0430.", - "pad.modals.unauth": "\u041d\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d", - "pad.modals.unauth.explanation": "\u0412\u0430\u0448\u0438 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0431\u044b\u043b\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0430 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e.", - "pad.modals.looping": "\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d.", - "pad.modals.looping.explanation": "\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u0432\u044f\u0437\u0438 \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.", - "pad.modals.looping.cause": "\u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0432\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b\u0439 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u044d\u0440 \u0438\u043b\u0438 \u043f\u0440\u043e\u043a\u0441\u0438.", - "pad.modals.initsocketfail": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d.", - "pad.modals.initsocketfail.explanation": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0438\u0437\u0430\u0446\u0438\u0438.", - "pad.modals.initsocketfail.cause": "\u0412\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u044d\u0442\u043e \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435\u043c.", - "pad.modals.slowcommit": "\u041e\u0442\u043a\u043b\u044e\u0447\u0435\u043d.", - "pad.modals.slowcommit.explanation": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442.", - "pad.modals.slowcommit.cause": "\u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438 \u0441 \u0441\u0435\u0442\u0435\u0432\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c.", - "pad.modals.deleted": "\u0423\u0434\u0430\u043b\u0435\u043d.", - "pad.modals.deleted.explanation": "\u042d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0431\u044b\u043b \u0443\u0434\u0430\u043b\u0435\u043d.", - "pad.modals.disconnected": "\u0421\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043e\u0440\u0432\u0430\u043d\u043e.", - "pad.modals.disconnected.explanation": "\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043a \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043f\u043e\u0442\u0435\u0440\u044f\u043d\u043e", - "pad.modals.disconnected.cause": "\u0421\u0435\u0440\u0432\u0435\u0440, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d. \u0421\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043d\u0430\u043c, \u0435\u0441\u043b\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0441\u044f.", - "pad.share": "\u041f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f", - "pad.share.readonly": "\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u0435\u043d\u0438\u0435", - "pad.share.link": "\u0421\u0441\u044b\u043b\u043a\u0430", - "pad.share.emebdcode": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c URL", - "pad.chat": "\u0427\u0430\u0442", - "pad.chat.title": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0447\u0430\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430.", - "pad.chat.loadmessages": "\u0415\u0449\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f", - "timeslider.pageTitle": "\u0412\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0448\u043a\u0430\u043b\u0430 {{appTitle}}", - "timeslider.toolbar.returnbutton": "\u041a \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "timeslider.toolbar.authors": "\u0410\u0432\u0442\u043e\u0440\u044b:", - "timeslider.toolbar.authorsList": "\u041d\u0435\u0442 \u0430\u0432\u0442\u043e\u0440\u043e\u0432", - "timeslider.toolbar.exportlink.title": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442", - "timeslider.exportCurrent": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e \u043a\u0430\u043a:", - "timeslider.version": "\u0412\u0435\u0440\u0441\u0438\u044f {{version}}", - "timeslider.saved": "\u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043e {{day}}.{{month}}.{{year}}", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u044f\u043d\u0432\u0430\u0440\u044c", - "timeslider.month.february": "\u0444\u0435\u0432\u0440\u0430\u043b\u044c", - "timeslider.month.march": "\u043c\u0430\u0440\u0442", - "timeslider.month.april": "\u0430\u043f\u0440\u0435\u043b\u044c", - "timeslider.month.may": "\u043c\u0430\u0439", - "timeslider.month.june": "\u0438\u044e\u043d\u044c", - "timeslider.month.july": "\u0438\u044e\u043b\u044c", - "timeslider.month.august": "\u0430\u0432\u0433\u0443\u0441\u0442", - "timeslider.month.september": "\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c", - "timeslider.month.october": "\u043e\u043a\u0442\u044f\u0431\u0440\u044c", - "timeslider.month.november": "\u043d\u043e\u044f\u0431\u0440\u044c", - "timeslider.month.december": "\u0434\u0435\u043a\u0430\u0431\u0440\u044c", - "timeslider.unnamedauthor": "{{num}} \u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u0440", - "timeslider.unnamedauthors": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}", - "pad.savedrevs.marked": "\u042d\u0442\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u0430 \u043a\u0430\u043a \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u0430\u044f", - "pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0432\u0430\u0448\u0435 \u0438\u043c\u044f", - "pad.userlist.unnamed": "\u0431\u0435\u0437\u044b\u043c\u044f\u043d\u043d\u044b\u0439", - "pad.userlist.guest": "\u0413\u043e\u0441\u0442\u044c", - "pad.userlist.deny": "\u041e\u0442\u043a\u043b\u043e\u043d\u0438\u0442\u044c", - "pad.userlist.approve": "\u0423\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c", - "pad.editbar.clearcolors": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0441\u043a\u0438\u0435 \u0446\u0432\u0435\u0442\u0430 \u0432\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435?", - "pad.impexp.importbutton": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0439\u0447\u0430\u0441", - "pad.impexp.importing": "\u0418\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u2026", - "pad.impexp.confirmimport": "\u0418\u043c\u043f\u043e\u0440\u0442 \u0444\u0430\u0439\u043b\u0430 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0435\u0442 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0442\u0435\u043a\u0441\u0442. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0432\u044b \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c?", - "pad.impexp.convertFailed": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0438\u043b\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435 \u0432\u0440\u0443\u0447\u043d\u0443\u044e", - "pad.impexp.uploadFailed": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0435 \u0443\u0434\u0430\u043b\u0430\u0441\u044c, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0435\u0449\u0451 \u0440\u0430\u0437", - "pad.impexp.importfailed": "\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438", - "pad.impexp.copypaste": "\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0441\u043a\u043e\u043f\u0438\u0440\u0443\u0439\u0442\u0435", - "pad.impexp.exportdisabled": "\u042d\u043a\u0441\u043f\u043e\u0440\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 {{type}} \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d. \u0414\u043b\u044f \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435\u0441\u044c \u043a \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u043c\u0443 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0443." + "@metadata": { + "authors": [ + "Amire80", + "DCamer", + "Eleferen", + "Okras", + "Volkov" + ] + }, + "index.newPad": "Создать", + "index.createOpenPad": "или Ñоздать/открыть документ Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼:", + "pad.toolbar.bold.title": "полужирный (Ctrl-B)", + "pad.toolbar.italic.title": "курÑив (Ctrl-I)", + "pad.toolbar.underline.title": "подчёркивание (Ctrl-U)", + "pad.toolbar.strikethrough.title": "зачёркивание", + "pad.toolbar.ol.title": "УпорÑдоченный ÑпиÑок", + "pad.toolbar.ul.title": "ÐеупорÑдоченный ÑпиÑок", + "pad.toolbar.indent.title": "ОтÑтуп", + "pad.toolbar.unindent.title": "Ð’Ñ‹Ñтуп", + "pad.toolbar.undo.title": "Отменить (Ctrl-Z)", + "pad.toolbar.redo.title": "Вернуть (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "ОчиÑтить цвета документа", + "pad.toolbar.import_export.title": "Импорт/ÑкÑпорт Ñ Ð¸Ñпользованием различных форматов файлов", + "pad.toolbar.timeslider.title": "Шкала времени", + "pad.toolbar.savedRevision.title": "Сохранить верÑию", + "pad.toolbar.settings.title": "ÐаÑтройки", + "pad.toolbar.embed.title": "ПоделитьÑÑ Ð¸ вÑтроить Ñтот документ", + "pad.toolbar.showusers.title": "Показать пользователей в документе", + "pad.colorpicker.save": "Сохранить", + "pad.colorpicker.cancel": "Отмена", + "pad.loading": "Загрузка...", + "pad.passwordRequired": "Вам нужен пароль Ð´Ð»Ñ Ð´Ð¾Ñтупа", + "pad.permissionDenied": "У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½Ð° доÑтуп", + "pad.wrongPassword": "Ðеправильный пароль", + "pad.settings.padSettings": "ÐаÑтройки документа", + "pad.settings.myView": "Мой вид", + "pad.settings.stickychat": "Ð’Ñегда отображать чат", + "pad.settings.colorcheck": "Цвета документа", + "pad.settings.linenocheck": "Ðомера Ñтрок", + "pad.settings.rtlcheck": "Читать Ñодержимое Ñправа налево?", + "pad.settings.fontType": "Тип шрифта:", + "pad.settings.fontType.normal": "Обычный", + "pad.settings.fontType.monospaced": "Моноширинный", + "pad.settings.globalView": "Общий вид", + "pad.settings.language": "Язык:", + "pad.importExport.import_export": "Импорт/ÑкÑпорт", + "pad.importExport.import": "Загрузить любой текÑтовый файл или документ", + "pad.importExport.importSuccessful": "УÑпешно!", + "pad.importExport.export": "ЭкÑпортировать текущий документ как:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Обычный текÑÑ‚", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (документ OpenOffice)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Ð’Ñ‹ можете импортировать только из обычного текÑта или HTML. Ð”Ð»Ñ Ð±Ð¾Ð»ÐµÐµ продвинутых функций импорта, пожалуйÑта, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EуÑтановите AbiWord\u003C/a\u003E.", + "pad.modals.connected": "Подключен.", + "pad.modals.reconnecting": "Повторное подключение к вашему документу", + "pad.modals.forcereconnect": "Принудительное переподключение", + "pad.modals.userdup": "Открыто в другом окне", + "pad.modals.userdup.explanation": "Документ, возможно, открыт более чем в одном окне браузера на Ñтом компьютере.", + "pad.modals.userdup.advice": "Повторно подключить Ñ Ð¸Ñпользованием Ñтого окна.", + "pad.modals.unauth": "Ðе авторизован", + "pad.modals.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.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": "декабрь", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: безымÑнный автор, few: безымÑнных автора, many: безымÑнных авторов, other: безымÑнных авторов]}", + "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.confirmimport": "Импорт файла перезапишет текущий текÑÑ‚. Ð’Ñ‹ уверены, что вы хотите продолжить?", + "pad.impexp.convertFailed": "Ðе удалоÑÑŒ импортировать Ñтот файл. ПожалуйÑта, иÑпользуйте другой формат или Ñкопируйте вручную", + "pad.impexp.uploadFailed": "Загрузка не удалаÑÑŒ, пожалуйÑта, попробуйте ещё раз", + "pad.impexp.importfailed": "Ошибка при импортировании", + "pad.impexp.copypaste": "ПожалуйÑта, Ñкопируйте", + "pad.impexp.exportdisabled": "ЭкÑпорт в формате {{type}} отключен. Ð”Ð»Ñ Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð¾Ð¹ информации обратитеÑÑŒ к ÑиÑтемному админиÑтратору." } \ No newline at end of file diff --git a/src/locales/sk.json b/src/locales/sk.json new file mode 100644 index 000000000..15eef02c2 --- /dev/null +++ b/src/locales/sk.json @@ -0,0 +1,118 @@ +{ + "@metadata": { + "authors": [ + "Teslaton" + ] + }, + "index.newPad": "Nový Pad", + "index.createOpenPad": "alebo vytvoriÅ¥/otvoriÅ¥ Pad s názvom:", + "pad.toolbar.bold.title": "TuÄné (Ctrl-B)", + "pad.toolbar.italic.title": "Kurzíva (Ctrl-I)", + "pad.toolbar.underline.title": "PodÄiarknuté (Ctrl-U)", + "pad.toolbar.strikethrough.title": "PreÄiarknuté", + "pad.toolbar.ol.title": "Číslovaný zoznam", + "pad.toolbar.ul.title": "Odrážkový zoznam", + "pad.toolbar.indent.title": "ZväÄÅ¡iÅ¥ odsadenie", + "pad.toolbar.unindent.title": "ZmenÅ¡iÅ¥ odsadenie", + "pad.toolbar.undo.title": "Späť (Ctrl-Z)", + "pad.toolbar.redo.title": "Znova (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "OdstrániÅ¥ farby autorstva", + "pad.toolbar.import_export.title": "Import/export z/do rôznych formátov súborov", + "pad.toolbar.timeslider.title": "ÄŒasová os", + "pad.toolbar.savedRevision.title": "UložiÅ¥ revíziu", + "pad.toolbar.settings.title": "Nastavenia", + "pad.toolbar.embed.title": "ZdieľaÅ¥ alebo vložiÅ¥ tento Pad", + "pad.toolbar.showusers.title": "ZobraziÅ¥ používateľov tohoto Padu", + "pad.colorpicker.save": "UložiÅ¥", + "pad.colorpicker.cancel": "ZruÅ¡iÅ¥", + "pad.loading": "NaÄítava sa...", + "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.colorcheck": "Farby autorstva", + "pad.settings.linenocheck": "Čísla riadkov", + "pad.settings.rtlcheck": "ČítaÅ¥ obsah sprava doľava?", + "pad.settings.fontType": "Typ písma:", + "pad.settings.fontType.normal": "Normálne", + "pad.settings.fontType.monospaced": "Strojové", + "pad.settings.globalView": "Globálny pohľad", + "pad.settings.language": "Jazyk:", + "pad.importExport.import_export": "Import/Export", + "pad.importExport.import": "NahraÅ¥ ľubovoľný textový súbor alebo dokument", + "pad.importExport.importSuccessful": "Import úspeÅ¡ný!", + "pad.importExport.export": "ExportovaÅ¥ aktuálny Pad ako:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "ÄŒistý text", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "ImportovaÅ¥ môžete len Äistý text alebo HTML. Pre pokroÄilejÅ¡ie funkcie importu prosím nainÅ¡talujte „\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EAbiword\u003C/a\u003E“.", + "pad.modals.connected": "Pripojené.", + "pad.modals.reconnecting": "Opätovné pripájanie k vášmu Padu...", + "pad.modals.forcereconnect": "VynútiÅ¥ znovupripojenie", + "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Å¥.", + "pad.modals.unauth": "Nie ste autorizovaný", + "pad.modals.unauth.explanation": "VaÅ¡e oprávnenia sa poÄas prehliadania tejto stránky zmenili. Skúste sa pripojiÅ¥ znovu.", + "pad.modals.looping.explanation": "Nastali problémy pri komunikácii so synchronizaÄným serverom.", + "pad.modals.looping.cause": "Možno ste pripojení cez nekompatibilný firewall alebo proxy server.", + "pad.modals.initsocketfail": "Server je nedostupný.", + "pad.modals.initsocketfail.explanation": "Nepodarilo sa pripojiÅ¥ k synchronizaÄnému serveru.", + "pad.modals.initsocketfail.cause": "PríÄinou je pravdepodobne problém s prehliadaÄom alebo internetovým pripojením.", + "pad.modals.slowcommit.explanation": "Server neodpovedá.", + "pad.modals.slowcommit.cause": "PríÄinou môže byÅ¥ problém so sieÅ¥ovým pripojením.", + "pad.modals.deleted": "Odstránené.", + "pad.modals.deleted.explanation": "Tento Pad bol odstránený.", + "pad.modals.disconnected": "Boli ste odpojení.", + "pad.modals.disconnected.explanation": "Spojenie so serverom sa preruÅ¡ilo", + "pad.modals.disconnected.cause": "Server môže byÅ¥ nedostupný. Ak by problém pretrvával, informujte nás prosím.", + "pad.share": "ZdieľaÅ¥ tento Pad", + "pad.share.readonly": "Len na Äítanie", + "pad.share.link": "Odkaz", + "pad.share.emebdcode": "VložiÅ¥ URL", + "pad.chat": "Chat", + "pad.chat.title": "OtvoriÅ¥ chat tohoto Padu.", + "pad.chat.loadmessages": "NaÄítaÅ¥ ÄalÅ¡ie správy", + "timeslider.pageTitle": "ÄŒasová os {{appTitle}}", + "timeslider.toolbar.returnbutton": "Návrat do Padu", + "timeslider.toolbar.authors": "Autori:", + "timeslider.toolbar.authorsList": "Bez autorov", + "timeslider.toolbar.exportlink.title": "Export", + "timeslider.exportCurrent": "ExportovaÅ¥ aktuálnu verziu ako:", + "timeslider.version": "Verzia {{version}}", + "timeslider.saved": "Uložené {{day}}. {{month}} {{year}}", + "timeslider.dateformat": "{{day}}. {{month}} {{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "januára", + "timeslider.month.february": "februára", + "timeslider.month.march": "marca", + "timeslider.month.april": "apríla", + "timeslider.month.may": "mája", + "timeslider.month.june": "júna", + "timeslider.month.july": "júla", + "timeslider.month.august": "augusta", + "timeslider.month.september": "septembra", + "timeslider.month.october": "októbra", + "timeslider.month.november": "novembra", + "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.userlist.entername": "Zadajte svoje meno", + "pad.userlist.unnamed": "nemenovaný", + "pad.userlist.guest": "HosÅ¥", + "pad.userlist.deny": "ZakázaÅ¥", + "pad.userlist.approve": "SchváliÅ¥", + "pad.editbar.clearcolors": "SkutoÄne odstrániÅ¥ autorské farby z celého dokumentu?", + "pad.impexp.importbutton": "ImportovaÅ¥", + "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.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", + "pad.impexp.exportdisabled": "Export do formátu {{type}} nie je povolený. Kontaktujte prosím administrátora pre zistenie detailov." +} \ No newline at end of file diff --git a/src/locales/sl.json b/src/locales/sl.json index edfa68c00..1b83f422b 100644 --- a/src/locales/sl.json +++ b/src/locales/sl.json @@ -1,120 +1,119 @@ { - "@metadata": { - "authors": [ - "Mateju" - ] - }, - "index.newPad": "Nov dokument", - "index.createOpenPad": "ali pa odpri dokument z imenom:", - "pad.toolbar.bold.title": "Krepko (Ctrl-B)", - "pad.toolbar.italic.title": "Le\u017ee\u010de (Ctrl-I)", - "pad.toolbar.underline.title": "Pod\u010drtano (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Pre\u010drtano", - "pad.toolbar.ol.title": "O\u0161tevil\u010den seznam", - "pad.toolbar.ul.title": "Vrsti\u010dni seznam", - "pad.toolbar.indent.title": "Zamik desno", - "pad.toolbar.unindent.title": "Zamik levo", - "pad.toolbar.undo.title": "Razveljavi (Ctrl-Z)", - "pad.toolbar.redo.title": "Ponovno uveljavi (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Po\u010disti barvo avtorstva", - "pad.toolbar.import_export.title": "Izvozi\/Uvozi razli\u010dne oblike zapisov", - "pad.toolbar.timeslider.title": "Drsnik zgodovine", - "pad.toolbar.savedRevision.title": "Shranjene predelave", - "pad.toolbar.settings.title": "Nastavitve", - "pad.toolbar.embed.title": "Vstavi dokument", - "pad.toolbar.showusers.title": "Poka\u017ei uporabnike dokumenta", - "pad.colorpicker.save": "Shrani", - "pad.colorpicker.cancel": "Prekli\u010di", - "pad.loading": "Nalaganje ...", - "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\u010dno.", - "pad.settings.padSettings": "Nastavitve dokumenta", - "pad.settings.myView": "Pogled", - "pad.settings.stickychat": "Vsebina klepeta je vedno na zaslonu.", - "pad.settings.colorcheck": "Barve avtorstva", - "pad.settings.linenocheck": "\u0160tevilke vrstic", - "pad.settings.fontType": "Vrsta pisave:", - "pad.settings.fontType.normal": "Obi\u010dajno", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Splo\u0161ni pogled", - "pad.settings.language": "Jezik:", - "pad.importExport.import_export": "Uvoz\/Izvoz", - "pad.importExport.import": "Nalo\u017ei katerokoli besedilno datoteko ali dokument.", - "pad.importExport.importSuccessful": "Opravilo je uspe\u0161no kon\u010dano!", - "pad.importExport.export": "Izvozi trenutni dokument kot:", - "pad.importExport.exporthtml": "HTML (oblikovano besedilo)", - "pad.importExport.exportplain": "TXT (neoblikovano besedilo)", - "pad.importExport.exportword": "DOC (zapis Microsoft Word)", - "pad.importExport.exportpdf": "PDF (zapis Acrobat PDF)", - "pad.importExport.exportopen": "ODF (zapis Open Document)", - "pad.importExport.exportdokuwiki": "DokuWiki (zapis DokuWiki)", - "pad.importExport.abiword.innerHTML": "Uvoziti je mogo\u010de le obi\u010dajno neoblikovano besedilo in zapise HTML. Za naprednej\u0161e zmo\u017enosti namestite 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 \u017ee odprt v v drugem oknu.", - "pad.modals.userdup.explanation": "Videti je, da je ta dokument odprt v ve\u010d kot enem oknu brskalnika na tem ra\u010dunalniku.", - "pad.modals.userdup.advice": "Ponovno vzpostavite povezavo in uporabljajte to okno.", - "pad.modals.unauth": "Nepoobla\u0161\u010den dostop", - "pad.modals.unauth.explanation": "Med pregledovanjem te strani so se dovoljenja za ogled spremenila. Treba se bo znova povezati.", - "pad.modals.looping": "Prekinjena povezava.", - "pad.modals.looping.explanation": "Zaznane so te\u017eave s povezavo za usklajevanje s stre\u017enikom.", - "pad.modals.looping.cause": "Morda je vzpostavljena povezava preko neustrezno nastavljenega po\u017earnega zidu ali posredni\u0161kega stre\u017enika.", - "pad.modals.initsocketfail": "Dostop do stre\u017enika ni mogo\u010d.", - "pad.modals.initsocketfail.explanation": "Povezava s stre\u017enikom za usklajevanje ni mogo\u010da.", - "pad.modals.initsocketfail.cause": "Najverjetneje je te\u017eava v brskalniku, ali pa so te\u017eave z internetno povezavo.", - "pad.modals.slowcommit": "Prekinjena povezava.", - "pad.modals.slowcommit.explanation": "Stre\u017enik se ne odziva.", - "pad.modals.slowcommit.cause": "Najverjetneje je pri\u0161lo do napake med vzpostavitvijo povezave.", - "pad.modals.deleted": "Izbrisano.", - "pad.modals.deleted.explanation": "Dokument je odstranjen.", - "pad.modals.disconnected": "Povezava je prekinjena.", - "pad.modals.disconnected.explanation": "Povezava s stre\u017enikom je bila prekinjena.", - "pad.modals.disconnected.cause": "Stre\u017enik je najverjetneje nedosegljiv. Po\u0161ljite poro\u010dilo, \u010de s napaka ve\u010dkrat pojavi.", - "pad.share": "Dolo\u010di souporabo dokumenta", - "pad.share.readonly": "Le za branje", - "pad.share.link": "Povezava", - "pad.share.emebdcode": "Vstavi naslov URL", - "pad.chat": "Klepet", - "pad.chat.title": "Odpri klepetalno okno dokumenta.", - "pad.chat.loadmessages": "Nalo\u017ei ve\u010d sporo\u010dil", - "timeslider.pageTitle": "Zgodovina dokumenta {{appTitle}}", - "timeslider.toolbar.returnbutton": "Vrni se na dokument", - "timeslider.toolbar.authors": "Autorji:", - "timeslider.toolbar.authorsList": "Ni dolo\u010denih avtorjev", - "timeslider.toolbar.exportlink.title": "Izvozi", - "timeslider.exportCurrent": "Izvozi trenutno razli\u010dico kot:", - "timeslider.version": "Razli\u010dica {{version}}", - "timeslider.saved": "Shranjeno {{day}}.{{month}}.{{year}}", - "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Januar", - "timeslider.month.february": "Februar", - "timeslider.month.march": "Marec", - "timeslider.month.april": "April", - "timeslider.month.may": "Maj", - "timeslider.month.june": "Junij", - "timeslider.month.july": "Julij", - "timeslider.month.august": "August", - "timeslider.month.september": "September", - "timeslider.month.october": "Oktober", - "timeslider.month.november": "November", - "timeslider.month.december": "December", - "timeslider.unnamedauthor": "neimenovani avtor {{num}}", - "timeslider.unnamedauthors": "{{num}} neimenovani avtorji", - "pad.savedrevs.marked": "Ta predelava je ozna\u010dena kot shranjena predelava.", - "pad.userlist.entername": "Vpi\u0161ite ime", - "pad.userlist.unnamed": "neimenovana oseba", - "pad.userlist.guest": "Gost", - "pad.userlist.deny": "Zavrni", - "pad.userlist.approve": "Odobri", - "pad.editbar.clearcolors": "Ali naj se po\u010distijo barve avtorstva v celotnem dokumentu?", - "pad.impexp.importbutton": "Uvozi takoj", - "pad.impexp.importing": "Poteka uva\u017eanje ...", - "pad.impexp.confirmimport": "Uvoz datoteke prepi\u0161e obstoje\u010de besedilo dokumenta. Ali ste prepri\u010dani, da \u017eelite nadaljevati?", - "pad.impexp.convertFailed": "Datoteke ni mogo\u010de uvoziti. Uporabiti je treba enega izmed podprtih zapisov dokumentov ali pa vsebino prilepiti ro\u010dno.", - "pad.impexp.uploadFailed": "Nalaganje je spodletelo, poskusite znova.", - "pad.impexp.importfailed": "Uvoz je spodletel.", - "pad.impexp.copypaste": "Vsebino kopirajte in prilepite.", - "pad.impexp.exportdisabled": "Izvoz v zapis {{type}} je onemogo\u010den. Za ve\u010d podrobnosti stopite v stik s skrbnikom." + "@metadata": { + "authors": [ + "Dbc334", + "Mateju" + ] + }, + "index.newPad": "Nov dokument", + "index.createOpenPad": "ali pa 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)", + "pad.toolbar.strikethrough.title": "PreÄrtano", + "pad.toolbar.ol.title": "OÅ¡tevilÄen seznam", + "pad.toolbar.ul.title": "VrstiÄni seznam", + "pad.toolbar.indent.title": "Zamik desno (TAB)", + "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", + "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.settings.title": "Nastavitve", + "pad.toolbar.embed.title": "Deli in vkljuÄi dokument", + "pad.toolbar.showusers.title": "Pokaži uporabnike dokumenta", + "pad.colorpicker.save": "Shrani", + "pad.colorpicker.cancel": "PrekliÄi", + "pad.loading": "Nalaganje ...", + "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.settings.padSettings": "Nastavitve dokumenta", + "pad.settings.myView": "Pogled", + "pad.settings.stickychat": "Vsebina klepeta je vedno na zaslonu.", + "pad.settings.colorcheck": "Barve avtorstva", + "pad.settings.linenocheck": "Å tevilke vrstic", + "pad.settings.rtlcheck": "Ali naj se vsebina prebira od desne proti levi?", + "pad.settings.fontType": "Vrsta pisave:", + "pad.settings.fontType.normal": "ObiÄajno", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "SploÅ¡ni pogled", + "pad.settings.language": "Jezik:", + "pad.importExport.import_export": "Uvoz/Izvoz", + "pad.importExport.import": "Naloži katerokoli besedilno datoteko ali dokument.", + "pad.importExport.importSuccessful": "Opravilo je uspeÅ¡no konÄano!", + "pad.importExport.export": "Izvozi trenutni dokument kot:", + "pad.importExport.exporthtml": "HTML (oblikovano besedilo)", + "pad.importExport.exportplain": "TXT (neoblikovano besedilo)", + "pad.importExport.exportword": "DOC (zapis Microsoft Word)", + "pad.importExport.exportpdf": "PDF (zapis Acrobat PDF)", + "pad.importExport.exportopen": "ODF (zapis Open Document)", + "pad.importExport.exportdokuwiki": "DokuWiki (zapis DokuWiki)", + "pad.importExport.abiword.innerHTML": "Uvoziti je mogoÄe le obiÄajno neoblikovano besedilo in zapise HTML. Za naprednejÅ¡e zmožnosti namestite \u003Ca href=\\\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\\\"\u003Eprogram Abiword\u003C/a\u003E.", + "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.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.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.slowcommit.explanation": "Strežnik se ne odziva.", + "pad.modals.slowcommit.cause": "Najverjetneje je priÅ¡lo do napake med vzpostavitvijo povezave.", + "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.share": "DoloÄi souporabo dokumenta", + "pad.share.readonly": "Le za branje", + "pad.share.link": "Povezava", + "pad.share.emebdcode": "Vstavi naslov URL", + "pad.chat": "Klepet", + "pad.chat.title": "Odpri klepetalno okno dokumenta.", + "pad.chat.loadmessages": "Naloži veÄ sporoÄil", + "timeslider.pageTitle": "Zgodovina dokumenta {{appTitle}}", + "timeslider.toolbar.returnbutton": "Vrni se na dokument", + "timeslider.toolbar.authors": "Autorji:", + "timeslider.toolbar.authorsList": "Ni doloÄenih avtorjev", + "timeslider.toolbar.exportlink.title": "Izvozi", + "timeslider.exportCurrent": "Izvozi trenutno razliÄico kot:", + "timeslider.version": "RazliÄica {{version}}", + "timeslider.saved": "Shranjeno {{day}}.{{month}}.{{year}}", + "timeslider.dateformat": "{{day}}.{{month}}.{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Januar", + "timeslider.month.february": "Februar", + "timeslider.month.march": "Marec", + "timeslider.month.april": "April", + "timeslider.month.may": "Maj", + "timeslider.month.june": "Junij", + "timeslider.month.july": "Julij", + "timeslider.month.august": "August", + "timeslider.month.september": "September", + "timeslider.month.october": "Oktober", + "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.userlist.entername": "VpiÅ¡ite ime", + "pad.userlist.unnamed": "neimenovana oseba", + "pad.userlist.guest": "Gost", + "pad.userlist.deny": "Zavrni", + "pad.userlist.approve": "Odobri", + "pad.editbar.clearcolors": "Ali naj se poÄistijo barve avtorstva v celotnem dokumentu?", + "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.uploadFailed": "Nalaganje je spodletelo, 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." } \ No newline at end of file diff --git a/src/locales/sq.json b/src/locales/sq.json index 6ae81135b..0af02751a 100644 --- a/src/locales/sq.json +++ b/src/locales/sq.json @@ -1,115 +1,121 @@ { - "@metadata": { - "authors": [ - "Besnik b" - ] - }, - "index.newPad": "Bllok i Ri", - "index.createOpenPad": "ose krijoni\/hapni nj\u00eb Bllok me emrin:", - "pad.toolbar.bold.title": "T\u00eb trasha (Ctrl-B)", - "pad.toolbar.italic.title": "T\u00eb pjerr\u00ebta (Ctrl-I)", - "pad.toolbar.underline.title": "T\u00eb n\u00ebnvizuara (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Hequrvije", - "pad.toolbar.ol.title": "List\u00eb e renditur", - "pad.toolbar.ul.title": "List\u00eb e parenditur", - "pad.toolbar.indent.title": "Brendazi", - "pad.toolbar.unindent.title": "Jashtazi", - "pad.toolbar.undo.title": "Zhb\u00ebje (Ctrl-Z)", - "pad.toolbar.redo.title": "Rib\u00ebje (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Hiq Ngjyra Autor\u00ebsish", - "pad.toolbar.import_export.title": "Importoni\/Eksportoni nga\/n\u00eb formate t\u00eb tjera kartelash", - "pad.toolbar.timeslider.title": "Rrjedha kohore", - "pad.toolbar.savedRevision.title": "Rishikime t\u00eb Ruajtura", - "pad.toolbar.settings.title": "Rregullime", - "pad.toolbar.embed.title": "Trup\u00ebzojeni k\u00ebt\u00eb bllok", - "pad.toolbar.showusers.title": "Shfaq p\u00ebrdoruesit n\u00eb k\u00ebt\u00eb bllok", - "pad.colorpicker.save": "Ruaje", - "pad.colorpicker.cancel": "Anuloje", - "pad.loading": "Po ngarkohet...", - "pad.passwordRequired": "Ju duhet nj\u00eb fjal\u00ebkalim q\u00eb t\u00eb mund t\u00eb p\u00ebrdorni k\u00ebt\u00eb bllok", - "pad.permissionDenied": "Nuk keni leje t\u00eb hyni n\u00eb k\u00ebt\u00eb bllok", - "pad.wrongPassword": "Fjal\u00ebkalimi juaj qe gabim", - "pad.settings.padSettings": "Rregullime blloku", - "pad.settings.myView": "Pamja Ime", - "pad.settings.stickychat": "Fjalosje p\u00ebrher\u00eb n\u00eb ekran", - "pad.settings.colorcheck": "Ngjyra autor\u00ebsish", - "pad.settings.linenocheck": "Numra rreshtash", - "pad.settings.fontType": "Lloj shkronjash:", - "pad.settings.fontType.normal": "Normale", - "pad.settings.fontType.monospaced": "Monospace", - "pad.settings.globalView": "Pamje Globale", - "pad.settings.language": "Gjuh\u00eb:", - "pad.importExport.import_export": "Import\/Eksport", - "pad.importExport.import": "Ngarkoni cil\u00ebndo kartel\u00eb teksti ose dokument", - "pad.importExport.importSuccessful": "Me sukses!", - "pad.importExport.export": "Eksportojeni bllokun e tanish\u00ebm si:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Tekst t\u00eb thjesht\u00eb", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Mund t\u00eb importoni vet\u00ebm prej formati tekst i thjesht\u00eb ose html. P\u00ebr ve\u00e7ori m\u00eb t\u00eb p\u00ebrparuara importimi, ju lutemi, instaloni Abiword-in<\/a>.", - "pad.modals.connected": "I lidhur.", - "pad.modals.reconnecting": "Po rilidheni te blloku juaj..", - "pad.modals.forcereconnect": "Rilidhje e detyruar", - "pad.modals.userdup.explanation": "Ky bllok duket se gjendet i hapur n\u00eb m\u00eb shum\u00eb se nj\u00eb dritare shfletuesi n\u00eb k\u00ebt\u00eb kompjuter.", - "pad.modals.userdup.advice": "Rilidhu q\u00eb t\u00eb p\u00ebrdoret kjo dritare, m\u00eb mir\u00eb.", - "pad.modals.unauth": "I paautorizuar", - "pad.modals.unauth.explanation": "Nd\u00ebrkoh\u00eb q\u00eb shihnit k\u00ebt\u00eb dritare, lejet tuaja kan\u00eb ndryshuar. Provoni t\u00eb rilidheni.", - "pad.modals.looping": "I shk\u00ebputur.", - "pad.modals.looping.explanation": "Ka probleme komunikimi me sh\u00ebrbyesin e nj\u00ebkoh\u00ebsimit.", - "pad.modals.looping.cause": "Ndoshta jeni lidhur p\u00ebrmes nj\u00eb firewall-i ose nd\u00ebrmjet\u00ebsi t\u00eb pap\u00ebrputhsh\u00ebm.", - "pad.modals.initsocketfail": "Nuk kapet dot sh\u00ebrbyesi.", - "pad.modals.initsocketfail.explanation": "Nuk u lidh dot te sh\u00ebrbyesi i nj\u00ebkoh\u00ebsimit.", - "pad.modals.initsocketfail.cause": "Ka gjasa q\u00eb kjo vjen p\u00ebr shkak t\u00eb nj\u00eb problemi me shfletuesin tuaj ose lidhjen tuaj n\u00eb internet.", - "pad.modals.slowcommit": "I shk\u00ebputur.", - "pad.modals.slowcommit.explanation": "Sh\u00ebrbyesi nuk po p\u00ebrgjigjet.", - "pad.modals.slowcommit.cause": "Kjo mund t\u00eb vij\u00eb p\u00ebr shkak problemesh lidhjeje me rrjetin.", - "pad.modals.deleted": "I fshir\u00eb.", - "pad.modals.deleted.explanation": "Ky bllok \u00ebsht\u00eb hequr.", - "pad.modals.disconnected": "Jeni shk\u00ebputur.", - "pad.modals.disconnected.explanation": "U pre lidhja me sh\u00ebrbyesin", - "pad.modals.disconnected.cause": "Sh\u00ebrbyesi mund t\u00eb mos jet\u00eb n\u00eb pun\u00eb. Ju lutemi, na njoftoni, n\u00ebse kjo vazhdon t\u00eb ndodh\u00eb.", - "pad.share": "Ndajeni k\u00ebt\u00eb bllok me t\u00eb tjer\u00ebt", - "pad.share.readonly": "Vet\u00ebm p\u00ebr lexim", - "pad.share.link": "Lidhje", - "pad.share.emebdcode": "URL trup\u00ebzimi", - "pad.chat": "Fjalosje", - "pad.chat.title": "Hapni fjalosjen p\u00ebr k\u00ebt\u00eb bllok.", - "timeslider.pageTitle": "Rrjedh\u00eb kohore e {{appTitle}}", - "timeslider.toolbar.returnbutton": "Rikthehuni te blloku", - "timeslider.toolbar.authors": "Autor\u00eb:", - "timeslider.toolbar.authorsList": "Pa Autor\u00eb", - "timeslider.exportCurrent": "Eksportojeni versionin e tanish\u00ebm si:", - "timeslider.version": "Versioni {{version}}", - "timeslider.saved": "Ruajtur m\u00eb {{month}} {{day}}, {{year}}", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "Janar", - "timeslider.month.february": "Shkurt", - "timeslider.month.march": "Mars", - "timeslider.month.april": "Prill", - "timeslider.month.may": "Maj", - "timeslider.month.june": "Qershor", - "timeslider.month.july": "Korrik", - "timeslider.month.august": "Gusht", - "timeslider.month.september": "Shtator", - "timeslider.month.october": "Tetor", - "timeslider.month.november": "N\u00ebntor", - "timeslider.month.december": "Dhjetor", - "pad.savedrevs.marked": "Ky rishikim tani \u00ebsht\u00eb sh\u00ebnuar si rishikim i ruajtur", - "pad.userlist.entername": "Jepni emrin tuaj", - "pad.userlist.unnamed": "pa em\u00ebr", - "pad.userlist.guest": "Vizitor", - "pad.userlist.deny": "Mohoje", - "pad.userlist.approve": "Miratoje", - "pad.editbar.clearcolors": "T\u00eb hiqen ngjyra autor\u00ebsish n\u00eb krejt dokumentin?", - "pad.impexp.importbutton": "Importoje Tani", - "pad.impexp.importing": "Po importohet...", - "pad.impexp.confirmimport": "Importimi i nj\u00eb kartele do t\u00eb mbishkruaj\u00eb tekstin e tanish\u00ebm t\u00eb bllokut. Jeni i sigurt se doni t\u00eb vazhdohet?", - "pad.impexp.convertFailed": "Nuk qem\u00eb n\u00eb gjendje ta importonim k\u00ebt\u00eb kartel\u00eb. Ju lutemi, p\u00ebrdorni nj\u00eb format tjet\u00ebr dokumentesh ose kopjojeni dhe hidheni dorazi", - "pad.impexp.uploadFailed": "Ngarkimi d\u00ebshtoi, ju lutemi, riprovoni", - "pad.impexp.importfailed": "Importimi d\u00ebshtoi", - "pad.impexp.copypaste": "Ju lutemi, kopjojeni dhe ngjiteni", - "pad.impexp.exportdisabled": "Eksportimi n\u00eb formatin {{type}} \u00ebsht\u00eb i \u00e7aktivizuar. P\u00ebr holl\u00ebsi, ju lutemi, lidhuni me administratorin e sistemit." + "@metadata": { + "authors": [ + "Besnik b" + ] + }, + "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)", + "pad.toolbar.underline.title": "Të nënvizuara (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Hequrvije", + "pad.toolbar.ol.title": "Listë e renditur", + "pad.toolbar.ul.title": "Listë e parenditur", + "pad.toolbar.indent.title": "Brendazi", + "pad.toolbar.unindent.title": "Jashtazi", + "pad.toolbar.undo.title": "Zhbëje (Ctrl-Z)", + "pad.toolbar.redo.title": "Ribëje (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Hiq Ngjyra Autorësish", + "pad.toolbar.import_export.title": "Importoni/Eksportoni nga/në formate të tjera kartelash", + "pad.toolbar.timeslider.title": "Rrjedha kohore", + "pad.toolbar.savedRevision.title": "Ruaje Rishikin", + "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", + "pad.colorpicker.save": "Ruaje", + "pad.colorpicker.cancel": "Anuloje", + "pad.loading": "Po ngarkohet...", + "pad.passwordRequired": "Ju duhet një fjalëkalim që të mund të përdorni këtë bllok", + "pad.permissionDenied": "Nuk keni leje të hyni në këtë bllok", + "pad.wrongPassword": "Fjalëkalimi juaj qe gabim", + "pad.settings.padSettings": "Rregullime blloku", + "pad.settings.myView": "Pamja Ime", + "pad.settings.stickychat": "Fjalosje përherë në ekran", + "pad.settings.colorcheck": "Ngjyra autorësish", + "pad.settings.linenocheck": "Numra rreshtash", + "pad.settings.rtlcheck": "Të lexohet lënda nga e djathta në të majtë?", + "pad.settings.fontType": "Lloj shkronjash:", + "pad.settings.fontType.normal": "Normale", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Pamje Globale", + "pad.settings.language": "Gjuhë:", + "pad.importExport.import_export": "Import/Eksport", + "pad.importExport.import": "Ngarkoni cilëndo kartelë teksti ose dokument", + "pad.importExport.importSuccessful": "Me sukses!", + "pad.importExport.export": "Eksportojeni bllokun e tanishëm si:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Tekst të thjeshtë", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Mund të importoni vetëm prej formati tekst i thjeshtë ose html. Për veçori më të përparuara importimi, ju lutemi, \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstaloni Abiword-in\u003C/a\u003E.", + "pad.modals.connected": "I lidhur.", + "pad.modals.reconnecting": "Po rilidheni te blloku juaj..", + "pad.modals.forcereconnect": "Rilidhje e detyruar", + "pad.modals.userdup": "Hapur në një tjetër dritare", + "pad.modals.userdup.explanation": "Ky bllok duket se gjendet i hapur në më shumë se një dritare shfletuesi në këtë kompjuter.", + "pad.modals.userdup.advice": "Rilidhu që të përdoret kjo dritare, më mirë.", + "pad.modals.unauth": "I paautorizuar", + "pad.modals.unauth.explanation": "Ndërkohë që shihnit këtë dritare, lejet tuaja kanë ndryshuar. Provoni të rilidheni.", + "pad.modals.looping.explanation": "Ka probleme komunikimi me shërbyesin e njëkohësimit.", + "pad.modals.looping.cause": "Ndoshta jeni lidhur përmes një firewall-i ose ndërmjetësi të papërputhshëm.", + "pad.modals.initsocketfail": "Nuk kapet dot shërbyesi.", + "pad.modals.initsocketfail.explanation": "Nuk u lidh dot te shërbyesi i njëkohësimit.", + "pad.modals.initsocketfail.cause": "Ka gjasa që kjo vjen për shkak të një problemi me shfletuesin tuaj ose lidhjen tuaj në internet.", + "pad.modals.slowcommit.explanation": "Shërbyesi nuk po përgjigjet.", + "pad.modals.slowcommit.cause": "Kjo mund të vijë për shkak problemesh lidhjeje me rrjetin.", + "pad.modals.badChangeset.explanation": "Një përpunim që keni bërë u shpall i paligjshëm nga shërbyesu i njëkohësimit.", + "pad.modals.badChangeset.cause": "Kjo mund të jetë për shkak të një formësimi të gabuar të shërbyesit ose ndonjë tjetër sjelljeje të papritur. Ju lutemi, lidhuni me përgjegjësin e shërbimit, nëse mendoni që ky është një gabim. Provoni të rilidheni që të vazhdoni përpunimin.", + "pad.modals.corruptPad.explanation": "Blloku te i cili po përpiqeni të hyni është i dëmtuar.", + "pad.modals.corruptPad.cause": "Kjo mund të vijë nga një formësim i gabuar shërbyesi ose ndonjë tjetër sjellje e papritur. Ju lutemi, lidhuni me përgjegjësin e shërbimit.", + "pad.modals.deleted": "I fshirë.", + "pad.modals.deleted.explanation": "Ky bllok është hequr.", + "pad.modals.disconnected": "Jeni shkëputur.", + "pad.modals.disconnected.explanation": "U pre lidhja me shërbyesin", + "pad.modals.disconnected.cause": "Shërbyesi mund të mos jetë në punë. Ju lutemi, njoftoni përgjegjësin e shërbimit, nëse kjo vazhdon të ndodhë.", + "pad.share": "Ndajeni këtë bllok me të tjerët", + "pad.share.readonly": "Vetëm për lexim", + "pad.share.link": "Lidhje", + "pad.share.emebdcode": "URL trupëzimi", + "pad.chat": "Fjalosje", + "pad.chat.title": "Hapni fjalosjen për këtë bllok.", + "pad.chat.loadmessages": "Ngarko më tepër mesazhe", + "timeslider.pageTitle": "Rrjedhë kohore e {{appTitle}}", + "timeslider.toolbar.returnbutton": "Rikthehuni te blloku", + "timeslider.toolbar.authors": "Autorë:", + "timeslider.toolbar.authorsList": "Pa Autorë", + "timeslider.toolbar.exportlink.title": "Eksportoni", + "timeslider.exportCurrent": "Eksportojeni versionin e tanishëm si:", + "timeslider.version": "Versioni {{version}}", + "timeslider.saved": "Ruajtur më {{month}} {{day}}, {{year}}", + "timeslider.dateformat": "{{month}}/{{day}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Janar", + "timeslider.month.february": "Shkurt", + "timeslider.month.march": "Mars", + "timeslider.month.april": "Prill", + "timeslider.month.may": "Maj", + "timeslider.month.june": "Qershor", + "timeslider.month.july": "Korrik", + "timeslider.month.august": "Gusht", + "timeslider.month.september": "Shtator", + "timeslider.month.october": "Tetor", + "timeslider.month.november": "Nëntor", + "timeslider.month.december": "Dhjetor", + "pad.savedrevs.marked": "Ky rishikim tani është shënuar si rishikim i ruajtur", + "pad.userlist.entername": "Jepni emrin tuaj", + "pad.userlist.unnamed": "pa emër", + "pad.userlist.guest": "Vizitor", + "pad.userlist.deny": "Mohoje", + "pad.userlist.approve": "Miratoje", + "pad.editbar.clearcolors": "Të hiqen ngjyra autorësish në krejt dokumentin?", + "pad.impexp.importbutton": "Importoje Tani", + "pad.impexp.importing": "Po importohet...", + "pad.impexp.confirmimport": "Importimi i një kartele do të mbishkruajë tekstin e tanishëm të bllokut. Jeni i sigurt se doni të vazhdohet?", + "pad.impexp.convertFailed": "Nuk qemë në gjendje ta importonim këtë kartelë. Ju lutemi, përdorni një format tjetër dokumentesh ose kopjojeni dhe hidheni dorazi", + "pad.impexp.uploadFailed": "Ngarkimi dështoi, ju lutemi, riprovoni", + "pad.impexp.importfailed": "Importimi dështoi", + "pad.impexp.copypaste": "Ju lutemi, kopjojeni dhe ngjiteni", + "pad.impexp.exportdisabled": "Eksportimi në formatin {{type}} është i çaktivizuar. Për hollësi, ju lutemi, lidhuni me administratorin e sistemit." } \ No newline at end of file diff --git a/src/locales/sv.json b/src/locales/sv.json index 8c6c2d86e..e0b9e69ae 100644 --- a/src/locales/sv.json +++ b/src/locales/sv.json @@ -1,120 +1,123 @@ { - "@metadata": { - "authors": { - "1": "WikiPhoenix" - } - }, - "index.newPad": "Nytt block", - "index.createOpenPad": "eller skapa\/\u00f6ppna ett block med namnet:", - "pad.toolbar.bold.title": "Fet (Ctrl-B)", - "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", - "pad.toolbar.underline.title": "Understruken (Ctrl-U)", - "pad.toolbar.strikethrough.title": "Genomstruken", - "pad.toolbar.ol.title": "Numrerad lista", - "pad.toolbar.ul.title": "Ta bort numrerad lista", - "pad.toolbar.indent.title": "\u00d6ka indrag", - "pad.toolbar.unindent.title": "Minska indrag", - "pad.toolbar.undo.title": "\u00c5ngra (Ctrl-Z)", - "pad.toolbar.redo.title": "G\u00f6r om (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "Rensa f\u00f6rfattarf\u00e4rger", - "pad.toolbar.import_export.title": "Importera\/exportera fr\u00e5n\/till olika filformat", - "pad.toolbar.timeslider.title": "Tidsreglage", - "pad.toolbar.savedRevision.title": "Sparade revisioner", - "pad.toolbar.settings.title": "Inst\u00e4llningar", - "pad.toolbar.embed.title": "B\u00e4dda in detta block", - "pad.toolbar.showusers.title": "Visa anv\u00e4ndarna p\u00e5 detta block", - "pad.colorpicker.save": "Spara", - "pad.colorpicker.cancel": "Avbryt", - "pad.loading": "L\u00e4ser in...", - "pad.passwordRequired": "Du beh\u00f6ver ett l\u00f6senord f\u00f6r att f\u00e5 tillg\u00e5ng till detta block", - "pad.permissionDenied": "Du har inte beh\u00f6righet att f\u00e5 tillg\u00e5ng till detta block", - "pad.wrongPassword": "Ditt l\u00f6senord \u00e4r fel", - "pad.settings.padSettings": "Blockinst\u00e4llningar", - "pad.settings.myView": "Min vy", - "pad.settings.stickychat": "Chatten alltid p\u00e5 sk\u00e4rmen", - "pad.settings.colorcheck": "F\u00f6rfattarskapsf\u00e4rger", - "pad.settings.linenocheck": "Radnummer", - "pad.settings.fontType": "Typsnitt:", - "pad.settings.fontType.normal": "Normal", - "pad.settings.fontType.monospaced": "Fast breddsteg", - "pad.settings.globalView": "Global vy", - "pad.settings.language": "Spr\u00e5k:", - "pad.importExport.import_export": "Importera\/exportera", - "pad.importExport.import": "Ladda upp en textfil eller dokument", - "pad.importExport.importSuccessful": "\u00c5tg\u00e4rden slutf\u00f6rdes!", - "pad.importExport.export": "Export aktuellt block som:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "Oformaterad text", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (Open Document Format)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "Du kan endast importera fr\u00e5n oformaterad text eller html-format. F\u00f6r mer avancerade importeringsfunktioner, var god installera abiword<\/a>.", - "pad.modals.connected": "Ansluten.", - "pad.modals.reconnecting": "\u00c5teransluter till ditt block...", - "pad.modals.forcereconnect": "Tvinga \u00e5teranslutning", - "pad.modals.userdup": "\u00d6ppnades i ett nytt f\u00f6nster", - "pad.modals.userdup.explanation": "Detta block verkar vara \u00f6ppet i mer \u00e4n ett f\u00f6nster p\u00e5 denna dator.", - "pad.modals.userdup.advice": "\u00c5teranslut f\u00f6r att anv\u00e4nda detta f\u00f6nster ist\u00e4llet.", - "pad.modals.unauth": "Inte godk\u00e4nd", - "pad.modals.unauth.explanation": "Din beh\u00f6righet \u00e4ndrades medan du visar denna sida. F\u00f6rs\u00f6k att \u00e5teransluta.", - "pad.modals.looping": "Fr\u00e5nkopplad.", - "pad.modals.looping.explanation": "Kommunikationsproblem med synkroniseringsservern har uppst\u00e5tt.", - "pad.modals.looping.cause": "Kanske du \u00e4r ansluten via en inkompatibel brandv\u00e4gg eller proxy.", - "pad.modals.initsocketfail": "Servern inte kan n\u00e5s.", - "pad.modals.initsocketfail.explanation": "Det gick inte att ansluta till synkroniseringsservern.", - "pad.modals.initsocketfail.cause": "Detta \u00e4r beror troligen p\u00e5 ett problem med din webbl\u00e4sare eller din internetanslutning.", - "pad.modals.slowcommit": "Fr\u00e5nkopplad.", - "pad.modals.slowcommit.explanation": "Servern svarar inte.", - "pad.modals.slowcommit.cause": "Detta kan bero p\u00e5 problem med n\u00e4tverksanslutningen.", - "pad.modals.deleted": "Raderad.", - "pad.modals.deleted.explanation": "Detta block har tagits bort.", - "pad.modals.disconnected": "Du har kopplats fr\u00e5n.", - "pad.modals.disconnected.explanation": "Anslutningen till servern avbr\u00f6ts", - "pad.modals.disconnected.cause": "Servern kanske inte \u00e4r tillg\u00e4nglig. Var god meddela oss om detta forts\u00e4tter att h\u00e4nda.", - "pad.share": "Dela detta block", - "pad.share.readonly": "Skrivskyddad", - "pad.share.link": "L\u00e4nk", - "pad.share.emebdcode": "B\u00e4dda in URL", - "pad.chat": "Chatt", - "pad.chat.title": "\u00d6ppna chatten f\u00f6r detta block.", - "pad.chat.loadmessages": "L\u00e4s in fler meddelanden", - "timeslider.pageTitle": "Tidsreglage f\u00f6r {{appTitle}}", - "timeslider.toolbar.returnbutton": "\u00c5terv\u00e4nd till blocket", - "timeslider.toolbar.authors": "F\u00f6rfattare:", - "timeslider.toolbar.authorsList": "Ingen f\u00f6rfattare", - "timeslider.toolbar.exportlink.title": "Exportera", - "timeslider.exportCurrent": "Exportera aktuell version som:", - "timeslider.version": "Version {{version}}", - "timeslider.saved": "Sparades den {{day}} {{month}} {{year}}", - "timeslider.dateformat": "{{day}}\/{{month}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "januari", - "timeslider.month.february": "februari", - "timeslider.month.march": "mars", - "timeslider.month.april": "april", - "timeslider.month.may": "maj", - "timeslider.month.june": "juni", - "timeslider.month.july": "juli", - "timeslider.month.august": "augusti", - "timeslider.month.september": "september", - "timeslider.month.october": "oktober", - "timeslider.month.november": "november", - "timeslider.month.december": "december", - "timeslider.unnamedauthor": "{{num}} namnl\u00f6s f\u00f6rfattare", - "timeslider.unnamedauthors": "{{num}} namnl\u00f6sa f\u00f6rfattare", - "pad.savedrevs.marked": "Denna revision \u00e4r nu markerad som en sparad revision", - "pad.userlist.entername": "Ange ditt namn", - "pad.userlist.unnamed": "namnl\u00f6s", - "pad.userlist.guest": "G\u00e4st", - "pad.userlist.deny": "Neka", - "pad.userlist.approve": "Godk\u00e4nn", - "pad.editbar.clearcolors": "Rensa f\u00f6rfattarf\u00e4rger p\u00e5 hela dokumentet?", - "pad.impexp.importbutton": "Importera nu", - "pad.impexp.importing": "Importerar...", - "pad.impexp.confirmimport": "Att importera en fil kommer att skriva \u00f6ver den aktuella texten i blocket. \u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta?", - "pad.impexp.convertFailed": "Vi kunde inte importera denna fil. Var god anv\u00e4nd ett annat dokumentformat eller kopiera och klistra in den manuellt", - "pad.impexp.uploadFailed": "Uppladdningen misslyckades, var god f\u00f6rs\u00f6k igen", - "pad.impexp.importfailed": "Importering misslyckades", - "pad.impexp.copypaste": "Var god kopiera och klistra in", - "pad.impexp.exportdisabled": "Exportering av formatet {{type}} \u00e4r inaktiverad. Var god kontakta din systemadministrat\u00f6r f\u00f6r mer information." + "@metadata": { + "authors": { + "0": "Lokal Profil", + "2": "WikiPhoenix" + } + }, + "index.newPad": "Nytt block", + "index.createOpenPad": "eller skapa/öppna ett block med namnet:", + "pad.toolbar.bold.title": "Fet (Ctrl-B)", + "pad.toolbar.italic.title": "Kursiv (Ctrl-I)", + "pad.toolbar.underline.title": "Understruken (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Genomstruken", + "pad.toolbar.ol.title": "Numrerad lista", + "pad.toolbar.ul.title": "Ta bort numrerad lista", + "pad.toolbar.indent.title": "Öka indrag (TABB)", + "pad.toolbar.unindent.title": "Minska indrag (Shift+TABB)", + "pad.toolbar.undo.title": "Ã…ngra (Ctrl-Z)", + "pad.toolbar.redo.title": "Gör om (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Rensa författarfärger", + "pad.toolbar.import_export.title": "Importera/exportera frÃ¥n/till olika filformat", + "pad.toolbar.timeslider.title": "Tidsreglage", + "pad.toolbar.savedRevision.title": "Spara revision", + "pad.toolbar.settings.title": "Inställningar", + "pad.toolbar.embed.title": "Dela och bädda in detta block", + "pad.toolbar.showusers.title": "Visa användarna pÃ¥ detta block", + "pad.colorpicker.save": "Spara", + "pad.colorpicker.cancel": "Avbryt", + "pad.loading": "Läser in...", + "pad.passwordRequired": "Du behöver ett lösenord för att fÃ¥ tillgÃ¥ng till detta block", + "pad.permissionDenied": "Du har inte behörighet att fÃ¥ tillgÃ¥ng till detta block", + "pad.wrongPassword": "Ditt lösenord var fel", + "pad.settings.padSettings": "Blockinställningar", + "pad.settings.myView": "Min vy", + "pad.settings.stickychat": "Chatten alltid pÃ¥ skärmen", + "pad.settings.colorcheck": "Författarskapsfärger", + "pad.settings.linenocheck": "Radnummer", + "pad.settings.rtlcheck": "Vill du läsa innehÃ¥llet frÃ¥n höger till vänster?", + "pad.settings.fontType": "Typsnitt:", + "pad.settings.fontType.normal": "Normal", + "pad.settings.fontType.monospaced": "Fast breddsteg", + "pad.settings.globalView": "Global vy", + "pad.settings.language": "SprÃ¥k:", + "pad.importExport.import_export": "Importera/Exportera", + "pad.importExport.import": "Ladda upp en textfil eller dokument", + "pad.importExport.importSuccessful": "Ã…tgärden slutfördes!", + "pad.importExport.export": "Export aktuellt block som:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Oformaterad text", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Open Document Format)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Du kan endast importera frÃ¥n oformaterad text eller html-format. För mer avancerade importeringsfunktioner, var god \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Einstallera abiword\u003C/a\u003E.", + "pad.modals.connected": "Ansluten.", + "pad.modals.reconnecting": "Ã…teransluter till ditt block...", + "pad.modals.forcereconnect": "Tvinga Ã¥teranslutning", + "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.", + "pad.modals.unauth": "Inte godkänd", + "pad.modals.unauth.explanation": "Din behörighet ändrades medan du visar denna sida. Försök att Ã¥teransluta.", + "pad.modals.looping.explanation": "Kommunikationsproblem med synkroniseringsservern har uppstÃ¥tt.", + "pad.modals.looping.cause": "Kanske du är ansluten via en inkompatibel brandvägg eller proxy.", + "pad.modals.initsocketfail": "Servern inte kan nÃ¥s.", + "pad.modals.initsocketfail.explanation": "Det gick inte att ansluta till synkroniseringsservern.", + "pad.modals.initsocketfail.cause": "Detta är beror troligen pÃ¥ ett problem med din webbläsare eller din internetanslutning.", + "pad.modals.slowcommit.explanation": "Servern svarar inte.", + "pad.modals.slowcommit.cause": "Detta kan bero pÃ¥ problem med nätverksanslutningen.", + "pad.modals.badChangeset.explanation": "En redigering som du gjorde klassificerades som ogiltig av synkroniseringsservern.", + "pad.modals.badChangeset.cause": "Detta kan bero pÃ¥ en felaktig konfiguration av servern eller nÃ¥got annat oväntad beteende. Var god kontakta tjänstadministratören om du anser att detta är ett fel. Försök ansluta igen för att fortsätta redigera.", + "pad.modals.corruptPad.explanation": "Blocket du försöker komma Ã¥t är skadat.", + "pad.modals.corruptPad.cause": "Detta kan bero pÃ¥ en felaktig konfiguration av servern eller nÃ¥got annat oväntad beteende. Var god kontakta tjänstadministratören.", + "pad.modals.deleted": "Raderad.", + "pad.modals.deleted.explanation": "Detta block har tagits bort.", + "pad.modals.disconnected": "Du har kopplats frÃ¥n.", + "pad.modals.disconnected.explanation": "Anslutningen till servern avbröts", + "pad.modals.disconnected.cause": "Servern kanske är otillgänglig. Var god meddela tjänstadministratören om detta fortsätter att hända.", + "pad.share": "Dela detta block", + "pad.share.readonly": "Skrivskyddad", + "pad.share.link": "Länk", + "pad.share.emebdcode": "Bädda in URL", + "pad.chat": "Chatt", + "pad.chat.title": "Öppna chatten för detta block.", + "pad.chat.loadmessages": "Läs in fler meddelanden", + "timeslider.pageTitle": "Tidsreglage för {{appTitle}}", + "timeslider.toolbar.returnbutton": "Ã…tervänd till blocket", + "timeslider.toolbar.authors": "Författare:", + "timeslider.toolbar.authorsList": "Inga författare", + "timeslider.toolbar.exportlink.title": "Exportera", + "timeslider.exportCurrent": "Exportera aktuell version som:", + "timeslider.version": "Version {{version}}", + "timeslider.saved": "Sparades den {{day}} {{month}} {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "januari", + "timeslider.month.february": "februari", + "timeslider.month.march": "mars", + "timeslider.month.april": "april", + "timeslider.month.may": "maj", + "timeslider.month.june": "juni", + "timeslider.month.july": "juli", + "timeslider.month.august": "augusti", + "timeslider.month.september": "september", + "timeslider.month.october": "oktober", + "timeslider.month.november": "november", + "timeslider.month.december": "december", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: namnlös författare, other: namnlösa författare]}", + "pad.savedrevs.marked": "Denna revision är nu markerad som en sparad revision", + "pad.userlist.entername": "Ange ditt namn", + "pad.userlist.unnamed": "namnlös", + "pad.userlist.guest": "Gäst", + "pad.userlist.deny": "Neka", + "pad.userlist.approve": "Godkänn", + "pad.editbar.clearcolors": "Rensa författarfärger pÃ¥ hela dokumentet?", + "pad.impexp.importbutton": "Importera nu", + "pad.impexp.importing": "Importerar...", + "pad.impexp.confirmimport": "Att importera en fil kommer att skriva över den aktuella texten i blocket. Är du säker pÃ¥ att du vill fortsätta?", + "pad.impexp.convertFailed": "Vi kunde inte importera denna fil. Var god använd ett annat dokumentformat eller kopiera och klistra in den manuellt", + "pad.impexp.uploadFailed": "Uppladdningen misslyckades, var god försök igen", + "pad.impexp.importfailed": "Importering misslyckades", + "pad.impexp.copypaste": "Var god kopiera och klistra in", + "pad.impexp.exportdisabled": "Exportering av formatet {{type}} är inaktiverad. Var god kontakta din systemadministratör för mer information." } \ No newline at end of file diff --git a/src/locales/te.json b/src/locales/te.json index 7e18b7a43..2f4372bc6 100644 --- a/src/locales/te.json +++ b/src/locales/te.json @@ -1,81 +1,81 @@ { - "@metadata": { - "authors": { - "0": "JVRKPRASAD", - "1": "Malkum", - "3": "Veeven" - } - }, - "index.newPad": "\u0c15\u0c4a\u0c24\u0c4d\u0c24 \u0c2a\u0c32\u0c15", - "index.createOpenPad": "\u0c12\u0c15 \u0c2a\u0c47\u0c30\u0c41\u0c24\u0c4b \u0c2a\u0c32\u0c15\u0c28\u0c3f \u0c38\u0c43\u0c37\u0c4d\u0c1f\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f \u0c32\u0c47\u0c26\u0c3e \u0c05\u0c26\u0c47 \u0c2a\u0c47\u0c30\u0c41\u0c24\u0c4b \u0c09\u0c28\u0c4d\u0c28 \u0c2a\u0c32\u0c15\u0c28\u0c3f \u0c24\u0c46\u0c30\u0c35\u0c02\u0c21\u0c3f", - "pad.toolbar.bold.title": "\u0c2e\u0c02\u0c26\u0c02", - "pad.toolbar.italic.title": "\u0c35\u0c3e\u0c32\u0c41 \u0c05\u0c15\u0c4d\u0c37\u0c30\u0c3e\u0c32\u0c41", - "pad.toolbar.underline.title": "\u0c15\u0c4d\u0c30\u0c3f\u0c02\u0c26\u0c17\u0c40\u0c24", - "pad.toolbar.strikethrough.title": "\u0c15\u0c4a\u0c1f\u0c4d\u0c1f\u0c3f\u0c35\u0c47\u0c24", - "pad.toolbar.ol.title": "\u0c28\u0c3f\u0c30\u0c4d\u0c27\u0c47\u0c36\u0c3f\u0c02\u0c2a\u0c2c\u0c21\u0c3f\u0c28 \u0c1c\u0c3e\u0c2c\u0c3f\u0c24\u0c3e", - "pad.toolbar.ul.title": "\u0c05\u0c28\u0c3f\u0c30\u0c4d\u0c26\u0c47\u0c36\u0c3f\u0c24 \u0c1c\u0c3e\u0c2c\u0c3f\u0c24\u0c3e, ( \u0c15\u0c4d\u0c30\u0c2e\u0c2a\u0c26\u0c4d\u0c27\u0c24\u0c3f \u0c32\u0c47\u0c28\u0c3f \u0c1c\u0c3e\u0c2c\u0c3f\u0c24\u0c3e )", - "pad.toolbar.undo.title": "\u0c1a\u0c47\u0c2f\u0c35\u0c26\u0c4d\u0c26\u0c41", - "pad.toolbar.redo.title": "\u0c24\u0c3f\u0c30\u0c3f\u0c17\u0c3f\u0c1a\u0c46\u0c2f\u0c4d\u0c2f\u0c3f", - "pad.toolbar.clearAuthorship.title": "\u0c2e\u0c42\u0c32\u0c15\u0c30\u0c4d\u0c24\u0c2a\u0c41 \u0c35\u0c30\u0c4d\u0c23\u0c3e\u0c32\u0c28\u0c41 \u0c24\u0c40\u0c38\u0c3f\u0c35\u0c47\u0c2f\u0c02\u0c21\u0c3f", - "pad.toolbar.import_export.title": "\u0c2d\u0c3f\u0c28\u0c4d\u0c28\u0c2e\u0c48\u0c28 \u0c30\u0c42\u0c2a\u0c32\u0c3e\u0c35\u0c28\u0c4d\u0c2f\u0c3e\u0c32\u0c28\u0c41 \u0c2c\u0c2f\u0c1f \u0c28\u0c41\u0c02\u0c21\u0c3f \u0c26\u0c3f\u0c17\u0c41\u0c2e\u0c24\u0c3f \u0c32\u0c47\u0c26\u0c3e \u0c2c\u0c2f\u0c1f\u0c15\u0c41 \u0c0e\u0c17\u0c41\u0c2e\u0c24\u0c3f \u0c1a\u0c47\u0c2f\u0c02\u0c21\u0c3f", - "pad.toolbar.timeslider.title": "\u0c2a\u0c28\u0c3f\u0c38\u0c2e\u0c2f \u0c38\u0c42\u0c1a\u0c3f\u0c15 \u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c02", - "pad.toolbar.savedRevision.title": "\u0c26\u0c3e\u0c1a\u0c3f\u0c28 \u0c2a\u0c41\u0c28\u0c30\u0c41\u0c1a\u0c4d\u0c1a\u0c30\u0c23\u0c32\u0c41", - "pad.toolbar.settings.title": "\u0c05\u0c2e\u0c30\u0c3f\u0c15\u0c32\u0c41", - "pad.toolbar.embed.title": "\u0c08 \u0c2a\u0c32\u0c15\u0c28\u0c3f \u0c2a\u0c4a\u0c26\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", - "pad.toolbar.showusers.title": "\u0c08 \u0c2a\u0c32\u0c15 \u0c2f\u0c4a\u0c15\u0c4d\u0c15 \u0c35\u0c3f\u0c28\u0c3f\u0c2f\u0c4b\u0c17\u0c26\u0c3e\u0c30\u0c41\u0c32\u0c28\u0c41 \u0c1a\u0c42\u0c2a\u0c3f\u0c02\u0c1a\u0c41", - "pad.colorpicker.save": "\u0c2d\u0c26\u0c4d\u0c30\u0c2a\u0c30\u0c1a\u0c41", - "pad.colorpicker.cancel": "\u0c30\u0c26\u0c4d\u0c26\u0c41\u0c1a\u0c47\u0c2f\u0c3f", - "pad.loading": "\u0c32\u0c4b\u0c21\u0c35\u0c41\u0c24\u0c4b\u0c02\u0c26\u0c3f...", - "pad.settings.padSettings": "\u0c2a\u0c32\u0c15 \u0c05\u0c2e\u0c30\u0c3f\u0c15\u0c32\u0c41", - "pad.settings.myView": "\u0c28\u0c3e \u0c09\u0c26\u0c4d\u0c26\u0c47\u0c36\u0c4d\u0c2f\u0c2e\u0c41", - "pad.settings.stickychat": "\u0c24\u0c46\u0c30\u0c2a\u0c48\u0c28\u0c47 \u0c2e\u0c3e\u0c1f\u0c3e\u0c2e\u0c02\u0c24\u0c3f\u0c28\u0c3f \u0c0e\u0c32\u0c4d\u0c32\u0c2a\u0c41\u0c21\u0c41 \u0c1a\u0c47\u0c2f\u0c41\u0c2e\u0c41", - "pad.settings.colorcheck": "\u0c30\u0c1a\u0c2f\u0c3f\u0c24\u0c32\u0c15\u0c41 \u0c30\u0c02\u0c17\u0c41\u0c32\u0c41", - "pad.settings.linenocheck": "\u0c35\u0c30\u0c41\u0c38 \u0c38\u0c02\u0c16\u0c4d\u0c2f\u0c32\u0c41", - "pad.settings.fontType": "\u0c05\u0c15\u0c4d\u0c37\u0c30\u0c36\u0c48\u0c32\u0c3f \u0c30\u0c15\u0c02:", - "pad.settings.fontType.normal": "\u0c38\u0c3e\u0c27\u0c3e\u0c30\u0c23", - "pad.settings.fontType.monospaced": "\u0c2e\u0c4b\u0c28\u0c4b\u0c38\u0c4d\u0c2a\u0c47\u0c38\u0c4d", - "pad.settings.globalView": "\u0c2c\u0c2f\u0c1f\u0c15\u0c3f \u0c26\u0c30\u0c4d\u0c36\u0c28\u0c02", - "pad.settings.language": "\u0c2d\u0c3e\u0c37", - "pad.importExport.import_export": "\u0c26\u0c3f\u0c17\u0c41\u0c2e\u0c24\u0c3f\/\u0c0e\u0c17\u0c41\u0c2e\u0c24\u0c3f", - "pad.importExport.import": "\u0c2a\u0c3e\u0c20\u0c2e\u0c41 \u0c26\u0c38\u0c4d\u0c24\u0c4d\u0c30\u0c2e\u0c41 \u0c32\u0c47\u0c26\u0c3e \u0c2a\u0c24\u0c4d\u0c30\u0c2e\u0c41\u0c28\u0c41 \u0c26\u0c3f\u0c17\u0c41\u0c2e\u0c24\u0c3f \u0c1a\u0c47\u0c2f\u0c41\u0c2e\u0c41", - "pad.importExport.export": "\u0c2a\u0c4d\u0c30\u0c38\u0c4d\u0c24\u0c41\u0c24 \u0c2a\u0c32\u0c15\u0c28\u0c3f \u0c08 \u0c35\u0c3f\u0c27\u0c2e\u0c41\u0c17\u0c3e \u0c0e\u0c17\u0c41\u0c2e\u0c24\u0c3f \u0c1a\u0c47\u0c2f\u0c41\u0c2e\u0c41:", - "pad.importExport.exporthtml": "\u0c39\u0c46\u0c1a\u0c4d \u0c1f\u0c3f \u0c0e\u0c02 \u0c0e\u0c32\u0c4d", - "pad.importExport.exportplain": "\u0c38\u0c3e\u0c26\u0c3e \u0c2a\u0c3e\u0c20\u0c4d\u0c2f\u0c02", - "pad.importExport.exportword": "\u0c2e\u0c48\u0c15\u0c4d\u0c30\u0c4b\u0c38\u0c3e\u0c2b\u0c4d\u0c1f\u0c4d \u0c35\u0c30\u0c4d\u0c21\u0c4d", - "pad.importExport.exportpdf": "\u0c2a\u0c40 \u0c21\u0c3f \u0c0e\u0c2b\u0c4d", - "pad.importExport.exportopen": "\u0c13 \u0c21\u0c3f \u0c0e\u0c2b\u0c4d (\u0c13\u0c2a\u0c46\u0c28\u0c4d \u0c21\u0c3e\u0c15\u0c4d\u0c2f\u0c41\u0c2e\u0c46\u0c02\u0c1f\u0c4d \u0c2b\u0c3e\u0c30\u0c4d\u0c2e\u0c3e\u0c1f\u0c4d)", - "pad.importExport.exportdokuwiki": "\u0c21\u0c3e\u0c15\u0c4d\u0c2f\u0c41\u0c35\u0c3f\u0c15\u0c3f", - "pad.modals.connected": "\u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c41\u0c26\u0c3f\u0c30\u0c3f\u0c02\u0c26\u0c3f.", - "pad.modals.reconnecting": "\u0c2e\u0c40 \u0c2a\u0c32\u0c15\u0c15\u0c41 \u0c2e\u0c30\u0c32 \u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c32\u0c41\u0c2a\u0c41\u0c24\u0c41\u0c02\u0c26\u0c3f...", - "pad.modals.forcereconnect": "\u0c2c\u0c32\u0c35\u0c02\u0c24\u0c02\u0c17\u0c3e\u0c28\u0c48\u0c28\u0c3e \u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c41\u0c26\u0c3f\u0c30\u0c3f\u0c02\u0c1a\u0c41", - "pad.modals.userdup.explanation": "\u0c08 \u0c2a\u0c32\u0c15, \u0c08 \u0c15\u0c02\u0c2a\u0c4d\u0c2f\u0c42\u0c1f\u0c30\u0c4d\u0c32\u0c4b \u0c12\u0c15\u0c1f\u0c3f\u0c15\u0c28\u0c4d\u0c28 \u0c0e\u0c15\u0c4d\u0c15\u0c41\u0c35 \u0c17\u0c35\u0c3e\u0c15\u0c4d\u0c37\u0c2e\u0c41\u0c32\u0c32\u0c4b \u0c24\u0c46\u0c30\u0c41\u0c1a\u0c41\u0c15\u0c41\u0c28\u0c4d\u0c28\u0c1f\u0c4d\u0c32\u0c41 \u0c05\u0c28\u0c3f\u0c2a\u0c3f\u0c38\u0c4d\u0c24\u0c41\u0c02\u0c26\u0c3f.", - "pad.modals.userdup.advice": "\u0c2c\u0c26\u0c41\u0c32\u0c41\u0c17\u0c3e \u0c08 \u0c17\u0c35\u0c3e\u0c15\u0c4d\u0c37\u0c2e\u0c41\u0c28\u0c41 \u0c35\u0c3e\u0c21\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2e\u0c30\u0c32 \u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c32\u0c2a\u0c02\u0c21\u0c3f", - "pad.modals.unauth": "\u0c05\u0c27\u0c3f\u0c15\u0c3e\u0c30\u0c02 \u0c32\u0c47\u0c26\u0c41", - "pad.modals.unauth.explanation": "\u0c2e\u0c40\u0c30\u0c41 \u0c08 \u0c2a\u0c41\u0c1f\u0c28\u0c41 \u0c1a\u0c42\u0c38\u0c4d\u0c24\u0c42\u0c28\u0c4d\u0c28\u0c2a\u0c4d\u0c2a\u0c41\u0c21\u0c41 \u0c2e\u0c40 \u0c05\u0c28\u0c41\u0c2e\u0c24\u0c41\u0c32\u0c41 \u0c2e\u0c3e\u0c30\u0c3e\u0c2f\u0c3f. \u0c2e\u0c30\u0c32 \u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c32\u0c2a\u0c21\u0c3e\u0c28\u0c3f\u0c15\u0c3f \u0c2a\u0c4d\u0c30\u0c2f\u0c24\u0c4d\u0c28\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f.", - "pad.modals.looping": "\u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c4b\u0c32\u0c4d\u0c2a\u0c4b\u0c2f\u0c3f\u0c02\u0c26\u0c3f.", - "pad.modals.slowcommit": "\u0c38\u0c02\u0c2c\u0c02\u0c27\u0c02 \u0c15\u0c4b\u0c32\u0c4d\u0c2a\u0c4b\u0c2f\u0c3f\u0c02\u0c26\u0c3f.", - "pad.modals.deleted": "\u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c2c\u0c21\u0c3f\u0c02\u0c26\u0c3f ( \u0c24\u0c4a\u0c32\u0c17\u0c3f\u0c02\u0c1a\u0c3f\u0c28\u0c26\u0c3f )", - "pad.share": "\u0c08 \u0c2a\u0c32\u0c15\u0c28\u0c41 \u0c2a\u0c02\u0c1a\u0c41\u0c15\u0c4a\u0c28\u0c41", - "pad.share.readonly": "\u0c1a\u0c26\u0c41\u0c35\u0c41\u0c1f\u0c15\u0c41 \u0c2e\u0c3e\u0c24\u0c4d\u0c30\u0c2e\u0c47", - "pad.share.link": "\u0c32\u0c02\u0c15\u0c46", - "pad.share.emebdcode": "\u0c2f\u0c41 \u0c06\u0c30\u0c4d \u0c0e\u0c32\u0c4d \u0c28\u0c41 \u0c2a\u0c4a\u0c26\u0c17\u0c3f\u0c02\u0c1a\u0c02\u0c21\u0c3f", - "pad.chat": "\u0c2e\u0c3e\u0c1f\u0c3e\u0c2e\u0c02\u0c24\u0c3f", - "pad.chat.title": "\u0c08 \u0c2a\u0c32\u0c15\u0c15\u0c41 \u0c2e\u0c3e\u0c1f\u0c3e\u0c2e\u0c02\u0c24\u0c3f\u0c28\u0c3f \u0c24\u0c46\u0c30\u0c3f\u0c1a\u0c3f \u0c09\u0c02\u0c1a\u0c02\u0c21\u0c3f.", - "timeslider.pageTitle": "{{appTitle}} \u0c2a\u0c28\u0c3f\u0c38\u0c2e\u0c2f \u0c38\u0c42\u0c1a\u0c3f\u0c15 \u0c2a\u0c30\u0c3f\u0c15\u0c30\u0c02", - "timeslider.toolbar.returnbutton": "\u0c2a\u0c32\u0c15\u0c15\u0c3f \u0c24\u0c3f\u0c30\u0c3f\u0c17\u0c3f \u0c35\u0c46\u0c33\u0c4d\u0c33\u0c02\u0c21\u0c3f", - "timeslider.toolbar.authors": "\u0c30\u0c1a\u0c2f\u0c3f\u0c24\u0c32\u0c41:", - "timeslider.toolbar.authorsList": "\u0c30\u0c1a\u0c2f\u0c3f\u0c24\u0c32\u0c41 \u0c32\u0c47\u0c30\u0c41", - "timeslider.exportCurrent": "\u0c2a\u0c4d\u0c30\u0c38\u0c4d\u0c24\u0c41\u0c24 \u0c05\u0c35\u0c24\u0c3e\u0c30\u0c3e\u0c28\u0c4d\u0c28\u0c3f \u0c08 \u0c35\u0c3f\u0c27\u0c02\u0c17\u0c3e \u0c0e\u0c17\u0c41\u0c2e\u0c24\u0c3f \u0c1a\u0c47\u0c2f\u0c41\u0c2e\u0c41:", - "timeslider.month.january": "\u0c1c\u0c28\u0c35\u0c30\u0c3f", - "timeslider.month.february": "\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f", - "timeslider.month.march": "\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f", - "timeslider.month.april": "\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d", - "timeslider.month.may": "\u0c2e\u0c47", - "timeslider.month.june": "\u0c1c\u0c42\u0c28\u0c4d", - "timeslider.month.july": "\u0c1c\u0c42\u0c32\u0c48", - "timeslider.month.august": "\u0c06\u0c17\u0c37\u0c4d\u0c1f\u0c41", - "timeslider.month.september": "\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c41", - "timeslider.month.october": "\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c41", - "timeslider.month.november": "\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c41", - "timeslider.month.december": "\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c41" + "@metadata": { + "authors": { + "0": "JVRKPRASAD", + "1": "Malkum", + "3": "Veeven" + } + }, + "index.newPad": "కొతà±à°¤ పలక", + "index.createOpenPad": "à°’à°• పేరà±à°¤à±‹ పలకని సృషà±à°Ÿà°¿à°‚à°šà°‚à°¡à°¿ లేదా అదే పేరà±à°¤à±‹ ఉనà±à°¨ పలకని తెరవండి", + "pad.toolbar.bold.title": "మందం", + "pad.toolbar.italic.title": "వాలౠఅకà±à°·à°°à°¾à°²à±", + "pad.toolbar.underline.title": "à°•à±à°°à°¿à°‚దగీత", + "pad.toolbar.strikethrough.title": "కొటà±à°Ÿà°¿à°µà±‡à°¤", + "pad.toolbar.ol.title": "నిరà±à°§à±‡à°¶à°¿à°‚పబడిన జాబితా", + "pad.toolbar.ul.title": "అనిరà±à°¦à±‡à°¶à°¿à°¤ జాబితా, ( à°•à±à°°à°®à°ªà°¦à±à°§à°¤à°¿ లేని జాబితా )", + "pad.toolbar.undo.title": "చేయవదà±à°¦à±", + "pad.toolbar.redo.title": "తిరిగిచెయà±à°¯à°¿", + "pad.toolbar.clearAuthorship.title": "మూలకరà±à°¤à°ªà± వరà±à°£à°¾à°²à°¨à± తీసివేయండి", + "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.wrongPassword": "మీ సంకేతపదం తపà±à°ªà±", + "pad.settings.padSettings": "పలక అమరికలà±", + "pad.settings.myView": "నా ఉదà±à°¦à±‡à°¶à±à°¯à°®à±", + "pad.settings.stickychat": "తెరపైనే మాటామంతిని à°Žà°²à±à°²à°ªà±à°¡à± చేయà±à°®à±", + "pad.settings.colorcheck": "రచయితలకౠరంగà±à°²à±", + "pad.settings.linenocheck": "వరà±à°¸ సంఖà±à°¯à°²à±", + "pad.settings.fontType": "à°…à°•à±à°·à°°à°¶à±ˆà°²à°¿ à°°à°•à°‚:", + "pad.settings.fontType.normal": "సాధారణ", + "pad.settings.fontType.monospaced": "మోనోసà±à°ªà±‡à°¸à±", + "pad.settings.globalView": "బయటకి దరà±à°¶à°¨à°‚", + "pad.settings.language": "భాష", + "pad.importExport.import_export": "దిగà±à°®à°¤à°¿/à°Žà°—à±à°®à°¤à°¿", + "pad.importExport.import": "పాఠమౠదసà±à°¤à±à°°à°®à± లేదా పతà±à°°à°®à±à°¨à± దిగà±à°®à°¤à°¿ చేయà±à°®à±", + "pad.importExport.importSuccessful": "విజయవంతం!", + "pad.importExport.export": "à°ªà±à°°à°¸à±à°¤à±à°¤ పలకని à°ˆ విధమà±à°—à°¾ à°Žà°—à±à°®à°¤à°¿ చేయà±à°®à±:", + "pad.importExport.exporthtml": "హెచౠటి à°Žà°‚ à°Žà°²à±", + "pad.importExport.exportplain": "సాదా పాఠà±à°¯à°‚", + "pad.importExport.exportword": "మైకà±à°°à±‹à°¸à°¾à°«à±à°Ÿà± వరà±à°¡à±", + "pad.importExport.exportpdf": "పీ à°¡à°¿ à°Žà°«à±", + "pad.importExport.exportopen": "à°“ à°¡à°¿ à°Žà°«à± (ఓపెనౠడాకà±à°¯à±à°®à±†à°‚టౠఫారà±à°®à°¾à°Ÿà±)", + "pad.importExport.exportdokuwiki": "డాకà±à°¯à±à°µà°¿à°•à°¿", + "pad.modals.connected": "సంబంధం à°•à±à°¦à°¿à°°à°¿à°‚ది.", + "pad.modals.reconnecting": "మీ పలకకౠమరల సంబంధం à°•à°²à±à°ªà±à°¤à±à°‚ది...", + "pad.modals.forcereconnect": "బలవంతంగానైనా సంబంధం à°•à±à°¦à°¿à°°à°¿à°‚à°šà±", + "pad.modals.userdup.explanation": "à°ˆ పలక, à°ˆ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ à°’à°•à°Ÿà°¿à°•à°¨à±à°¨ à°Žà°•à±à°•à±à°µ గవాకà±à°·à°®à±à°²à°²à±‹ తెరà±à°šà±à°•à±à°¨à±à°¨à°Ÿà±à°²à± అనిపిసà±à°¤à±à°‚ది.", + "pad.modals.userdup.advice": "బదà±à°²à±à°—à°¾ à°ˆ గవాకà±à°·à°®à±à°¨à± వాడడానికి మరల సంబంధం కలపండి", + "pad.modals.unauth": "అధికారం లేదà±", + "pad.modals.unauth.explanation": "మీరౠఈ à°ªà±à°Ÿà°¨à± చూసà±à°¤à±‚à°¨à±à°¨à°ªà±à°ªà±à°¡à± మీ à°…à°¨à±à°®à°¤à±à°²à± మారాయి. మరల సంబంధం కలపడానికి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.", + "pad.modals.deleted": "తొలగించబడింది ( తొలగించినది )", + "pad.share": "à°ˆ పలకనౠపంచà±à°•ొనà±", + "pad.share.readonly": "à°šà°¦à±à°µà±à°Ÿà°•ౠమాతà±à°°à°®à±‡", + "pad.share.link": "లంకె", + "pad.share.emebdcode": "యౠఆరౠఎలౠనౠపొదగించండి", + "pad.chat": "మాటామంతి", + "pad.chat.title": "à°ˆ పలకకౠమాటామంతిని తెరిచి ఉంచండి.", + "timeslider.pageTitle": "{{appTitle}} పనిసమయ సూచిక పరికరం", + "timeslider.toolbar.returnbutton": "పలకకి తిరిగి వెళà±à°³à°‚à°¡à°¿", + "timeslider.toolbar.authors": "రచయితలà±:", + "timeslider.toolbar.authorsList": "రచయితలౠలేరà±", + "timeslider.exportCurrent": "à°ªà±à°°à°¸à±à°¤à±à°¤ అవతారానà±à°¨à°¿ à°ˆ విధంగా à°Žà°—à±à°®à°¤à°¿ చేయà±à°®à±:", + "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": "డిసెంబరà±" } \ No newline at end of file diff --git a/src/locales/tr.json b/src/locales/tr.json new file mode 100644 index 000000000..27f308d61 --- /dev/null +++ b/src/locales/tr.json @@ -0,0 +1,124 @@ +{ + "@metadata": { + "authors": [ + "Emperyan", + "Erdemaslancan", + "Meelo" + ] + }, + "index.newPad": "Yeni Bloknot", + "index.createOpenPad": "ya da ÅŸu isimle bir Bloknot oluÅŸtur/aç:", + "pad.toolbar.bold.title": "Kalın (Ctrl-B)", + "pad.toolbar.italic.title": "EÄŸik (Ctrl-I)", + "pad.toolbar.underline.title": "Altı Çizili (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Üstü Çizili", + "pad.toolbar.ol.title": "Sıralı liste", + "pad.toolbar.ul.title": "Sırasız Liste", + "pad.toolbar.indent.title": "Girintiyi arttır", + "pad.toolbar.unindent.title": "Girintiyi azalt", + "pad.toolbar.undo.title": "Geri Al (Ctrl-Z)", + "pad.toolbar.redo.title": "Yenile (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Yazarlık Renklerini Temizle", + "pad.toolbar.import_export.title": "Farklı dosya biçimlerini içeri/dışarı aktar", + "pad.toolbar.timeslider.title": "Zaman Çizelgesi", + "pad.toolbar.savedRevision.title": "Düzeltmeyi Kaydet", + "pad.toolbar.settings.title": "Ayarlar", + "pad.toolbar.embed.title": "Bu bloknotu PaylaÅŸ ve Göm", + "pad.toolbar.showusers.title": "Kullanıcıları bu bloknotta göster", + "pad.colorpicker.save": "Kaydet", + "pad.colorpicker.cancel": "İptal", + "pad.loading": "Yükleniyor...", + "pad.passwordRequired": "Bu bloknota eriÅŸebilmeniz için parolaya ihtiyacınız var", + "pad.permissionDenied": "Bu bloknota eriÅŸmeye izniniz yok", + "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.colorcheck": "Yazarlık renkleri", + "pad.settings.linenocheck": "Satır numaraları", + "pad.settings.rtlcheck": "İçerik saÄŸdan sola doÄŸru okunsun mu?", + "pad.settings.fontType": "Yazı tipi:", + "pad.settings.fontType.normal": "OlaÄŸan", + "pad.settings.fontType.monospaced": "Tek aralıklı", + "pad.settings.globalView": "Genel Görünüm", + "pad.settings.language": "Dil:", + "pad.importExport.import_export": "İçerik/Dışarı Aktar", + "pad.importExport.import": "Herhangi bir metin dosyası ya da belgesi yükle", + "pad.importExport.importSuccessful": "BaÅŸarılı!", + "pad.importExport.export": "Mevcut bloknotu ÅŸu olarak dışa aktar:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Düz metin", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (Açık Doküman Biçimi)", + "pad.importExport.exportdokuwiki": "VikiBelge", + "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 \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EAbiWord'ü yükleyin\u003C/a\u003E.", + "pad.modals.connected": "BaÄŸlandı.", + "pad.modals.reconnecting": "Bloknotunuza tekrar baÄŸlanılıyor...", + "pad.modals.forcereconnect": "Yeniden baÄŸlanmaya zorla", + "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.", + "pad.modals.unauth": "Yetkili deÄŸil", + "pad.modals.unauth.explanation": "Bu sayfayı görüntülerken izinleriniz deÄŸiÅŸtirildi. Tekrar baÄŸlanmayı deneyin.", + "pad.modals.looping.explanation": "EÅŸitleme sunucusu ile iletiÅŸim sorunları yaÅŸanıyor.", + "pad.modals.looping.cause": "Belki de uygun olmayan güvenlik duvarı ya da vekil sunucu (proxy) ile baÄŸlanmaya çalışıyorsunuz.", + "pad.modals.initsocketfail": "Sunucuya eriÅŸilemiyor.", + "pad.modals.initsocketfail.explanation": "EÅŸitleme sunucusuna baÄŸlantı kurulamıyor.", + "pad.modals.initsocketfail.cause": "Bu sorun muhtemelen, tarayıcınızdan ya da internet baÄŸlantınızdan kaynaklanıyor.", + "pad.modals.slowcommit.explanation": "Sunucu yanıt vermiyor.", + "pad.modals.slowcommit.cause": "Bu hata aÄŸ baÄŸlantısı sebebiyle olabilir.", + "pad.modals.badChangeset.explanation": "Yaptığınız bir düzenleme eÅŸitleme sunucusu tarafından kullanışsız/kural dışı olarak sınıflandırıldı.", + "pad.modals.badChangeset.cause": "Bu, yanlış sunucu yapılandırması ya da baÅŸka bir beklenmedik davranışlar sonucunda olmuÅŸ olabilir. Bu size bir hataymış gibi geliyorsa lütfen servis yöneticisiyle iletiÅŸime geçin. Düzenlemeye devam etmek için yeniden baÄŸlanmayı deneyin.", + "pad.modals.corruptPad.explanation": "EriÅŸmeye çalıştığınız bloknot bozuk.", + "pad.modals.corruptPad.cause": "Bu, yanlış sunucu yapılandırması ya da baÅŸka bir beklenmedik davranışlardan kaynaklanabilir. Lütfen servis yöneticisiyle iletiÅŸime geçin.", + "pad.modals.deleted": "Silindi.", + "pad.modals.deleted.explanation": "Bu bloknot kaldırılmış.", + "pad.modals.disconnected": "BaÄŸlantınız koptu.", + "pad.modals.disconnected.explanation": "Sunucu baÄŸlantısı kaybedildi", + "pad.modals.disconnected.cause": "Sunucu kullanılamıyor olabilir. Bunun devam etmesi durumunda servis yöneticisine bildirin.", + "pad.share": "Bu bloknotu paylaÅŸ", + "pad.share.readonly": "Salt okunur", + "pad.share.link": "BaÄŸlantı", + "pad.share.emebdcode": "URL'yi göm", + "pad.chat": "Sohbet", + "pad.chat.title": "Bu bloknot için sohbeti açın.", + "pad.chat.loadmessages": "Daha fazla mesaj yükle", + "timeslider.pageTitle": "{{appTitle}} Zaman Çizelgesi", + "timeslider.toolbar.returnbutton": "Bloknota geri dön", + "timeslider.toolbar.authors": "Yazarlar:", + "timeslider.toolbar.authorsList": "Yazar Yok", + "timeslider.toolbar.exportlink.title": "Dışa aktar", + "timeslider.exportCurrent": "Mevcut sürümü ÅŸu olarak dışa aktar:", + "timeslider.version": "{{version}} sürümü", + "timeslider.saved": "{{day}} {{month}} {{year}} tarihinde kaydedildi", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}.{{minutes}}.{{seconds}}", + "timeslider.month.january": "Ocak", + "timeslider.month.february": "Åžubat", + "timeslider.month.march": "Mart", + "timeslider.month.april": "Nisan", + "timeslider.month.may": "Mayıs", + "timeslider.month.june": "Haziran", + "timeslider.month.july": "Temmuz", + "timeslider.month.august": "AÄŸustos", + "timeslider.month.september": "Eylül", + "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 ]}", + "pad.savedrevs.marked": "Bu düzenleme artık kayıtlı bir düzeltme olarak iÅŸaretlendi", + "pad.userlist.entername": "Adınızı girin", + "pad.userlist.unnamed": "Adlandırılmamış", + "pad.userlist.guest": "Misafir", + "pad.userlist.deny": "Reddet", + "pad.userlist.approve": "Onayla", + "pad.editbar.clearcolors": "Bütün belgedeki yazarlık renkleri silinsin mi?", + "pad.impexp.importbutton": "Åžimdi İçe Aktar", + "pad.impexp.importing": "İçe aktarıyor...", + "pad.impexp.confirmimport": "Bir dosya içe aktarılırken bloknotun mevcut metninin üzerine yazdırılır. Devam etmek istediÄŸinizden emin misiniz?", + "pad.impexp.convertFailed": "Bu dosyayı içe aktarmak mümkün deÄŸil. Lütfen farklı bir belge biçimi kullanın ya da elle kopyala yapıştır yapın", + "pad.impexp.uploadFailed": "Yükleme baÅŸarısız, lütfen tekrar deneyin", + "pad.impexp.importfailed": "İçe aktarım baÅŸarısız oldu", + "pad.impexp.copypaste": "Lütfen kopyala yapıştır yapın", + "pad.impexp.exportdisabled": "{{type}} biçimiyle dışa aktarma devre dışı bırakıldı. Ayrıntılar için sistem yöneticinizle iletiÅŸime geçiniz." +} \ No newline at end of file diff --git a/src/locales/uk.json b/src/locales/uk.json index 0da478cc1..cddba5713 100644 --- a/src/locales/uk.json +++ b/src/locales/uk.json @@ -1,122 +1,126 @@ { - "@metadata": { - "authors": { - "0": "Base", - "1": "Olvin", - "3": "Steve.rusyn" - } - }, - "index.newPad": "\u0421\u0442\u0432\u043e\u0440\u0438\u0442\u0438", - "index.createOpenPad": "\u0430\u0431\u043e \u0441\u0442\u0432\u043e\u0440\u0438\u0442\u0438\/\u0432\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0437 \u043d\u0430\u0437\u0432\u043e\u044e:", - "pad.toolbar.bold.title": "\u041d\u0430\u043f\u0456\u0432\u0436\u0438\u0440\u043d\u0438\u0439 (Ctrl-B)", - "pad.toolbar.italic.title": "\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl-I)", - "pad.toolbar.underline.title": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f (Ctrl-U)", - "pad.toolbar.strikethrough.title": "\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u043d\u044f", - "pad.toolbar.ol.title": "\u0423\u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", - "pad.toolbar.ul.title": "\u041d\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043a\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", - "pad.toolbar.indent.title": "\u0412\u0456\u0434\u0441\u0442\u0443\u043f", - "pad.toolbar.unindent.title": "\u0412\u0438\u0441\u0442\u0443\u043f", - "pad.toolbar.undo.title": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u0438 (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043a\u043e\u043b\u044c\u043e\u0440\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.toolbar.import_export.title": "\u0406\u043c\u043f\u043e\u0440\u0442\/\u0415\u043a\u0441\u043f\u043e\u0440\u0442 \u0437 \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u043d\u043d\u044f\u043c \u0440\u0456\u0437\u043d\u0438\u0445 \u0444\u043e\u0440\u043c\u0430\u0442\u0456\u0432 \u0444\u0430\u0439\u043b\u0456\u0432", - "pad.toolbar.timeslider.title": "\u0428\u043a\u0430\u043b\u0430 \u0447\u0430\u0441\u0443", - "pad.toolbar.savedRevision.title": "\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0432\u0435\u0440\u0441\u0456\u0457", - "pad.toolbar.settings.title": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f", - "pad.toolbar.embed.title": "\u0412\u0431\u0443\u0434\u0443\u0432\u0430\u0442\u0438 \u0446\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", - "pad.toolbar.showusers.title": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0447\u0456\u0432 \u0446\u044c\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.colorpicker.save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438", - "pad.colorpicker.cancel": "\u0421\u043a\u0430\u0441\u0443\u0432\u0430\u0442\u0438", - "pad.loading": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f\u2026", - "pad.passwordRequired": "\u0412\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u0456\u0434\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0434\u043e \u0446\u044c\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.permissionDenied": "\u0412\u0438 \u043d\u0435 \u043c\u0430\u0454 \u0434\u043e\u0437\u0432\u043e\u043b\u0443 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0443 \u0434\u043e \u0446\u044c\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.wrongPassword": "\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0438\u0439 \u043f\u0430\u0440\u043e\u043b\u044c", - "pad.settings.padSettings": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.settings.myView": "\u041c\u0456\u0439 \u0412\u0438\u0433\u043b\u044f\u0434", - "pad.settings.stickychat": "\u0417\u0430\u0432\u0436\u0434\u0438 \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0443\u0432\u0430\u0442\u0438 \u0447\u0430\u0442", - "pad.settings.colorcheck": "\u041a\u043e\u043b\u044c\u043e\u0440\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "pad.settings.linenocheck": "\u041d\u043e\u043c\u0435\u0440\u0438 \u0440\u044f\u0434\u043a\u0456\u0432", - "pad.settings.fontType": "\u0422\u0438\u043f \u0448\u0440\u0438\u0444\u0442\u0443:", - "pad.settings.fontType.normal": "\u0417\u0432\u0438\u0447\u0430\u0439\u043d\u0438\u0439", - "pad.settings.fontType.monospaced": "\u041c\u043e\u043d\u043e\u0448\u0438\u0440\u0438\u043d\u043d\u0438\u0439", - "pad.settings.globalView": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0438\u0439 \u0432\u0438\u0433\u043b\u044f\u0434", - "pad.settings.language": "\u041c\u043e\u0432\u0430:", - "pad.importExport.import_export": "\u0406\u043c\u043f\u043e\u0440\u0442\/\u0415\u043a\u0441\u043f\u043e\u0440\u0442", - "pad.importExport.import": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0431\u0443\u0434\u044c-\u044f\u043a\u0438\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u0438\u0439 \u0444\u0430\u0439\u043b \u0430\u0431\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", - "pad.importExport.importSuccessful": "\u0423\u0441\u043f\u0456\u0448\u043d\u043e!", - "pad.importExport.export": "\u0415\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u044f\u043a:", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u0417\u0432\u0438\u0447\u0430\u0439\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF (\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 OpenOffice)", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u0412\u0438 \u043c\u043e\u0436\u0435\u0442\u0435 \u0456\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u043b\u0438\u0449\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443 \u0430\u0431\u043e html. \u0414\u043b\u044f \u0431\u0456\u043b\u044c\u0448 \u043f\u0440\u043e\u0441\u0443\u043d\u0443\u0442\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u0456\u0432 \u0456\u043c\u043f\u043e\u0440\u0442\u0443 \u0432\u0441\u0442\u0430\u043d\u043e\u0432\u0456\u0442\u044c abiword<\/a>.", - "pad.modals.connected": "\u0417'\u0454\u0434\u043d\u0430\u043d\u043e.", - "pad.modals.reconnecting": "\u041f\u0435\u0440\u0435\u043f\u0456\u0434\u043b\u044e\u0447\u0435\u043d\u043d\u044f \u0434\u043e \u0412\u0430\u0448\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443..", - "pad.modals.forcereconnect": "\u041f\u0440\u0438\u043c\u0443\u0441\u043e\u0432\u0435 \u043f\u0435\u0440\u0435\u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f", - "pad.modals.userdup": "\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u043e \u0432 \u0456\u043d\u0448\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456", - "pad.modals.userdup.explanation": "\u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442, \u043c\u043e\u0436\u043b\u0438\u0432\u043e, \u0432\u0456\u0434\u043a\u0440\u0438\u0442\u043e \u0431\u0456\u043b\u044c\u0448 \u043d\u0456\u0436 \u0432 \u043e\u0434\u043d\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043d\u0430 \u0446\u044c\u043e\u043c\u0443 \u043a\u043e\u043c\u043f'\u044e\u0442\u0435\u0440\u0456.", - "pad.modals.userdup.advice": "\u041f\u0435\u0440\u0435\u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438\u0441\u044c \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u044e\u0447\u0438 \u0446\u0435 \u0432\u0456\u043a\u043d\u043e.", - "pad.modals.unauth": "\u041d\u0435 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u043e\u0432\u0430\u043d\u043e", - "pad.modals.unauth.explanation": "\u0412\u0430\u0448\u0456 \u043f\u0440\u0430\u0432\u0430 \u0431\u0443\u043b\u043e \u0437\u043c\u0456\u043d\u0435\u043d\u043e \u043f\u0456\u0434 \u0447\u0430\u0441 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434\u0443 \u0446\u0456\u0454\u0457 \u0441\u0442\u043e\u0440\u0456\u043d\u043a. \u0421\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u0435\u0440\u0435\u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438\u0441\u044c.", - "pad.modals.looping": "\u0412\u0456\u0434'\u0454\u0434\u043d\u0430\u043d\u043e.", - "pad.modals.looping.explanation": "\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0438 \u0437\u0432'\u0454\u0437\u043a\u0443 \u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u0430\u0446\u0456\u0457.", - "pad.modals.looping.cause": "\u041c\u043e\u0436\u043b\u0438\u0432\u043e, \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u0443\u043c\u0456\u0441\u043d\u0438\u0439 \u0431\u0440\u0430\u043d\u0434\u043c\u0430\u0443\u0435\u0440 \u0430\u0431\u043e \u043f\u0440\u043e\u043a\u0441\u0456-\u0441\u0435\u0440\u0432\u0435\u0440.", - "pad.modals.initsocketfail": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u0439.", - "pad.modals.initsocketfail.explanation": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438\u0441\u044f \u0434\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441\u0438\u043d\u0445\u0440\u043e\u043d\u0456\u0437\u0430\u0446\u0456\u0457.", - "pad.modals.initsocketfail.cause": "\u0419\u043c\u043e\u0432\u0456\u0440\u043d\u043e, \u0446\u0435 \u043f\u043e\u0432'\u044f\u0437\u0430\u043d\u043e \u0437 \u0412\u0430\u0448\u0438\u043c \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u043c \u0430\u0431\u043e \u0456\u043d\u0442\u0435\u0440\u043d\u0435\u0442-\u0437'\u0454\u0434\u043d\u0430\u043d\u043d\u044f\u043c.", - "pad.modals.slowcommit": "\u0412\u0456\u0434'\u0454\u0434\u043d\u0430\u043d\u043e.", - "pad.modals.slowcommit.explanation": "\u0421\u0435\u0440\u0432\u0435\u0440 \u043d\u0435 \u0432\u0456\u0434\u043f\u043e\u0432\u0456\u0434\u0430\u0454.", - "pad.modals.slowcommit.cause": "\u0426\u0435 \u043c\u043e\u0436\u0435 \u0431\u0443\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0437 \u043f\u0456\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044f\u043c \u0434\u043e \u043c\u0435\u0440\u0435\u0436\u0456.", - "pad.modals.deleted": "\u0412\u0438\u043b\u0443\u0447\u0435\u043d\u043e.", - "pad.modals.deleted.explanation": "\u0426\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0431\u0443\u043b\u043e \u0432\u0438\u043b\u0443\u0447\u0435\u043d\u043e.", - "pad.modals.disconnected": "\u0412\u0430\u0441 \u0431\u0443\u043b\u043e \u0432\u0456\u0434'\u0454\u0434\u043d\u0430\u043d\u043e.", - "pad.modals.disconnected.explanation": "\u0417'\u0454\u0434\u043d\u0430\u043d\u043d\u044f \u0437 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u043c \u0432\u0442\u0440\u0430\u0447\u0435\u043d\u043e", - "pad.modals.disconnected.cause": "\u0421\u0435\u0440\u0432\u0435\u0440, \u043c\u043e\u0436\u043b\u0438\u0432\u043e, \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0438\u0439. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u0442\u0435 \u043d\u0430\u043c, \u044f\u043a\u0449\u043e \u0446\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0432\u0430\u0442\u0438\u043c\u0435\u0442\u044c\u0441\u044f.", - "pad.share": "\u041f\u043e\u0434\u0456\u043b\u0438\u0442\u0438\u0441\u044c", - "pad.share.readonly": "\u0422\u0456\u043b\u044c\u043a\u0438 \u0447\u0438\u0442\u0430\u043d\u043d\u044f", - "pad.share.link": "\u041f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", - "pad.share.emebdcode": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 URL", - "pad.chat": "\u0427\u0430\u0442", - "pad.chat.title": "\u0412\u0456\u0434\u043a\u0440\u0438\u0442\u0438 \u0447\u0430\u0442 \u0434\u043b\u044f \u0446\u044c\u043e\u0433\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443.", - "pad.chat.loadmessages": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0438\u0442\u0438 \u0431\u0456\u043b\u044c\u0448\u0435 \u043f\u043e\u0432\u0456\u0434\u043e\u043c\u043b\u0435\u043d\u044c", - "timeslider.pageTitle": "\u0427\u0430\u0441\u043e\u0432\u0430 \u0448\u043a\u0430\u043b\u0430 {{appTitle}}", - "timeslider.toolbar.returnbutton": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044c \u0434\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", - "timeslider.toolbar.authors": "\u0410\u0432\u0442\u043e\u0440\u0438:", - "timeslider.toolbar.authorsList": "\u041d\u0435\u043c\u0430\u0454 \u0430\u0432\u0442\u043e\u0440\u0456\u0432", - "timeslider.toolbar.exportlink.title": "\u0415\u043a\u0441\u043f\u043e\u0440\u0442", - "timeslider.exportCurrent": "\u0415\u043a\u0441\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0442\u043e\u0447\u043d\u0443 \u0432\u0435\u0440\u0441\u0456\u044e \u044f\u043a:", - "timeslider.version": "\u0412\u0435\u0440\u0441\u0456\u044f {{version}}", - "timeslider.saved": "\u0417\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e {{month}} {{day}}, {{year}}", - "timeslider.dateformat": "{{month}}\/{{day}}\/{{year}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "\u0421\u0456\u0447\u0435\u043d\u044c", - "timeslider.month.february": "\u041b\u044e\u0442\u0438\u0439", - "timeslider.month.march": "\u0411\u0435\u0440\u0435\u0437\u0435\u043d\u044c", - "timeslider.month.april": "\u041a\u0432\u0456\u0442\u0435\u043d\u044c", - "timeslider.month.may": "\u0422\u0440\u0430\u0432\u0435\u043d\u044c", - "timeslider.month.june": "\u0427\u0435\u0440\u0432\u0435\u043d\u044c", - "timeslider.month.july": "\u041b\u0438\u043f\u0435\u043d\u044c", - "timeslider.month.august": "\u0421\u0435\u0440\u043f\u0435\u043d\u044c", - "timeslider.month.september": "\u0412\u0435\u0440\u0435\u0441\u0435\u043d\u044c", - "timeslider.month.october": "\u0416\u043e\u0432\u0442\u0435\u043d\u044c", - "timeslider.month.november": "\u041b\u0438\u0441\u0442\u043e\u043f\u0430\u0434", - "timeslider.month.december": "\u0413\u0440\u0443\u0434\u0435\u043d\u044c", - "timeslider.unnamedauthor": "{{num}} \u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439 \u0430\u0432\u0442\u043e\u0440", - "timeslider.unnamedauthors": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0445 \u0430\u0432\u0442\u043e\u0440\u043e\u0432: {{num}}", - "pad.savedrevs.marked": "\u0426\u044e \u0432\u0435\u0440\u0441\u0456\u044e \u043f\u043e\u043c\u0456\u0447\u0435\u043d\u043e \u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u043e\u044e \u0432\u0435\u0440\u0441\u0456\u0454\u044e", - "pad.userlist.entername": "\u0412\u0432\u0435\u0434\u0456\u0442\u044c \u0412\u0430\u0448\u0435 \u0456\u043c'\u044f", - "pad.userlist.unnamed": "\u0431\u0435\u0437\u0456\u043c\u0435\u043d\u043d\u0438\u0439", - "pad.userlist.guest": "\u0413\u0456\u0441\u0442\u044c", - "pad.userlist.deny": "\u0417\u0430\u0431\u043e\u0440\u043e\u043d\u0438\u0442\u0438", - "pad.userlist.approve": "\u041f\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438", - "pad.editbar.clearcolors": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u043a\u043e\u043b\u044c\u043e\u0440\u0438 \u0443 \u0432\u0441\u044c\u043e\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0456?", - "pad.impexp.importbutton": "\u0406\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0437\u0430\u0440\u0430\u0437", - "pad.impexp.importing": "\u0406\u043c\u043f\u043e\u0440\u0442...", - "pad.impexp.confirmimport": "\u0406\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0444\u0430\u0439\u043b\u0443 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0448\u0435 \u043f\u043e\u0442\u043e\u0447\u043d\u0438\u0439 \u0442\u0435\u043a\u0441\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443. \u0412\u0438 \u0434\u0456\u0439\u0441\u043d\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u0432\u0436\u0438\u0442\u0438?", - "pad.impexp.convertFailed": "\u041c\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c\u043e \u0456\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u0446\u0435\u0439 \u0444\u0430\u0439\u043b. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u0430\u0439\u0442\u0435 \u0456\u043d\u0448\u0438\u0439 \u0444\u043e\u0440\u043c\u0430\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443, \u0430\u0431\u043e \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u043e\u043f\u0456\u044e\u0439\u0442\u0435 \u0442\u0430 \u0432\u0441\u0442\u0430\u0432\u0442\u0435", - "pad.impexp.uploadFailed": "\u0417\u0430\u0432\u0430\u043d\u0442\u0430\u0436\u0435\u043d\u043d\u044f \u043d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044c, \u0431\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0441\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u0437\u043d\u043e\u0432\u0443", - "pad.impexp.importfailed": "\u041f\u043e\u043c\u0438\u043b\u043a\u0430 \u043f\u0440\u0438 \u0456\u043c\u043f\u043e\u0440\u0442\u0443\u0432\u0430\u043d\u043d\u0456", - "pad.impexp.copypaste": "\u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0441\u043a\u043e\u043f\u0456\u044e\u0439\u0442\u0435 \u0442\u0430 \u0432\u0441\u0442\u0430\u0432\u0442\u0435", - "pad.impexp.exportdisabled": "\u0415\u043a\u0441\u043f\u043e\u0440\u0442 \u0443 \u0444\u043e\u0440\u043c\u0430\u0442 {{type}} \u0432\u0438\u043c\u043a\u043d\u0435\u043d\u043e. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0437\u0432'\u044f\u0436\u0456\u0442\u044c\u0441\u044f \u0456\u0437 \u0412\u0430\u0448\u0438\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0438\u043c \u0430\u0434\u043c\u0456\u043d\u0456\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u0437\u0430 \u0434\u0435\u0442\u0430\u043b\u044f\u043c\u0438." + "@metadata": { + "authors": { + "0": "Andriykopanytsia", + "1": "Base", + "2": "Olvin", + "4": "Steve.rusyn", + "5": "SteveR" + } + }, + "index.newPad": "Створити", + "index.createOpenPad": "або Ñтворити/відкрити документ з назвою:", + "pad.toolbar.bold.title": "Ðапівжирний (Ctrl-B)", + "pad.toolbar.italic.title": "КурÑив (Ctrl-I)", + "pad.toolbar.underline.title": "ПідкреÑÐ»ÐµÐ½Ð½Ñ (Ctrl-U)", + "pad.toolbar.strikethrough.title": "ЗакреÑленнÑ", + "pad.toolbar.ol.title": "УпорÑдкований ÑпиÑок", + "pad.toolbar.ul.title": "ÐеупорÑдкований ÑпиÑок", + "pad.toolbar.indent.title": "ВідÑтуп", + "pad.toolbar.unindent.title": "ВиÑтуп", + "pad.toolbar.undo.title": "СкаÑувати (Ctrl-Z)", + "pad.toolbar.redo.title": "Повторити (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "ОчиÑтити кольори документу", + "pad.toolbar.import_export.title": "Імпорт/ЕкÑпорт з викориÑтаннÑм різних форматів файлів", + "pad.toolbar.timeslider.title": "Шкала чаÑу", + "pad.toolbar.savedRevision.title": "Зберегти верÑÑ–ÑŽ", + "pad.toolbar.settings.title": "ÐалаштуваннÑ", + "pad.toolbar.embed.title": "ПоділитиÑÑŒ та вбудувати цей документ", + "pad.toolbar.showusers.title": "Показати кориÑтувачів цього документу", + "pad.colorpicker.save": "Зберегти", + "pad.colorpicker.cancel": "СкаÑувати", + "pad.loading": "ЗавантаженнÑ…", + "pad.passwordRequired": "Вам необхідний пароль Ð´Ð»Ñ Ð´Ð¾Ñтупу до цього документу", + "pad.permissionDenied": "Ви не має дозволу Ð´Ð»Ñ Ð´Ð¾Ñтупу до цього документу", + "pad.wrongPassword": "Ðеправильний пароль", + "pad.settings.padSettings": "ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ñƒ", + "pad.settings.myView": "Мій ВиглÑд", + "pad.settings.stickychat": "Завжди відображувати чат", + "pad.settings.colorcheck": "Кольори документу", + "pad.settings.linenocheck": "Ðомери Ñ€Ñдків", + "pad.settings.rtlcheck": "Читати вміÑÑ‚ з права на ліво?", + "pad.settings.fontType": "Тип шрифту:", + "pad.settings.fontType.normal": "Звичайний", + "pad.settings.fontType.monospaced": "Моноширинний", + "pad.settings.globalView": "Загальний виглÑд", + "pad.settings.language": "Мова:", + "pad.importExport.import_export": "Імпорт/ЕкÑпорт", + "pad.importExport.import": "Завантажити будь-Ñкий текÑтовий файл або документ", + "pad.importExport.importSuccessful": "УÑпішно!", + "pad.importExport.export": "ЕкÑпортувати поточний документ Ñк:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Звичайний текÑÑ‚", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF (документ OpenOffice)", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Ви можете імпортувати лище формати проÑтого текÑту або html. Ð”Ð»Ñ Ð±Ñ–Ð»ÑŒÑˆ проÑунутих ÑпоÑобів імпорту \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003EвÑтановіть abiword\u003C/a\u003E.", + "pad.modals.connected": "З'єднано.", + "pad.modals.reconnecting": "ÐŸÐµÑ€ÐµÐ¿Ñ–Ð´Ð»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ Вашого документу..", + "pad.modals.forcereconnect": "ПримуÑове перепідключеннÑ", + "pad.modals.userdup": "Відкрито в іншому вікні", + "pad.modals.userdup.explanation": "Документ, можливо, відкрито більш ніж в одному вікні браузера на цьому комп'ютері.", + "pad.modals.userdup.advice": "ПерепідключитиÑÑŒ викориÑтовуючи це вікно.", + "pad.modals.unauth": "Ðе авторизовано", + "pad.modals.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": "Збережено {{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": "Грудень", + "timeslider.unnamedauthors": "{{num}} {[plural(num) one: безіменний автор, few: безіменні автори, many: безіменних авторів, other: безіменних авторів]}", + "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.confirmimport": "Ð†Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ перезапише поточний текÑÑ‚ документу. Ви дійÑно хочете продовжити?", + "pad.impexp.convertFailed": "Ми не можемо імпортувати цей файл. Будь лаÑка, викориÑтайте інший формат документу, або прÑмо Ñкопіюйте та вÑтавте", + "pad.impexp.uploadFailed": "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑŒ, будь лаÑка, Ñпробуйте знову", + "pad.impexp.importfailed": "Помилка при імпортуванні", + "pad.impexp.copypaste": "Будь лаÑка, Ñкопіюйте та вÑтавте", + "pad.impexp.exportdisabled": "ЕкÑпорт у формат {{type}} вимкнено. Будь лаÑка, зв'ÑжітьÑÑ Ñ–Ð· Вашим ÑиÑтемним адмініÑтратором за деталÑми." } \ No newline at end of file diff --git a/src/locales/vi.json b/src/locales/vi.json new file mode 100644 index 000000000..e85a29050 --- /dev/null +++ b/src/locales/vi.json @@ -0,0 +1,124 @@ +{ + "@metadata": { + "authors": [ + "Baonguyen21022003", + "Minh Nguyen", + "Tuankiet65" + ] + }, + "index.newPad": "Tạo má»™t Pad má»›i", + "index.createOpenPad": "hay tạo/mở má»™t Pad vá»›i tên:", + "pad.toolbar.bold.title": "In đậm (Ctrl-B)", + "pad.toolbar.italic.title": "In nghiêng (Ctrl-I)", + "pad.toolbar.underline.title": "Gạch chân (Ctrl-U)", + "pad.toolbar.strikethrough.title": "Gạch ngang", + "pad.toolbar.ol.title": "Danh sách Có Äánh số", + "pad.toolbar.ul.title": "Danh sách Không Äánh số", + "pad.toolbar.indent.title": "Tăng lá» (TAB)", + "pad.toolbar.unindent.title": "Giảm lá» (Shift+TAB)", + "pad.toolbar.undo.title": "Hoàn tác (Ctrl-Z)", + "pad.toolbar.redo.title": "Làm lại (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "Xóa Màu chỉ Tác giả", + "pad.toolbar.import_export.title": "Xuất/Nhập từ/đến các định dạng file khác nhau", + "pad.toolbar.timeslider.title": "Thanh thá»i gian", + "pad.toolbar.savedRevision.title": "Lưu Phiên bản", + "pad.toolbar.settings.title": "Thiết lập", + "pad.toolbar.embed.title": "Chia sẻ và Nhúng pad này", + "pad.toolbar.showusers.title": "Hiện các ngưá»i dùng trên pad này", + "pad.colorpicker.save": "Lưu", + "pad.colorpicker.cancel": "Há»§y bá»", + "pad.loading": "Äang tải…", + "pad.passwordRequired": "Bạn cần mật khẩu để truy cập pad này", + "pad.permissionDenied": "Bạn không có quyá»n truy cập pad này.", + "pad.wrongPassword": "Bạn đã nhập sai mật khẩu", + "pad.settings.padSettings": "Tùy chá»n Pad", + "pad.settings.myView": "Chỉ có tôi", + "pad.settings.stickychat": "Luân hiện cá»­a sổ trò chuyện trên màn hình", + "pad.settings.colorcheck": "Màu chỉ tác giả", + "pad.settings.linenocheck": "Số dòng", + "pad.settings.rtlcheck": "Äá»c ná»™i dung từ phải sang trái?", + "pad.settings.fontType": "Kiểu phông chữ:", + "pad.settings.fontType.normal": "Thưá»ng", + "pad.settings.fontType.monospaced": "Monospace", + "pad.settings.globalView": "Toàn cầu", + "pad.settings.language": "Ngôn ngữ:", + "pad.importExport.import_export": "Xuất/Nhập", + "pad.importExport.import": "Tải lên bất kỳ tập tin văn bản hoặc tài liệu", + "pad.importExport.importSuccessful": "Thành công!", + "pad.importExport.export": "Xuất pad hiện tại ra định dạng:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "Văn bản thuần túy", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "Bạn chỉ có thể nhập vào từ văn bản thuần túy hay định dạng HTML. Nếu muốn có nhiá»u chức năng nhập hÆ¡n xin hãy \u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003Ecài đặt abiword\u003C/a\u003E.", + "pad.modals.connected": "Äã kết nối lại.", + "pad.modals.reconnecting": "Kết nối lại tá»›i pad cá»§a bạn", + "pad.modals.forcereconnect": "Ép kết nối lại", + "pad.modals.userdup": "Mở trong cá»­a sổ khác", + "pad.modals.userdup.explanation": "Pad này dưá»ng như được mở trên hÆ¡n má»™t cá»­a sổ trình duyệt trên máy tính này.", + "pad.modals.userdup.advice": "Kết nối lại để sá»­ dụng cá»­a sổ này.", + "pad.modals.unauth": "Không có quyá»n", + "pad.modals.unauth.explanation": "Quyá»n cá»§a bạn đã thay đổi trong khi bạn Ä‘ang xem trang này. Hãy thá»­ kết nối lại.", + "pad.modals.looping.explanation": "Có vấn đỠkhi giao tiếp vá»›i máy chá»§ đồng bá»™", + "pad.modals.looping.cause": "Có thể bạn đã kết nối thông qua má»™t tưá»ng lá»­a hay proxy không thích hợp", + "pad.modals.initsocketfail": "Không thể tiếp cận máy chá»§", + "pad.modals.initsocketfail.explanation": "Không thể kết nối đến máy chá»§ đồng bá»™.", + "pad.modals.initsocketfail.cause": "Äiá»u này có thể là do má»™t vấn đỠvá»›i trình duyệt cá»§a bạn hay đưá»ng truyá»n internet cá»§a bạn.", + "pad.modals.slowcommit.explanation": "Máy chá»§ không phản hồi.", + "pad.modals.slowcommit.cause": "Äiá»u này có thể là do vấn đỠvá» kết nối mạng.", + "pad.modals.badChangeset.explanation": "Chỉnh sá»­a bạn đã thá»±c hiện là bất hợp pháp phân loại bởi máy chá»§ đồng bá»™ hóa.", + "pad.modals.badChangeset.cause": "Äiá»u này có thể là do má»™t cấu hình máy chá»§ sai hoặc má»™t số hành vi không mong muốn khác. Xin vui lòng liên hệ vá»›i quản trị viên dịch vụ, nếu bạn cảm thấy đây là má»™t lá»—i. Cố gắng kết nối lại để tiếp tục chỉnh sá»­a.", + "pad.modals.corruptPad.explanation": "Các phím bạn Ä‘ang cố truy cập bị há»ng.", + "pad.modals.corruptPad.cause": "Äiá»u này có thể là do má»™t cấu hình máy chá»§ sai hoặc má»™t số hành vi không mong muốn khác. Xin vui lòng liên hệ vá»›i ngưá»i quản trị dịch vụ.", + "pad.modals.deleted": "Äã xóa", + "pad.modals.deleted.explanation": "Pad này đã được gỡ", + "pad.modals.disconnected": "Bạn đã ngắt kết nối", + "pad.modals.disconnected.explanation": "Kết nối tá»›i máy chá»§ đã bị mất", + "pad.modals.disconnected.cause": "Hệ phục vụ có thể không sẵn dùng. Xin vui lòng thông báo cho ngưá»i quản trị dịch vụ nếu Ä‘iá»u này tiếp tục xảy ra.", + "pad.share": "Chia sẻ pad này", + "pad.share.readonly": "Chỉ Ä‘á»c", + "pad.share.link": "Liên kết", + "pad.share.emebdcode": "URL nhúng", + "pad.chat": "Trò chuyện", + "pad.chat.title": "Mở trò chuyện cho pad này.", + "pad.chat.loadmessages": "Tải thêm tin nhắn", + "timeslider.pageTitle": "Thanh thá»i gian cá»§a {{appTitle}}", + "timeslider.toolbar.returnbutton": "Trở vá» pad", + "timeslider.toolbar.authors": "Tác giả:", + "timeslider.toolbar.authorsList": "Không có tác giả", + "timeslider.toolbar.exportlink.title": "Xuất", + "timeslider.exportCurrent": "Xuất phiên bản hiện tại thành:", + "timeslider.version": "Phiên bản {{version}}", + "timeslider.saved": "Äã lưu vào ngày {{day}} {{month}} năm {{year}}", + "timeslider.dateformat": "{{day}}/{{month}}/{{year}} {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "Tháng Giêng", + "timeslider.month.february": "Tháng Hai", + "timeslider.month.march": "Tháng Ba", + "timeslider.month.april": "Tháng Tư", + "timeslider.month.may": "Tháng Năm", + "timeslider.month.june": "Tháng Sáu", + "timeslider.month.july": "Tháng Bảy", + "timeslider.month.august": "Tháng Tám", + "timeslider.month.september": "Tháng Chín", + "timeslider.month.october": "Tháng Mưá»i", + "timeslider.month.november": "Tháng Mưá»i Má»™t", + "timeslider.month.december": "Tháng Mưá»i Hai", + "timeslider.unnamedauthors": "Không tên {{in a}} {[plural(num) má»™t: tác giả, khác: tác giả]}", + "pad.savedrevs.marked": "Phiên bản này đã được đánh dấu là má»™t phiên bản đã lưu", + "pad.userlist.entername": "Nhập tên cá»§a bạn", + "pad.userlist.unnamed": "Không tên", + "pad.userlist.guest": "Khách", + "pad.userlist.deny": "Chặn", + "pad.userlist.approve": "Chấp nhận", + "pad.editbar.clearcolors": "Xóa màu chỉ tác giả trên toàn bá»™ tài liệu?", + "pad.impexp.importbutton": "Nhập ngay bây giá»", + "pad.impexp.importing": "Äang nhập…", + "pad.impexp.confirmimport": "Nhập má»™t tập tin sẽ ghi đè ná»™i dung hiện tại cá»§a pad. Bạn có muốn làm như vậy không?", + "pad.impexp.convertFailed": "Chúng tôi không thể nhập tập tin này. Hãy sá»­ dụng định dạng tập tin khác hay sao chéo và dán má»™t cách thá»§ công.", + "pad.impexp.uploadFailed": "Tải lên không thành công, vui lòng thá»­ lại", + "pad.impexp.importfailed": "Nhập thất bại", + "pad.impexp.copypaste": "Xin vui lòng sao chép và dán", + "pad.impexp.exportdisabled": "Xuất ra định dạng {{type}} đã bị vô hiệu hóa. Xin hãy liên hệ vá»›i quản trị viên hệ thống để biết thêm thông tin chi tiết." +} \ No newline at end of file diff --git a/src/locales/zh-hans.json b/src/locales/zh-hans.json index 7e29a3aef..a463ad9ac 100644 --- a/src/locales/zh-hans.json +++ b/src/locales/zh-hans.json @@ -1,114 +1,131 @@ { - "@metadata": { - "authors": [ - "Dimension", - "Hydra", - "\u4e4c\u62c9\u8de8\u6c2a", - "\u71c3\u7389" - ] - }, - "index.newPad": "\u65b0\u8bb0\u4e8b\u672c", - "pad.toolbar.bold.title": "\u7c97\u4f53\uff08Ctrl-B\uff09", - "pad.toolbar.italic.title": "\u659c\u4f53 (Ctrl-I)", - "pad.toolbar.underline.title": "\u5e95\u7ebf\uff08Ctrl-U\uff09", - "pad.toolbar.strikethrough.title": "\u5220\u9664\u7ebf", - "pad.toolbar.ol.title": "\u6709\u5e8f\u5217\u8868", - "pad.toolbar.ul.title": "\u65e0\u5e8f\u5217\u8868", - "pad.toolbar.indent.title": "\u7f29\u6392", - "pad.toolbar.unindent.title": "\u51f8\u6392", - "pad.toolbar.undo.title": "\u64a4\u6d88 (Ctrl-Z)", - "pad.toolbar.redo.title": "\u91cd\u505a (Ctrl-Y)", - "pad.toolbar.clearAuthorship.title": "\u6e05\u9664\u4f5c\u540d\u989c\u8272", - "pad.toolbar.timeslider.title": "\u65f6\u95f4\u8f74", - "pad.toolbar.savedRevision.title": "\u5df2\u4fdd\u5b58\u7684\u4fee\u8ba2", - "pad.toolbar.settings.title": "\u8bbe\u7f6e", - "pad.toolbar.embed.title": "\u5d4c\u5165\u6b64\u8bb0\u4e8b\u672c", - "pad.toolbar.showusers.title": "\u663e\u793a\u6b64\u8bb0\u4e8b\u672c\u7684\u7528\u6237", - "pad.colorpicker.save": "\u4fdd\u5b58", - "pad.colorpicker.cancel": "\u53d6\u6d88", - "pad.loading": "\u8f7d\u5165\u4e2d\u2026\u2026", - "pad.passwordRequired": "\u60a8\u9700\u8981\u4e00\u4e2a\u89c2\u770b\u8fd9\u4e2a\u8bb0\u4e8b\u672c\u7684\u5bc6\u7801", - "pad.permissionDenied": "\u60a8\u6ca1\u6709\u89c2\u770b\u8fd9\u4e2a\u8bb0\u4e8b\u672c\u7684\u6743\u9650", - "pad.wrongPassword": "\u60a8\u7684\u5bc6\u7801\u9519\u4e86", - "pad.settings.padSettings": "\u8bb0\u4e8b\u672c\u8bbe\u7f6e", - "pad.settings.myView": "\u6211\u7684\u89c6\u7a97", - "pad.settings.stickychat": "\u603b\u662f\u5728\u5c4f\u5e55\u4e0a\u663e\u793a\u804a\u5929", - "pad.settings.colorcheck": "\u4f5c\u8005\u989c\u8272", - "pad.settings.linenocheck": "\u884c\u53f7", - "pad.settings.fontType": "\u5b57\u4f53\u7c7b\u578b\uff1a", - "pad.settings.fontType.normal": "\u6b63\u5e38", - "pad.settings.fontType.monospaced": "\u7b49\u5bbd\u5b57\u4f53", - "pad.settings.globalView": "\u6240\u6709\u4eba\u7684\u89c6\u7a97", - "pad.settings.language": "\u8bed\u8a00\uff1a", - "pad.importExport.import_export": "\u5bfc\u5165\/\u5bfc\u51fa", - "pad.importExport.import": "\u4e0a\u8f7d\u4efb\u4f55\u6587\u5b57\u6863\u6216\u6587\u6863", - "pad.importExport.importSuccessful": "\u6210\u529f\uff01", - "pad.importExport.export": "\u5bfc\u51fa\u76ee\u524d\u7684\u8bb0\u4e8b\u7c3f\u4e3a\uff1a", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u7eaf\u6587\u672c", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF\uff08\u5f00\u653e\u6587\u6863\u683c\u5f0f\uff09", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.modals.connected": "\u5df2\u8fde\u63a5\u3002", - "pad.modals.reconnecting": "\u91cd\u65b0\u8fde\u63a5\u5230\u60a8\u7684\u8bb0\u4e8b\u7c3f...", - "pad.modals.forcereconnect": "\u5f3a\u5236\u91cd\u65b0\u8fde\u63a5", - "pad.modals.userdup": "\u5728\u53e6\u4e00\u4e2a\u89c6\u7a97\u4e2d\u6253\u5f00", - "pad.modals.userdup.explanation": "\u6b64\u8bb0\u4e8b\u7c3f\u4f3c\u4e4e\u5728\u6b64\u7535\u8111\u4e0a\u5728\u591a\u4e2a\u6d4f\u89c8\u5668\u89c6\u7a97\u4e2d\u6253\u5f00\u3002", - "pad.modals.userdup.advice": "\u91cd\u65b0\u8fde\u63a5\u5230\u6b64\u89c6\u7a97\u3002", - "pad.modals.unauth": "\u672a\u6388\u6743", - "pad.modals.looping": "\u5df2\u79bb\u7ebf\u3002", - "pad.modals.initsocketfail": "\u65e0\u6cd5\u8bbf\u95ee\u670d\u52a1\u5668\u3002", - "pad.modals.initsocketfail.explanation": "\u65e0\u6cd5\u8fde\u63a5\u5230\u540c\u6b65\u670d\u52a1\u5668\u3002", - "pad.modals.initsocketfail.cause": "\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u60a8\u7684\u6d4f\u89c8\u5668\u6216\u60a8\u7684\u4e92\u8054\u7f51\u8fde\u63a5\u7684\u95ee\u9898\u3002", - "pad.modals.slowcommit": "\u5df2\u79bb\u7ebf\u3002", - "pad.modals.slowcommit.explanation": "\u670d\u52a1\u5668\u6ca1\u6709\u54cd\u5e94\u3002", - "pad.modals.slowcommit.cause": "\u8fd9\u53ef\u80fd\u662f\u7531\u4e8e\u7f51\u7edc\u8fde\u63a5\u95ee\u9898\u3002", - "pad.modals.deleted": "\u5df2\u522a\u9664\u3002", - "pad.modals.deleted.explanation": "\u6b64\u8bb0\u4e8b\u672c\u5df2\u88ab\u79fb\u9664\u3002", - "pad.modals.disconnected": "\u60a8\u5df2\u88ab\u79bb\u7ebf\u3002", - "pad.modals.disconnected.explanation": "\u5230\u670d\u52a1\u5668\u7684\u8fde\u63a5\u5df2\u4e22\u5931", - "pad.modals.disconnected.cause": "\u670d\u52a1\u5668\u53ef\u80fd\u65e0\u6cd5\u4f7f\u7528\u3002\u82e5\u6b64\u60c5\u51b5\u6301\u7eed\u53d1\u751f\uff0c\u8bf7\u901a\u77e5\u6211\u4eec\u3002", - "pad.share": "\u5206\u4eab\u6b64\u8bb0\u4e8b\u672c", - "pad.share.readonly": "\u53ea\u80fd\u8bfb", - "pad.share.link": "\u94fe\u63a5", - "pad.share.emebdcode": "\u5d4c\u5165\u7f51\u5740", - "pad.chat": "\u804a\u5929", - "pad.chat.title": "\u6253\u5f00\u6b64\u8bb0\u4e8b\u7c3f\u7684\u804a\u5929\u3002", - "pad.chat.loadmessages": "\u52a0\u8f7d\u66f4\u591a\u4fe1\u606f", - "timeslider.toolbar.returnbutton": "\u8fd4\u56de\u8bb0\u4e8b\u672c", - "timeslider.toolbar.authors": "\u4f5c\u8005\uff1a", - "timeslider.toolbar.authorsList": "\u6ca1\u6709\u4f5c\u8005", - "timeslider.toolbar.exportlink.title": "\u5bfc\u51fa", - "timeslider.exportCurrent": "\u5bfc\u51fa\u76ee\u524d\u7248\u672c\u4e3a\uff1a", - "timeslider.version": "\u7b2c {{version}} \u7248\u672c", - "timeslider.saved": "\u5728{{year}}\u5e74{{month}}{{day}}\u65e5\u4fdd\u5b58", - "timeslider.month.january": "\u4e00\u6708", - "timeslider.month.february": "\u4e8c\u6708", - "timeslider.month.march": "\u4e09\u6708", - "timeslider.month.april": "\u56db\u6708", - "timeslider.month.may": "\u4e94\u6708", - "timeslider.month.june": "\u516d\u6708", - "timeslider.month.july": "\u4e03\u6708", - "timeslider.month.august": "\u516b\u6708", - "timeslider.month.september": "\u4e5d\u6708", - "timeslider.month.october": "\u5341\u6708", - "timeslider.month.november": "\u5341\u4e00\u6708", - "timeslider.month.december": "\u5341\u4e8c\u6708", - "timeslider.unnamedauthor": "{{num}}\u533f\u540d\u4f5c\u8005", - "timeslider.unnamedauthors": "{{num}}\u533f\u540d\u4f5c\u8005", - "pad.savedrevs.marked": "\u6b64\u4fee\u8ba2\u5df2\u6807\u8bb0\u4e3a\u4fdd\u5b58\u4fee\u8ba2", - "pad.userlist.entername": "\u8f93\u5165\u60a8\u7684\u59d3\u540d", - "pad.userlist.unnamed": "\u65e0\u540d", - "pad.userlist.guest": "\u8bbf\u5ba2", - "pad.userlist.deny": "\u62d2\u7edd", - "pad.userlist.approve": "\u6279\u51c6", - "pad.editbar.clearcolors": "\u6e05\u9664\u6574\u4e2a\u6587\u6863\u7684\u4f5c\u8005\u989c\u8272\u5417\uff1f", - "pad.impexp.importbutton": "\u73b0\u5728\u5bfc\u5165", - "pad.impexp.importing": "\u6b63\u5728\u5bfc\u5165...", - "pad.impexp.convertFailed": "\u6211\u4eec\u65e0\u6cd5\u5bfc\u5165\u6b64\u6587\u6863\u3002\u8bf7\u4f7f\u7528\u4ed6\u6587\u6863\u683c\u5f0f\u6216\u624b\u52a8\u590d\u5236\u8d34\u4e0a\u3002", - "pad.impexp.uploadFailed": "\u4e0a\u8f7d\u5931\u8d25\uff0c\u8bf7\u91cd\u8bd5", - "pad.impexp.importfailed": "\u5bfc\u5165\u5931\u8d25", - "pad.impexp.copypaste": "\u8bf7\u590d\u5236\u7c98\u8d34", - "pad.impexp.exportdisabled": "{{type}} \u683c\u5f0f\u7684\u5bfc\u51fa\u88ab\u7981\u7528\u3002\u6709\u5173\u8be6\u60c5\uff0c\u8bf7\u4e0e\u60a8\u7684\u7cfb\u7edf\u7ba1\u7406\u5458\u8054\u7cfb\u3002" + "@metadata": { + "authors": [ + "Dimension", + "Hydra", + "Hzy980512", + "Liuxinyu970226", + "Qiyue2001", + "Shangkuanlc", + "Shizhao", + "Yfdyh000", + "乌拉跨氪", + "燃玉" + ] + }, + "index.newPad": "新记事本", + "index.createOpenPad": "或者创建/打开带å字的记事本:", + "pad.toolbar.bold.title": "粗体(Ctrl-B)", + "pad.toolbar.italic.title": "斜体 (Ctrl-I)", + "pad.toolbar.underline.title": "下划线(Ctrl-U)", + "pad.toolbar.strikethrough.title": "删除线", + "pad.toolbar.ol.title": "有åºåˆ—表", + "pad.toolbar.ul.title": "æ— åºåˆ—表", + "pad.toolbar.indent.title": "增加缩进", + "pad.toolbar.unindent.title": "å‡å°‘缩进", + "pad.toolbar.undo.title": "撤消 (Ctrl-Z)", + "pad.toolbar.redo.title": "é‡åš (Ctrl-Y)", + "pad.toolbar.clearAuthorship.title": "清除作者颜色", + "pad.toolbar.import_export.title": "从ä¸åŒçš„æ–‡ä»¶æ ¼å¼å¯¼å…¥/导出", + "pad.toolbar.timeslider.title": "æ—¶é—´è½´", + "pad.toolbar.savedRevision.title": "ä¿å­˜ä¿®è®¢", + "pad.toolbar.settings.title": "设置", + "pad.toolbar.embed.title": "共享并嵌入此记事本", + "pad.toolbar.showusers.title": "显示此记事本上的用户", + "pad.colorpicker.save": "ä¿å­˜", + "pad.colorpicker.cancel": "å–æ¶ˆ", + "pad.loading": "载入中……", + "pad.passwordRequired": "您需è¦å¯†ç æ‰èƒ½è®¿é—®è¿™ä¸ªè®°äº‹æœ¬", + "pad.permissionDenied": "您没有访问这个记事本的æƒé™", + "pad.wrongPassword": "您的密ç é”™äº†", + "pad.settings.padSettings": "记事本设置", + "pad.settings.myView": "我的视窗", + "pad.settings.stickychat": "总是显示èŠå¤©å±å¹•", + "pad.settings.colorcheck": "作者颜色", + "pad.settings.linenocheck": "行å·", + "pad.settings.rtlcheck": "从å³åˆ°å·¦é˜…读内容å—?", + "pad.settings.fontType": "字体类型:", + "pad.settings.fontType.normal": "正常", + "pad.settings.fontType.monospaced": "等宽字体", + "pad.settings.globalView": "所有人视窗", + "pad.settings.language": "语言:", + "pad.importExport.import_export": "导入/导出", + "pad.importExport.import": "上载任何文本文件或档案", + "pad.importExport.importSuccessful": "æˆåŠŸï¼", + "pad.importExport.export": "当å‰è®°äº‹æœ¬å¯¼å‡ºä¸ºï¼š", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "纯文本", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF(开放文档格å¼ï¼‰", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "您åªèƒ½å¯¼å…¥çº¯æ–‡æœ¬æˆ–HTMLæ ¼å¼ã€‚\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003E安è£abiword\u003C/a\u003Eå–得更多高级的导入功能。", + "pad.modals.connected": "已连接。", + "pad.modals.reconnecting": "釿–°è¿žæŽ¥åˆ°æ‚¨çš„记事本...", + "pad.modals.forcereconnect": "å¼ºåˆ¶é‡æ–°è¿žæŽ¥", + "pad.modals.userdup": "在å¦ä¸€ä¸ªçª—å£ä¸­æ‰“å¼€", + "pad.modals.userdup.explanation": "此记事本似乎在本电脑上的多个æµè§ˆå™¨çª—å£ä¸­æ‰“开。", + "pad.modals.userdup.advice": "釿–°è¿žæŽ¥ï¼Œä½¿ç”¨æ­¤çª—å£ã€‚", + "pad.modals.unauth": "未授æƒ", + "pad.modals.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": "嵌入网å€", + "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": "在{{year}}å¹´{{month}}{{day}}æ—¥ä¿å­˜", + "timeslider.dateformat": "{{year}}å¹´{{month}}{{day}}æ—¥ {{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.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.uploadFailed": "上载失败,请é‡è¯•", + "pad.impexp.importfailed": "导入失败", + "pad.impexp.copypaste": "请å¤åˆ¶ç²˜è´´", + "pad.impexp.exportdisabled": "{{type}} æ ¼å¼çš„导出被ç¦ç”¨ã€‚有关详情,请与您的系统管ç†å‘˜è”系。" } \ No newline at end of file diff --git a/src/locales/zh-hant.json b/src/locales/zh-hant.json index a5027a521..75431c24f 100644 --- a/src/locales/zh-hant.json +++ b/src/locales/zh-hant.json @@ -1,120 +1,126 @@ { - "@metadata": { - "authors": { - "1": "Simon Shek" - } - }, - "index.newPad": "\u65b0Pad", - "index.createOpenPad": "\u6216\u5275\u5efa\uff0f\u958b\u555f\u4ee5\u4e0b\u540d\u7a31\u7684pad\uff1a", - "pad.toolbar.bold.title": "\u7c97\u9ad4\uff08Ctrl-B\uff09", - "pad.toolbar.italic.title": "\u659c\u9ad4\uff08Ctrl-I\uff09", - "pad.toolbar.underline.title": "\u5e95\u7dda\uff08Ctrl-U\uff09", - "pad.toolbar.strikethrough.title": "\u522a\u9664\u7dda", - "pad.toolbar.ol.title": "\u6709\u5e8f\u6e05\u55ae", - "pad.toolbar.ul.title": "\u7121\u5e8f\u6e05\u55ae", - "pad.toolbar.indent.title": "\u7e2e\u6392", - "pad.toolbar.unindent.title": "\u51f8\u6392", - "pad.toolbar.undo.title": "\u64a4\u92b7\uff08Ctrl-Z\uff09", - "pad.toolbar.redo.title": "\u91cd\u505a\uff08Ctrl-Y\uff09", - "pad.toolbar.clearAuthorship.title": "\u6e05\u9664\u4f5c\u540d\u984f\u8272", - "pad.toolbar.import_export.title": "\u4ee5\u5176\u4ed6\u6a94\u6848\u683c\u5f0f\u5c0e\u5165\uff0f\u532f\u51fa", - "pad.toolbar.timeslider.title": "\u6642\u9593\u8ef8", - "pad.toolbar.savedRevision.title": "\u5df2\u5132\u5b58\u7684\u4fee\u8a02", - "pad.toolbar.settings.title": "\u8a2d\u5b9a", - "pad.toolbar.embed.title": "\u5d4c\u5165\u6b64pad", - "pad.toolbar.showusers.title": "\u986f\u793a\u6b64pad\u7684\u7528\u6236", - "pad.colorpicker.save": "\u5132\u5b58", - "pad.colorpicker.cancel": "\u53d6\u6d88", - "pad.loading": "\u8f09\u5165\u4e2d...", - "pad.passwordRequired": "\u60a8\u9700\u8981\u5bc6\u78bc\u624d\u80fd\u8a2a\u554f\u9019\u500bpad", - "pad.permissionDenied": "\u4f60\u6c92\u6709\u8a2a\u554f\u9019\u500bpad\u7684\u6b0a\u9650", - "pad.wrongPassword": "\u5bc6\u78bc\u932f\u8aa4", - "pad.settings.padSettings": "Pad\u8a2d\u5b9a", - "pad.settings.myView": "\u6211\u7684\u8996\u7a97", - "pad.settings.stickychat": "\u6c38\u9060\u5728\u5c4f\u5e55\u4e0a\u986f\u793a\u804a\u5929", - "pad.settings.colorcheck": "\u4f5c\u8005\u984f\u8272", - "pad.settings.linenocheck": "\u884c\u865f", - "pad.settings.fontType": "\u5b57\u9ad4\u985e\u578b\uff1a", - "pad.settings.fontType.normal": "\u6b63\u5e38", - "pad.settings.fontType.monospaced": "\u7b49\u5bec", - "pad.settings.globalView": "\u6240\u6709\u4eba\u7684\u8996\u7a97", - "pad.settings.language": "\u8a9e\u8a00\uff1a", - "pad.importExport.import_export": "\u5c0e\u5165\uff0f\u532f\u51fa", - "pad.importExport.import": "\u4e0a\u8f09\u4efb\u4f55\u6587\u5b57\u6a94\u6216\u6587\u6a94", - "pad.importExport.importSuccessful": "\u5b8c\u6210\uff01", - "pad.importExport.export": "\u532f\u51fa\u7576\u524dpad\u70ba\uff1a", - "pad.importExport.exporthtml": "HTML", - "pad.importExport.exportplain": "\u7d14\u6587\u5b57", - "pad.importExport.exportword": "Microsoft Word", - "pad.importExport.exportpdf": "PDF", - "pad.importExport.exportopen": "ODF\uff08\u958b\u653e\u6587\u4ef6\u683c\u5f0f\uff09", - "pad.importExport.exportdokuwiki": "DokuWiki", - "pad.importExport.abiword.innerHTML": "\u60a8\u53ea\u53ef\u4ee5\u7d14\u6587\u5b57\u6216html\u683c\u5f0f\u6a94\u532f\u5165\u3002\u5b89\u88ddabiword<\/a>\u53d6\u5f97\u66f4\u591a\u9032\u968e\u7684\u532f\u5165\u529f\u80fd\u3002", - "pad.modals.connected": "\u5df2\u9023\u7dda\u3002", - "pad.modals.reconnecting": "\u91cd\u65b0\u9023\u63a5\u5230\u60a8\u7684pad...", - "pad.modals.forcereconnect": "\u5f37\u5236\u91cd\u65b0\u9023\u7dda", - "pad.modals.userdup": "\u5728\u53e6\u4e00\u500b\u8996\u7a97\u4e2d\u958b\u555f", - "pad.modals.userdup.explanation": "\u6b64pad\u4f3c\u4e4e\u5728\u6b64\u96fb\u8166\u4e0a\u7684\u591a\u500b\u700f\u89bd\u5668\u8996\u7a97\u4e2d\u958b\u555f\u3002", - "pad.modals.userdup.advice": "\u91cd\u65b0\u9023\u63a5\u5230\u6b64\u8996\u7a97\u3002", - "pad.modals.unauth": "\u672a\u6388\u6b0a", - "pad.modals.unauth.explanation": "\u60a8\u7684\u6b0a\u9650\u5728\u67e5\u770b\u6b64\u9801\u6642\u767c\u751f\u66f4\u6539\u3002\u8acb\u5617\u8a66\u91cd\u65b0\u9023\u63a5\u3002", - "pad.modals.looping": "\u5df2\u96e2\u7dda\u3002", - "pad.modals.looping.explanation": "\u8207\u540c\u6b65\u4f3a\u670d\u5668\u9593\u6709\u901a\u4fe1\u554f\u984c\u3002", - "pad.modals.looping.cause": "\u4e5f\u8a31\u60a8\u901a\u904e\u4e00\u500b\u4e0d\u76f8\u5bb9\u7684\u9632\u706b\u7246\u6216\u4ee3\u7406\u4f3a\u670d\u5668\u9023\u63a5\u3002", - "pad.modals.initsocketfail": "\u7121\u6cd5\u8a2a\u554f\u4f3a\u670d\u5668\u3002", - "pad.modals.initsocketfail.explanation": "\u7121\u6cd5\u9023\u63a5\u5230\u540c\u6b65\u4f3a\u670d\u5668\u3002", - "pad.modals.initsocketfail.cause": "\u53ef\u80fd\u662f\u7531\u65bc\u60a8\u7684\u700f\u89bd\u5668\u6216\u60a8\u7684\u4e92\u806f\u7db2\u9023\u63a5\u7684\u554f\u984c\u3002", - "pad.modals.slowcommit": "\u5df2\u96e2\u7dda\u3002", - "pad.modals.slowcommit.explanation": "\u4f3a\u670d\u5668\u6c92\u6709\u56de\u61c9\u3002", - "pad.modals.slowcommit.cause": "\u53ef\u80fd\u662f\u7531\u65bc\u7db2\u8def\u9023\u63a5\u554f\u984c\u3002", - "pad.modals.deleted": "\u5df2\u522a\u9664\u3002", - "pad.modals.deleted.explanation": "\u6b64pad\u5df2\u88ab\u79fb\u9664\u3002", - "pad.modals.disconnected": "\u60a8\u5df2\u4e2d\u65b7\u9023\u7dda\u3002", - "pad.modals.disconnected.explanation": "\u4f3a\u670d\u5668\u9023\u63a5\u66fe\u4e2d\u65b7", - "pad.modals.disconnected.cause": "\u4f3a\u670d\u5668\u53ef\u80fd\u7121\u6cd5\u4f7f\u7528\u3002\u82e5\u6b64\u60c5\u6cc1\u6301\u7e8c\u767c\u751f\uff0c\u8acb\u901a\u77e5\u6211\u5011\u3002", - "pad.share": "\u5206\u4eab\u6b64pad", - "pad.share.readonly": "\u552f\u8b80", - "pad.share.link": "\u9023\u7d50", - "pad.share.emebdcode": "\u5d4c\u5165\u7db2\u5740", - "pad.chat": "\u804a\u5929", - "pad.chat.title": "\u6253\u958b\u6b64pad\u7684\u804a\u5929\u3002", - "pad.chat.loadmessages": "\u8f09\u5165\u66f4\u591a\u8a0a\u606f", - "timeslider.pageTitle": "{{appTitle}}\u6642\u9593\u8ef8", - "timeslider.toolbar.returnbutton": "\u8fd4\u56de\u5230pad", - "timeslider.toolbar.authors": "\u4f5c\u8005\uff1a", - "timeslider.toolbar.authorsList": "\u7121\u4f5c\u8005", - "timeslider.toolbar.exportlink.title": "\u532f\u51fa", - "timeslider.exportCurrent": "\u532f\u51fa\u7576\u524d\u7248\u672c\u70ba\uff1a", - "timeslider.version": "\u7248\u672c{{version}}", - "timeslider.saved": "{{year}}{{month}}{{day}}\u4fdd\u5b58", - "timeslider.dateformat": "{{year}}{{month}}{{day}} {{hours}}:{{minutes}}:{{seconds}}", - "timeslider.month.january": "1\u6708", - "timeslider.month.february": "2\u6708", - "timeslider.month.march": "3\u6708", - "timeslider.month.april": "4\u6708", - "timeslider.month.may": "5\u6708", - "timeslider.month.june": "6\u6708", - "timeslider.month.july": "7\u6708", - "timeslider.month.august": "8\u6708", - "timeslider.month.september": "9\u6708", - "timeslider.month.october": "10\u6708", - "timeslider.month.november": "11\u6708", - "timeslider.month.december": "12\u6708", - "timeslider.unnamedauthor": "{{num}} \u533f\u540d\u4f5c\u8005", - "timeslider.unnamedauthors": "{{num}} \u533f\u540d\u4f5c\u8005", - "pad.savedrevs.marked": "\u6b64\u4fee\u8a02\u5df2\u6a19\u8a18\u70ba\u5df2\u4fdd\u5b58\u3002", - "pad.userlist.entername": "\u8f38\u5165\u60a8\u7684\u59d3\u540d", - "pad.userlist.unnamed": "\u672a\u547d\u540d", - "pad.userlist.guest": "\u8a2a\u5ba2", - "pad.userlist.deny": "\u62d2\u7d55", - "pad.userlist.approve": "\u6279\u51c6", - "pad.editbar.clearcolors": "\u6e05\u9664\u6574\u500b\u6587\u6a94\u7684\u4f5c\u8005\u984f\u8272\u55ce\uff1f", - "pad.impexp.importbutton": "\u73fe\u5728\u532f\u5165", - "pad.impexp.importing": "\u532f\u5165\u4e2d...", - "pad.impexp.confirmimport": "\u532f\u5165\u7684\u6a94\u6848\u5c07\u6703\u8986\u84cbpad\u5167\u76ee\u524d\u7684\u6587\u5b57\u3002\u60a8\u78ba\u5b9a\u8981\u7e7c\u7e8c\u55ce\uff1f", - "pad.impexp.convertFailed": "\u672a\u80fd\u532f\u5165\u6b64\u6a94\u6848\u3002\u8acb\u4ee5\u5176\u4ed6\u6a94\u6848\u683c\u5f0f\u6216\u624b\u52d5\u8907\u88fd\u8cbc\u4e0a\u532f\u5165\u3002", - "pad.impexp.uploadFailed": "\u4e0a\u8f09\u5931\u6557\uff0c\u8acb\u91cd\u8a66", - "pad.impexp.importfailed": "\u532f\u5165\u5931\u6557", - "pad.impexp.copypaste": "\u8acb\u8907\u88fd\u8cbc\u4e0a", - "pad.impexp.exportdisabled": "{{type}}\u683c\u5f0f\u7684\u532f\u51fa\u88ab\u7981\u7528\u3002\u6709\u95dc\u8a73\u60c5\uff0c\u8acb\u8207\u60a8\u7684\u7cfb\u7d71\u7ba1\u7406\u54e1\u806f\u7e6b\u3002" + "@metadata": { + "authors": { + "0": "Justincheng12345", + "1": "Liuxinyu970226", + "2": "Shangkuanlc", + "3": "Shirayuki", + "5": "Simon Shek" + } + }, + "index.newPad": "æ–°Pad", + "index.createOpenPad": "或創建ï¼é–‹å•Ÿä»¥ä¸‹å稱的pad:", + "pad.toolbar.bold.title": "粗體(Ctrl-B)", + "pad.toolbar.italic.title": "斜體(Ctrl-I)", + "pad.toolbar.underline.title": "底線(Ctrl-U)", + "pad.toolbar.strikethrough.title": "刪除線", + "pad.toolbar.ol.title": "æœ‰åºæ¸…å–®", + "pad.toolbar.ul.title": "ç„¡åºæ¸…å–®", + "pad.toolbar.indent.title": "縮排(TAB)", + "pad.toolbar.unindent.title": "凸排(Shift+TAB)", + "pad.toolbar.undo.title": "撤銷(Ctrl-Z)", + "pad.toolbar.redo.title": "é‡åšï¼ˆCtrl-Y)", + "pad.toolbar.clearAuthorship.title": "清除å”作者é¡è‰²å€åˆ¥", + "pad.toolbar.import_export.title": "以其他檔案格å¼åŒ¯å…¥ï¼åŒ¯å‡º", + "pad.toolbar.timeslider.title": "時間軸", + "pad.toolbar.savedRevision.title": "儲存修訂", + "pad.toolbar.settings.title": "設定", + "pad.toolbar.embed.title": "分享和嵌入此pad", + "pad.toolbar.showusers.title": "顯示此pad的用戶", + "pad.colorpicker.save": "儲存", + "pad.colorpicker.cancel": "å–æ¶ˆ", + "pad.loading": "載入中...", + "pad.passwordRequired": "您需è¦å¯†ç¢¼æ‰èƒ½è¨ªå•這個pad", + "pad.permissionDenied": "你沒有訪å•這個pad的權é™", + "pad.wrongPassword": "密碼錯誤", + "pad.settings.padSettings": "Pad設定", + "pad.settings.myView": "我的視窗", + "pad.settings.stickychat": "æ°¸é åœ¨å±å¹•上顯示èŠå¤©", + "pad.settings.colorcheck": "å”作者é¡è‰²", + "pad.settings.linenocheck": "行號", + "pad.settings.rtlcheck": "從å³è‡³å·¦è®€å–內容?", + "pad.settings.fontType": "字體類型:", + "pad.settings.fontType.normal": "正常", + "pad.settings.fontType.monospaced": "等寬", + "pad.settings.globalView": "所有人的視窗", + "pad.settings.language": "語言:", + "pad.importExport.import_export": "匯入ï¼åŒ¯å‡º", + "pad.importExport.import": "上載任何文字檔或文檔", + "pad.importExport.importSuccessful": "完æˆï¼", + "pad.importExport.export": "匯出當å‰pad為:", + "pad.importExport.exporthtml": "HTML", + "pad.importExport.exportplain": "純文字", + "pad.importExport.exportword": "Microsoft Word", + "pad.importExport.exportpdf": "PDF", + "pad.importExport.exportopen": "ODF(開放文件格å¼ï¼‰", + "pad.importExport.exportdokuwiki": "DokuWiki", + "pad.importExport.abiword.innerHTML": "您åªå¯ä»¥ç´”文字或htmlæ ¼å¼æª”匯入。\u003Ca href=\"https://github.com/ether/etherpad-lite/wiki/How-to-enable-importing-and-exporting-different-file-formats-in-Ubuntu-or-OpenSuse-or-SLES-with-AbiWord\"\u003E安è£abiword\u003C/a\u003Eå–得更多進階的匯入功能。", + "pad.modals.connected": "已連線。", + "pad.modals.reconnecting": "釿–°é€£æŽ¥åˆ°æ‚¨çš„pad...", + "pad.modals.forcereconnect": "å¼·åˆ¶é‡æ–°é€£ç·š", + "pad.modals.userdup": "在å¦ä¸€å€‹è¦–窗中開啟", + "pad.modals.userdup.explanation": "æ­¤pad似乎在此電腦上的多個ç€è¦½å™¨è¦–窗中開啟。", + "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已被移除。", + "pad.modals.disconnected": "您已中斷連線。", + "pad.modals.disconnected.explanation": "伺æœå™¨é€£æŽ¥æ›¾ä¸­æ–·", + "pad.modals.disconnected.cause": "伺æœå™¨å¯èƒ½ç„¡æ³•ä½¿ç”¨ã€‚è‹¥æ­¤æƒ…æ³æŒçºŒç™¼ç”Ÿï¼Œè«‹é€šçŸ¥ä¼ºæœå™¨ç®¡ç†å“¡ã€‚", + "pad.share": "分享此pad", + "pad.share.readonly": "唯讀", + "pad.share.link": "連çµ", + "pad.share.emebdcode": "嵌入網å€", + "pad.chat": "èŠå¤©åŠŸèƒ½", + "pad.chat.title": "打開padèŠå¤©åŠŸèƒ½", + "pad.chat.loadmessages": "載入更多訊æ¯", + "timeslider.pageTitle": "{{appTitle}}時間軸", + "timeslider.toolbar.returnbutton": "返回到pad", + "timeslider.toolbar.authors": "å”作者:", + "timeslider.toolbar.authorsList": "ç„¡å”作者", + "timeslider.toolbar.exportlink.title": "匯出", + "timeslider.exportCurrent": "匯出當å‰ç‰ˆæœ¬ç‚ºï¼š", + "timeslider.version": "版本{{version}}", + "timeslider.saved": "{{year}}å¹´{{month}}月{{day}}日儲存", + "timeslider.dateformat": "{{year}}å¹´{{month}}月{{day}}æ—¥ {{hours}}:{{minutes}}:{{seconds}}", + "timeslider.month.january": "1月", + "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": "8月", + "timeslider.month.september": "9月", + "timeslider.month.october": "10月", + "timeslider.month.november": "11月", + "timeslider.month.december": "12月", + "timeslider.unnamedauthors": "{{num}}匿å{[plural(num) 作者]}", + "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.confirmimport": "匯入的檔案將會覆蓋padå…§ç›®å‰çš„æ–‡å­—。您確定è¦ç¹¼çºŒå—Žï¼Ÿ", + "pad.impexp.convertFailed": "æœªèƒ½åŒ¯å…¥æ­¤æª”æ¡ˆã€‚è«‹ä»¥å…¶ä»–æª”æ¡ˆæ ¼å¼æˆ–手動複製貼上匯入。", + "pad.impexp.uploadFailed": "上載失敗,請é‡è©¦", + "pad.impexp.importfailed": "匯入失敗", + "pad.impexp.copypaste": "請複製貼上", + "pad.impexp.exportdisabled": "{{type}}æ ¼å¼çš„匯出被ç¦ç”¨ã€‚有關詳情,請與您的系統管ç†å“¡è¯ç¹«ã€‚" } \ No newline at end of file diff --git a/src/node/db/API.js b/src/node/db/API.js index 7a9ce41fa..00be19186 100644 --- a/src/node/db/API.js +++ b/src/node/db/API.js @@ -74,6 +74,124 @@ exports.listSessionsOfAuthor = sessionManager.listSessionsOfAuthor; /**PAD CONTENT FUNCTIONS*/ /************************/ +/** +getAttributePool(padID) returns the attribute pool of a pad + +Example returns: +{ + "code":0, + "message":"ok", + "data": { + "pool":{ + "numToAttrib":{ + "0":["author","a.X4m8bBWJBZJnWGSh"], + "1":["author","a.TotfBPzov54ihMdH"], + "2":["author","a.StiblqrzgeNTbK05"], + "3":["bold","true"] + }, + "attribToNum":{ + "author,a.X4m8bBWJBZJnWGSh":0, + "author,a.TotfBPzov54ihMdH":1, + "author,a.StiblqrzgeNTbK05":2, + "bold,true":3 + }, + "nextNum":4 + } + } +} + +*/ +exports.getAttributePool = function (padID, callback) +{ + getPadSafe(padID, true, function(err, pad) + { + if (ERR(err, callback)) return; + callback(null, {pool: pad.pool}); + }); +} + +/** +getRevisionChangeset (padID, [rev]) + +get the changeset at a given revision, or last revision if 'rev' is not defined. + +Example returns: +{ + "code" : 0, + "message" : "ok", + "data" : "Z:1>6b|5+6b$Welcome to Etherpad!\n\nThis pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!\n\nGet involved with Etherpad at http://etherpad.org\n" +} + +*/ +exports.getRevisionChangeset = function(padID, rev, callback) +{ + // check if rev is set + if (typeof rev === "function") + { + callback = rev; + rev = undefined; + } + + // check if rev is a number + if (rev !== undefined && typeof rev !== "number") + { + // try to parse the number + if (!isNaN(parseInt(rev))) + { + rev = parseInt(rev); + } + else + { + callback(new customError("rev is not a number", "apierror")); + return; + } + } + + // ensure this is not a negative number + if (rev !== undefined && rev < 0) + { + callback(new customError("rev is not a negative number", "apierror")); + return; + } + + // ensure this is not a float value + if (rev !== undefined && !is_int(rev)) + { + callback(new customError("rev is a float value", "apierror")); + return; + } + + // get the pad + getPadSafe(padID, true, function(err, pad) + { + if(ERR(err, callback)) return; + + //the client asked for a special revision + if(rev !== undefined) + { + //check if this is a valid revision + if(rev > pad.getHeadRevisionNumber()) + { + callback(new customError("rev is higher than the head revision of the pad","apierror")); + return; + } + + //get the changeset for this revision + pad.getRevisionChangeset(rev, function(err, changeset) + { + if(ERR(err, callback)) return; + + callback(null, changeset); + }) + } + //the client wants the latest changeset, lets return it to him + else + { + callback(null, {"changeset": pad.getRevisionChangeset(pad.getHeadRevisionNumber())}); + } + }); +} + /** getText(padID, [rev]) returns the text of a pad @@ -326,8 +444,8 @@ exports.getChatHistory = function(padID, start, end, callback) // fall back to getting the whole chat-history if a parameter is missing if(!start || !end) { - start = 0; - end = pad.chatHead; + start = 0; + end = pad.chatHead; } if(start >= chatHead && chatHead > 0) @@ -438,6 +556,46 @@ exports.deletePad = function(padID, callback) }); } +/** +copyPad(sourceID, destinationID[, force=false]) copies a pad. If force is true, + the destination will be overwritten if it exists. + +Example returns: + +{code: 0, message:"ok", data: {padID: destinationID}} +{code: 1, message:"padID does not exist", data: null} +*/ +exports.copyPad = function(sourceID, destinationID, force, callback) +{ + getPadSafe(sourceID, true, function(err, pad) + { + if(ERR(err, callback)) return; + + pad.copy(destinationID, force, callback); + }); +} + +/** +movePad(sourceID, destinationID[, force=false]) moves a pad. If force is true, + the destination will be overwritten if it exists. + +Example returns: + +{code: 0, message:"ok", data: {padID: destinationID}} +{code: 1, message:"padID does not exist", data: null} +*/ +exports.movePad = function(sourceID, destinationID, force, callback) +{ + getPadSafe(sourceID, true, function(err, pad) + { + if(ERR(err, callback)) return; + + pad.copy(destinationID, force, function(err) { + if(ERR(err, callback)) return; + pad.remove(callback); + }); + }); +} /** getReadOnlyLink(padID) returns the read only link of a pad @@ -664,7 +822,7 @@ createDiffHTML(padID, startRev, endRev) returns an object of diffs from 2 points Example returns: -{"code":0,"message":"ok","data":{"html":"Welcome to Etherpad Lite!

This pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!

Get involved with Etherpad at
http://etherpad.org
aw

","authors":["a.HKIv23mEbachFYfH",""]}} +{"code":0,"message":"ok","data":{"html":"Welcome to Etherpad!

This pad text is synchronized as you type, so that everyone viewing this page sees the same text. This allows you to collaborate seamlessly on documents!

Get involved with Etherpad at http://etherpad.org
aw

","authors":["a.HKIv23mEbachFYfH",""]}} {"code":4,"message":"no or wrong API Key","data":null} */ exports.createDiffHTML = function(padID, startRev, endRev, callback){ diff --git a/src/node/db/AuthorManager.js b/src/node/db/AuthorManager.js index 667e0605d..5ba608e98 100644 --- a/src/node/db/AuthorManager.js +++ b/src/node/db/AuthorManager.js @@ -22,6 +22,7 @@ var ERR = require("async-stacktrace"); var db = require("./DB").db; var async = require("async"); +var customError = require("../utils/customError"); var randomString = require('ep_etherpad-lite/static/js/pad_utils').randomString; exports.getColorPalette = function(){ @@ -272,4 +273,4 @@ exports.removePad = function (authorID, padID) db.set("globalAuthor:" + authorID, author); } }); -} \ No newline at end of file +} diff --git a/src/node/db/GroupManager.js b/src/node/db/GroupManager.js index 81b0cb9ef..82c14c39d 100644 --- a/src/node/db/GroupManager.js +++ b/src/node/db/GroupManager.js @@ -215,25 +215,32 @@ exports.createGroupIfNotExistsFor = function(groupMapper, callback) { if(ERR(err, callback)) return; + // there is a group for this mapper + if(groupID) { + exports.doesGroupExist(groupID, function(err, exists) { + if(ERR(err, callback)) return; + if(exists) return callback(null, {groupID: groupID}); + + // hah, the returned group doesn't exist, let's create one + createGroupForMapper(callback) + }) + } //there is no group for this mapper, let's create a group - if(groupID == null) - { + else { + createGroupForMapper(callback) + } + + function createGroupForMapper(cb) { exports.createGroup(function(err, responseObj) { - if(ERR(err, callback)) return; + if(ERR(err, cb)) return; //create the mapper entry for this group db.set("mapper2group:"+groupMapper, responseObj.groupID); - callback(null, responseObj); + cb(null, responseObj); }); } - //there is a group for this mapper, let's return it - else - { - if(ERR(err, callback)) return; - callback(null, {groupID: groupID}); - } }); } diff --git a/src/node/db/Pad.js b/src/node/db/Pad.js index 4701e82a3..180517d1f 100644 --- a/src/node/db/Pad.js +++ b/src/node/db/Pad.js @@ -13,6 +13,8 @@ var settings = require('../utils/Settings'); var authorManager = require("./AuthorManager"); var padManager = require("./PadManager"); var padMessageHandler = require("../handler/PadMessageHandler"); +var groupManager = require("./GroupManager"); +var customError = require("../utils/customError"); var readOnlyManager = require("./ReadOnlyManager"); var crypto = require("crypto"); var randomString = require("../utils/randomstring"); @@ -404,6 +406,152 @@ Pad.prototype.init = function init(text, callback) { }); }; +Pad.prototype.copy = function copy(destinationID, force, callback) { + var sourceID = this.id; + var _this = this; + + // make force optional + if (typeof force == "function") { + callback = force; + force = false; + } + else if (force == undefined || force.toLowerCase() != "true") { + force = false; + } + else force = true; + + //kick everyone from this pad + // TODO: this presents a message on the client saying that the pad was 'deleted'. Fix this? + padMessageHandler.kickSessionsFromPad(sourceID); + + // flush the source pad: + _this.saveToDatabase(); + + async.series([ + // if it's a group pad, let's make sure the group exists. + function(callback) + { + if (destinationID.indexOf("$") != -1) + { + groupManager.doesGroupExist(destinationID.split("$")[0], function (err, exists) + { + if(ERR(err, callback)) return; + + //group does not exist + if(exists == false) + { + callback(new customError("groupID does not exist for destinationID","apierror")); + return; + } + //everything is fine, continue + else + { + callback(); + } + }); + } + else + callback(); + }, + // if the pad exists, we should abort, unless forced. + function(callback) + { + console.log("destinationID", destinationID, force); + padManager.doesPadExists(destinationID, function (err, exists) + { + if(ERR(err, callback)) return; + + if(exists == true) + { + if (!force) + { + console.log("erroring out without force"); + callback(new customError("destinationID already exists","apierror")); + console.log("erroring out without force - after"); + return; + } + else // exists and forcing + { + padManager.getPad(destinationID, function(err, pad) { + if (ERR(err, callback)) return; + pad.remove(callback); + }); + } + } + else + { + callback(); + } + }); + }, + // copy the 'pad' entry + function(callback) + { + db.get("pad:"+sourceID, function(err, pad) { + db.set("pad:"+destinationID, pad); + }); + callback(); + }, + //copy all relations + function(callback) + { + async.parallel([ + //copy all chat messages + function(callback) + { + var chatHead = _this.chatHead; + + for(var i=0;i<=chatHead;i++) + { + db.get("pad:"+sourceID+":chat:"+i, function (err, chat) { + if (ERR(err, callback)) return; + db.set("pad:"+destinationID+":chat:"+i, chat); + }); + } + + callback(); + }, + //copy all revisions + function(callback) + { + var revHead = _this.head; + //console.log(revHead); + for(var i=0;i<=revHead;i++) + { + db.get("pad:"+sourceID+":revs:"+i, function (err, rev) { + //console.log("HERE"); + + if (ERR(err, callback)) return; + db.set("pad:"+destinationID+":revs:"+i, rev); + }); + } + + callback(); + }, + //add the new pad to all authors who contributed to the old one + function(callback) + { + var authorIDs = _this.getAllAuthors(); + + authorIDs.forEach(function (authorID) + { + console.log("authors"); + authorManager.addPad(authorID, destinationID); + }); + + callback(); + }, + // parallel + ], callback); + }, + // series + ], function(err) + { + if(ERR(err, callback)) return; + callback(null, {padID: destinationID}); + }); +}; + Pad.prototype.remove = function remove(callback) { var padID = this.id; var _this = this; @@ -487,7 +635,7 @@ Pad.prototype.remove = function remove(callback) { authorIDs.forEach(function (authorID) { - authorManager.removePad(authorID, padID); + authorManager.removePad(authorID, padID); }); callback(); diff --git a/src/node/db/PadManager.js b/src/node/db/PadManager.js index 5e0af4643..2ecd6e274 100644 --- a/src/node/db/PadManager.js +++ b/src/node/db/PadManager.js @@ -24,7 +24,9 @@ var Pad = require("../db/Pad").Pad; var db = require("./DB").db; /** - * An Object containing all known Pads. Provides "get" and "set" functions, + * A cache of all loaded Pads. + * + * Provides "get" and "set" functions, * which should be used instead of indexing with brackets. These prepend a * colon to the key, to avoid conflicting with built-in Object methods or with * these functions themselves. @@ -37,39 +39,55 @@ var globalPads = { set: function (name, value) { this[':'+name] = value; - padList.addPad(name); }, - remove: function (name) { delete this[':'+name]; } + remove: function (name) { + delete this[':'+name]; + } }; +/** + * A cache of the list of all pads. + * + * Updated without db access as new pads are created/old ones removed. + */ var padList = { list: [], sorted : false, - init: function() + initiated: false, + init: function(cb) { db.findKeys("pad:*", "*:*:*", function(err, dbData) { - if(ERR(err)) return; + if(ERR(err, cb)) return; if(dbData != null){ + padList.initiated = true dbData.forEach(function(val){ padList.addPad(val.replace(/pad:/,""),false); }); + cb && cb() } }); return this; }, + load: function(cb) { + if(this.initiated) cb && cb() + else this.init(cb) + }, /** * Returns all pads in alphabetical order as array. */ - getPads: function(){ - if(!this.sorted){ - this.list=this.list.sort(); - this.sorted=true; - } - return this.list; + getPads: function(cb){ + this.load(function() { + if(!padList.sorted){ + padList.list = padList.list.sort(); + padList.sorted = true; + } + cb && cb(padList.list); + }) }, addPad: function(name) { + if(!this.initiated) return; if(this.list.indexOf(name) == -1){ this.list.push(name); this.sorted=false; @@ -77,7 +95,8 @@ var padList = { }, removePad: function(name) { - var index=this.list.indexOf(name); + if(!this.initiated) return; + var index = this.list.indexOf(name); if(index>-1){ this.list.splice(index,1); this.sorted=false; @@ -85,7 +104,6 @@ var padList = { } }; //initialises the allknowing data structure -padList.init(); /** * An array of padId transformations. These represent changes in pad name policy over @@ -146,25 +164,23 @@ exports.getPad = function(id, text, callback) else { pad = new Pad(id); - + //initalize the pad pad.init(text, function(err) { if(ERR(err, callback)) return; - globalPads.set(id, pad); + padList.addPad(id); callback(null, pad); }); } } -exports.listAllPads = function(callback) +exports.listAllPads = function(cb) { - if(callback != null){ - callback(null,{padIDs: padList.getPads()}); - }else{ - return {padIDs: padList.getPads()}; - } + padList.getPads(function(list) { + cb && cb(null, {padIDs: list}); + }); } //checks if a pad exists @@ -230,9 +246,8 @@ exports.removePad = function(padId){ padList.removePad(padId); } -//removes a pad from the array +//removes a pad from the cache exports.unloadPad = function(padId) { - if(globalPads.get(padId)) - globalPads.remove(padId); + globalPads.remove(padId); } diff --git a/src/node/db/ReadOnlyManager.js b/src/node/db/ReadOnlyManager.js index b135e6139..dd1e478ec 100644 --- a/src/node/db/ReadOnlyManager.js +++ b/src/node/db/ReadOnlyManager.js @@ -77,28 +77,22 @@ exports.getPadId = function(readOnlyId, callback) * returns a the padId and readonlyPadId in an object for any id * @param {String} padIdOrReadonlyPadId read only id or real pad id */ -exports.getIds = function(padIdOrReadonlyPadId, callback) { - var handleRealPadId = function () { - exports.getReadOnlyId(padIdOrReadonlyPadId, function (err, value) { +exports.getIds = function(id, callback) { + if (id.indexOf("r.") == 0) + exports.getPadId(id, function (err, value) { + if(ERR(err, callback)) return; + callback(null, { + readOnlyPadId: id, + padId: value, // Might be null, if this is an unknown read-only id + readonly: true + }); + }); + else + exports.getReadOnlyId(id, function (err, value) { callback(null, { readOnlyPadId: value, - padId: padIdOrReadonlyPadId, + padId: id, readonly: false }); }); - } - - if (padIdOrReadonlyPadId.indexOf("r.") != 0) - return handleRealPadId(); - - exports.getPadId(padIdOrReadonlyPadId, function (err, value) { - if(ERR(err, callback)) return; - if (value == null) - return handleRealPadId(); - callback(null, { - readOnlyPadId: padIdOrReadonlyPadId, - padId: value, - readonly: true - }); - }); } diff --git a/src/node/db/SecurityManager.js b/src/node/db/SecurityManager.js index 4289e39ca..66cfd292c 100644 --- a/src/node/db/SecurityManager.js +++ b/src/node/db/SecurityManager.js @@ -27,6 +27,8 @@ var padManager = require("./PadManager"); var sessionManager = require("./SessionManager"); var settings = require("../utils/Settings"); var randomString = require('ep_etherpad-lite/static/js/pad_utils').randomString; +var log4js = require('log4js'); +var authLogger = log4js.getLogger("auth"); /** * This function controlls the access to a pad, it checks if the user can access a pad. @@ -39,6 +41,11 @@ var randomString = require('ep_etherpad-lite/static/js/pad_utils').randomString; exports.checkAccess = function (padID, sessionCookie, token, password, callback) { var statusObject; + + if(!padID) { + callback(null, {accessStatus: "deny"}); + return; + } // a valid session is required (api-only mode) if(settings.requireSession) @@ -117,31 +124,43 @@ exports.checkAccess = function (padID, sessionCookie, token, password, callback) //get information about all sessions contained in this cookie function(callback) { - if (!sessionCookie) { + if (!sessionCookie) + { callback(); return; } var sessionIDs = sessionCookie.split(','); - async.forEach(sessionIDs, function(sessionID, callback) { - sessionManager.getSessionInfo(sessionID, function(err, sessionInfo) { + async.forEach(sessionIDs, function(sessionID, callback) + { + sessionManager.getSessionInfo(sessionID, function(err, sessionInfo) + { //skip session if it doesn't exist - if(err && err.message == "sessionID does not exist") return; + if(err && err.message == "sessionID does not exist") + { + authLogger.debug("Auth failed: unknown session"); + callback(); + return; + } if(ERR(err, callback)) return; var now = Math.floor(new Date().getTime()/1000); //is it for this group? - if(sessionInfo.groupID != groupID) { - callback(); - return; + if(sessionInfo.groupID != groupID) + { + authLogger.debug("Auth failed: wrong group"); + callback(); + return; } //is validUntil still ok? - if(sessionInfo.validUntil <= now){ - callback(); - return; + if(sessionInfo.validUntil <= now) + { + authLogger.debug("Auth failed: validUntil"); + callback(); + return; } // There is a valid session @@ -234,7 +253,11 @@ exports.checkAccess = function (padID, sessionCookie, token, password, callback) //--> grant access statusObject = {accessStatus: "grant", authorID: sessionAuthor}; //--> deny access if user isn't allowed to create the pad - if(settings.editOnly) statusObject.accessStatus = "deny"; + if(settings.editOnly) + { + authLogger.debug("Auth failed: valid session & pad does not exist"); + statusObject.accessStatus = "deny"; + } } // there is no valid session avaiable AND pad exists else if(!validSession && padExists) @@ -266,6 +289,7 @@ exports.checkAccess = function (padID, sessionCookie, token, password, callback) //- its not public else if(!isPublic) { + authLogger.debug("Auth failed: invalid session & pad is not public"); //--> deny access statusObject = {accessStatus: "deny"}; } @@ -277,6 +301,7 @@ exports.checkAccess = function (padID, sessionCookie, token, password, callback) // there is no valid session avaiable AND pad doesn't exists else { + authLogger.debug("Auth failed: invalid session & pad does not exist"); //--> deny access statusObject = {accessStatus: "deny"}; } diff --git a/src/node/db/SessionManager.js b/src/node/db/SessionManager.js index 5ce4f7487..60e0a7ac9 100644 --- a/src/node/db/SessionManager.js +++ b/src/node/db/SessionManager.js @@ -1,5 +1,5 @@ /** - * The Session Manager provides functions to manage session in the database + * The Session Manager provides functions to manage session in the database, it only provides session management for sessions created by the API */ /* diff --git a/src/node/db/SessionStore.js b/src/node/db/SessionStore.js new file mode 100644 index 000000000..52a504f10 --- /dev/null +++ b/src/node/db/SessionStore.js @@ -0,0 +1,82 @@ + /* + * Stores session data in the database + * Source; https://github.com/edy-b/SciFlowWriter/blob/develop/available_plugins/ep_sciflowwriter/db/DirtyStore.js + * This is not used for authors that are created via the API at current + */ + +var Store = require('ep_etherpad-lite/node_modules/connect/lib/middleware/session/store'), + utils = require('ep_etherpad-lite/node_modules/connect/lib/utils'), + Session = require('ep_etherpad-lite/node_modules/connect/lib/middleware/session/session'), + db = require('ep_etherpad-lite/node/db/DB').db, + log4js = require('ep_etherpad-lite/node_modules/log4js'), + messageLogger = log4js.getLogger("SessionStore"); + +var SessionStore = module.exports = function SessionStore() {}; + +SessionStore.prototype.__proto__ = Store.prototype; + +SessionStore.prototype.get = function(sid, fn){ + messageLogger.debug('GET ' + sid); + var self = this; + db.get("sessionstorage:" + sid, function (err, sess) + { + if (sess) { + sess.cookie.expires = 'string' == typeof sess.cookie.expires ? new Date(sess.cookie.expires) : sess.cookie.expires; + if (!sess.cookie.expires || new Date() < sess.cookie.expires) { + fn(null, sess); + } else { + self.destroy(sid, fn); + } + } else { + fn(); + } + }); +}; + +SessionStore.prototype.set = function(sid, sess, fn){ + messageLogger.debug('SET ' + sid); + db.set("sessionstorage:" + sid, sess); + process.nextTick(function(){ + if(fn) fn(); + }); +}; + +SessionStore.prototype.destroy = function(sid, fn){ + messageLogger.debug('DESTROY ' + sid); + db.remove("sessionstorage:" + sid); + process.nextTick(function(){ + if(fn) fn(); + }); +}; + +SessionStore.prototype.all = function(fn){ + messageLogger.debug('ALL'); + var sessions = []; + db.forEach(function(key, value){ + if (key.substr(0,15) === "sessionstorage:") { + sessions.push(value); + } + }); + fn(null, sessions); +}; + +SessionStore.prototype.clear = function(fn){ + messageLogger.debug('CLEAR'); + db.forEach(function(key, value){ + if (key.substr(0,15) === "sessionstorage:") { + db.db.remove("session:" + key); + } + }); + if(fn) fn(); +}; + +SessionStore.prototype.length = function(fn){ + messageLogger.debug('LENGTH'); + var i = 0; + db.forEach(function(key, value){ + if (key.substr(0,15) === "sessionstorage:") { + i++; + } + }); + fn(null, i); +}; diff --git a/src/node/handler/APIHandler.js b/src/node/handler/APIHandler.js index 9f86277a0..7206eb871 100644 --- a/src/node/handler/APIHandler.js +++ b/src/node/handler/APIHandler.js @@ -31,7 +31,7 @@ try { apikey = fs.readFileSync("./APIKEY.txt","utf8"); } -catch(e) +catch(e) { apikey = randomString(32); fs.writeFileSync("./APIKEY.txt",apikey,"utf8"); @@ -180,7 +180,7 @@ var version = , "deleteGroup" : ["groupID"] , "listPads" : ["groupID"] , "listAllPads" : [] - , "createDiffHTML" : ["padID", "startRev", "endRev"] + , "createDiffHTML" : ["padID", "startRev", "endRev"] , "createPad" : ["padID", "text"] , "createGroupPad" : ["groupID", "padName", "text"] , "createAuthor" : ["name"] @@ -214,8 +214,100 @@ var version = , "getChatHistory" : ["padID", "start", "end"] , "getChatHead" : ["padID"] } +, "1.2.8": + { "createGroup" : [] + , "createGroupIfNotExistsFor" : ["groupMapper"] + , "deleteGroup" : ["groupID"] + , "listPads" : ["groupID"] + , "listAllPads" : [] + , "createDiffHTML" : ["padID", "startRev", "endRev"] + , "createPad" : ["padID", "text"] + , "createGroupPad" : ["groupID", "padName", "text"] + , "createAuthor" : ["name"] + , "createAuthorIfNotExistsFor": ["authorMapper" , "name"] + , "listPadsOfAuthor" : ["authorID"] + , "createSession" : ["groupID", "authorID", "validUntil"] + , "deleteSession" : ["sessionID"] + , "getSessionInfo" : ["sessionID"] + , "listSessionsOfGroup" : ["groupID"] + , "listSessionsOfAuthor" : ["authorID"] + , "getText" : ["padID", "rev"] + , "setText" : ["padID", "text"] + , "getHTML" : ["padID", "rev"] + , "setHTML" : ["padID", "html"] + , "getAttributePool" : ["padID"] + , "getRevisionsCount" : ["padID"] + , "getRevisionChangeset" : ["padID", "rev"] + , "getLastEdited" : ["padID"] + , "deletePad" : ["padID"] + , "getReadOnlyID" : ["padID"] + , "setPublicStatus" : ["padID", "publicStatus"] + , "getPublicStatus" : ["padID"] + , "setPassword" : ["padID", "password"] + , "isPasswordProtected" : ["padID"] + , "listAuthorsOfPad" : ["padID"] + , "padUsersCount" : ["padID"] + , "getAuthorName" : ["authorID"] + , "padUsers" : ["padID"] + , "sendClientsMessage" : ["padID", "msg"] + , "listAllGroups" : [] + , "checkToken" : [] + , "getChatHistory" : ["padID"] + , "getChatHistory" : ["padID", "start", "end"] + , "getChatHead" : ["padID"] + } +, "1.2.9": + { "createGroup" : [] + , "createGroupIfNotExistsFor" : ["groupMapper"] + , "deleteGroup" : ["groupID"] + , "listPads" : ["groupID"] + , "listAllPads" : [] + , "createDiffHTML" : ["padID", "startRev", "endRev"] + , "createPad" : ["padID", "text"] + , "createGroupPad" : ["groupID", "padName", "text"] + , "createAuthor" : ["name"] + , "createAuthorIfNotExistsFor": ["authorMapper" , "name"] + , "listPadsOfAuthor" : ["authorID"] + , "createSession" : ["groupID", "authorID", "validUntil"] + , "deleteSession" : ["sessionID"] + , "getSessionInfo" : ["sessionID"] + , "listSessionsOfGroup" : ["groupID"] + , "listSessionsOfAuthor" : ["authorID"] + , "getText" : ["padID", "rev"] + , "setText" : ["padID", "text"] + , "getHTML" : ["padID", "rev"] + , "setHTML" : ["padID", "html"] + , "getAttributePool" : ["padID"] + , "getRevisionsCount" : ["padID"] + , "getRevisionChangeset" : ["padID", "rev"] + , "getLastEdited" : ["padID"] + , "deletePad" : ["padID"] + , "copyPad" : ["sourceID", "destinationID", "force"] + , "movePad" : ["sourceID", "destinationID", "force"] + , "getReadOnlyID" : ["padID"] + , "setPublicStatus" : ["padID", "publicStatus"] + , "getPublicStatus" : ["padID"] + , "setPassword" : ["padID", "password"] + , "isPasswordProtected" : ["padID"] + , "listAuthorsOfPad" : ["padID"] + , "padUsersCount" : ["padID"] + , "getAuthorName" : ["authorID"] + , "padUsers" : ["padID"] + , "sendClientsMessage" : ["padID", "msg"] + , "listAllGroups" : [] + , "checkToken" : [] + , "getChatHistory" : ["padID"] + , "getChatHistory" : ["padID", "start", "end"] + , "getChatHead" : ["padID"] + } }; +// set the latest available API version here +exports.latestApiVersion = '1.2.9'; + +// exports the versions so it can be used by the new Swagger endpoint +exports.version = version; + /** * Handles a HTTP API call * @param functionName the name of the called function @@ -235,7 +327,7 @@ exports.handle = function(apiVersion, functionName, fields, req, res) break; } } - + //say goodbye if this is an unkown API version if(!isKnownApiVersion) { @@ -243,7 +335,7 @@ exports.handle = function(apiVersion, functionName, fields, req, res) res.send({code: 3, message: "no such api version", data: null}); return; } - + //check if this is a valid function name var isKnownFunctionname = false; for(var knownFunctionname in version[apiVersion]) @@ -254,15 +346,17 @@ exports.handle = function(apiVersion, functionName, fields, req, res) break; } } - + //say goodbye if this is a unkown function if(!isKnownFunctionname) { res.send({code: 3, message: "no such function", data: null}); return; } - + //check the api key! + fields["apikey"] = fields["apikey"] || fields["api_key"]; + if(fields["apikey"] != apikey.trim()) { res.send({code: 4, message: "no or wrong API Key", data: null}); @@ -296,21 +390,19 @@ exports.handle = function(apiVersion, functionName, fields, req, res) function callAPI(apiVersion, functionName, fields, req, res) { //put the function parameters in an array - var functionParams = []; - for(var i=0;i -1) + { + setTimeout(function() + { + fs.unlink(destFile, callback); + }, 100); + } + else + { + fs.unlink(destFile, callback); + } + } + ], callback); } - }); + ], function(err) + { + if(err && err != "stop") ERR(err); + }) } else if(type == 'dokuwiki') { diff --git a/src/node/handler/ImportHandler.js b/src/node/handler/ImportHandler.js index ac856a604..f58076bb4 100644 --- a/src/node/handler/ImportHandler.js +++ b/src/node/handler/ImportHandler.js @@ -28,7 +28,9 @@ var ERR = require("async-stacktrace") , settings = require('../utils/Settings') , formidable = require('formidable') , os = require("os") - , importHtml = require("../utils/ImportHtml"); + , importHtml = require("../utils/ImportHtml") + , log4js = require("log4js") + , hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); //load abiword only if its enabled if(settings.abiword != null) @@ -42,13 +44,18 @@ var tmpDirectory = process.env.TEMP || process.env.TMPDIR || process.env.TMP || */ exports.doImport = function(req, res, padId) { + var apiLogger = log4js.getLogger("ImportHandler"); + //pipe to a file //convert file to html via abiword //set html in the pad var srcFile, destFile , pad - , text; + , text + , importHandledByPlugin; + + var randNum = Math.floor(Math.random()*0xFFFFFFFF); async.series([ //save the uploaded file to /tmp @@ -60,7 +67,7 @@ exports.doImport = function(req, res, padId) form.parse(req, function(err, fields, files) { //the upload failed, stop at this point if(err || files.file === undefined) { - console.warn("Uploading Error: " + err.stack); + if(err) console.warn("Uploading Error: " + err.stack); callback("uploadFailed"); } //everything ok, continue @@ -87,32 +94,69 @@ exports.doImport = function(req, res, padId) else { var oldSrcFile = srcFile; srcFile = path.join(path.dirname(srcFile),path.basename(srcFile, fileEnding)+".txt"); - fs.rename(oldSrcFile, srcFile, callback); } }, - - //convert file to html - function(callback) { - var randNum = Math.floor(Math.random()*0xFFFFFFFF); + function(callback){ destFile = path.join(tmpDirectory, "eplite_import_" + randNum + ".htm"); - if (abiword) { - abiword.convertFile(srcFile, destFile, "htm", function(err) { - //catch convert errors - if(err) { - console.warn("Converting Error:", err); - return callback("convertFailed"); - } else { - callback(); - } - }); - } else { - // if no abiword only rename - fs.rename(srcFile, destFile, callback); + // Logic for allowing external Import Plugins + hooks.aCallAll("import", {srcFile: srcFile, destFile: destFile}, function(err, result){ + if(ERR(err, callback)) return callback(); + if(result.length > 0){ // This feels hacky and wrong.. + importHandledByPlugin = true; + callback(); + }else{ + callback(); + } + }); + }, + //convert file to html + function(callback) { + if(!importHandledByPlugin){ + if (abiword) { + abiword.convertFile(srcFile, destFile, "htm", function(err) { + //catch convert errors + if(err) { + console.warn("Converting Error:", err); + return callback("convertFailed"); + } else { + callback(); + } + }); + } else { + // if no abiword only rename + fs.rename(srcFile, destFile, callback); + } + }else{ + callback(); } }, + function(callback) { + if (!abiword) { + // Read the file with no encoding for raw buffer access. + fs.readFile(destFile, function(err, buf) { + if (err) throw err; + var isAscii = true; + // Check if there are only ascii chars in the uploaded file + for (var i=0, len=buf.length; i 240) { + isAscii=false; + break; + } + } + if (isAscii) { + callback(); + } else { + callback("uploadFailed"); + } + }); + } else { + callback(); + } + }, + //get the pad object function(callback) { padManager.getPad(padId, function(err, _pad){ @@ -127,7 +171,10 @@ exports.doImport = function(req, res, padId) fs.readFile(destFile, "utf8", function(err, _text){ if(ERR(err, callback)) return; text = _text; - + // Title needs to be stripped out else it appends it to the pad.. + text = text.replace("", "<!-- <title>"); + text = text.replace("","-->"); + //node on windows has a delay on releasing of the file lock. //We add a 100ms delay to work around this if(os.type().indexOf("Windows") > -1){ @@ -142,7 +189,11 @@ exports.doImport = function(req, res, padId) function(callback) { var fileEnding = path.extname(srcFile).toLowerCase(); if (abiword || fileEnding == ".htm" || fileEnding == ".html") { - importHtml.setPadHTML(pad, text); + try{ + importHtml.setPadHTML(pad, text); + }catch(e){ + apiLogger.warn("Error importing, possibly caused by malformed HTML"); + } } else { pad.setText(text); } @@ -176,7 +227,7 @@ exports.doImport = function(req, res, padId) ERR(err); //close the connection - res.send("", 200); + res.send("", 200); }); } diff --git a/src/node/handler/PadMessageHandler.js b/src/node/handler/PadMessageHandler.js index 7cd945af3..748b8382a 100644 --- a/src/node/handler/PadMessageHandler.js +++ b/src/node/handler/PadMessageHandler.js @@ -35,6 +35,8 @@ var messageLogger = log4js.getLogger("message"); var accessLogger = log4js.getLogger("access"); var _ = require('underscore'); var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); +var channels = require("channels"); +var stats = require('../stats'); /** * A associative array that saves informations about a session @@ -47,6 +49,17 @@ var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks.js"); * author = the author name of this session */ var sessioninfos = {}; +exports.sessioninfos = sessioninfos; + +// Measure total amount of users +stats.gauge('totalUsers', function() { + return Object.keys(socketio.sockets.sockets).length +}) + +/** + * A changeset queue per pad that is processed by handleUserChanges() + */ +var padChannels = new channels.channels(handleUserChanges); /** * Saves the Socket class we need to send and recieve data from the client @@ -67,7 +80,9 @@ exports.setSocketIO = function(socket_io) * @param client the new client */ exports.handleConnect = function(client) -{ +{ + stats.meter('connects').mark(); + //Initalize sessioninfos for this new session sessioninfos[client.id]={}; } @@ -92,12 +107,23 @@ exports.kickSessionsFromPad = function(padID) */ exports.handleDisconnect = function(client) { + stats.meter('disconnects').mark(); + //save the padname of this session var session = sessioninfos[client.id]; //if this connection was already etablished with a handshake, send a disconnect message to the others if(session && session.author) { + client.get('remoteAddress', function(er, ip) { + //Anonymize the IP address if IP logging is disabled + if(settings.disableIPlogging) { + ip = 'ANONYMOUS'; + } + + accessLogger.info('[LEAVE] Pad "'+session.padId+'": Author "'+session.author+'" on client '+client.id+' with IP "'+ip+'" left the pad') + }) + //get the author color out of the db authorManager.getAuthorColorId(session.author, function(err, color) { @@ -122,10 +148,6 @@ exports.handleDisconnect = function(client) }); } - client.get('remoteAddress', function(er, ip) { - accessLogger.info('[LEAVE] Pad "'+session.padId+'": Author "'+session.author+'" on client '+client.id+' with IP "'+ip+'" left the pad') - }) - //Delete the sessioninfos entrys of this session delete sessioninfos[client.id]; } @@ -137,26 +159,25 @@ exports.handleDisconnect = function(client) */ exports.handleMessage = function(client, message) { - if(message == null) { - messageLogger.warn("Message is null!"); return; } if(!message.type) { - messageLogger.warn("Message has no type attribute!"); + return; + } + if(!sessioninfos[client.id]) { + messageLogger.warn("Dropped message from an unknown connection.") return; } var handleMessageHook = function(callback){ var dropMessage = false; - // Call handleMessage hook. If a plugin returns null, the message will be dropped. Note that for all messages // handleMessage will be called, even if the client is not authorized hooks.aCallAll("handleMessage", { client: client, message: message }, function ( err, messages ) { if(ERR(err, callback)) return; - _.each(messages, function(newMessage){ if ( newMessage === null ) { dropMessage = true; @@ -178,7 +199,8 @@ exports.handleMessage = function(client, message) if (sessioninfos[client.id].readonly) { messageLogger.warn("Dropped message, COLLABROOM for readonly pad"); } else if (message.data.type == "USER_CHANGES") { - handleUserChanges(client, message); + stats.counter('pendingEdits').inc() + padChannels.emit(message.padId, {client: client, message: message});// add to pad queue } else if (message.data.type == "USERINFO_UPDATE") { handleUserInfoUpdate(client, message); } else if (message.data.type == "CHAT_MESSAGE") { @@ -205,31 +227,61 @@ exports.handleMessage = function(client, message) //check permissions function(callback) { - - // If the message has a padId we assume the client is already known to the server and needs no re-authorization - if(!message.padId) - return callback(); + // client tried to auth for the first time (first msg from the client) + if(message.type == "CLIENT_READY") { + // Remember this information since we won't + // have the cookie in further socket.io messages. + // This information will be used to check if + // the sessionId of this connection is still valid + // since it could have been deleted by the API. + sessioninfos[client.id].auth = + { + sessionID: message.sessionID, + padID: message.padId, + token : message.token, + password: message.password + }; + } // Note: message.sessionID is an entirely different kind of - // session from the sessions we use here! Beware! FIXME: Call - // our "sessions" "connections". + // session from the sessions we use here! Beware! + // FIXME: Call our "sessions" "connections". // FIXME: Use a hook instead // FIXME: Allow to override readwrite access with readonly - securityManager.checkAccess(message.padId, message.sessionID, message.token, message.password, function(err, statusObject) - { - if(ERR(err, callback)) return; - //access was granted - if(statusObject.accessStatus == "grant") + // FIXME: A message might arrive but wont have an auth object, this is obviously bad so we should deny it + // Simulate using the load testing tool + if(!sessioninfos[client.id].auth){ + console.error("Auth was never applied to a session. If you are using the stress-test tool then restart Etherpad and the Stress test tool.") + callback(); + }else{ + var auth = sessioninfos[client.id].auth; + var checkAccessCallback = function(err, statusObject) { - callback(); + if(ERR(err, callback)) return; + + //access was granted + if(statusObject.accessStatus == "grant") + { + callback(); + } + //no access, send the client a message that tell him why + else + { + client.json.send({accessStatus: statusObject.accessStatus}) + } + }; + //check if pad is requested via readOnly + if (auth.padID.indexOf("r.") === 0) { + //Pad is readOnly, first get the real Pad ID + readOnlyManager.getPadId(auth.padID, function(err, value) { + ERR(err); + securityManager.checkAccess(value, auth.sessionID, auth.token, auth.password, checkAccessCallback); + }); + } else { + securityManager.checkAccess(auth.padID, auth.sessionID, auth.token, auth.password, checkAccessCallback); } - //no access, send the client a message that tell him why - else - { - client.json.send({accessStatus: statusObject.accessStatus}) - } - }); + } }, finalHandler ]); @@ -254,6 +306,25 @@ function handleSaveRevisionMessage(client, message){ }); } +/** + * Handles a custom message, different to the function below as it handles objects not strings and you can + * direct the message to specific sessionID + * + * @param msg {Object} the message we're sending + * @param sessionID {string} the socketIO session to which we're sending this message + */ +exports.handleCustomObjectMessage = function (msg, sessionID, cb) { + if(msg.data.type === "CUSTOM"){ + if(sessionID){ // If a sessionID is targeted then send directly to this sessionID + socketio.sockets.socket(sessionID).json.send(msg); // send a targeted message + }else{ + socketio.sockets.in(msg.data.payload.padId).json.send(msg); // broadcast to all clients on this pad + } + } + cb(null, {}); +} + + /** * Handles a custom message (sent via HTTP API request) * @@ -384,7 +455,7 @@ function handleGetChatMessages(client, message) pad.getChatMessages(start, end, function(err, chatMessages) { if(ERR(err, callback)) return; - + var infoMsg = { type: "COLLABROOM", data: { @@ -392,7 +463,7 @@ function handleGetChatMessages(client, message) messages: chatMessages } }; - + // send the messages back to the client client.json.send(infoMsg); }); @@ -493,23 +564,29 @@ function handleUserInfoUpdate(client, message) * @param client the client that send this message * @param message the message from the client */ -function handleUserChanges(client, message) +function handleUserChanges(data, cb) { + var client = data.client + , message = data.message + + // This one's no longer pending, as we're gonna process it now + stats.counter('pendingEdits').dec() + // Make sure all required fields are present if(message.data.baseRev == null) { messageLogger.warn("Dropped message, USER_CHANGES Message has no baseRev!"); - return; + return cb(); } if(message.data.apool == null) { messageLogger.warn("Dropped message, USER_CHANGES Message has no apool!"); - return; + return cb(); } if(message.data.changeset == null) { messageLogger.warn("Dropped message, USER_CHANGES Message has no changeset!"); - return; + return cb(); } //get all Vars we need @@ -521,6 +598,9 @@ function handleUserChanges(client, message) var thisSession = sessioninfos[client.id]; var r, apool, pad; + + // Measure time to process edit + var stopWatch = stats.timer('edits').start(); async.series([ //get the pad @@ -547,23 +627,37 @@ function handleUserChanges(client, message) // defined in the accompanying attribute pool. Changeset.eachAttribNumber(changeset, function(n) { if (! wireApool.getAttrib(n)) { - throw "Attribute pool is missing attribute "+n+" for changeset "+changeset; + throw new Error("Attribute pool is missing attribute "+n+" for changeset "+changeset); } }); + + // Validate all added 'author' attribs to be the same value as the current user + var iterator = Changeset.opIterator(Changeset.unpack(changeset).ops) + , op + while(iterator.hasNext()) { + op = iterator.next() + if(op.opcode != '+') continue; + op.attribs.split('*').forEach(function(attr) { + if(!attr) return + attr = wireApool.getAttrib(attr) + if(!attr) return + if('author' == attr[0] && attr[1] != thisSession.author) throw new Error("Trying to submit changes as another author in changeset "+changeset); + }) + } + + //ex. adoptChangesetAttribs + + //Afaik, it copies the new attributes from the changeset, to the global Attribute Pool + changeset = Changeset.moveOpsToNewPool(changeset, wireApool, pad.pool); } catch(e) { // There is an error in this changeset, so just refuse it - console.warn("Can't apply USER_CHANGES "+changeset+", because it failed checkRep"); client.json.send({disconnect:"badChangeset"}); - return; + stats.meter('failedChangesets').mark(); + return callback(new Error("Can't apply USER_CHANGES, because "+e.message)); } - //ex. adoptChangesetAttribs - - //Afaik, it copies the new attributes from the changeset, to the global Attribute Pool - changeset = Changeset.moveOpsToNewPool(changeset, wireApool, pad.pool); - //ex. applyUserChanges apool = pad.pool; r = baseRev; @@ -586,7 +680,14 @@ function handleUserChanges(client, message) // client) are relative to revision r - 1. The follow function // rebases "changeset" so that it is relative to revision r // and can be applied after "c". - changeset = Changeset.follow(c, changeset, false, apool); + try + { + changeset = Changeset.follow(c, changeset, false, apool); + }catch(e){ + client.json.send({disconnect:"badChangeset"}); + stats.meter('failedChangesets').mark(); + return callback(new Error("Can't apply USER_CHANGES, because "+e.message)); + } if ((r - baseRev) % 200 == 0) { // don't let the stack get too deep async.nextTick(callback); @@ -606,10 +707,9 @@ function handleUserChanges(client, message) if (Changeset.oldLen(changeset) != prevText.length) { - console.warn("Can't apply USER_CHANGES "+changeset+" with oldLen " + Changeset.oldLen(changeset) + " to document of length " + prevText.length); client.json.send({disconnect:"badChangeset"}); - callback(); - return; + stats.meter('failedChangesets').mark(); + return callback(new Error("Can't apply USER_CHANGES "+changeset+" with oldLen " + Changeset.oldLen(changeset) + " to document of length " + prevText.length)); } pad.appendRevision(changeset, thisSession.author); @@ -625,11 +725,16 @@ function handleUserChanges(client, message) pad.appendRevision(nlChangeset); } - exports.updatePadClients(pad, callback); + exports.updatePadClients(pad, function(er) { + ERR(er) + }); + callback(); } ], function(err) { - ERR(err); + stopWatch.end() + cb(); + if(err) console.warn(err.stack || err) }); } @@ -713,7 +818,7 @@ exports.updatePadClients = function(pad, callback) } /** - * Copied from the Etherpad Source Code. Don't know what this methode does excatly... + * Copied from the Etherpad Source Code. Don't know what this method does excatly... */ function _correctMarkersInPad(atext, apool) { var text = atext.text; @@ -882,8 +987,7 @@ function handleClientReady(client, message) authorManager.getAuthor(authorId, function(err, author) { if(ERR(err, callback)) return; - delete author.timestamp; - historicalAuthorData[authorId] = author; + historicalAuthorData[authorId] = {name: author.name, colorId: author.colorId}; // Filter author attribs (e.g. don't send author's pads to all clients) callback(); }); }, callback); @@ -917,6 +1021,11 @@ function handleClientReady(client, message) //Log creation/(re-)entering of a pad client.get('remoteAddress', function(er, ip) { + //Anonymize the IP address if IP logging is disabled + if(settings.disableIPlogging) { + ip = 'ANONYMOUS'; + } + if(pad.head > 0) { accessLogger.info('[ENTER] Pad "'+padIds.padId+'": Client '+client.id+' with IP "'+ip+'" entered the pad'); } @@ -928,17 +1037,25 @@ function handleClientReady(client, message) //If this is a reconnect, we don't have to send the client the ClientVars again if(message.reconnect == true) { + //Join the pad and start receiving updates + client.join(padIds.padId); //Save the revision in sessioninfos, we take the revision from the info the client send to us sessioninfos[client.id].rev = message.client_rev; } //This is a normal first connect else { - //prepare all values for the wire - var atext = Changeset.cloneAText(pad.atext); - var attribsForWire = Changeset.prepareForWire(atext.attribs, pad.pool); - var apool = attribsForWire.pool.toJsonable(); - atext.attribs = attribsForWire.translated; + //prepare all values for the wire, there'S a chance that this throws, if the pad is corrupted + try { + var atext = Changeset.cloneAText(pad.atext); + var attribsForWire = Changeset.prepareForWire(atext.attribs, pad.pool); + var apool = attribsForWire.pool.toJsonable(); + atext.attribs = attribsForWire.translated; + }catch(e) { + console.error(e.stack || e) + client.json.send({disconnect:"corruptPad"});// pull the breaks + return callback(); + } // Warning: never ever send padIds.padId to the client. If the // client is read only you would open a security hole 1 swedish @@ -959,7 +1076,6 @@ function handleClientReady(client, message) "historicalAuthorData": historicalAuthorData, "apool": apool, "rev": pad.getHeadRevisionNumber(), - "globalPadId": message.padId, "time": currentTime, }, "colorPalette": authorManager.getColorPalette(), @@ -976,7 +1092,6 @@ function handleClientReady(client, message) "readOnlyId": padIds.readOnlyPadId, "readonly": padIds.readonly, "serverTimestamp": new Date().getTime(), - "globalPadId": message.padId, "userId": author, "abiwordAvailable": settings.abiwordAvailable(), "plugins": { @@ -1035,7 +1150,7 @@ function handleClientReady(client, message) } // notify all existing users about new user - client.broadcast.to(padIds.padIds).json.send(messageToTheOtherUsers); + client.broadcast.to(padIds.padId).json.send(messageToTheOtherUsers); //Run trough all sessions of this pad async.forEach(socketio.sockets.clients(padIds.padId), function(roomClient, callback) @@ -1429,7 +1544,7 @@ function composePadChangesets(padId, startNum, endNum, callback) */ exports.padUsersCount = function (padID, callback) { callback(null, { - padUsersCount: socketio.sockets.clients(padId).length + padUsersCount: socketio.sockets.clients(padID).length }); } @@ -1439,7 +1554,7 @@ exports.padUsersCount = function (padID, callback) { exports.padUsers = function (padID, callback) { var result = []; - async.forEach(socketio.sockets.clients(padId), function(roomClient, callback) { + async.forEach(socketio.sockets.clients(padID), function(roomClient, callback) { var s = sessioninfos[roomClient.id]; if(s) { authorManager.getAuthor(s.author, function(err, author) { @@ -1447,6 +1562,7 @@ exports.padUsers = function (padID, callback) { author.id = s.author; result.push(author); + callback(); }); } }, function(err) { @@ -1455,3 +1571,5 @@ exports.padUsers = function (padID, callback) { callback(null, {padUsers: result}); }); } + +exports.sessioninfos = sessioninfos; diff --git a/src/node/handler/SocketIORouter.js b/src/node/handler/SocketIORouter.js index 483bb1d17..b3e046d2c 100644 --- a/src/node/handler/SocketIORouter.js +++ b/src/node/handler/SocketIORouter.js @@ -23,6 +23,8 @@ var ERR = require("async-stacktrace"); var log4js = require('log4js'); var messageLogger = log4js.getLogger("message"); var securityManager = require("../db/SecurityManager"); +var readOnlyManager = require("../db/ReadOnlyManager"); +var settings = require('../utils/Settings'); /** * Saves all components @@ -48,88 +50,68 @@ exports.addComponent = function(moduleName, module) /** * sets the socket.io and adds event functions for routing */ -exports.setSocketIO = function(_socket) -{ +exports.setSocketIO = function(_socket) { //save this socket internaly socket = _socket; socket.sockets.on('connection', function(client) { - client.set('remoteAddress', client.handshake.address.address); + if(settings.trustProxy && client.handshake.headers['x-forwarded-for'] !== undefined){ + client.set('remoteAddress', client.handshake.headers['x-forwarded-for']); + } + else{ + client.set('remoteAddress', client.handshake.address.address); + } var clientAuthorized = false; //wrap the original send function to log the messages client._send = client.send; - client.send = function(message) - { + client.send = function(message) { messageLogger.debug("to " + client.id + ": " + stringifyWithoutPassword(message)); client._send(message); } //tell all components about this connect - for(var i in components) - { + for(var i in components) { components[i].handleConnect(client); - } - - //try to handle the message of this client - function handleMessage(message) - { - if(message.component && components[message.component]) - { - //check if component is registered in the components array - if(components[message.component]) - { - messageLogger.debug("from " + client.id + ": " + stringifyWithoutPassword(message)); - components[message.component].handleMessage(client, message); - } - } - else - { - messageLogger.error("Can't route the message:" + stringifyWithoutPassword(message)); - } - } - + } + client.on('message', function(message) { - if(message.protocolVersion && message.protocolVersion != 2) - { + if(message.protocolVersion && message.protocolVersion != 2) { messageLogger.warn("Protocolversion header is not correct:" + stringifyWithoutPassword(message)); return; } //client is authorized, everything ok - if(clientAuthorized) - { - handleMessage(message); - } - //try to authorize the client - else - { - //this message has everything to try an authorization - if(message.padId !== undefined && message.sessionID !== undefined && message.token !== undefined && message.password !== undefined) - { - securityManager.checkAccess (message.padId, message.sessionID, message.token, message.password, function(err, statusObject) - { + if(clientAuthorized) { + handleMessage(client, message); + } else { //try to authorize the client + if(message.padId !== undefined && message.sessionID !== undefined && message.token !== undefined && message.password !== undefined) { + var checkAccessCallback = function(err, statusObject) { ERR(err); - + //access was granted, mark the client as authorized and handle the message - if(statusObject.accessStatus == "grant") - { + if(statusObject.accessStatus == "grant") { clientAuthorized = true; - handleMessage(message); + handleMessage(client, message); } //no access, send the client a message that tell him why - else - { + else { messageLogger.warn("Authentication try failed:" + stringifyWithoutPassword(message)); client.json.send({accessStatus: statusObject.accessStatus}); } - }); - } - //drop message - else - { + }; + if (message.padId.indexOf("r.") === 0) { + readOnlyManager.getPadId(message.padId, function(err, value) { + ERR(err); + securityManager.checkAccess (value, message.sessionID, message.token, message.password, checkAccessCallback); + }); + } else { + //this message has everything to try an authorization + securityManager.checkAccess (message.padId, message.sessionID, message.token, message.password, checkAccessCallback); + } + } else { //drop message messageLogger.warn("Dropped message cause of bad permissions:" + stringifyWithoutPassword(message)); } } @@ -146,6 +128,21 @@ exports.setSocketIO = function(_socket) }); } +//try to handle the message of this client +function handleMessage(client, message) +{ + + if(message.component && components[message.component]) { + //check if component is registered in the components array + if(components[message.component]) { + messageLogger.debug("from " + client.id + ": " + stringifyWithoutPassword(message)); + components[message.component].handleMessage(client, message); + } + } else { + messageLogger.error("Can't route the message:" + stringifyWithoutPassword(message)); + } +} + //returns a stringified representation of a message, removes the password //this ensures there are no passwords in the log function stringifyWithoutPassword(message) diff --git a/src/node/hooks/express.js b/src/node/hooks/express.js index 34baca40f..f2bb18b83 100644 --- a/src/node/hooks/express.js +++ b/src/node/hooks/express.js @@ -19,7 +19,7 @@ exports.createServer = function () { var refPath = rootPath + "/.git/" + ref.substring(5, ref.indexOf("\n")); version = fs.readFileSync(refPath, "utf-8"); version = version.substring(0, 7); - console.log("Your Etherpad Lite git version is " + version); + console.log("Your Etherpad git version is " + version); } catch(e) { @@ -27,11 +27,11 @@ exports.createServer = function () { } console.log("Report bugs at https://github.com/ether/etherpad-lite/issues") - serverName = "Etherpad-Lite " + version + " (http://etherpad.org)"; + serverName = "Etherpad " + version + " (http://etherpad.org)"; exports.restartServer(); - console.log("You can access your Etherpad-Lite instance at http://" + settings.ip + ":" + settings.port + "/"); + console.log("You can access your Etherpad instance at http://" + settings.ip + ":" + settings.port + "/"); if(!_.isEmpty(settings.users)){ console.log("The plugin admin page is at http://" + settings.ip + ":" + settings.port + "/admin/plugins"); } @@ -75,6 +75,10 @@ exports.restartServer = function () { next(); }); + if(settings.trustProxy){ + app.enable('trust proxy'); + } + app.configure(function() { hooks.callAll("expressConfigure", {"app": app}); }); diff --git a/src/node/hooks/express/admin.js b/src/node/hooks/express/admin.js index 766370fc3..70539f0c4 100644 --- a/src/node/hooks/express/admin.js +++ b/src/node/hooks/express/admin.js @@ -2,6 +2,7 @@ var eejs = require('ep_etherpad-lite/node/eejs'); exports.expressCreateServer = function (hook_name, args, cb) { args.app.get('/admin', function(req, res) { + if('/' != req.path[req.path.length-1]) return res.redirect('/admin/'); res.send( eejs.require("ep_etherpad-lite/templates/admin/index.html", {}) ); }); } diff --git a/src/node/hooks/express/adminplugins.js b/src/node/hooks/express/adminplugins.js index 7e221cf1e..d8f19bba9 100644 --- a/src/node/hooks/express/adminplugins.js +++ b/src/node/hooks/express/adminplugins.js @@ -27,49 +27,84 @@ exports.socketio = function (hook_name, args, cb) { io.on('connection', function (socket) { if (!socket.handshake.session.user || !socket.handshake.session.user.is_admin) return; - socket.on("load", function (query) { + socket.on("getInstalled", function (query) { // send currently installed plugins - socket.emit("installed-results", {results: plugins.plugins}); - socket.emit("progress", {progress:1}); + var installed = Object.keys(plugins.plugins).map(function(plugin) { + return plugins.plugins[plugin].package + }) + socket.emit("results:installed", {installed: installed}); }); socket.on("checkUpdates", function() { - socket.emit("progress", {progress:0, message:'Checking for plugin updates...'}); // Check plugins for updates - installer.search({offset: 0, pattern: '', limit: 500}, /*useCache:*/true, function(data) { // hacky - if (!data.results) return; + installer.getAvailablePlugins(/*maxCacheAge:*/60*10, function(er, results) { + if(er) { + console.warn(er); + socket.emit("results:updatable", {updatable: {}}); + return; + } var updatable = _(plugins.plugins).keys().filter(function(plugin) { - if(!data.results[plugin]) return false; - var latestVersion = data.results[plugin]['dist-tags'].latest + if(!results[plugin]) return false; + var latestVersion = results[plugin].version var currentVersion = plugins.plugins[plugin].package.version return semver.gt(latestVersion, currentVersion) }); - socket.emit("updatable", {updatable: updatable}); - socket.emit("progress", {progress:1}); + socket.emit("results:updatable", {updatable: updatable}); }); }) + + socket.on("getAvailable", function (query) { + installer.getAvailablePlugins(/*maxCacheAge:*/false, function (er, results) { + if(er) { + console.error(er) + results = {} + } + socket.emit("results:available", results); + }); + }); socket.on("search", function (query) { - socket.emit("progress", {progress:0, message:'Fetching results...'}); - installer.search(query, true, function (progress) { - if (progress.results) - socket.emit("search-result", progress); - socket.emit("progress", progress); + installer.search(query.searchTerm, /*maxCacheAge:*/60*10, function (er, results) { + if(er) { + console.error(er) + results = {} + } + var res = Object.keys(results) + .map(function(pluginName) { + return results[pluginName] + }) + .filter(function(plugin) { + return !plugins.plugins[plugin.name] + }); + res = sortPluginList(res, query.sortBy, query.sortDir) + .slice(query.offset, query.offset+query.limit); + socket.emit("results:search", {results: res, query: query}); }); }); socket.on("install", function (plugin_name) { - socket.emit("progress", {progress:0, message:'Downloading and installing ' + plugin_name + "..."}); - installer.install(plugin_name, function (progress) { - socket.emit("progress", progress); + installer.install(plugin_name, function (er) { + if(er) console.warn(er) + socket.emit("finished:install", {plugin: plugin_name, error: er? er.message : null}); }); }); socket.on("uninstall", function (plugin_name) { - socket.emit("progress", {progress:0, message:'Uninstalling ' + plugin_name + "..."}); - installer.uninstall(plugin_name, function (progress) { - socket.emit("progress", progress); + installer.uninstall(plugin_name, function (er) { + if(er) console.warn(er) + socket.emit("finished:uninstall", {plugin: plugin_name, error: er? er.message : null}); }); }); }); } + +function sortPluginList(plugins, property, /*ASC?*/dir) { + return plugins.sort(function(a, b) { + if (a[property] < b[property]) + return dir? -1 : 1; + if (a[property] > b[property]) + return dir? 1 : -1; + // a must be equal to b + return 0; + }) +} \ No newline at end of file diff --git a/src/node/hooks/express/apicalls.js b/src/node/hooks/express/apicalls.js index e57e1d350..db0fc81f6 100644 --- a/src/node/hooks/express/apicalls.js +++ b/src/node/hooks/express/apicalls.js @@ -1,5 +1,6 @@ var log4js = require('log4js'); var apiLogger = log4js.getLogger("API"); +var clientLogger = log4js.getLogger("client"); var formidable = require('formidable'); var apiHandler = require('../../handler/APIHandler'); @@ -42,10 +43,10 @@ exports.expressCreateServer = function (hook_name, args, cb) { }); }); - //The Etherpad client side sends information about how a disconnect happen + //The Etherpad client side sends information about how a disconnect happened args.app.post('/ep/pad/connection-diagnostic-info', function(req, res) { new formidable.IncomingForm().parse(req, function(err, fields, files) { - console.log("DIAGNOSTIC-INFO: " + fields.diagnosticInfo); + clientLogger.info("DIAGNOSTIC-INFO: " + fields.diagnosticInfo); res.end("OK"); }); }); @@ -53,8 +54,18 @@ exports.expressCreateServer = function (hook_name, args, cb) { //The Etherpad client side sends information about client side javscript errors args.app.post('/jserror', function(req, res) { new formidable.IncomingForm().parse(req, function(err, fields, files) { - console.error("CLIENT SIDE JAVASCRIPT ERROR: " + fields.errorInfo); + try { + var data = JSON.parse(fields.errorInfo) + }catch(e){ + return res.end() + } + clientLogger.warn(data.msg+' --', data); res.end("OK"); }); }); + + //Provide a possibility to query the latest available API version + args.app.get('/api', function (req, res) { + res.json({"currentVersion" : apiHandler.latestApiVersion}); + }); } diff --git a/src/node/hooks/express/errorhandling.js b/src/node/hooks/express/errorhandling.js index 3c5956835..087dd50eb 100644 --- a/src/node/hooks/express/errorhandling.js +++ b/src/node/hooks/express/errorhandling.js @@ -1,5 +1,6 @@ var os = require("os"); var db = require('../../db/DB'); +var stats = require('ep_etherpad-lite/node/stats') exports.onShutdown = false; @@ -28,6 +29,7 @@ exports.gracefulShutdown = function(err) { }, 3000); } +process.on('uncaughtException', exports.gracefulShutdown); exports.expressCreateServer = function (hook_name, args, cb) { exports.app = args.app; @@ -39,6 +41,7 @@ exports.expressCreateServer = function (hook_name, args, cb) { // allowing you to respond however you like res.send(500, { error: 'Sorry, something bad happened!' }); console.error(err.stack? err.stack : err.toString()); + stats.meter('http500').mark() }) //connect graceful shutdown with sigint and uncaughtexception @@ -47,6 +50,4 @@ exports.expressCreateServer = function (hook_name, args, cb) { //https://github.com/joyent/node/issues/1553 process.on('SIGINT', exports.gracefulShutdown); } - - process.on('uncaughtException', exports.gracefulShutdown); -} +} \ No newline at end of file diff --git a/src/node/hooks/express/importexport.js b/src/node/hooks/express/importexport.js index 9754ffa64..f5a3e5a19 100644 --- a/src/node/hooks/express/importexport.js +++ b/src/node/hooks/express/importexport.js @@ -15,7 +15,7 @@ exports.expressCreateServer = function (hook_name, args, cb) { //if abiword is disabled, and this is a format we only support with abiword, output a message if (settings.abiword == null && ["odt", "pdf", "doc"].indexOf(req.params.type) !== -1) { - res.send("Abiword is not enabled at this Etherpad Lite instance. Set the path to Abiword in settings.json to enable this feature"); + res.send("Abiword is not enabled at this Etherpad instance. Set the path to Abiword in settings.json to enable this feature"); return; } diff --git a/src/node/hooks/express/padreadonly.js b/src/node/hooks/express/padreadonly.js index af5cbed39..9a0a52bfb 100644 --- a/src/node/hooks/express/padreadonly.js +++ b/src/node/hooks/express/padreadonly.js @@ -16,50 +16,50 @@ exports.expressCreateServer = function (hook_name, args, cb) { //translate the read only pad to a padId function(callback) { - readOnlyManager.getPadId(req.params.id, function(err, _padId) - { - if(ERR(err, callback)) return; + readOnlyManager.getPadId(req.params.id, function(err, _padId) + { + if(ERR(err, callback)) return; - padId = _padId; + padId = _padId; - //we need that to tell hasPadAcess about the pad - req.params.pad = padId; + //we need that to tell hasPadAcess about the pad + req.params.pad = padId; - callback(); - }); + callback(); + }); }, //render the html document function(callback) { - //return if the there is no padId - if(padId == null) - { - callback("notfound"); - return; - } + //return if the there is no padId + if(padId == null) + { + callback("notfound"); + return; + } - hasPadAccess(req, res, function() - { - //render the html document - exporthtml.getPadHTMLDocument(padId, null, false, function(err, _html) - { - if(ERR(err, callback)) return; - html = _html; - callback(); - }); - }); + hasPadAccess(req, res, function() + { + //render the html document + exporthtml.getPadHTMLDocument(padId, null, false, function(err, _html) + { + if(ERR(err, callback)) return; + html = _html; + callback(); + }); + }); } ], function(err) { //throw any unexpected error if(err && err != "notfound") - ERR(err); + ERR(err); if(err == "notfound") - res.send(404, '404 - Not Found'); + res.send(404, '404 - Not Found'); else - res.send(html); + res.send(html); }); }); -} \ No newline at end of file +} diff --git a/src/node/hooks/express/padurlsanitize.js b/src/node/hooks/express/padurlsanitize.js index 29782b692..2aadccdc6 100644 --- a/src/node/hooks/express/padurlsanitize.js +++ b/src/node/hooks/express/padurlsanitize.js @@ -12,20 +12,20 @@ exports.expressCreateServer = function (hook_name, args, cb) { else { padManager.sanitizePadId(padId, function(sanitizedPadId) { - //the pad id was sanitized, so we redirect to the sanitized version - if(sanitizedPadId != padId) - { + //the pad id was sanitized, so we redirect to the sanitized version + if(sanitizedPadId != padId) + { var real_url = sanitizedPadId; var query = url.parse(req.url).query; if ( query ) real_url += '?' + query; - res.header('Location', real_url); - res.send(302, 'You should be redirected to ' + real_url + ''); - } - //the pad id was fine, so just render it - else - { - next(); - } + res.header('Location', real_url); + res.send(302, 'You should be redirected to ' + real_url + ''); + } + //the pad id was fine, so just render it + else + { + next(); + } }); } }); diff --git a/src/node/hooks/express/specialpages.js b/src/node/hooks/express/specialpages.js index 440024614..7d0519659 100644 --- a/src/node/hooks/express/specialpages.js +++ b/src/node/hooks/express/specialpages.js @@ -2,6 +2,10 @@ var path = require('path'); var eejs = require('ep_etherpad-lite/node/eejs'); exports.expressCreateServer = function (hook_name, args, cb) { + // expose current stats + args.app.get('/stats', function(req, res) { + res.json(require('ep_etherpad-lite/node/stats').toJSON()) + }) //serve index.html under / args.app.get('/', function(req, res) @@ -45,11 +49,11 @@ exports.expressCreateServer = function (hook_name, args, cb) { //there is no custom favicon, send the default favicon if(err) { - filePath = path.normalize(__dirname + "/../../../static/favicon.ico"); - res.sendfile(filePath); + filePath = path.normalize(__dirname + "/../../../static/favicon.ico"); + res.sendfile(filePath); } }); }); -} \ No newline at end of file +} diff --git a/src/node/hooks/express/swagger.js b/src/node/hooks/express/swagger.js new file mode 100644 index 000000000..e8daa61ce --- /dev/null +++ b/src/node/hooks/express/swagger.js @@ -0,0 +1,430 @@ +var log4js = require('log4js'); +var express = require('express'); +var apiHandler = require('../../handler/APIHandler'); +var apiCaller = require('./apicalls').apiCaller; +var settings = require("../../utils/Settings"); + +var swaggerModels = { + 'models': { + 'SessionInfo' : { + "id": 'SessionInfo', + "properties": { + "id": { + "type": "string" + }, + "authorID": { + "type": "string" + }, + "groupID":{ + "type":"string" + }, + "validUntil":{ + "type":"long" + } + } + }, + 'UserInfo' : { + "id": 'UserInfo', + "properties": { + "id": { + "type": "string" + }, + "colorId": { + "type": "string" + }, + "name":{ + "type":"string" + }, + "timestamp":{ + "type":"long" + } + } + }, + 'Message' : { + "id": 'Message', + "properties": { + "text": { + "type": "string" + }, + "userId": { + "type": "string" + }, + "userName":{ + "type":"string" + }, + "time":{ + "type":"long" + } + } + } + } +}; + +function sessionListResponseProcessor(res) { + if (res.data) { + var sessions = []; + for (var sessionId in res.data) { + var sessionInfo = res.data[sessionId]; + sessionId["id"] = sessionId; + sessions.push(sessionInfo); + } + res.data = sessions; + } + + return res; +} + +// We'll add some more info to the API methods +var API = { + + // Group + "group": { + "create" : { + "func" : "createGroup", + "description": "creates a new group", + "response": {"groupID":{"type":"string"}} + }, + "createIfNotExistsFor" : { + "func": "createGroupIfNotExistsFor", + "description": "this functions helps you to map your application group ids to Etherpad group ids", + "response": {"groupID":{"type":"string"}} + }, + "delete" : { + "func": "deleteGroup", + "description": "deletes a group" + }, + "listPads" : { + "func": "listPads", + "description": "returns all pads of this group", + "response": {"padIDs":{"type":"List", "items":{"type":"string"}}} + }, + "createPad" : { + "func": "createGroupPad", + "description": "creates a new pad in this group" + }, + "listSessions": { + "func": "listSessionsOfGroup", + "responseProcessor": sessionListResponseProcessor, + "description": "", + "response": {"sessions":{"type":"List", "items":{"type":"SessionInfo"}}} + }, + "list": { + "func": "listAllGroups", + "description": "", + "response": {"groupIDs":{"type":"List", "items":{"type":"string"}}} + }, + }, + + // Author + "author": { + "create" : { + "func" : "createAuthor", + "description": "creates a new author", + "response": {"authorID":{"type":"string"}} + }, + "createIfNotExistsFor": { + "func": "createAuthorIfNotExistsFor", + "description": "this functions helps you to map your application author ids to Etherpad author ids", + "response": {"authorID":{"type":"string"}} + }, + "listPads": { + "func": "listPadsOfAuthor", + "description": "returns an array of all pads this author contributed to", + "response": {"padIDs":{"type":"List", "items":{"type":"string"}}} + }, + "listSessions": { + "func": "listSessionsOfAuthor", + "responseProcessor": sessionListResponseProcessor, + "description": "returns all sessions of an author", + "response": {"sessions":{"type":"List", "items":{"type":"SessionInfo"}}} + }, + // We need an operation that return a UserInfo so it can be picked up by the codegen :( + "getName" : { + "func": "getAuthorName", + "description": "Returns the Author Name of the author", + "responseProcessor": function(response) { + if (response.data) { + response["info"] = {"name": response.data.authorName}; + delete response["data"]; + } + }, + "response": {"info":{"type":"UserInfo"}} + } + }, + "session": { + "create" : { + "func": "createSession", + "description": "creates a new session. validUntil is an unix timestamp in seconds", + "response": {"sessionID":{"type":"string"}} + }, + "delete" : { + "func": "deleteSession", + "description": "deletes a session" + }, + // We need an operation that returns a SessionInfo so it can be picked up by the codegen :( + "info": { + "func": "getSessionInfo", + "description": "returns informations about a session", + "responseProcessor": function(response) { + // move this to info + if (response.data) { + response["info"] = response.data; + delete response["data"]; + } + }, + "response": {"info":{"type":"SessionInfo"}} + } + }, + "pad": { + "listAll" : { + "func": "listAllPads", + "description": "list all the pads", + "response": {"padIDs":{"type":"List", "items": {"type" : "string"}}} + }, + "createDiffHTML" : { + "func" : "createDiffHTML", + "description": "", + "response": {} + }, + "create" : { + "func" : "createPad", + "description": "creates a new (non-group) pad. Note that if you need to create a group Pad, you should call createGroupPad" + }, + "getText" : { + "func" : "getText", + "description": "returns the text of a pad", + "response": {"text":{"type":"string"}} + }, + "setText" : { + "func" : "setText", + "description": "sets the text of a pad" + }, + "getHTML": { + "func" : "getHTML", + "description": "returns the text of a pad formatted as HTML", + "response": {"html":{"type":"string"}} + }, + "setHTML": { + "func" : "setHTML", + "description": "sets the text of a pad with HTML" + }, + "getRevisionsCount": { + "func" : "getRevisionsCount", + "description": "returns the number of revisions of this pad", + "response": {"revisions":{"type":"long"}} + }, + "getLastEdited": { + "func" : "getLastEdited", + "description": "returns the timestamp of the last revision of the pad", + "response": {"lastEdited":{"type":"long"}} + }, + "delete": { + "func" : "deletePad", + "description": "deletes a pad" + }, + "getReadOnlyID": { + "func" : "getReadOnlyID", + "description": "returns the read only link of a pad", + "response": {"readOnlyID":{"type":"string"}} + }, + "setPublicStatus": { + "func": "setPublicStatus", + "description": "sets a boolean for the public status of a pad" + }, + "getPublicStatus": { + "func": "getPublicStatus", + "description": "return true of false", + "response": {"publicStatus":{"type":"boolean"}} + }, + "setPassword": { + "func": "setPassword", + "description": "returns ok or a error message" + }, + "isPasswordProtected": { + "func": "isPasswordProtected", + "description": "returns true or false", + "response": {"passwordProtection":{"type":"boolean"}} + }, + "authors": { + "func": "listAuthorsOfPad", + "description": "returns an array of authors who contributed to this pad", + "response": {"authorIDs":{"type":"List", "items":{"type" : "string"}}} + }, + "usersCount": { + "func": "padUsersCount", + "description": "returns the number of user that are currently editing this pad", + "response": {"padUsersCount":{"type": "long"}} + }, + "users": { + "func": "padUsers", + "description": "returns the list of users that are currently editing this pad", + "response": {"padUsers":{"type":"List", "items":{"type": "UserInfo"}}} + }, + "sendClientsMessage": { + "func": "sendClientsMessage", + "description": "sends a custom message of type msg to the pad" + }, + "checkToken" : { + "func": "checkToken", + "description": "returns ok when the current api token is valid" + }, + "getChatHistory": { + "func": "getChatHistory", + "description": "returns the chat history", + "response": {"messages":{"type":"List", "items": {"type" : "Message"}}} + }, + // We need an operation that returns a Message so it can be picked up by the codegen :( + "getChatHead": { + "func": "getChatHead", + "description": "returns the chatHead (chat-message) of the pad", + "responseProcessor": function(response) { + // move this to info + if (response.data) { + response["chatHead"] = {"time": response.data["chatHead"]}; + delete response["data"]; + } + }, + "response": {"chatHead":{"type":"Message"}} + } + } +}; + +function capitalise(string){ + return string.charAt(0).toUpperCase() + string.slice(1); +} + +for (var resource in API) { + for (var func in API[resource]) { + + // The base response model + var responseModel = { + "properties": { + "code":{ + "type":"int" + }, + "message":{ + "type":"string" + } + } + }; + + var responseModelId = "Response"; + + // Add the data properties (if any) to the response + if (API[resource][func]["response"]) { + // This is a specific response so let's set a new id + responseModelId = capitalise(resource) + capitalise(func) + "Response"; + + for(var prop in API[resource][func]["response"]) { + var propType = API[resource][func]["response"][prop]; + responseModel["properties"][prop] = propType; + } + } + + // Add the id + responseModel["id"] = responseModelId; + + // Add this to the swagger models + swaggerModels['models'][responseModelId] = responseModel; + + // Store the response model id + API[resource][func]["responseClass"] = responseModelId; + + } +} + +function newSwagger() { + var swagger_module = require.resolve("swagger-node-express"); + if (require.cache[swagger_module]) { + // delete the child modules from cache + require.cache[swagger_module].children.forEach(function(m) {delete require.cache[m.id];}); + // delete the module from cache + delete require.cache[swagger_module]; + } + return require("swagger-node-express"); +} + +exports.expressCreateServer = function (hook_name, args, cb) { + + for (var version in apiHandler.version) { + + var swagger = newSwagger(); + var basePath = "/rest/" + version; + + // Let's put this under /rest for now + var subpath = express(); + + args.app.use(basePath, subpath); + + swagger.setAppHandler(subpath); + + swagger.addModels(swaggerModels); + + for (var resource in API) { + + for (var funcName in API[resource]) { + var func = API[resource][funcName]; + + // get the api function + var apiFunc = apiHandler.version[version][func["func"]]; + + // Skip this one if it does not exist in the version + if(!apiFunc) { + continue; + } + + var swaggerFunc = { + 'spec': { + "description" : func["description"], + "path" : "/" + resource + "/" + funcName, + "summary" : funcName, + "nickname" : funcName, + "method": "GET", + "params" : apiFunc.map( function(param) { + return swagger.queryParam(param, param, "string"); + }), + "responseClass" : func["responseClass"] + }, + 'action': (function(func, responseProcessor) { + return function (req,res) { + req.params.version = version; + req.params.func = func; // call the api function + + //wrap the send function so we can process the response + res.__swagger_send = res.send; + res.send = function (response) { + // ugly but we need to get this as json + response = JSON.parse(response); + // process the response if needed + if (responseProcessor) { + response = responseProcessor(response); + } + // Let's move everything out of "data" + if (response.data) { + for(var prop in response.data) { + response[prop] = response.data[prop]; + delete response.data; + } + } + response = JSON.stringify(response); + res.__swagger_send(response); + }; + + apiCaller(req, res, req.query); + }; + })(func["func"], func["responseProcessor"]) // must use a closure here + }; + + swagger.addGet(swaggerFunc); + } + } + + swagger.setHeaders = function setHeaders(res) { + res.header('Access-Control-Allow-Origin', "*"); + }; + + swagger.configureSwaggerPaths("", "/api" , ""); + + swagger.configure("http://" + settings.ip + ":" + settings.port + basePath, version); + } +}; diff --git a/src/node/hooks/express/webaccess.js b/src/node/hooks/express/webaccess.js index 50323ef6f..433d5094e 100644 --- a/src/node/hooks/express/webaccess.js +++ b/src/node/hooks/express/webaccess.js @@ -4,7 +4,8 @@ var httpLogger = log4js.getLogger("http"); var settings = require('../../utils/Settings'); var randomString = require('ep_etherpad-lite/static/js/pad_utils').randomString; var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks'); - +var ueberStore = require('../../db/SessionStore'); +var stats = require('ep_etherpad-lite/node/stats') //checks for basic http auth exports.basicAuth = function (req, res, next) { @@ -32,8 +33,8 @@ exports.basicAuth = function (req, res, next) { // If auth headers are present use them to authenticate... if (req.headers.authorization && req.headers.authorization.search('Basic ') === 0) { var userpass = new Buffer(req.headers.authorization.split(' ')[1], 'base64').toString().split(":") - var username = userpass[0]; - var password = userpass[1]; + var username = userpass.shift(); + var password = userpass.join(':'); if (settings.users[username] != undefined && settings.users[username].password == password) { settings.users[username].username = username; @@ -91,10 +92,21 @@ exports.basicAuth = function (req, res, next) { exports.secret = null; exports.expressConfigure = function (hook_name, args, cb) { + // Measure response time + args.app.use(function(req, res, next) { + var stopWatch = stats.timer('httpRequests').start(); + var sendFn = res.send + res.send = function() { + stopWatch.end() + sendFn.apply(res, arguments) + } + next() + }) + // If the log level specified in the config file is WARN or ERROR the application server never starts listening to requests as reported in issue #158. // Not installing the log4js connect logger when the log level has a higher severity than INFO since it would not log at that level anyway. if (!(settings.loglevel === "WARN" || settings.loglevel == "ERROR")) - args.app.use(log4js.connectLogger(httpLogger, { level: log4js.levels.INFO, format: ':status, :method :url'})); + args.app.use(log4js.connectLogger(httpLogger, { level: log4js.levels.DEBUG, format: ':status, :method :url'})); /* Do not let express create the session, so that we can retain a * reference to it for socket.io to use. Also, set the key (cookie @@ -102,15 +114,14 @@ exports.expressConfigure = function (hook_name, args, cb) { * handling it cleaner :) */ if (!exports.sessionStore) { - exports.sessionStore = new express.session.MemoryStore(); - exports.secret = randomString(32); + exports.sessionStore = new ueberStore(); + exports.secret = settings.sessionKey; // Isn't this being reset each time the server spawns? } - - args.app.use(express.cookieParser(exports.secret)); + args.app.use(express.cookieParser(exports.secret)); args.app.sessionStore = exports.sessionStore; - args.app.use(express.session({store: args.app.sessionStore, - key: 'express_sid' })); + args.app.use(express.session({secret: exports.secret, store: args.app.sessionStore, key: 'express_sid' })); args.app.use(exports.basicAuth); } + diff --git a/src/node/server.js b/src/node/server.js index db75d7e37..605ce8479 100755 --- a/src/node/server.js +++ b/src/node/server.js @@ -23,10 +23,15 @@ var log4js = require('log4js') , async = require('async') + , stats = require('./stats') ; log4js.replaceConsole(); +stats.gauge('memoryUsage', function() { + return process.memoryUsage().rss +}) + var settings , db , plugins @@ -48,7 +53,6 @@ async.waterfall([ plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins"); hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks"); hooks.plugins = plugins; - callback(); }, diff --git a/src/node/stats.js b/src/node/stats.js new file mode 100644 index 000000000..24efaf4a8 --- /dev/null +++ b/src/node/stats.js @@ -0,0 +1,3 @@ +var measured = require('measured') + +module.exports = measured.createCollection(); \ No newline at end of file diff --git a/src/node/utils/Abiword.js b/src/node/utils/Abiword.js index 27138e648..5f12bd975 100644 --- a/src/node/utils/Abiword.js +++ b/src/node/utils/Abiword.js @@ -63,7 +63,7 @@ if(os.type().indexOf("Windows") > -1) callback(); }); - } + }; exports.convertFile = function(srcFile, destFile, type, callback) { @@ -100,7 +100,7 @@ else { //add data to buffer stdoutBuffer+=data.toString(); - + //we're searching for the prompt, cause this means everything we need is in the buffer if(stdoutBuffer.search("AbiWord:>") != -1) { @@ -121,27 +121,29 @@ else firstPrompt = false; } }); - } + }; spawnAbiword(); doConvertTask = function(task, callback) { abiword.stdin.write("convert " + task.srcFile + " " + task.destFile + " " + task.type + "\n"); - //create a callback that calls the task callback and the caller callback stdoutCallback = function (err) { callback(); console.log("queue continue"); - task.callback(err); + try{ + task.callback(err); + }catch(e){ + console.error("Abiword File failed to convert", e); + } }; - } + }; //Queue with the converts we have to do var queue = async.queue(doConvertTask, 1); - exports.convertFile = function(srcFile, destFile, type, callback) - { + { queue.push({"srcFile": srcFile, "destFile": destFile, "type": type, "callback": callback}); }; } diff --git a/src/node/utils/ExportDokuWiki.js b/src/node/utils/ExportDokuWiki.js index d2f71236b..f5d2d177f 100644 --- a/src/node/utils/ExportDokuWiki.js +++ b/src/node/utils/ExportDokuWiki.js @@ -316,7 +316,7 @@ exports.getPadDokuWikiDocument = function (padId, revNum, callback) getPadDokuWiki(pad, revNum, callback); }); -} +}; function _escapeDokuWiki(s) { diff --git a/src/node/utils/ExportHelper.js b/src/node/utils/ExportHelper.js new file mode 100644 index 000000000..136896f06 --- /dev/null +++ b/src/node/utils/ExportHelper.js @@ -0,0 +1,87 @@ +/** + * Helpers for export requests + */ + +/* + * 2011 Peter 'Pita' Martischka (Primary Technology Ltd) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS-IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +var async = require("async"); +var Changeset = require("ep_etherpad-lite/static/js/Changeset"); +var padManager = require("../db/PadManager"); +var ERR = require("async-stacktrace"); +var Security = require('ep_etherpad-lite/static/js/security'); +var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks'); + +exports.getPadPlainText = function(pad, revNum){ + var atext = ((revNum !== undefined) ? pad.getInternalRevisionAText(revNum) : pad.atext()); + var textLines = atext.text.slice(0, -1).split('\n'); + var attribLines = Changeset.splitAttributionLines(atext.attribs, atext.text); + var apool = pad.pool(); + + var pieces = []; + for (var i = 0; i < textLines.length; i++){ + var line = _analyzeLine(textLines[i], attribLines[i], apool); + if (line.listLevel){ + var numSpaces = line.listLevel * 2 - 1; + var bullet = '*'; + pieces.push(new Array(numSpaces + 1).join(' '), bullet, ' ', line.text, '\n'); + } + else{ + pieces.push(line.text, '\n'); + } + } + + return pieces.join(''); +}; + + +exports._analyzeLine = function(text, aline, apool){ + var line = {}; + + // identify list + var lineMarker = 0; + line.listLevel = 0; + if (aline){ + var opIter = Changeset.opIterator(aline); + if (opIter.hasNext()){ + var listType = Changeset.opAttributeValue(opIter.next(), 'list', apool); + if (listType){ + lineMarker = 1; + listType = /([a-z]+)([12345678])/.exec(listType); + if (listType){ + line.listTypeName = listType[1]; + line.listLevel = Number(listType[2]); + } + } + } + } + if (lineMarker){ + line.text = text.substring(1); + line.aline = Changeset.subattribution(aline, 1); + } + else{ + line.text = text; + line.aline = aline; + } + return line; +}; + + +exports._encodeWhitespace = function(s){ + return s.replace(/[^\x21-\x7E\s\t\n\r]/g, function(c){ + return "&#" +c.charCodeAt(0) + ";"; + }); +}; diff --git a/src/node/utils/ExportHtml.js b/src/node/utils/ExportHtml.js index 069194880..5179adf62 100644 --- a/src/node/utils/ExportHtml.js +++ b/src/node/utils/ExportHtml.js @@ -21,31 +21,9 @@ var padManager = require("../db/PadManager"); var ERR = require("async-stacktrace"); var Security = require('ep_etherpad-lite/static/js/security'); var hooks = require('ep_etherpad-lite/static/js/pluginfw/hooks'); -function getPadPlainText(pad, revNum) -{ - var atext = ((revNum !== undefined) ? pad.getInternalRevisionAText(revNum) : pad.atext()); - var textLines = atext.text.slice(0, -1).split('\n'); - var attribLines = Changeset.splitAttributionLines(atext.attribs, atext.text); - var apool = pad.pool(); - - var pieces = []; - for (var i = 0; i < textLines.length; i++) - { - var line = _analyzeLine(textLines[i], attribLines[i], apool); - if (line.listLevel) - { - var numSpaces = line.listLevel * 2 - 1; - var bullet = '*'; - pieces.push(new Array(numSpaces + 1).join(' '), bullet, ' ', line.text, '\n'); - } - else - { - pieces.push(line.text, '\n'); - } - } - - return pieces.join(''); -} +var getPadPlainText = require('./ExportHelper').getPadPlainText; +var _analyzeLine = require('./ExportHelper')._analyzeLine; +var _encodeWhitespace = require('./ExportHelper')._encodeWhitespace; function getPadHTML(pad, revNum, callback) { @@ -469,7 +447,7 @@ function getHTMLFromAtext(pad, atext, authorColors) pieces.push(''); } lists.length--; - } + } var lineContentFromHook = hooks.callAllStr("getLineHTMLForExport", { line: line, @@ -477,14 +455,14 @@ function getHTMLFromAtext(pad, atext, authorColors) attribLine: attribLines[i], text: textLines[i] }, " ", " ", ""); - if (lineContentFromHook) - { - pieces.push(lineContentFromHook, ''); - } - else - { - pieces.push(lineContent, '
'); - } + if (lineContentFromHook) + { + pieces.push(lineContentFromHook, ''); + } + else + { + pieces.push(lineContent, '
'); + } } } @@ -503,45 +481,6 @@ function getHTMLFromAtext(pad, atext, authorColors) return pieces.join(''); } -function _analyzeLine(text, aline, apool) -{ - var line = {}; - - // identify list - var lineMarker = 0; - line.listLevel = 0; - if (aline) - { - var opIter = Changeset.opIterator(aline); - if (opIter.hasNext()) - { - var listType = Changeset.opAttributeValue(opIter.next(), 'list', apool); - if (listType) - { - lineMarker = 1; - listType = /([a-z]+)([12345678])/.exec(listType); - if (listType) - { - line.listTypeName = listType[1]; - line.listLevel = Number(listType[2]); - } - } - } - } - if (lineMarker) - { - line.text = text.substring(1); - line.aline = Changeset.subattribution(aline, 1); - } - else - { - line.text = text; - line.aline = aline; - } - - return line; -} - exports.getPadHTMLDocument = function (padId, revNum, noDocType, callback) { padManager.getPad(padId, function (err, pad) @@ -551,7 +490,7 @@ exports.getPadHTMLDocument = function (padId, revNum, noDocType, callback) var head = (noDocType ? '' : '\n') + '\n' + (noDocType ? '' : '\n' + - '' + Security.escapeHTML(padId) + '\n' + + '' + Security.escapeHTML(padId) + '\n' + '\n' + '', '', scriptTag(outerScript), '
x
'); var outerFrame = document.createElement("IFRAME"); outerFrame.name = "ace_outer"; diff --git a/src/static/js/ace2_inner.js b/src/static/js/ace2_inner.js index 8209c9bf8..0aa9998ad 100644 --- a/src/static/js/ace2_inner.js +++ b/src/static/js/ace2_inner.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -36,10 +36,10 @@ var isNodeText = Ace2Common.isNodeText, htmlPrettyEscape = Ace2Common.htmlPrettyEscape, noop = Ace2Common.noop; var hooks = require('./pluginfw/hooks'); - + function Ace2Inner(){ - + var makeChangesetTracker = require('./changesettracker').makeChangesetTracker; var colorutils = require('./colorutils').colorutils; var makeContentCollector = require('./contentcollector').makeContentCollector; @@ -51,11 +51,10 @@ function Ace2Inner(){ var linestylefilter = require('./linestylefilter').linestylefilter; var SkipList = require('./skiplist'); var undoModule = require('./undomodule').undoModule; - var makeVirtualLineView = require('./virtual_lines').makeVirtualLineView; var AttributeManager = require('./AttributeManager'); - + var DEBUG = false; //$$ build script replaces the string "var DEBUG=true;//$$" with "var DEBUG=false;" - // changed to false + // changed to false var isSetUp = false; var THE_TAB = ' '; //4 @@ -79,13 +78,12 @@ function Ace2Inner(){ iframe.ace_outerWin = null; // prevent IE 6 memory leak var sideDiv = iframe.nextSibling; var lineMetricsDiv = sideDiv.nextSibling; - var overlaysdiv = lineMetricsDiv.nextSibling; initLineNumbers(); var outsideKeyDown = noop; - + var outsideKeyPress = function(){return true;}; - + var outsideNotifyDirty = noop; // selFocusAtStart -- determines whether the selection extends "backwards", so that the focus @@ -101,19 +99,19 @@ function Ace2Inner(){ alines: [], apool: new AttribPool() }; - - // lines, alltext, alines, and DOM are set up in setup() + + // lines, alltext, alines, and DOM are set up in init() if (undoModule.enabled) { undoModule.apool = rep.apool; } - var root, doc; // set in setup() + var root, doc; // set in init() var isEditable = true; var doesWrap = true; var hasLineNumbers = true; var isStyled = true; - + // space around the innermost iframe element var iframePadLeft = MIN_LINEDIV_WIDTH + LINE_NUMBER_PADDING_RIGHT + EDIT_BODY_PADDING_LEFT; var iframePadTop = EDIT_BODY_PADDING_TOP; @@ -122,7 +120,7 @@ function Ace2Inner(){ var console = (DEBUG && window.console); var documentAttributeManager; - + if (!window.console) { var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; @@ -159,7 +157,7 @@ function Ace2Inner(){ var textFace = 'monospace'; var textSize = 12; - + function textLineHeight() { @@ -167,12 +165,14 @@ function Ace2Inner(){ } var dynamicCSS = null; + var outerDynamicCSS = null; var parentDynamicCSS = null; function initDynamicCSS() { dynamicCSS = makeCSSManager("dynamicsyntax"); - parentDynamicCSS = makeCSSManager("dynamicsyntax", true); + outerDynamicCSS = makeCSSManager("dynamicsyntax", "outer"); + parentDynamicCSS = makeCSSManager("dynamicsyntax", "parent"); } var changesetTracker = makeChangesetTracker(scheduler, rep.apool, { @@ -208,6 +208,72 @@ function Ace2Inner(){ }; editorInfo.ace_getAuthorInfos= getAuthorInfos; + function setAuthorStyle(author, info) + { + if (!dynamicCSS) { + return; + } + var authorSelector = getAuthorColorClassSelector(getAuthorClassName(author)); + + var authorStyleSet = hooks.callAll('aceSetAuthorStyle', { + dynamicCSS: dynamicCSS, + parentDynamicCSS: parentDynamicCSS, + outerDynamicCSS: outerDynamicCSS, + info: info, + author: author, + authorSelector: authorSelector, + }); + + // Prevent default behaviour if any hook says so + if (_.any(authorStyleSet, function(it) { return it })) + { + return + } + + if (!info) + { + dynamicCSS.removeSelectorStyle(authorSelector); + parentDynamicCSS.removeSelectorStyle(authorSelector); + } + else + { + if (info.bgcolor) + { + var bgcolor = info.bgcolor; + if ((typeof info.fade) == "number") + { + bgcolor = fadeColor(bgcolor, info.fade); + } + + var authorStyle = dynamicCSS.selectorStyle(authorSelector); + var parentAuthorStyle = parentDynamicCSS.selectorStyle(authorSelector); + var anchorStyle = dynamicCSS.selectorStyle(authorSelector + ' > a') + + // author color + authorStyle.backgroundColor = bgcolor; + parentAuthorStyle.backgroundColor = bgcolor; + + // text contrast + if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.5) + { + authorStyle.color = '#ffffff'; + parentAuthorStyle.color = '#ffffff'; + }else{ + authorStyle.color = null; + parentAuthorStyle.color = null; + } + + // anchor text contrast + if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55) + { + anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor))); + }else{ + anchorStyle.color = null; + } + } + } + } + function setAuthorInfo(author, info) { if ((typeof author) != "string") @@ -217,56 +283,12 @@ function Ace2Inner(){ if (!info) { delete authorInfos[author]; - if (dynamicCSS) - { - dynamicCSS.removeSelectorStyle(getAuthorColorClassSelector(getAuthorClassName(author))); - parentDynamicCSS.removeSelectorStyle(getAuthorColorClassSelector(getAuthorClassName(author))); - } } else { authorInfos[author] = info; - if (info.bgcolor) - { - if (dynamicCSS) - { - var bgcolor = info.bgcolor; - if ((typeof info.fade) == "number") - { - bgcolor = fadeColor(bgcolor, info.fade); - } - - var authorStyle = dynamicCSS.selectorStyle(getAuthorColorClassSelector( - getAuthorClassName(author))); - var parentAuthorStyle = parentDynamicCSS.selectorStyle(getAuthorColorClassSelector( - getAuthorClassName(author))); - var anchorStyle = dynamicCSS.selectorStyle(getAuthorColorClassSelector( - getAuthorClassName(author))+' > a') - - // author color - authorStyle.backgroundColor = bgcolor; - parentAuthorStyle.backgroundColor = bgcolor; - - // text contrast - if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.5) - { - authorStyle.color = '#ffffff'; - parentAuthorStyle.color = '#ffffff'; - }else{ - authorStyle.color = null; - parentAuthorStyle.color = null; - } - - // anchor text contrast - if(colorutils.luminosity(colorutils.css2triple(bgcolor)) < 0.55) - { - anchorStyle.color = colorutils.triple2css(colorutils.complementary(colorutils.css2triple(bgcolor))); - }else{ - anchorStyle.color = null; - } - } - } } + setAuthorStyle(author, info); } function getAuthorClassName(author) @@ -322,19 +344,6 @@ function Ace2Inner(){ } } - function boldColorFromColor(lightColorCSS) - { - var color = colorutils.css2triple(lightColorCSS); - - // amp up the saturation to full - color = colorutils.saturate(color); - - // normalize brightness based on luminosity - color = colorutils.scaleColor(color, 0, 0.5 / colorutils.luminosity(color)); - - return colorutils.triple2css(color); - } - function fadeColor(colorCSS, fadeFrac) { var color = colorutils.css2triple(colorCSS); @@ -527,22 +536,6 @@ function Ace2Inner(){ } editorInfo.ace_inCallStackIfNecessary = inCallStackIfNecessary; - function recolorLineByKey(key) - { - if (rep.lines.containsKey(key)) - { - var offset = rep.lines.offsetOfKey(key); - var width = rep.lines.atKey(key).width; - recolorLinesInRange(offset, offset + width); - } - } - - function getLineKeyForOffset(charOffset) - { - return rep.lines.atOffset(charOffset).key; - } - - function dispose() { disposed = true; @@ -897,14 +890,14 @@ function Ace2Inner(){ editorInfo.ace_doReturnKey = doReturnKey; editorInfo.ace_isBlockElement = isBlockElement; editorInfo.ace_getLineListType = getLineListType; - + editorInfo.ace_callWithAce = function(fn, callStack, normalize) { var wrapper = function() { return fn(editorInfo); }; - + if (normalize !== undefined) { var wrapper1 = wrapper; @@ -930,14 +923,14 @@ function Ace2Inner(){ // @param value the value to set to editorInfo.ace_setProperty = function(key, value) { - - // Convinience function returning a setter for a class on an element + + // Convinience function returning a setter for a class on an element var setClassPresenceNamed = function(element, cls){ return function(value){ setClassPresence(element, cls, !! value) } }; - + // These properties are exposed var setters = { wraps: setWraps, @@ -952,19 +945,23 @@ function Ace2Inner(){ }, grayedout: setClassPresenceNamed(outerWin.document.body, "grayedout"), dmesg: function(){ dmesg = window.dmesg = value; }, - userauthor: function(value){ + userauthor: function(value){ thisAuthor = String(value); documentAttributeManager.author = thisAuthor; }, styled: setStyled, textface: setTextFace, textsize: setTextSize, - rtlistrue: setClassPresenceNamed(root, "rtl") + rtlistrue: function(value) { + setClassPresence(root, "rtl", value) + setClassPresence(root, "ltr", !value) + document.documentElement.dir = value? 'rtl' : 'ltr' + } }; - + var setter = setters[key.toLowerCase()]; - - // check if setter is present + + // check if setter is present if(setter !== undefined){ setter(value) } @@ -1009,6 +1006,11 @@ function Ace2Inner(){ return caughtErrors.slice(); }; + editorInfo.ace_getDocument = function() + { + return doc; + }; + editorInfo.ace_getDebugProperty = function(prop) { if (prop == "debugger") @@ -1068,7 +1070,7 @@ function Ace2Inner(){ return false; } }; - + isTimeUp.elapsed = function() { return now() - startTime; @@ -1140,34 +1142,6 @@ function Ace2Inner(){ } editorInfo.ace_fastIncorp = fastIncorp; - function incorpIfQuick() - { - var me = incorpIfQuick; - var failures = (me.failures || 0); - if (failures < 5) - { - var isTimeUp = newTimeLimit(40); - var madeChanges = incorporateUserChanges(isTimeUp); - if (isTimeUp()) - { - me.failures = failures + 1; - } - return true; - } - else - { - var skipCount = (me.skipCount || 0); - skipCount++; - if (skipCount == 20) - { - skipCount = 0; - me.failures = 0; - } - me.skipCount = skipCount; - } - return false; - } - var idleWorkTimer = makeIdleAction(function() { @@ -1449,7 +1423,7 @@ function Ace2Inner(){ var p = PROFILER("getSelection", false); var selection = getSelection(); p.end(); - + function topLevel(n) { if ((!n) || n == root) return null; @@ -1459,7 +1433,7 @@ function Ace2Inner(){ } return n; } - + if (selection) { var node1 = topLevel(selection.startPoint.node); @@ -1622,9 +1596,17 @@ function Ace2Inner(){ lines = ccData.lines; var lineAttribs = ccData.lineAttribs; var linesWrapped = ccData.linesWrapped; + var scrollToTheLeftNeeded = false; if (linesWrapped > 0) { + if(!browser.ie){ + // chrome decides in it's infinite wisdom that its okay to put the browsers visisble window in the middle of the span + // an outcome of this is that the first chars of the string are no longer visible to the user.. Yay chrome.. + // Move the browsers visible area to the left hand side of the span + // Firefox isn't quite so bad, but it's still pretty quirky. + var scrollToTheLeftNeeded = true; + } // console.log("Editor warning: " + linesWrapped + " long line" + (linesWrapped == 1 ? " was" : "s were") + " hard-wrapped into " + ccData.numLinesAfter + " lines."); } @@ -1692,6 +1674,10 @@ function Ace2Inner(){ //console.log("removed: "+id); }); + if(scrollToTheLeftNeeded){ // needed to stop chrome from breaking the ui when long strings without spaces are pasted + $("#innerdocbody").scrollLeft(0); + } + p.mark("findsel"); // if the nodes that define the selection weren't encountered during // content collection, figure out where those nodes are now. @@ -1705,7 +1691,7 @@ function Ace2Inner(){ root:root, point:selection.startPoint, documentAttributeManager: documentAttributeManager - }); + }); selStart = (selStartFromHook==null||selStartFromHook.length==0)?getLineAndCharForPoint(selection.startPoint):selStartFromHook; } if (selection && !selEnd) @@ -1718,7 +1704,7 @@ function Ace2Inner(){ point:selection.endPoint, documentAttributeManager: documentAttributeManager }); - selEnd = (selEndFromHook==null||selEndFromHook.length==0)?getLineAndCharForPoint(selection.endPoint):selEndFromHook; + selEnd = (selEndFromHook==null||selEndFromHook.length==0)?getLineAndCharForPoint(selection.endPoint):selEndFromHook; } // selection from content collection can, in various ways, extend past final @@ -1739,7 +1725,7 @@ function Ace2Inner(){ // update rep if we have a new selection // NOTE: IE loses the selection when you click stuff in e.g. the // editbar, so removing the selection when it's lost is not a good - // idea. + // idea. if (selection) repSelectionChange(selStart, selEnd, selection && selection.focusAtStart); // update browser selection p.mark("browsel"); @@ -1762,13 +1748,6 @@ function Ace2Inner(){ return domChanges; } - function htmlForRemovedChild(n) - { - var div = doc.createElement("DIV"); - div.appendChild(n); - return div.innerHTML; - } - var STYLE_ATTRIBS = { bold: true, italic: true, @@ -1874,19 +1853,19 @@ function Ace2Inner(){ return rep.selStart[0]; } editorInfo.ace_caretLine = caretLine; - + function caretColumn() { return rep.selStart[1]; } editorInfo.ace_caretColumn = caretColumn; - + function caretDocChar() { return rep.lines.offsetOfIndex(caretLine()) + caretColumn(); } editorInfo.ace_caretDocChar = caretDocChar; - + function handleReturnIndentation() { // on return, indent to level of previous line @@ -1897,7 +1876,7 @@ function Ace2Inner(){ var prevLine = rep.lines.prev(thisLine); var prevLineText = prevLine.text; var theIndent = /^ *(?:)/.exec(prevLineText)[0]; - if (/[\[\(\{]\s*$/.exec(prevLineText)) theIndent += THE_TAB; + if (/[\[\(\:\{]\s*$/.exec(prevLineText)) theIndent += THE_TAB; var cs = Changeset.builder(rep.lines.totalWidth()).keep( rep.lines.offsetOfIndex(lineNum), lineNum).insert( theIndent, [ @@ -2315,8 +2294,8 @@ function Ace2Inner(){ documentAttributeManager.setAttributesOnRange(lineAndColumnFromChar(start), lineAndColumnFromChar(end), attribs); } editorInfo.ace_performDocumentApplyAttributesToCharRange = performDocumentApplyAttributesToCharRange; - - + + function setAttributeOnSelection(attributeName, attributeValue) { if (!(rep.selStart && rep.selEnd)) return; @@ -2327,6 +2306,73 @@ function Ace2Inner(){ } editorInfo.ace_setAttributeOnSelection = setAttributeOnSelection; + function getAttributeOnSelection(attributeName){ + if (!(rep.selStart && rep.selEnd)) return; + var selectionAllHasIt = true; + var withIt = Changeset.makeAttribsString('+', [ + [attributeName, 'true'] + ], rep.apool); + var withItRegex = new RegExp(withIt.replace(/\*/g, '\\*') + "(\\*|$)"); + + function hasIt(attribs) + { + return withItRegex.test(attribs); + } + + var selStartLine = rep.selStart[0]; + var selEndLine = rep.selEnd[0]; + for (var n = selStartLine; n <= selEndLine; n++) + { + var opIter = Changeset.opIterator(rep.alines[n]); + var indexIntoLine = 0; + var selectionStartInLine = 0; + var selectionEndInLine = rep.lines.atIndex(n).text.length; // exclude newline + if(rep.lines.atIndex(n).text.length == 0){ + return false; // If the line length is 0 we basically treat it as having no formatting + } + if(rep.selStart[1] == rep.selEnd[1] && rep.selStart[1] == rep.lines.atIndex(n).text.length){ + return false; // If we're at the end of a line we treat it as having no formatting + } + if(rep.selStart[1] == 0 && rep.selEnd[1] == 0){ + return false; // If we're at the start of a line attributes get confused.. + } + if (n == selStartLine) + { + selectionStartInLine = rep.selStart[1]; + } + if (n == selEndLine) + { + selectionEndInLine = rep.selEnd[1]; + } + while (opIter.hasNext()) + { + var op = opIter.next(); + var opStartInLine = indexIntoLine; + var opEndInLine = opStartInLine + op.chars; + if (!hasIt(op.attribs)) + { + // does op overlap selection? + if (!(opEndInLine <= selectionStartInLine || opStartInLine >= selectionEndInLine)) + { + selectionAllHasIt = false; + break; + } + } + indexIntoLine = opEndInLine; + } + if (!selectionAllHasIt) + { + break; + } + } + if(selectionAllHasIt){ + return true; + }else{ + return false; + } + } + editorInfo.ace_getAttributeOnSelection = getAttributeOnSelection; + function toggleAttributeOnSelection(attributeName) { if (!(rep.selStart && rep.selEnd)) return; @@ -2879,7 +2925,7 @@ function Ace2Inner(){ { if (lineClass !== null) lineElem.className = lineClass; }; - + result.prepareForAdd = writeClass; result.finishUpdate = writeClass; result.getInnerHTML = function() @@ -3241,7 +3287,7 @@ function Ace2Inner(){ { return (n.tagName || '').toLowerCase() == "a" && n.href; } - + // only want to catch left-click if ((!evt.ctrlKey) && (evt.button != 2) && (evt.button != 3)) { @@ -3277,7 +3323,7 @@ function Ace2Inner(){ { return; } - + var lineNum = rep.selStart[0]; var listType = getLineListType(lineNum); @@ -3287,7 +3333,7 @@ function Ace2Inner(){ listType = /([a-z]+)([12345678])/.exec(listType); var type = listType[1]; var level = Number(listType[2]); - + //detect empty list item; exclude indentation if(text === '*' && type !== "indent") { @@ -3317,8 +3363,10 @@ function Ace2Inner(){ function doIndentOutdent(isOut) { - if (!(rep.selStart && rep.selEnd) || - ((rep.selStart[0] == rep.selEnd[0]) && (rep.selStart[1] == rep.selEnd[1]) && rep.selEnd[1] > 1)) + if (!((rep.selStart && rep.selEnd) || + ((rep.selStart[0] == rep.selEnd[0]) && (rep.selStart[1] == rep.selEnd[1]) && rep.selEnd[1] > 1)) && + (isOut != true) + ) { return false; } @@ -3326,7 +3374,6 @@ function Ace2Inner(){ var firstLine, lastLine; firstLine = rep.selStart[0]; lastLine = Math.max(firstLine, rep.selEnd[0] - ((rep.selEnd[1] === 0) ? 1 : 0)); - var mods = []; for (var n = firstLine; n <= lastLine; n++) { @@ -3401,9 +3448,9 @@ function Ace2Inner(){ var thisLineListType = getLineListType(theLine); var prevLineEntry = (theLine > 0 && rep.lines.atIndex(theLine - 1)); var prevLineBlank = (prevLineEntry && prevLineEntry.text.length == prevLineEntry.lineMarker); - + var thisLineHasMarker = documentAttributeManager.lineHasMarker(theLine); - + if (thisLineListType) { // this line is a list @@ -3478,7 +3525,7 @@ function Ace2Inner(){ return !!REGEX_WORDCHAR.exec(c); } editorInfo.ace_isWordChar = isWordChar; - + function isSpaceChar(c) { return !!REGEX_SPACE.exec(c); @@ -3539,7 +3586,6 @@ function Ace2Inner(){ { // if (DEBUG && window.DONT_INCORP) return; if (!isEditable) return; - var type = evt.type; var charCode = evt.charCode; var keyCode = evt.keyCode; @@ -3567,8 +3613,8 @@ function Ace2Inner(){ } var specialHandled = false; - var isTypeForSpecialKey = ((browser.msie || browser.safari) ? (type == "keydown") : (type == "keypress")); - var isTypeForCmdKey = ((browser.msie || browser.safari) ? (type == "keydown") : (type == "keypress")); + var isTypeForSpecialKey = ((browser.msie || browser.safari || browser.chrome) ? (type == "keydown") : (type == "keypress")); + var isTypeForCmdKey = ((browser.msie || browser.safari || browser.chrome) ? (type == "keydown") : (type == "keypress")); var stopped = false; @@ -3628,6 +3674,11 @@ function Ace2Inner(){ if ((!specialHandled) && isTypeForCmdKey && String.fromCharCode(which).toLowerCase() == "s" && (evt.metaKey || evt.ctrlKey)) /* Do a saved revision on ctrl S */ { evt.preventDefault(); + var originalBackground = parent.parent.$('#revisionlink').css("background") + parent.parent.$('#revisionlink').css({"background":"lightyellow"}); + scheduler.setTimeout(function(){ + parent.parent.$('#revisionlink').css({"background":originalBackground}); + }, 1000); 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; } @@ -3695,7 +3746,11 @@ function Ace2Inner(){ doDeleteKey(); specialHandled = true; } + if((evt.which == 36 && evt.ctrlKey == true)){ setScrollY(0); } // Control Home send to Y = 0 if((evt.which == 33 || evt.which == 34) && type == 'keydown'){ + + 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 topOffset = rep.selStart[0] - oldVisibleLineRange[0]; if(topOffset < 0 ){ @@ -3706,30 +3761,88 @@ function Ace2Inner(){ var isPageUp = evt.which === 33; scheduler.setTimeout(function(){ - var newVisibleLineRange = getVisibleLineRange(); - var linesCount = rep.lines.length(); + var newVisibleLineRange = getVisibleLineRange(); // 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? - var newCaretRow = rep.selStart[0]; if(isPageUp){ - newCaretRow = oldVisibleLineRange[0]; + 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){ - newCaretRow = newVisibleLineRange[0] + topOffset; + if(isPageDown){ // 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 + } } //ensure min and max - if(newCaretRow < 0){ - newCaretRow = 0; + if(rep.selEnd[0] < 0){ + rep.selEnd[0] = 0; } - if(newCaretRow >= linesCount){ - newCaretRow = linesCount-1; + if(rep.selStart[0] < 0){ + rep.selStart[0] = 0; + } + if(rep.selEnd[0] >= linesCount){ + rep.selEnd[0] = linesCount-1; + } + updateBrowserSelectionFromRep(); + 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 + // top.console.log(caretOffsetTop); + 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); } - rep.selStart[0] = newCaretRow; - rep.selEnd[0] = newCaretRow; - updateBrowserSelectionFromRep(); - }, 200); + 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 + } + } + } } } @@ -3750,7 +3863,7 @@ function Ace2Inner(){ } else if (type == "keyup") { - var wait = 200; + var wait = 0; idleWorkTimer.atLeast(wait); idleWorkTimer.atMost(wait); } @@ -3770,7 +3883,7 @@ function Ace2Inner(){ if ((!specialHandled) && (!thisKeyDoesntTriggerNormalize) && (!inInternationalComposition)) { - if (type != "keyup" || !incorpIfQuick()) + if (type != "keyup") { observeChangesAroundSelection(); } @@ -3836,7 +3949,6 @@ function Ace2Inner(){ selection.endPoint = getPointForLineAndChar(se); selection.focusAtStart = !! rep.selFocusAtStart; - setSelection(selection); } @@ -4050,7 +4162,7 @@ function Ace2Inner(){ maxIndex: tn.nodeValue.length }; }; - + var selection = {}; if (origSelectionRange.compareEndPoints("StartToEnd", origSelectionRange) === 0) { @@ -4076,7 +4188,7 @@ function Ace2Inner(){ selection.startPoint.index+" / "+ selection.endPoint.node.uniqueId()+","+ selection.endPoint.index); - }*/ +}*/ } return selection; } @@ -4154,7 +4266,7 @@ function Ace2Inner(){ selection.startPoint = pointFromRangeBound(range.startContainer, range.startOffset); selection.endPoint = pointFromRangeBound(range.endContainer, range.endOffset); selection.focusAtStart = (((range.startContainer != range.endContainer) || (range.startOffset != range.endOffset)) && browserSelection.anchorNode && (browserSelection.anchorNode == range.endContainer) && (browserSelection.anchorOffset == range.endOffset)); - + if(selection.startPoint.node.ownerDocument !== window.document){ return null; } @@ -4722,54 +4834,6 @@ function Ace2Inner(){ else $(elem).removeClass(className); } - function setup() - { - doc = document; // defined as a var in scope outside - inCallStackIfNecessary("setup", function() - { - var body = doc.getElementById("innerdocbody"); - root = body; // defined as a var in scope outside - if (browser.mozilla) addClass(root, "mozilla"); - if (browser.safari) addClass(root, "safari"); - if (browser.msie) addClass(root, "msie"); - if (browser.msie) - { - // cache CSS background images - try - { - doc.execCommand("BackgroundImageCache", false, true); - } - catch (e) - { /* throws an error in some IE 6 but not others! */ - } - } - setClassPresence(root, "authorColors", true); - setClassPresence(root, "doesWrap", doesWrap); - - initDynamicCSS(); - - enforceEditability(); - - // set up dom and rep - while (root.firstChild) root.removeChild(root.firstChild); - var oneEntry = createDomLineEntry(""); - doRepLineSplice(0, rep.lines.length(), [oneEntry]); - insertDomLines(null, [oneEntry.domInfo], null); - rep.alines = Changeset.splitAttributionLines( - Changeset.makeAttribution("\n"), "\n"); - - bindTheEventHandlers(); - - }); - - scheduler.setTimeout(function() - { - parent.readyFunc(); // defined in code that sets up the inner iframe - }, 0); - - isSetUp = true; - } - function focus() { window.focus(); @@ -4919,9 +4983,9 @@ function Ace2Inner(){ } } } - + var listAttributeName = 'list'; - + function getLineListType(lineNum) { return documentAttributeManager.getAttributeOnLine(lineNum, listAttributeName) @@ -4934,7 +4998,7 @@ function Ace2Inner(){ }else{ documentAttributeManager.setAttributeOnLine(lineNum, listAttributeName, listType); } - + //if the list has been removed, it is necessary to renumber //starting from the *next* line because the list may have been //separated. If it returns null, it means that the list was not cut, try @@ -4944,7 +5008,7 @@ function Ace2Inner(){ renumberList(lineNum); } } - + function renumberList(lineNum){ //1-check we are in a list var type = getLineListType(lineNum); @@ -4957,7 +5021,7 @@ function Ace2Inner(){ { return null; } - + //2-find the first line of the list while(lineNum-1 >= 0 && (type=getLineListType(lineNum-1))) { @@ -4966,7 +5030,7 @@ function Ace2Inner(){ break; lineNum--; } - + //3-renumber every list item of the same level from the beginning, level 1 //IMPORTANT: never skip a level because there imbrication may be arbitrary var builder = Changeset.builder(rep.lines.totalWidth()); @@ -4993,7 +5057,7 @@ function Ace2Inner(){ ChangesetUtils.buildKeepRange(rep, builder, loc, (loc = [line, 1]), [ ['start', position] ], rep.apool); - + position++; line++; } @@ -5008,19 +5072,19 @@ function Ace2Inner(){ } return line; } - + applyNumberList(lineNum, 1); var cs = builder.toString(); if (!Changeset.isIdentity(cs)) { performDocumentApplyChangeset(cs); } - + //4-apply the modifications - - + + } - + function doInsertList(type) { @@ -5058,12 +5122,12 @@ function Ace2Inner(){ var t = getLineListType(n); mods.push([n, allLinesAreList ? 'indent' + level : (t ? type + level : type + '1')]); } - + _.each(mods, function(mod){ setLineListType(mod[0], mod[1]); }); } - + function doInsertUnorderedList(){ doInsertList('bullet'); } @@ -5072,14 +5136,14 @@ function Ace2Inner(){ } editorInfo.ace_doInsertUnorderedList = doInsertUnorderedList; editorInfo.ace_doInsertOrderedList = doInsertOrderedList; - + var lineNumbersShown; var sideDivInner; function initLineNumbers() { lineNumbersShown = 1; - sideDiv.innerHTML = '' + '
1
'; + sideDiv.innerHTML = '
1
'; sideDivInner = outerWin.document.getElementById("sidedivinner"); } @@ -5088,11 +5152,11 @@ function Ace2Inner(){ var newNumLines = rep.lines.length(); if (newNumLines < 1) newNumLines = 1; //update height of all current line numbers - + var a = sideDivInner.firstChild; var b = doc.body.firstChild; var n = 0; - + if (currentCallStack && currentCallStack.domClean) { @@ -5100,7 +5164,6 @@ function Ace2Inner(){ { if(n > lineNumbersShown) //all updated, break break; - var h = (b.clientHeight || b.offsetHeight); if (b.nextSibling) { @@ -5122,8 +5185,8 @@ function Ace2Inner(){ b = b.nextSibling; n++; } - } - + } + if (newNumLines != lineNumbersShown) { var container = sideDivInner; @@ -5133,21 +5196,27 @@ function Ace2Inner(){ { lineNumbersShown++; var n = lineNumbersShown; - var div = odoc.createElement("DIV"); + var div = odoc.createElement("DIV"); //calculate height for new line number - var h = (b.clientHeight || b.offsetHeight); - - if (b.nextSibling) - h = b.nextSibling.offsetTop - b.offsetTop; - - if(h) // apply style to div + if(b){ + var h = (b.clientHeight || b.offsetHeight); + + if (b.nextSibling){ + h = b.nextSibling.offsetTop - b.offsetTop; + } + } + + if(h){ // apply style to div div.style.height = h +"px"; - + } + div.appendChild(odoc.createTextNode(String(n))); fragment.appendChild(div); - b = b.nextSibling; + if(b){ + b = b.nextSibling; + } } - + container.appendChild(fragment); while (lineNumbersShown > newNumLines) { @@ -5156,8 +5225,8 @@ function Ace2Inner(){ } } } - - + + // Init documentAttributeManager documentAttributeManager = new AttributeManager(rep, performDocumentApplyChangeset); editorInfo.ace_performDocumentApplyAttributesToRange = function () { @@ -5203,13 +5272,13 @@ function Ace2Inner(){ bindTheEventHandlers(); }); - + hooks.callAll('aceInitialized', { editorInfo: editorInfo, rep: rep, documentAttributeManager: documentAttributeManager }); - + scheduler.setTimeout(function() { parent.readyFunc(); // defined in code that sets up the inner iframe diff --git a/src/static/js/admin/plugins.js b/src/static/js/admin/plugins.js index a973875ce..885c028d3 100644 --- a/src/static/js/admin/plugins.js +++ b/src/static/js/admin/plugins.js @@ -12,176 +12,270 @@ $(document).ready(function () { //connect socket = io.connect(url, {resource : resource}).of("/pluginfw/installer"); - $('.search-results').data('query', { - pattern: '', - offset: 0, - limit: 12, - }); - - var doUpdate = false; - - var search = function () { - socket.emit("search", $('.search-results').data('query')); - tasks++; + function search(searchTerm, limit) { + if(search.searchTerm != searchTerm) { + search.offset = 0 + search.results = [] + search.end = false + } + limit = limit? limit : search.limit + search.searchTerm = searchTerm; + socket.emit("search", {searchTerm: searchTerm, offset:search.offset, limit: limit, sortBy: search.sortBy, sortDir: search.sortDir}); + search.offset += limit; + + $('#search-progress').show() + search.messages.show('fetching') + storeScrollPosition() + search.searching = true + } + search.searching = false; + search.offset = 0; + search.limit = 25; + search.results = []; + search.sortBy = 'name'; + search.sortDir = /*DESC?*/true; + search.end = true;// have we received all results already? + search.messages = { + show: function(msg) { + //$('.search-results .messages').show() + $('.search-results .messages .'+msg+'').show() + $('.search-results .messages .'+msg+' *').show() + }, + hide: function(msg) { + //$('.search-results .messages').hide() + $('.search-results .messages .'+msg+'').hide() + $('.search-results .messages .'+msg+' *').hide() + } } - function updateHandlers() { - $("form").submit(function(){ - var query = $('.search-results').data('query'); - query.pattern = $("#search-query").val(); - query.offset = 0; - search(); - return false; - }); - - $("#search-query").unbind('keyup').keyup(function () { - var query = $('.search-results').data('query'); - query.pattern = $("#search-query").val(); - query.offset = 0; - search(); - }); - - $(".do-install, .do-update").unbind('click').click(function (e) { - var row = $(e.target).closest("tr"); - doUpdate = true; - socket.emit("install", row.find(".name").text()); - tasks++; - }); - - $(".do-uninstall").unbind('click').click(function (e) { - var row = $(e.target).closest("tr"); - doUpdate = true; - socket.emit("uninstall", row.find(".name").text()); - tasks++; - }); - - $(".do-prev-page").unbind('click').click(function (e) { - var query = $('.search-results').data('query'); - query.offset -= query.limit; - if (query.offset < 0) { - query.offset = 0; + var installed = { + progress: { + show: function(plugin, msg) { + $('.installed-results .'+plugin+' .progress').show() + $('.installed-results .'+plugin+' .progress .message').text(msg) + if($(window).scrollTop() > $('.'+plugin).offset().top)$(window).scrollTop($('.'+plugin).offset().top-100) + }, + hide: function(plugin) { + $('.installed-results .'+plugin+' .progress').hide() + $('.installed-results .'+plugin+' .progress .message').text('') } - search(); - }); - $(".do-next-page").unbind('click').click(function (e) { - var query = $('.search-results').data('query'); - var total = $('.search-results').data('total'); - if (query.offset + query.limit < total) { - query.offset += query.limit; + }, + messages: { + show: function(msg) { + $('.installed-results .messages').show() + $('.installed-results .messages .'+msg+'').show() + }, + hide: function(msg) { + $('.installed-results .messages').hide() + $('.installed-results .messages .'+msg+'').hide() } - search(); - }); + }, + list: [] } - updateHandlers(); - - var tasks = 0; - socket.on('progress', function (data) { - $("#progress").show(); - $('#progress').data('progress', data.progress); - - var message = "Unknown status"; - if (data.message) { - message = data.message.toString(); - } - if (data.error) { - data.progress = 1; - } - - $("#progress .message").html(message); - - if (data.progress >= 1) { - tasks--; - if (tasks <= 0) { - // Hide the activity indicator once all tasks are done - $("#progress").hide(); - tasks = 0; - } - - if (data.error) { - alert('An error occurred: '+data.error+' -- the server log might know more...'); - }else { - if (doUpdate) { - doUpdate = false; - socket.emit("load"); - tasks++; - } - } - } - }); - - socket.on('search-result', function (data) { - var widget=$(".search-results"); - - widget.data('query', data.query); - widget.data('total', data.total); - - widget.find('.offset').html(data.query.offset); - if (data.query.offset + data.query.limit > data.total){ - widget.find('.limit').html(data.total); - }else{ - widget.find('.limit').html(data.query.offset + data.query.limit); - } - widget.find('.total').html(data.total); - - widget.find(".results *").remove(); - for (plugin_name in data.results) { - var plugin = data.results[plugin_name]; - var row = widget.find(".template tr").clone(); + function displayPluginList(plugins, container, template) { + plugins.forEach(function(plugin) { + var row = template.clone(); for (attr in plugin) { if(attr == "name"){ // Hack to rewrite URLS into name - row.find(".name").html(""+plugin[attr]+""); + row.find(".name").html(""+plugin['name'].substr(3)+""); // remove 'ep_' }else{ row.find("." + attr).html(plugin[attr]); } } - row.find(".version").html( data.results[plugin_name]['dist-tags'].latest ); - - widget.find(".results").append(row); - } - + row.find(".version").html( plugin.version ); + row.addClass(plugin.name) + row.data('plugin', plugin.name) + container.append(row); + }) updateHandlers(); + } + + function sortPluginList(plugins, property, /*ASC?*/dir) { + return plugins.sort(function(a, b) { + if (a[property] < b[property]) + return dir? -1 : 1; + if (a[property] > b[property]) + return dir? 1 : -1; + // a must be equal to b + return 0; + }) + } + + // Infinite scroll + var scrollPosition + function storeScrollPosition() { + scrollPosition = $(window).scrollTop() + } + function restoreScrollPosition() { + setTimeout(function() { + $(window).scrollTop(scrollPosition) + }, 0) + } + + $(window).scroll(checkInfiniteScroll) + function checkInfiniteScroll() { + if(search.end || search.searching) return;// don't keep requesting if there are no more results + setTimeout(function() { + try{ + var top = $('.results>tr:last').offset().top + if($(window).scrollTop()+$(window).height() > top) search(search.searchTerm) + }catch(e){} + }, 1) + } + + function updateHandlers() { + // Search + $("#search-query").unbind('keyup').keyup(function () { + search($("#search-query").val()); + }); + + // update & install + $(".do-install, .do-update").unbind('click').click(function (e) { + var $row = $(e.target).closest("tr") + , plugin = $row.data('plugin'); + if($(this).hasClass('do-install')) { + $row.remove().appendTo('#installed-plugins') + installed.progress.show(plugin, 'Installing') + }else{ + installed.progress.show(plugin, 'Updating') + } + socket.emit("install", plugin); + installed.messages.hide("nothing-installed") + }); + + // uninstall + $(".do-uninstall").unbind('click').click(function (e) { + var $row = $(e.target).closest("tr") + , pluginName = $row.data('plugin'); + socket.emit("uninstall", pluginName); + installed.progress.show(pluginName, 'Uninstalling') + installed.list = installed.list.filter(function(plugin) { + return plugin.name != pluginName + }) + }); + + // Sort + $('.sort.up').unbind('click').click(function() { + search.sortBy = $(this).text().toLowerCase(); + search.sortDir = false; + search.offset = 0; + search(search.searchTerm, search.results.length); + search.results = []; + }) + $('.sort.down, .sort.none').unbind('click').click(function() { + search.sortBy = $(this).text().toLowerCase(); + search.sortDir = true; + search.offset = 0; + search(search.searchTerm, search.results.length); + search.results = []; + }) + } + + socket.on('results:search', function (data) { + if(!data.results.length) search.end = true; + search.messages.hide('nothing-found') + search.messages.hide('fetching') + $("#search-query").removeAttr('disabled') + + console.log('got search results', data) + + // add to results + search.results = search.results.concat(data.results); + + // Update sorting head + $('.sort') + .removeClass('up down') + .addClass('none'); + $('.search-results thead th[data-label='+data.query.sortBy+']') + .removeClass('none') + .addClass(data.query.sortDir? 'up' : 'down'); + + // re-render search results + var searchWidget = $(".search-results"); + searchWidget.find(".results *").remove(); + if(search.results.length > 0) { + displayPluginList(search.results, searchWidget.find(".results"), searchWidget.find(".template tr")) + }else { + search.messages.show('nothing-found') + } + search.messages.hide('fetching') + $('#search-progress').hide() + restoreScrollPosition() + checkInfiniteScroll() + search.searching = false }); - socket.on('installed-results', function (data) { - $("#installed-plugins *").remove(); + socket.on('results:installed', function (data) { + installed.messages.hide("fetching") + installed.messages.hide("nothing-installed") - for (plugin_name in data.results) { - if (plugin_name == "ep_etherpad-lite") continue; // Hack... - var plugin = data.results[plugin_name]; - var row = $("#installed-plugin-template").clone(); + installed.list = data.installed + sortPluginList(installed.list, 'name', /*ASC?*/true); - for (attr in plugin.package) { - if(attr == "name"){ // Hack to rewrite URLS into name - row.find(".name").html(""+plugin.package[attr]+""); - }else{ - row.find("." + attr).html(plugin.package[attr]); - } - } - $("#installed-plugins").append(row); + // filter out epl + installed.list = installed.list.filter(function(plugin) { + return plugin.name != 'ep_etherpad-lite' + }) + + // remove all installed plugins (leave plugins that are still being installed) + installed.list.forEach(function(plugin) { + $('#installed-plugins .'+plugin.name).remove() + }) + + if(installed.list.length > 0) { + displayPluginList(installed.list, $("#installed-plugins"), $("#installed-plugin-template")); + socket.emit('checkUpdates'); + }else { + installed.messages.show("nothing-installed") } - updateHandlers(); - - socket.emit('checkUpdates'); - tasks++; }); - socket.on('updatable', function(data) { - $('#installed-plugins>tr').each(function(i,tr) { - var pluginName = $(tr).find('.name').text() - - if (data.updatable.indexOf(pluginName) >= 0) { - var actions = $(tr).find('.actions') - actions.append('') - actions.css('width', 200) - } + socket.on('results:updatable', function(data) { + data.updatable.forEach(function(pluginName) { + var $row = $('#installed-plugins > tr.'+pluginName) + , actions = $row.find('.actions') + actions.append('') }) updateHandlers(); }) - socket.emit("load"); - tasks++; - - search(); + socket.on('finished:install', function(data) { + if(data.error) { + alert('An error occured while installing '+data.plugin+' \n'+data.error) + $('#installed-plugins .'+data.plugin).remove() + } + + socket.emit("getInstalled"); + + // update search results + search.offset = 0; + search(search.searchTerm, search.results.length); + search.results = []; + }) + + socket.on('finished:uninstall', function(data) { + if(data.error) alert('An error occured while uninstalling the '+data.plugin+' \n'+data.error) + + // remove plugin from installed list + $('#installed-plugins .'+data.plugin).remove() + + socket.emit("getInstalled"); + + // update search results + search.offset = 0; + search(search.searchTerm, search.results.length); + search.results = []; + }) + + // init + updateHandlers(); + socket.emit("getInstalled"); + search(''); + + // check for updates every 5mins + setInterval(function() { + socket.emit('checkUpdates'); + }, 1000*60*5) }); diff --git a/src/static/js/admin/settings.js b/src/static/js/admin/settings.js index ebe4a25a9..fb3f2e973 100644 --- a/src/static/js/admin/settings.js +++ b/src/static/js/admin/settings.js @@ -55,6 +55,8 @@ $(document).ready(function () { function isJSONClean(data){ var cleanSettings = JSON.minify(data); + // this is a bit naive. In theory some key/value might contain the sequences ',]' or ',}' + cleanSettings = cleanSettings.replace(",]","]").replace(",}","}"); try{ var response = jQuery.parseJSON(cleanSettings); } diff --git a/src/static/js/broadcast.js b/src/static/js/broadcast.js index 6bd135bd2..d4bda1110 100644 --- a/src/static/js/broadcast.js +++ b/src/static/js/broadcast.js @@ -77,7 +77,6 @@ function loadBroadcastJS(socket, sendSocketMsg, fireWhenAllScriptsAreLoaded, Bro } - var socketId; //var socket; var channelState = "DISCONNECTED"; diff --git a/src/static/js/broadcast_slider.js b/src/static/js/broadcast_slider.js index 9427c1914..8179b7b5f 100644 --- a/src/static/js/broadcast_slider.js +++ b/src/static/js/broadcast_slider.js @@ -198,11 +198,7 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) }); if (numAnonymous > 0) { - var anonymousAuthorString; - if(numAnonymous == 1) - anonymousAuthorString = html10n.get("timeslider.unnamedauthor", { num: numAnonymous }); - else - anonymousAuthorString = html10n.get("timeslider.unnamedauthors", { num: numAnonymous }); + var anonymousAuthorString = html10n.get("timeslider.unnamedauthors", { num: numAnonymous }); if (numNamed !== 0){ authorsList.append(' + ' + anonymousAuthorString); @@ -465,10 +461,10 @@ function loadBroadcastSliderJS(fireWhenAllScriptsAreLoaded) var startPos = clientVars.collab_client_vars.rev; if(window.location.hash.length > 1) { - var hashRev = Number(window.location.hash.substr(1)); - if(!isNaN(hashRev)) - { - // this is necessary because of the socket.io-event which loads the changesets + var hashRev = Number(window.location.hash.substr(1)); + if(!isNaN(hashRev)) + { + // this is necessary because of the socket.io-event which loads the changesets setTimeout(function() { setSliderPosition(hashRev); }, 1); } } diff --git a/src/static/js/changesettracker.js b/src/static/js/changesettracker.js index 58ef21cb5..f3efc4074 100644 --- a/src/static/js/changesettracker.js +++ b/src/static/js/changesettracker.js @@ -57,6 +57,7 @@ function makeChangesetTracker(scheduler, apool, aceCallbacksProvider) { changeCallback(); } + catch(pseudoError) {} finally { changeCallbackTimeout = null; @@ -161,6 +162,55 @@ function makeChangesetTracker(scheduler, apool, aceCallbacksProvider) } else { + + // add forEach function to Array.prototype for IE8 + if (!('forEach' in Array.prototype)) { + Array.prototype.forEach= function(action, that /*opt*/) { + for (var i= 0, n= this.length; i" + authorName + ":" + timeStr + " " + text + "

"; - if(isHistoryAdd) - $(html).insertAfter('#chatloadmessagesbutton'); - else - $("#chattext").append(html); - - //should we increment the counter?? - if(increment && !isHistoryAdd) - { - var count = Number($("#chatcounter").text()); - count++; - - // is the users focus already in the chatbox? - var alreadyFocused = $("#chatinput").is(":focus"); - - // does the user already have the chatbox open? - var chatOpen = $("#chatbox").is(":visible"); + // is the users focus already in the chatbox? + var alreadyFocused = $("#chatinput").is(":focus"); - $("#chatcounter").text(count); - // chat throb stuff -- Just make it throw for twice as long - if(wasMentioned && !alreadyFocused && !isHistoryAdd && !chatOpen) - { // If the user was mentioned show for twice as long and flash the browser window - $.gritter.add({ - // (string | mandatory) the heading of the notification - title: authorName, - // (string | mandatory) the text inside the notification - text: text, - // (bool | optional) if you want it to fade out on its own or just sit there - sticky: true, - // (int | optional) the time you want it to be alive for before fading out - time: '2000' - }); + // does the user already have the chatbox open? + var chatOpen = $("#chatbox").is(":visible"); - chatMentions++; - Tinycon.setBubble(chatMentions); - } + // does this message contain this user's name? (is the curretn user mentioned?) + var myName = $('#myusernameedit').val(); + var wasMentioned = (text.toLowerCase().indexOf(myName.toLowerCase()) !== -1 && myName != "undefined"); + + if(wasMentioned && !alreadyFocused && !isHistoryAdd && !chatOpen) + { // If the user was mentioned show for twice as long and flash the browser window + chatMentions++; + Tinycon.setBubble(chatMentions); + ctx.sticky = true; + } + + // Call chat message hook + hooks.aCallAll("chatNewMessage", ctx, function() { + + var html = "

" + authorName + ":" + ctx.timeStr + " " + ctx.text + "

"; + if(isHistoryAdd) + $(html).insertAfter('#chatloadmessagesbutton'); else + $("#chattext").append(html); + + //should we increment the counter?? + if(increment && !isHistoryAdd) { - if(!chatOpen){ + // Update the counter of unread messages + var count = Number($("#chatcounter").text()); + count++; + $("#chatcounter").text(count); + + if(!chatOpen) { $.gritter.add({ // (string | mandatory) the heading of the notification - title: authorName, + title: ctx.authorName, // (string | mandatory) the text inside the notification - text: text, - + text: ctx.text, // (bool | optional) if you want it to fade out on its own or just sit there - sticky: false, + sticky: ctx.sticky, // (int | optional) the time you want it to be alive for before fading out time: '4000' }); - Tinycon.setBubble(count); - } } - } - // Clear the chat mentions when the user clicks on the chat input box + }); + + // Clear the chat mentions when the user clicks on the chat input box $('#chatinput').click(function(){ chatMentions = 0; Tinycon.setBubble(0); @@ -186,12 +183,12 @@ var chat = (function() self.send(); } }); - - // initial messages are loaded in pad.js' _afterHandshake - - $("#chatcounter").text(0); - $("#chatloadmessagesbutton").click(function() - { + + // initial messages are loaded in pad.js' _afterHandshake + + $("#chatcounter").text(0); + $("#chatloadmessagesbutton").click(function() + { var start = Math.max(self.historyPointer - 20, 0); var end = self.historyPointer; @@ -203,7 +200,7 @@ var chat = (function() pad.collabClient.sendMessage({"type": "GET_CHAT_MESSAGES", "start": start, "end": end}); self.historyPointer = start; - }); + }); } } diff --git a/src/static/js/collab_client.js b/src/static/js/collab_client.js index 7df0b7114..146ec51b5 100644 --- a/src/static/js/collab_client.js +++ b/src/static/js/collab_client.js @@ -40,11 +40,9 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) var rev = serverVars.rev; var padId = serverVars.padId; - var globalPadId = serverVars.globalPadId; var state = "IDLE"; var stateMessage; - var stateMessageSocketId; var channelState = "CONNECTING"; var appLevelDisconnectReason = null; @@ -52,12 +50,10 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) var initialStartConnectTime = 0; var userId = initialUserInfo.userId; - var socketId; //var socket; var userSet = {}; // userId -> userInfo userSet[userId] = initialUserInfo; - var reconnectTimes = []; var caughtErrors = []; var caughtErrorCatchers = []; var caughtErrorTimes = []; @@ -196,7 +192,6 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) changeset: userChangesData.changeset, apool: userChangesData.apool }; - stateMessageSocketId = socketId; sendMessage(stateMessage); sentMessage = true; callbacks.onInternalAction("commitPerformed"); @@ -209,17 +204,6 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) } } - function getStats() - { - var stats = {}; - - stats.screen = [$(window).width(), $(window).height(), window.screen.availWidth, window.screen.availHeight, window.screen.width, window.screen.height].join(','); - stats.ip = serverVars.clientIp; - stats.useragent = serverVars.clientAgent; - - return stats; - } - function setUpSocket() { hiccupCount = 0; @@ -278,8 +262,9 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) if (!getSocket()) return; if (!evt.data) return; var wrapper = evt; - if (wrapper.type != "COLLABROOM") return; + if (wrapper.type != "COLLABROOM" && wrapper.type != "CUSTOM") return; var msg = wrapper.data; + if (msg.type == "NEW_CHANGES") { var newRev = msg.newRev; @@ -294,8 +279,8 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) if (newRev != (oldRev + 1)) { - dmesg("bad message revision on NEW_CHANGES: " + newRev + " not " + (oldRev + 1)); - setChannelState("DISCONNECTED", "badmessage_newchanges"); + parent.parent.console.warn("bad message revision on NEW_CHANGES: " + newRev + " not " + (oldRev + 1)); + // setChannelState("DISCONNECTED", "badmessage_newchanges"); return; } msgQueue.push(msg); @@ -304,8 +289,8 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) if (newRev != (rev + 1)) { - dmesg("bad message revision on NEW_CHANGES: " + newRev + " not " + (rev + 1)); - setChannelState("DISCONNECTED", "badmessage_newchanges"); + parent.parent.console.warn("bad message revision on NEW_CHANGES: " + newRev + " not " + (rev + 1)); + // setChannelState("DISCONNECTED", "badmessage_newchanges"); return; } rev = newRev; @@ -318,8 +303,8 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) { if (newRev != (msgQueue[msgQueue.length - 1].newRev + 1)) { - dmesg("bad message revision on ACCEPT_COMMIT: " + newRev + " not " + (msgQueue[msgQueue.length - 1][0] + 1)); - setChannelState("DISCONNECTED", "badmessage_acceptcommit"); + parent.parent.console.warn("bad message revision on ACCEPT_COMMIT: " + newRev + " not " + (msgQueue[msgQueue.length - 1][0] + 1)); + // setChannelState("DISCONNECTED", "badmessage_acceptcommit"); return; } msgQueue.push(msg); @@ -328,8 +313,8 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) if (newRev != (rev + 1)) { - dmesg("bad message revision on ACCEPT_COMMIT: " + newRev + " not " + (rev + 1)); - setChannelState("DISCONNECTED", "badmessage_acceptcommit"); + parent.parent.console.warn("bad message revision on ACCEPT_COMMIT: " + newRev + " not " + (rev + 1)); + // setChannelState("DISCONNECTED", "badmessage_acceptcommit"); return; } rev = newRev; @@ -390,6 +375,7 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) callbacks.onUserLeave(userInfo); } } + else if (msg.type == "DISCONNECT_REASON") { appLevelDisconnectReason = msg.reason; @@ -503,16 +489,6 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) } } - function keys(obj) - { - var array = []; - $.each(obj, function(k, v) - { - array.push(k); - }); - return array; - } - function valuesArray(obj) { var array = []; @@ -591,7 +567,6 @@ function getCollabClient(ace2editor, serverVars, initialUserInfo, options, _pad) { obj.committedChangeset = stateMessage.changeset; obj.committedChangesetAPool = stateMessage.apool; - obj.committedChangesetSocketId = stateMessageSocketId; editor.applyPreparedChangesetToBase(); } var userChangesData = editor.prepareUserChangeset(); diff --git a/src/static/js/contentcollector.js b/src/static/js/contentcollector.js index 645b7fce4..ee0a1c27a 100644 --- a/src/static/js/contentcollector.js +++ b/src/static/js/contentcollector.js @@ -311,7 +311,6 @@ function makeContentCollector(collectStyles, browser, apool, domInterface, class ['insertorder', 'first'] ].concat( _.map(state.lineAttributes,function(value,key){ - if (typeof(window)!= 'undefined' && window.console) console.log([key, value]) return [key, value]; }) ); @@ -399,7 +398,7 @@ function makeContentCollector(collectStyles, browser, apool, domInterface, class if (endPoint && node == endPoint.node) { selEnd = _pointHere(0, state); - } + } } while (txt.length > 0) { @@ -468,7 +467,7 @@ function makeContentCollector(collectStyles, browser, apool, domInterface, class var startNewLine= (typeof(induceLineBreak)=='object'&&induceLineBreak.length==0)?true:induceLineBreak[0]; if(startNewLine){ cc.startNewLine(state); - } + } } else if (tname == "script" || tname == "style") { diff --git a/src/static/js/cssmanager.js b/src/static/js/cssmanager.js index 62f17496f..710cdbe56 100644 --- a/src/static/js/cssmanager.js +++ b/src/static/js/cssmanager.js @@ -1,5 +1,5 @@ /** - * This code is mostly from the old Etherpad. Please help us to comment this code. + * This code is mostly from the old Etherpad. Please help us to comment this code. * This helps other people to understand this code better and helps them to improve it. * TL;DR COMMENTS ON THIS FILE ARE HIGHLY APPRECIATED */ @@ -20,14 +20,32 @@ * limitations under the License. */ -function makeCSSManager(emptyStylesheetTitle, parentCss) +function makeCSSManager(emptyStylesheetTitle, doc) { + if (doc === true) + { + doc = 'parent'; + } else if (!doc) { + doc = 'inner'; + } function getSheetByTitle(title) { - if (parentCss) var allSheets = window.parent.parent.document.styleSheets; - else var allSheets = document.styleSheets; - + if (doc === 'parent') + { + win = window.parent.parent; + } + else if (doc === 'inner') { + win = window; + } + else if (doc === 'outer') { + win = window.parent; + } + else { + throw "Unknown dynamic style container"; + } + var allSheets = win.document.styleSheets; + for (var i = 0; i < allSheets.length; i++) { var s = allSheets[i]; @@ -38,8 +56,8 @@ function makeCSSManager(emptyStylesheetTitle, parentCss) } return null; } - - var browserSheet = getSheetByTitle(emptyStylesheetTitle, parentCss); + + var browserSheet = getSheetByTitle(emptyStylesheetTitle); function browserRules() { diff --git a/src/static/js/domline.js b/src/static/js/domline.js index 43b5f21a3..82dafb426 100644 --- a/src/static/js/domline.js +++ b/src/static/js/domline.js @@ -104,7 +104,6 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) if (listType) { listType = listType[1]; - start = start?'start="'+Security.escapeHTMLAttribute(start[1])+'"':''; if (listType) { if(listType.indexOf("number") < 0) @@ -114,7 +113,14 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) } else { - preHtml = '
  1. '; + if(start){ // is it a start of a list with more than one item in? + if(start[1] == 1){ // if its the first one at this level? + lineClass = lineClass + " " + "list-start-" + listType; // Add start class to DIV node + } + preHtml = '
    1. '; + }else{ + preHtml = '
      1. '; // Handles pasted contents into existing lists + } postHtml = '
      '; } } @@ -179,7 +185,7 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) { if (href) { - if(!~href.indexOf("http")) // if the url doesn't include http or https etc prefix it. + if(!~href.indexOf("://") && !~href.indexOf("mailto:")) // if the url doesn't include a protocol prefix, assume http { href = "http://"+href; } @@ -228,10 +234,10 @@ domline.createDomLine = function(nonEmpty, doesWrap, optBrowser, optDocument) result.node.innerHTML = curHTML; } if (lineClass !== null) result.node.className = lineClass; - - hooks.callAll("acePostWriteDomLineHTML", { - node: result.node - }); + + hooks.callAll("acePostWriteDomLineHTML", { + node: result.node + }); } result.prepareForAdd = writeHTML; result.finishUpdate = writeHTML; diff --git a/src/static/js/draggable.js b/src/static/js/draggable.js deleted file mode 100644 index 8d1975459..000000000 --- a/src/static/js/draggable.js +++ /dev/null @@ -1,197 +0,0 @@ -/** - * 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 - */ - -/** - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS-IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -function makeDraggable(jqueryNodes, eventHandler) -{ - jqueryNodes.each(function() - { - var node = $(this); - var state = {}; - var inDrag = false; - - function dragStart(evt) - { - if (inDrag) - { - return; - } - inDrag = true; - if (eventHandler('dragstart', evt, state) !== false) - { - $(document).bind('mousemove', dragUpdate); - $(document).bind('mouseup', dragEnd); - } - evt.preventDefault(); - return false; - } - - function dragUpdate(evt) - { - if (!inDrag) - { - return; - } - eventHandler('dragupdate', evt, state); - evt.preventDefault(); - return false; - } - - function dragEnd(evt) - { - if (!inDrag) - { - return; - } - inDrag = false; - try - { - eventHandler('dragend', evt, state); - } - finally - { - $(document).unbind('mousemove', dragUpdate); - $(document).unbind('mouseup', dragEnd); - evt.preventDefault(); - } - return false; - } - node.bind('mousedown', dragStart); - }); -} - -function makeResizableVPane(top, sep, bottom, minTop, minBottom, callback) -{ - if (minTop === undefined) minTop = 0; - if (minBottom === undefined) minBottom = 0; - - makeDraggable($(sep), function(eType, evt, state) - { - if (eType == 'dragstart') - { - state.startY = evt.pageY; - state.topHeight = $(top).height(); - state.bottomHeight = $(bottom).height(); - state.minTop = minTop; - state.maxTop = (state.topHeight + state.bottomHeight) - minBottom; - } - else if (eType == 'dragupdate') - { - var change = evt.pageY - state.startY; - - var topHeight = state.topHeight + change; - if (topHeight < state.minTop) - { - topHeight = state.minTop; - } - if (topHeight > state.maxTop) - { - topHeight = state.maxTop; - } - change = topHeight - state.topHeight; - - var bottomHeight = state.bottomHeight - change; - var sepHeight = $(sep).height(); - - var totalHeight = topHeight + sepHeight + bottomHeight; - topHeight = 100.0 * topHeight / totalHeight; - sepHeight = 100.0 * sepHeight / totalHeight; - bottomHeight = 100.0 * bottomHeight / totalHeight; - - $(top).css('bottom', 'auto'); - $(top).css('height', topHeight + "%"); - $(sep).css('top', topHeight + "%"); - $(bottom).css('top', (topHeight + sepHeight) + '%'); - $(bottom).css('height', 'auto'); - if (callback) callback(); - } - }); -} - -function makeResizableHPane(left, sep, right, minLeft, minRight, sepWidth, sepOffset, callback) -{ - if (minLeft === undefined) minLeft = 0; - if (minRight === undefined) minRight = 0; - - makeDraggable($(sep), function(eType, evt, state) - { - if (eType == 'dragstart') - { - state.startX = evt.pageX; - state.leftWidth = $(left).width(); - state.rightWidth = $(right).width(); - state.minLeft = minLeft; - state.maxLeft = (state.leftWidth + state.rightWidth) - minRight; - } - else if (eType == 'dragend' || eType == 'dragupdate') - { - var change = evt.pageX - state.startX; - - var leftWidth = state.leftWidth + change; - if (leftWidth < state.minLeft) - { - leftWidth = state.minLeft; - } - if (leftWidth > state.maxLeft) - { - leftWidth = state.maxLeft; - } - change = leftWidth - state.leftWidth; - - var rightWidth = state.rightWidth - change; - newSepWidth = sepWidth; - if (newSepWidth == undefined) newSepWidth = $(sep).width(); - newSepOffset = sepOffset; - if (newSepOffset == undefined) newSepOffset = 0; - - if (change == 0) - { - if (rightWidth != minRight || state.lastRightWidth == undefined) - { - state.lastRightWidth = rightWidth; - rightWidth = minRight; - } - else - { - rightWidth = state.lastRightWidth; - state.lastRightWidth = minRight; - } - change = state.rightWidth - rightWidth; - leftWidth = change + state.leftWidth; - } - - var totalWidth = leftWidth + newSepWidth + rightWidth; - leftWidth = 100.0 * leftWidth / totalWidth; - newSepWidth = 100.0 * newSepWidth / totalWidth; - newSepOffset = 100.0 * newSepOffset / totalWidth; - rightWidth = 100.0 * rightWidth / totalWidth; - - $(left).css('right', 'auto'); - $(left).css('width', leftWidth + "%"); - $(sep).css('left', (leftWidth + newSepOffset) + "%"); - $(right).css('left', (leftWidth + newSepWidth) + '%'); - $(right).css('width', 'auto'); - if (callback) callback(); - } - }); -} - -exports.makeDraggable = makeDraggable; diff --git a/src/static/js/farbtastic.js b/src/static/js/farbtastic.js index 0045703d6..114c4d727 100644 --- a/src/static/js/farbtastic.js +++ b/src/static/js/farbtastic.js @@ -2,7 +2,7 @@ (function ($) { var __debug = false; -var __factor = 0.5; +var __factor = 0.8; $.fn.farbtastic = function (options) { $.farbtastic(this, options); diff --git a/src/static/js/gritter.js b/src/static/js/gritter.js index c32cc758e..9778707ef 100644 --- a/src/static/js/gritter.js +++ b/src/static/js/gritter.js @@ -21,8 +21,6 @@ $.gritter.options = { position: '', class_name: '', // could be set to 'gritter-light' to use white notifications - fade_in_speed: 'medium', // how fast notifications fade in - fade_out_speed: 1000, // how fast the notices fade out time: 6000 // hang on the screen for... } diff --git a/src/static/js/html10n.js b/src/static/js/html10n.js index e1c025c43..856729b52 100644 --- a/src/static/js/html10n.js +++ b/src/static/js/html10n.js @@ -23,30 +23,43 @@ window.html10n = (function(window, document, undefined) { // fix console - var console = window.console; + var console = window.console function interceptConsole(method){ - if (!console) return function() {}; + if (!console) return function() {} - var original = console[method]; + var original = console[method] // do sneaky stuff if (original.bind){ // Do this for normal browsers - return original.bind(console); + return original.bind(console) }else{ return function() { // Do this for IE - var message = Array.prototype.slice.apply(arguments).join(' '); - original(message); + var message = Array.prototype.slice.apply(arguments).join(' ') + original(message) } } } var consoleLog = interceptConsole('log') , consoleWarn = interceptConsole('warn') - , consoleError = interceptConsole('warn'); + , consoleError = interceptConsole('warn') - // fix Array.prototype.instanceOf in, guess what, IE! <3 + // fix Array#forEach in IE + // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach + if (!Array.prototype.forEach) { + Array.prototype.forEach = function(fn, scope) { + for(var i = 0, len = this.length; i < len; ++i) { + if (i in this) { + fn.call(scope, this[i], i, this); + } + } + }; + } + + // fix Array#indexOf in, guess what, IE! <3 + // taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf if (!Array.prototype.indexOf) { Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) { "use strict"; @@ -84,23 +97,23 @@ window.html10n = (function(window, document, undefined) { * MicroEvent - to make any js object an event emitter (server or browser) */ - var MicroEvent = function(){} - MicroEvent.prototype = { - bind : function(event, fct){ + var MicroEvent = function(){} + MicroEvent.prototype = { + bind: function(event, fct){ this._events = this._events || {}; - this._events[event] = this._events[event] || []; + this._events[event] = this._events[event] || []; this._events[event].push(fct); }, - unbind : function(event, fct){ + unbind: function(event, fct){ this._events = this._events || {}; - if( event in this._events === false ) return; + if( event in this._events === false ) return; this._events[event].splice(this._events[event].indexOf(fct), 1); }, - trigger : function(event /* , args... */){ + trigger: function(event /* , args... */){ this._events = this._events || {}; - if( event in this._events === false ) return; + if( event in this._events === false ) return; for(var i = 0; i < this._events[event].length; i++){ - this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1)); + this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1)) } } }; @@ -108,8 +121,8 @@ window.html10n = (function(window, document, undefined) { * mixin will delegate all MicroEvent.js function in the destination object * @param {Object} the object which will support MicroEvent */ - MicroEvent.mixin = function(destObject){ - var props = ['bind', 'unbind', 'trigger']; + MicroEvent.mixin = function(destObject){ + var props = ['bind', 'unbind', 'trigger']; if(!destObject) return; for(var i = 0; i < props.length; i ++){ destObject[props[i]] = MicroEvent.prototype[props[i]]; @@ -122,50 +135,50 @@ window.html10n = (function(window, document, undefined) { * and caching all necessary resources */ function Loader(resources) { - this.resources = resources; - this.cache = {}; // file => contents - this.langs = {}; // lang => strings + this.resources = resources + this.cache = {} // file => contents + this.langs = {} // lang => strings } Loader.prototype.load = function(lang, cb) { - if(this.langs[lang]) return cb(); + if(this.langs[lang]) return cb() if (this.resources.length > 0) { var reqs = 0; for (var i=0, n=this.resources.length; i < n; i++) { this.fetch(this.resources[i], lang, function(e) { reqs++; - if(e) return setTimeout(function(){ throw e }, 0); + if(e) consoleWarn(e) if (reqs < n) return;// Call back once all reqs are completed - cb && cb(); + cb && cb() }) } } } Loader.prototype.fetch = function(href, lang, cb) { - var that = this; + 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); + var xhr = new XMLHttpRequest() + xhr.open('GET', href, /*async: */true) if (xhr.overrideMimeType) { xhr.overrideMimeType('application/json; charset=utf-8'); } xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status == 200 || xhr.status === 0) { - var data = JSON.parse(xhr.responseText); - that.cache[href] = data; + var data = JSON.parse(xhr.responseText) + that.cache[href] = data // Pass on the contents for parsing - that.parse(lang, href, data, cb); + that.parse(lang, href, data, cb) } else { - cb(new Error('Failed to load '+href)); + cb(new Error('Failed to load '+href)) } } }; @@ -174,39 +187,38 @@ window.html10n = (function(window, document, undefined) { Loader.prototype.parse = function(lang, currHref, data, cb) { if ('object' != typeof data) { - cb(new Error('A file couldn\'t be parsed as json.')); - return; + cb(new Error('A file couldn\'t be parsed as json.')) + return } - - if (!data[lang]) lang = lang.substr(0, lang.indexOf('-') == -1? lang.length : lang.indexOf('-')); + if (!data[lang]) { - cb(new Error('Couldn\'t find translations for '+lang)); - return; + cb(new Error('Couldn\'t find translations for '+lang)) + return } if ('string' == typeof data[lang]) { // Import rule // absolute path - var importUrl = data[lang]; + var importUrl = data[lang] // relative path if(data[lang].indexOf("http") != 0 && data[lang].indexOf("/") != 0) { - importUrl = currHref+"/../"+data[lang]; + importUrl = currHref+"/../"+data[lang] } - this.fetch(importUrl, lang, cb); - return; + this.fetch(importUrl, lang, cb) + return } if ('object' != typeof data[lang]) { - cb(new Error('Translations should be specified as JSON objects!')); - return; + cb(new Error('Translations should be specified as JSON objects!')) + return } - this.langs[lang] = data[lang]; + this.langs[lang] = data[lang] // TODO: Also store accompanying langs - cb(); + cb() } @@ -216,11 +228,11 @@ window.html10n = (function(window, document, undefined) { var html10n = { language : null } - MicroEvent.mixin(html10n); + MicroEvent.mixin(html10n) - html10n.macros = {}; + html10n.macros = {} - html10n.rtl = ["ar","dv","fa","ha","he","ks","ku","ps","ur","yi"]; + html10n.rtl = ["ar","dv","fa","ha","he","ks","ku","ps","ur","yi"] /** * Get rules for plural forms (shared with JetPack), see: @@ -635,25 +647,26 @@ window.html10n = (function(window, document, undefined) { /** * pre-defined 'plural' macro */ - html10n.macros.plural = function(translations, key, str, param) { - var n = parseFloat(param); + html10n.macros.plural = function(key, param, opts) { + var str + , n = parseFloat(param); if (isNaN(n)) - return str; + return; // initialize _pluralRules if (!this._pluralRules) this._pluralRules = getPluralRules(html10n.language); - var index = '[' + this._pluralRules(n) + ']'; + var index = this._pluralRules(n); // try to find a [zero|one|two] key if it's defined - if (n === 0 && (key + '[zero]') in translations) { - str = translations[key + '[zero]']; - } else if (n == 1 && (key + '[one]') in translations) { - str = translations[key + '[one]']; - } else if (n == 2 && (key + '[two]') in translations) { - str = translations[key + '[two]']; - } else if ((key + index) in translations) { - str = translations[key + index][prop]; + if (n === 0 && ('zero') in opts) { + str = opts['zero']; + } else if (n == 1 && ('one') in opts) { + str = opts['one']; + } else if (n == 2 && ('two') in opts) { + str = opts['two']; + } else if (index in opts) { + str = opts[index]; } return str; @@ -664,14 +677,22 @@ window.html10n = (function(window, document, undefined) { * @param langs An array of lang codes defining fallbacks */ html10n.localize = function(langs) { - var that = this; + var that = this // if only one string => create an array - if ('string' == typeof langs) langs = [langs]; - + if ('string' == typeof langs) langs = [langs] + + // Expand two-part locale specs + var i=0 + langs.forEach(function(lang) { + if(!lang) return + langs[i++] = lang + if(~lang.indexOf('-')) langs[i++] = lang.substr(0, lang.indexOf('-')) + }) + this.build(langs, function(er, translations) { - html10n.translations = translations; - html10n.translateElement(translations); - that.trigger('localized'); + html10n.translations = translations + html10n.translateElement(translations) + that.trigger('localized') }) } @@ -682,132 +703,148 @@ window.html10n = (function(window, document, undefined) { * @param element A DOM element, if omitted, the document element will be used */ html10n.translateElement = function(translations, element) { - element = element || document.documentElement; + element = element || document.documentElement var children = element? getTranslatableChildren(element) : document.childNodes; for (var i=0, n=children.length; i < n; i++) { - this.translateNode(translations, children[i]); + this.translateNode(translations, children[i]) } // translate element itself if necessary - this.translateNode(translations, element); + this.translateNode(translations, element) } function asyncForEach(list, iterator, cb) { var i = 0 - , n = list.length; + , n = list.length iterator(list[i], i, function each(err) { - if(err) consoleLog(err); - i++; + if(err) consoleLog(err) + i++ if (i < n) return iterator(list[i],i, each); - cb(); + cb() }) } function getTranslatableChildren(element) { if(!document.querySelectorAll) { - if (!element) return []; + if (!element) return [] var nodes = element.getElementsByTagName('*') - , l10nElements = []; + , l10nElements = [] for (var i=0, n=nodes.length; i < n; i++) { if (nodes[i].getAttribute('data-l10n-id')) l10nElements.push(nodes[i]); } - return l10nElements; + return l10nElements } - return element.querySelectorAll('*[data-l10n-id]'); + return element.querySelectorAll('*[data-l10n-id]') } html10n.get = function(id, args) { - var translations = html10n.translations; - if(!translations) return consoleWarn('No translations available (yet)'); - if(!translations[id]) return consoleWarn('Could not find string '+id); - - // apply args - var str = substArguments(translations[id], args); + var translations = html10n.translations + if(!translations) return consoleWarn('No translations available (yet)') + if(!translations[id]) return consoleWarn('Could not find string '+id) // apply macros - return substMacros(id, str, args); + var str = translations[id] - // 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 + 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 - var arg = match[1] - , sub = ''; - if (arg in args) { - sub = args[arg]; - } else if (arg in translations) { - sub = translations[arg]; - } else { - consoleWarn('Could not find argument {{' + arg + '}}'); - return str; - } - - str = str.substring(0, match.index) + sub + str.substr(match.index + match[0].length); + var arg = match[1] + , sub = '' + if (arg in args) { + sub = args[arg] + } else if (arg in translations) { + sub = translations[arg] + } else { + consoleWarn('Could not find argument {{' + arg + '}}') + return str } - - return str; + + str = str.substring(0, match.index) + sub + str.substr(match.index + match[0].length) } - // replace {[macros]} with their values - function substMacros(key, str, args) { - var regex = /\{\[\s*([a-zA-Z]+):([a-zA-Z]+)\s*\]\}/ - , match = regex.exec(str); - if (!match || !match.length) - return str; - + 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 - var macroName = reMatch[1] - , paramName = reMatch[2]; + var macroName = match[1] + , paramName = match[2] + , optv = match[3] + , opts = {} - if (!(macroName in gMacros)) return str; + if (!(macroName in html10n.macros)) continue - var param; + if(optv) { + optv.match(/(?=\s*)([a-zA-Z]+)\: ?([ a-zA-Z{}]+)(?=,?)/g).forEach(function(arg) { + var parts = arg.split(':') + , name = parts[0] + , value = parts[1].trim() + opts[name] = value + }) + } + + var param if (args && paramName in args) { - param = args[paramName]; - } else if (paramName in translations) { - param = translations[paramName]; + param = args[paramName] + } else if (paramName in html10n.translations) { + param = translations[paramName] } - // there's no macro parser yet: it has to be defined in gMacros - var macro = html10n.macros[macroName]; - str = macro(translations, key, str, param); - return str; + // there's no macro parser: it has to be defined in html10n.macros + 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) */ html10n.translateNode = function(translations, node) { - var str = {}; + var str = {} // get id - str.id = node.getAttribute('data-l10n-id'); - if (!str.id) return; + str.id = node.getAttribute('data-l10n-id') + if (!str.id) return - if(!translations[str.id]) return consoleWarn('Couldn\'t find translation key '+str.id); + if(!translations[str.id]) return consoleWarn('Couldn\'t find translation key '+str.id) // get args if(window.JSON) { - str.args = JSON.parse(node.getAttribute('data-l10n-args')); + str.args = JSON.parse(node.getAttribute('data-l10n-args')) }else{ try{ - str.args = eval(node.getAttribute('data-l10n-args')); + str.args = eval(node.getAttribute('data-l10n-args')) }catch(e) { - consoleWarn('Couldn\'t parse args for '+str.id); + consoleWarn('Couldn\'t parse args for '+str.id) } } - str.str = html10n.get(str.id, str.args); + str.str = html10n.get(str.id, str.args) // get attribute name to apply str to var prop @@ -817,31 +854,31 @@ window.html10n = (function(window, document, undefined) { , "innerHTML": 1 , "alt": 1 , "textContent": 1 - }; + } if (index > 0 && str.id.substr(index + 1) in attrList) { // an attribute has been specified - prop = str.id.substr(index + 1); + prop = str.id.substr(index + 1) } else { // no attribute: assuming text content by default - prop = document.body.textContent ? 'textContent' : 'innerText'; + prop = document.body.textContent ? 'textContent' : 'innerText' } // Apply translation if (node.children.length === 0 || prop != 'textContent') { - node[prop] = str.str; + node[prop] = str.str } else { var children = node.childNodes, - found = false; + found = false for (var i=0, n=children.length; i < n; i++) { if (children[i].nodeType === 3 && /\S/.test(children[i].textContent)) { if (!found) { - children[i].nodeValue = str.str; - found = true; + children[i].nodeValue = str.str + found = true } else { - children[i].nodeValue = ''; + children[i].nodeValue = '' } } } if (!found) { - consoleWarn('Unexpected error: could not translate element content for key '+str.id, node); + consoleWarn('Unexpected error: could not translate element content for key '+str.id, node) } } } @@ -852,32 +889,32 @@ window.html10n = (function(window, document, undefined) { */ html10n.build = function(langs, cb) { var that = this - , build = {}; + , build = {} asyncForEach(langs, function (lang, i, next) { if(!lang) return next(); - that.loader.load(lang, next); + that.loader.load(lang, next) }, function() { - var lang; - langs.reverse(); + var lang + langs.reverse() // loop through priority array... for (var i=0, n=langs.length; i < n; i++) { - lang = langs[i]; + lang = langs[i] if(!lang || !(lang in that.loader.langs)) 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]; + 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; + that.language = lang } - cb(null, build); + cb(null, build) }) } @@ -893,8 +930,9 @@ window.html10n = (function(window, document, undefined) { * Returns the direction of the language returned be html10n#getLanguage */ html10n.getDirection = function() { - var langCode = this.language.indexOf('-') == -1? this.language : this.language.substr(0, this.language.indexOf('-')); - return html10n.rtl.indexOf(langCode) == -1? 'ltr' : 'rtl'; + if(!this.language) return + var langCode = this.language.indexOf('-') == -1? this.language : this.language.substr(0, this.language.indexOf('-')) + return html10n.rtl.indexOf(langCode) == -1? 'ltr' : 'rtl' } /** @@ -903,28 +941,28 @@ window.html10n = (function(window, document, undefined) { html10n.index = function () { // Find all s var links = document.getElementsByTagName('link') - , resources = []; + , resources = [] for (var i=0, n=links.length; i < n; i++) { if (links[i].type != 'application/l10n+json') continue; - resources.push(links[i].href); + resources.push(links[i].href) } - this.loader = new Loader(resources); - this.trigger('indexed'); + this.loader = new Loader(resources) + this.trigger('indexed') } if (document.addEventListener) // modern browsers and IE9+ document.addEventListener('DOMContentLoaded', function() { - html10n.index(); - }, false); + html10n.index() + }, false) else if (window.attachEvent) window.attachEvent('onload', function() { - html10n.index(); - }, false); + html10n.index() + }, false) // gettext-like shortcut if (window._ === undefined) window._ = html10n.get; - return html10n; -})(window, document); + return html10n +})(window, document) diff --git a/src/static/js/l10n.js b/src/static/js/l10n.js index a67a7c1a4..c79ea706d 100644 --- a/src/static/js/l10n.js +++ b/src/static/js/l10n.js @@ -1,8 +1,8 @@ (function(document) { // Set language for l10n - var language = document.cookie.match(/language=((\w{2,3})(-w+)?)/); + var language = document.cookie.match(/language=((\w{2,3})(-\w+)?)/); if(language) language = language[1]; - + html10n.bind('indexed', function() { html10n.localize([language, navigator.language, navigator.userLanguage, 'en']) }) diff --git a/src/static/js/linestylefilter.js b/src/static/js/linestylefilter.js index e6fbc2096..034822a46 100644 --- a/src/static/js/linestylefilter.js +++ b/src/static/js/linestylefilter.js @@ -146,7 +146,7 @@ linestylefilter.getLineStyleFilter = function(lineLength, aline, textAndClassFun return function(txt, cls) { - + var disableAuthColorForThisLine = hooks.callAll("disableAuthorColorsForThisLine", { linestylefilter: linestylefilter, text: txt, @@ -260,7 +260,7 @@ linestylefilter.getRegexpFilter = function(regExp, tag) linestylefilter.REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; linestylefilter.REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/\\?=&#!;()$]/.source + '|' + linestylefilter.REGEX_WORDCHAR.source + ')'); -linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g'); +linestylefilter.REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|nfs):\/\/|mailto:|www\.)/.source + linestylefilter.REGEX_URLCHAR.source + '*(?![:.,;])' + linestylefilter.REGEX_URLCHAR.source, 'g'); linestylefilter.getURLFilter = linestylefilter.getRegexpFilter( linestylefilter.REGEX_URL, 'url'); diff --git a/src/static/js/pad.js b/src/static/js/pad.js index 6e8b2ae01..cca2f3ebc 100644 --- a/src/static/js/pad.js +++ b/src/static/js/pad.js @@ -191,7 +191,7 @@ function handshake() createCookie("token", token, 60); } - var sessionID = readCookie("sessionID"); + var sessionID = decodeURIComponent(readCookie("sessionID")); var password = readCookie("password"); var msg = { @@ -242,7 +242,7 @@ function handshake() pad.collabClient.setChannelState("RECONNECTING"); - disconnectTimeout = setTimeout(disconnectEvent, 10000); + disconnectTimeout = setTimeout(disconnectEvent, 20000); } }); @@ -252,14 +252,22 @@ function handshake() socket.on('message', function(obj) { //the access was not granted, give the user a message - if(!receivedClientVars && obj.accessStatus) + if(obj.accessStatus) { - $('.passForm').submit(require(module.id).savePassword); + if(!receivedClientVars) + $('.passForm').submit(require(module.id).savePassword); if(obj.accessStatus == "deny") { $('#loading').hide(); $("#permissionDenied").show(); + + if(receivedClientVars) + { + // got kicked + $("#editorcontainer").hide(); + $("#editorloadingbox").show(); + } } else if(obj.accessStatus == "needPassword") { @@ -313,7 +321,7 @@ function handshake() if (settings.rtlIsTrue == true) { - pad.changeViewOption('rtl', true); + pad.changeViewOption('rtlIsTrue', true); } // If the Monospacefont value is set to true then change it to monospace. @@ -326,7 +334,7 @@ function handshake() { pad.notifyChangeName(settings.globalUserName); // Notifies the server pad.myUserInfo.name = settings.globalUserName; - $('#myusernameedit').attr({"value":settings.globalUserName}); // Updates the current users UI + $('#myusernameedit').val(settings.globalUserName); // Updates the current users UI } if (settings.globalUserColor !== false && colorutils.isCssHex(settings.globalUserColor)) { @@ -365,8 +373,7 @@ function handshake() $.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_in_speed: 'medium', // how fast notifications fade in (string or int) - fade_out_speed: 2000, // how fast the notices fade out + fade: false, // dont fade, too jerky on mobile time: 6000 // hang on the screen for... }); @@ -442,6 +449,7 @@ var pad = { //initialize the chat chat.init(this); + padcookie.init(); // initialize the cookies pad.initTime = +(new Date()); pad.padOptions = clientVars.initialOptions; @@ -455,7 +463,7 @@ var pad = { { try { - doc.execCommand("BackgroundImageCache", false, true); + document.execCommand("BackgroundImageCache", false, true); } catch (e) {} @@ -470,14 +478,6 @@ var pad = { userAgent: pad.getDisplayUserAgent() }; - if (clientVars.specialKey) - { - pad.myUserInfo.specialKey = clientVars.specialKey; - if (clientVars.specialKeyTranslation) - { - $("#specialkeyarea").html("mode: " + String(clientVars.specialKeyTranslation).toUpperCase()); - } - } padimpexp.init(this); padsavedrevs.init(this); @@ -524,7 +524,7 @@ var pad = { if(padcookie.getPref("showAuthorshipColors") == false){ pad.changeViewOption('showAuthorColors', false); } - hooks.aCallAll("postAceInit", {ace: padeditor.ace}); + hooks.aCallAll("postAceInit", {ace: padeditor.ace, pad: pad}); } }, dispose: function() @@ -663,8 +663,8 @@ var pad = { { alertBar.displayMessage(function(abar) { - abar.find("#servermsgdate").html(" (" + padutils.simpleDateTime(new Date) + ")"); - abar.find("#servermsgtext").html(m.text); + abar.find("#servermsgdate").text(" (" + padutils.simpleDateTime(new Date) + ")"); + abar.find("#servermsgtext").text(m.text); }); } if (m.js) diff --git a/src/static/js/pad_connectionstatus.js b/src/static/js/pad_connectionstatus.js index c592afbd4..76eedbc4d 100644 --- a/src/static/js/pad_connectionstatus.js +++ b/src/static/js/pad_connectionstatus.js @@ -21,7 +21,6 @@ */ var padmodals = require('./pad_modals').padmodals; -var padeditbar = require('./pad_editbar').padeditbar; var padconnectionstatus = (function() { @@ -43,9 +42,8 @@ var padconnectionstatus = (function() status = { what: 'connected' }; - padmodals.showModal('connected'); - padmodals.hideOverlay(500); + padmodals.hideOverlay(); }, reconnecting: function() { @@ -54,7 +52,7 @@ var padconnectionstatus = (function() }; padmodals.showModal('reconnecting'); - padmodals.showOverlay(500); + padmodals.showOverlay(); }, disconnected: function(msg) { @@ -66,14 +64,14 @@ var padconnectionstatus = (function() why: msg }; - var k = String(msg).toLowerCase(); // known reason why - if (!(k == 'userdup' || k == 'deleted' || k == 'looping' || k == 'slowcommit' || k == 'initsocketfail' || k == 'unauth')) + var k = String(msg); // known reason why + if (!(k == 'userdup' || k == 'deleted' || k == 'looping' || k == 'slowcommit' || k == 'initsocketfail' || k == 'unauth' || k == 'badChangeset' || k == 'corruptPad')) { k = 'disconnected'; } - + padmodals.showModal(k); - padmodals.showOverlay(500); + padmodals.showOverlay(); }, isFullyConnected: function() { diff --git a/src/static/js/pad_editbar.js b/src/static/js/pad_editbar.js index 91a07bf96..1b824031f 100644 --- a/src/static/js/pad_editbar.js +++ b/src/static/js/pad_editbar.js @@ -140,7 +140,7 @@ var padeditbar = (function() } else if (cmd == 'import_export') { - self.toggleDropDown("importexport"); + self.toggleDropDown("importexport"); } else if (cmd == 'savedRevision') { @@ -156,10 +156,7 @@ var padeditbar = (function() else if (cmd == 'insertorderedlist') ace.ace_doInsertOrderedList(); else if (cmd == 'indent') { - if (!ace.ace_doIndentOutdent(false)) - { - ace.ace_doInsertUnorderedList(); - } + ace.ace_doIndentOutdent(false); } else if (cmd == 'outdent') { diff --git a/src/static/js/pad_editor.js b/src/static/js/pad_editor.js index dd0cbbbb7..b73409ff3 100644 --- a/src/static/js/pad_editor.js +++ b/src/static/js/pad_editor.js @@ -62,20 +62,36 @@ var padeditor = (function() }, initViewOptions: function() { + // Line numbers padutils.bindCheckboxChange($("#options-linenoscheck"), function() { pad.changeViewOption('showLineNumbers', padutils.getCheckbox($("#options-linenoscheck"))); }); + + // Author colors padutils.bindCheckboxChange($("#options-colorscheck"), function() { padcookie.setPref('showAuthorshipColors', padutils.getCheckbox("#options-colorscheck")); pad.changeViewOption('showAuthorColors', padutils.getCheckbox("#options-colorscheck")); }); + + // Right to left + padutils.bindCheckboxChange($("#options-rtlcheck"), function() + { + pad.changeViewOption('rtlIsTrue', padutils.getCheckbox($("#options-rtlcheck"))) + }); + html10n.bind('localized', function() { + pad.changeViewOption('rtlIsTrue', ('rtl' == html10n.getDirection())); + padutils.setCheckbox($("#options-rtlcheck"), ('rtl' == html10n.getDirection())); + }) + + // font face $("#viewfontmenu").change(function() { pad.changeViewOption('useMonospaceFont', $("#viewfontmenu").val() == 'monospace'); }); + // Language html10n.bind('localized', function() { $("#languagemenu").val(html10n.getLanguage()); // translate the value of 'unnamed' and 'Enter your name' textboxes in the userlist @@ -104,12 +120,14 @@ var padeditor = (function() if (value == "false") return false; return defaultValue; } - self.ace.setProperty("rtlIsTrue", settings.rtlIsTrue); var v; - v = getOption('rtlIsTrue', false); + v = getOption('rtlIsTrue', ('rtl' == html10n.getDirection())); + // Override from parameters if true + if(settings.rtlIsTrue === true) v = true; self.ace.setProperty("rtlIsTrue", v); + padutils.setCheckbox($("#options-rtlcheck"), v); v = getOption('showLineNumbers', true); self.ace.setProperty("showslinenumbers", v); diff --git a/src/static/js/pad_modals.js b/src/static/js/pad_modals.js index 0292e048f..67b03662f 100644 --- a/src/static/js/pad_modals.js +++ b/src/static/js/pad_modals.js @@ -20,7 +20,6 @@ * limitations under the License. */ -var padutils = require('./pad_utils').padutils; var padeditbar = require('./pad_editbar').padeditbar; var padmodals = (function() @@ -39,23 +38,11 @@ var padmodals = (function() padeditbar.toggleDropDown("connectivity"); }); }, - showOverlay: function(duration) { - $("#overlay").show().css( - { - 'opacity': 0 - }).animate( - { - 'opacity': 1 - }, duration); + showOverlay: function() { + $("#overlay").show(); }, - hideOverlay: function(duration) { - $("#overlay").animate( - { - 'opacity': 0 - }, duration, function() - { - $("#modaloverlay").hide(); - }); + hideOverlay: function() { + $("#overlay").hide(); } }; return self; diff --git a/src/static/js/pad_userlist.js b/src/static/js/pad_userlist.js index 962595d2b..f54b3e540 100644 --- a/src/static/js/pad_userlist.js +++ b/src/static/js/pad_userlist.js @@ -116,12 +116,12 @@ var paduserlist = (function() nameHtml = ''; } - return ['
       
      ', '', nameHtml, '', '', padutils.escapeHtml(data.activity), ''].join(''); + return ['
       
      ', '', nameHtml, '', '', padutils.escapeHtml(data.activity), ''].join(''); } - function getRowHtml(id, innerHtml) + function getRowHtml(id, innerHtml, authorId) { - return '' + innerHtml + ''; + return '' + innerHtml + ''; } function rowNode(row) @@ -191,18 +191,20 @@ var paduserlist = (function() domId: domId, animationPower: animationPower }; + var authorId = data.id; + handleRowData(row); rowsPresent.splice(position, 0, row); var tr; if (animationPower == 0) { - tr = $(getRowHtml(domId, getUserRowHtml(getAnimationHeight(0), data))); + tr = $(getRowHtml(domId, getUserRowHtml(getAnimationHeight(0), data), authorId)); row.animationStep = 0; } else { rowsFadingIn.push(row); - tr = $(getRowHtml(domId, getEmptyRowHtml(getAnimationHeight(ANIMATION_START)))); + tr = $(getRowHtml(domId, getEmptyRowHtml(getAnimationHeight(ANIMATION_START)), authorId)); } handleRowNode(tr, data); if (position == 0) @@ -631,6 +633,9 @@ var paduserlist = (function() otherUsersInfo.splice(newExistingIndex, 1); otherUsersData.splice(newExistingIndex, 1); rowManager.removeRow(newExistingIndex); + hooks.callAll('userLeave', { + userInfo: info + }); updateInviteNotice(); } } diff --git a/src/static/js/pad_utils.js b/src/static/js/pad_utils.js index 82f7fcada..bab6aa432 100644 --- a/src/static/js/pad_utils.js +++ b/src/static/js/pad_utils.js @@ -176,7 +176,7 @@ var padutils = { // copied from ACE var _REGEX_WORDCHAR = /[\u0030-\u0039\u0041-\u005A\u0061-\u007A\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u9FFF\uF900-\uFDFF\uFE70-\uFEFE\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFDC]/; var _REGEX_URLCHAR = new RegExp('(' + /[-:@a-zA-Z0-9_.,~%+\/?=&#;()$]/.source + '|' + _REGEX_WORDCHAR.source + ')'); - var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|smb|afp|nfs|(x-)?man|gopher|txmt):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); + var _REGEX_URL = new RegExp(/(?:(?:https?|s?ftp|ftps|file|nfs):\/\/|mailto:)/.source + _REGEX_URLCHAR.source + '*(?![:.,;])' + _REGEX_URLCHAR.source, 'g'); // returns null if no URLs, or [[startIndex1, url1], [startIndex2, url2], ...] @@ -519,12 +519,12 @@ function setupGlobalExceptionHandler() { //show javascript errors to the user $("#editorloadingbox").css("padding", "10px"); $("#editorloadingbox").css("padding-top", "45px"); - $("#editorloadingbox").html("
      An error occured
      The error was reported with the following id: '" + errorId + "'

      Please send this error message to us:
      '" - + "ErrorId: " + errorId + "
      UserAgent: " + navigator.userAgent + "
      " + msg + " in " + url + " at line " + linenumber + "'
      "); + $("#editorloadingbox").html("
      An error occured
      The error was reported with the following id: '" + errorId + "'

      Please press and hold Ctrl and press F5 to reload this page, if the problem persists please send this error message to your webmaster:
      '" + + "ErrorId: " + errorId + "
      URL: " + window.location.href + "
      UserAgent: " + navigator.userAgent + "
      " + msg + " in " + url + " at line " + linenumber + "'
      "); } //send javascript errors to the server - var errObj = {errorInfo: JSON.stringify({errorId: errorId, msg: msg, url: url, linenumber: linenumber, userAgent: navigator.userAgent})}; + var errObj = {errorInfo: JSON.stringify({errorId: errorId, msg: msg, url: window.location.href, linenumber: linenumber, userAgent: navigator.userAgent})}; var loc = document.location; var url = loc.protocol + "//" + loc.hostname + ":" + loc.port + "/" + loc.pathname.substr(1, loc.pathname.indexOf("/p/")) + "jserror"; diff --git a/src/static/js/pluginfw/hooks.js b/src/static/js/pluginfw/hooks.js index d9a14d857..106e9ce68 100644 --- a/src/static/js/pluginfw/hooks.js +++ b/src/static/js/pluginfw/hooks.js @@ -61,7 +61,7 @@ exports.flatten = function (lst) { if (lst[i] != undefined && lst[i] != null) { for (var j = 0; j < lst[i].length; j++) { res.push(lst[i][j]); - } + } } } } @@ -70,10 +70,12 @@ exports.flatten = function (lst) { exports.callAll = function (hook_name, args) { if (!args) args = {}; - if (exports.plugins.hooks[hook_name] === undefined) return []; - return _.flatten(_.map(exports.plugins.hooks[hook_name], function (hook) { - return hookCallWrapper(hook, hook_name, args); - }), true); + if (exports.plugins){ + if (exports.plugins.hooks[hook_name] === undefined) return []; + return _.flatten(_.map(exports.plugins.hooks[hook_name], function (hook) { + return hookCallWrapper(hook, hook_name, args); + }), true); + } } exports.aCallAll = function (hook_name, args, cb) { diff --git a/src/static/js/pluginfw/installer.js b/src/static/js/pluginfw/installer.js index 15d879409..e56026167 100644 --- a/src/static/js/pluginfw/installer.js +++ b/src/static/js/pluginfw/installer.js @@ -1,118 +1,92 @@ var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins"); var hooks = require("ep_etherpad-lite/static/js/pluginfw/hooks"); var npm = require("npm"); -var RegClient = require("npm-registry-client") -var registry = new RegClient( -{ registry: "http://registry.npmjs.org" -, cache: npm.cache } -); - -var withNpm = function (npmfn, final, cb) { +var npmIsLoaded = false; +var withNpm = function (npmfn) { + if(npmIsLoaded) return npmfn(); npm.load({}, function (er) { - if (er) return cb({progress:1, error:er}); + if (er) return npmfn(er); + npmIsLoaded = true; npm.on("log", function (message) { - cb({progress: 0.5, message:message.msg + ": " + message.pref}); - }); - npmfn(function (er, data) { - if (er) { - console.error(er); - return cb({progress:1, error: er.message}); - } - if (!data) data = {}; - data.progress = 1; - data.message = "Done."; - cb(data); - final(); + console.log('npm: ',message) }); + npmfn(); }); } -// All these functions call their callback multiple times with -// {progress:[0,1], message:STRING, error:object}. They will call it -// with progress = 1 at least once, and at all times will either -// message or error be present, not both. It can be called multiple -// times for all values of propgress except for 1. +var tasks = 0 +function wrapTaskCb(cb) { + tasks++ + return function() { + cb && cb.apply(this, arguments); + tasks--; + if(tasks == 0) onAllTasksFinished(); + } +} +function onAllTasksFinished() { + hooks.aCallAll("restartServer", {}, function () {}); +} exports.uninstall = function(plugin_name, cb) { - withNpm( - function (cb) { - npm.commands.uninstall([plugin_name], function (er) { + cb = wrapTaskCb(cb); + withNpm(function (er) { + if (er) return cb && cb(er); + npm.commands.uninstall([plugin_name], function (er) { + if (er) return cb && cb(er); + hooks.aCallAll("pluginUninstall", {plugin_name: plugin_name}, function (er, data) { if (er) return cb(er); - hooks.aCallAll("pluginUninstall", {plugin_name: plugin_name}, function (er, data) { - if (er) return cb(er); - plugins.update(cb); - }); + plugins.update(cb); }); - }, - function () { - hooks.aCallAll("restartServer", {}, function () {}); - }, - cb - ); + }); + }); }; exports.install = function(plugin_name, cb) { - withNpm( - function (cb) { - npm.commands.install([plugin_name], function (er) { + cb = wrapTaskCb(cb) + withNpm(function (er) { + if (er) return cb && cb(er); + npm.commands.install([plugin_name], function (er) { + if (er) return cb && cb(er); + hooks.aCallAll("pluginInstall", {plugin_name: plugin_name}, function (er, data) { if (er) return cb(er); - hooks.aCallAll("pluginInstall", {plugin_name: plugin_name}, function (er, data) { - if (er) return cb(er); - plugins.update(cb); - }); + plugins.update(cb); }); - }, - function () { - hooks.aCallAll("restartServer", {}, function () {}); - }, - cb - ); + }); + }); }; -exports.searchCache = null; +exports.availablePlugins = null; +var cacheTimestamp = 0; -exports.search = function(query, cache, cb) { - withNpm( - function (cb) { - var getData = function (cb) { - if (cache && exports.searchCache) { - cb(null, exports.searchCache); - } else { - registry.get( - "/-/all", 600, false, true, - function (er, data) { - if (er) return cb(er); - exports.searchCache = data; - cb(er, data); - } - ); - } - } - getData( - function (er, data) { - if (er) return cb(er); - var res = {}; - var i = 0; - var pattern = query.pattern.toLowerCase(); - for (key in data) { // for every plugin in the data from npm - if ( key.indexOf(plugins.prefix) == 0 - && key.indexOf(pattern) != -1 - || key.indexOf(plugins.prefix) == 0 - && data[key].description.indexOf(pattern) != -1 - ) { // If the name contains ep_ and the search string is in the name or description - i++; - if (i > query.offset - && i <= query.offset + query.limit) { - res[key] = data[key]; - } - } - } - cb(null, {results:res, query: query, total:i}); - } - ); - }, - function () { }, - cb - ); +exports.getAvailablePlugins = function(maxCacheAge, cb) { + withNpm(function (er) { + if (er) return cb && cb(er); + if(exports.availablePlugins && maxCacheAge && Math.round(+new Date/1000)-cacheTimestamp <= maxCacheAge) { + return cb && cb(null, exports.availablePlugins) + } + npm.commands.search(['ep_'], /*silent?*/true, function(er, results) { + if(er) return cb && cb(er); + exports.availablePlugins = results; + cacheTimestamp = Math.round(+new Date/1000); + cb && cb(null, results) + }) + }); +}; + + +exports.search = function(searchTerm, maxCacheAge, cb) { + exports.getAvailablePlugins(maxCacheAge, function(er, results) { + if(er) return cb && cb(er); + var res = {}; + if (searchTerm) + searchTerm = searchTerm.toLowerCase(); + for (var pluginName in results) { // for every available plugin + if (pluginName.indexOf(plugins.prefix) != 0) continue; // TODO: Also search in keywords here! + + if(searchTerm && !~pluginName.toLowerCase().indexOf(searchTerm) && !~results[pluginName].description.toLowerCase().indexOf(searchTerm)) continue; + res[pluginName] = results[pluginName]; + } + cb && cb(null, res) + }) }; diff --git a/src/static/js/timeslider.js b/src/static/js/timeslider.js index 5203e57ba..fd22c69a3 100644 --- a/src/static/js/timeslider.js +++ b/src/static/js/timeslider.js @@ -28,9 +28,9 @@ JSON = require('./json2'); var createCookie = require('./pad_utils').createCookie; var readCookie = require('./pad_utils').readCookie; var randomString = require('./pad_utils').randomString; -var _ = require('./underscore'); +var hooks = require('./pluginfw/hooks'); -var socket, token, padId, export_links; +var token, padId, export_links; function init() { $(document).ready(function () @@ -106,13 +106,17 @@ function init() { window.location.reload(); }); + exports.socket = socket; // make the socket available + exports.BroadcastSlider = BroadcastSlider; // Make the slider available + + hooks.aCallAll("postTimesliderInit"); }); } //sends a message over the socket function sendSocketMsg(type, data) { - var sessionID = readCookie("sessionID"); + var sessionID = decodeURIComponent(readCookie("sessionID")); var password = readCookie("password"); var msg = { "component" : "pad", // FIXME: Remove this stupidity! @@ -129,7 +133,7 @@ function sendSocketMsg(type, data) var fireWhenAllScriptsAreLoaded = []; -var BroadcastSlider, changesetLoader; +var changesetLoader; function handleClientVars(message) { //save the client Vars diff --git a/src/static/js/virtual_lines.js b/src/static/js/virtual_lines.js deleted file mode 100644 index 2bcf5ed63..000000000 --- a/src/static/js/virtual_lines.js +++ /dev/null @@ -1,388 +0,0 @@ -/** - * 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 - */ - -/** - * Copyright 2009 Google Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS-IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -function makeVirtualLineView(lineNode) -{ - - // how much to jump forward or backward at once in a charSeeker before - // constructing a DOM node and checking the coordinates (which takes a - // significant fraction of a millisecond). From the - // coordinates and the approximate line height we can estimate how - // many lines we have moved. We risk being off if the number of lines - // we move is on the order of the line height in pixels. Fortunately, - // when the user boosts the font-size they increase both. - var maxCharIncrement = 20; - var seekerAtEnd = null; - - function getNumChars() - { - return lineNode.textContent.length; - } - - function getNumVirtualLines() - { - if (!seekerAtEnd) - { - var seeker = makeCharSeeker(); - seeker.forwardByWhile(maxCharIncrement); - seekerAtEnd = seeker; - } - return seekerAtEnd.getVirtualLine() + 1; - } - - function getVLineAndOffsetForChar(lineChar) - { - var seeker = makeCharSeeker(); - seeker.forwardByWhile(maxCharIncrement, null, lineChar); - var theLine = seeker.getVirtualLine(); - seeker.backwardByWhile(8, function() - { - return seeker.getVirtualLine() == theLine; - }); - seeker.forwardByWhile(1, function() - { - return seeker.getVirtualLine() != theLine; - }); - var lineStartChar = seeker.getOffset(); - return { - vline: theLine, - offset: (lineChar - lineStartChar) - }; - } - - function getCharForVLineAndOffset(vline, offset) - { - // returns revised vline and offset as well as absolute char index within line. - // if offset is beyond end of line, for example, will give new offset at end of line. - var seeker = makeCharSeeker(); - // go to start of line - seeker.binarySearch(function() - { - return seeker.getVirtualLine() >= vline; - }); - var lineStart = seeker.getOffset(); - var theLine = seeker.getVirtualLine(); - // go to offset, overshooting the virtual line only if offset is too large for it - seeker.forwardByWhile(maxCharIncrement, null, lineStart + offset); - // get back into line - seeker.backwardByWhile(1, function() - { - return seeker.getVirtualLine() != theLine; - }, lineStart); - var lineChar = seeker.getOffset(); - var theOffset = lineChar - lineStart; - // handle case of last virtual line; should be able to be at end of it - if (theOffset < offset && theLine == (getNumVirtualLines() - 1)) - { - var lineLen = getNumChars(); - theOffset += lineLen - lineChar; - lineChar = lineLen; - } - - return { - vline: theLine, - offset: theOffset, - lineChar: lineChar - }; - } - - return { - getNumVirtualLines: getNumVirtualLines, - getVLineAndOffsetForChar: getVLineAndOffsetForChar, - getCharForVLineAndOffset: getCharForVLineAndOffset, - makeCharSeeker: function() - { - return makeCharSeeker(); - } - }; - - function deepFirstChildTextNode(nd) - { - nd = nd.firstChild; - while (nd && nd.firstChild) nd = nd.firstChild; - if (nd.data) return nd; - return null; - } - - function makeCharSeeker( /*lineNode*/ ) - { - - function charCoords(tnode, i) - { - var container = tnode.parentNode; - - // treat space specially; a space at the end of a virtual line - // will have weird coordinates - var isSpace = (tnode.nodeValue.charAt(i) === " "); - if (isSpace) - { - if (i == 0) - { - if (container.previousSibling && deepFirstChildTextNode(container.previousSibling)) - { - tnode = deepFirstChildTextNode(container.previousSibling); - i = tnode.length - 1; - container = tnode.parentNode; - } - else - { - return { - top: container.offsetTop, - left: container.offsetLeft - }; - } - } - else - { - i--; // use previous char - } - } - - - var charWrapper = document.createElement("SPAN"); - - // wrap the character - var tnodeText = tnode.nodeValue; - var frag = document.createDocumentFragment(); - frag.appendChild(document.createTextNode(tnodeText.substring(0, i))); - charWrapper.appendChild(document.createTextNode(tnodeText.substr(i, 1))); - frag.appendChild(charWrapper); - frag.appendChild(document.createTextNode(tnodeText.substring(i + 1))); - container.replaceChild(frag, tnode); - - var result = { - top: charWrapper.offsetTop, - left: charWrapper.offsetLeft + (isSpace ? charWrapper.offsetWidth : 0), - height: charWrapper.offsetHeight - }; - - while (container.firstChild) container.removeChild(container.firstChild); - container.appendChild(tnode); - - return result; - } - - var lineText = lineNode.textContent; - var lineLength = lineText.length; - - var curNode = null; - var curChar = 0; - var curCharWithinNode = 0 - var curTop; - var curLeft; - var approxLineHeight; - var whichLine = 0; - - function nextNode() - { - var n = curNode; - if (!n) n = lineNode.firstChild; - else n = n.nextSibling; - while (n && !deepFirstChildTextNode(n)) - { - n = n.nextSibling; - } - return n; - } - - function prevNode() - { - var n = curNode; - if (!n) n = lineNode.lastChild; - else n = n.previousSibling; - while (n && !deepFirstChildTextNode(n)) - { - n = n.previousSibling; - } - return n; - } - - var seeker; - if (lineLength > 0) - { - curNode = nextNode(); - var firstCharData = charCoords(deepFirstChildTextNode(curNode), 0); - approxLineHeight = firstCharData.height; - curTop = firstCharData.top; - curLeft = firstCharData.left; - - function updateCharData(tnode, i) - { - var coords = charCoords(tnode, i); - whichLine += Math.round((coords.top - curTop) / approxLineHeight); - curTop = coords.top; - curLeft = coords.left; - } - - seeker = { - forward: function(numChars) - { - var oldChar = curChar; - var newChar = curChar + numChars; - if (newChar > (lineLength - 1)) newChar = lineLength - 1; - while (curChar < newChar) - { - var curNodeLength = deepFirstChildTextNode(curNode).length; - var toGo = curNodeLength - curCharWithinNode; - if (curChar + toGo > newChar || !nextNode()) - { - // going to next node would be too far - var n = newChar - curChar; - if (n >= toGo) n = toGo - 1; - curChar += n; - curCharWithinNode += n; - break; - } - else - { - // go to next node - curChar += toGo; - curCharWithinNode = 0; - curNode = nextNode(); - } - } - updateCharData(deepFirstChildTextNode(curNode), curCharWithinNode); - return curChar - oldChar; - }, - backward: function(numChars) - { - var oldChar = curChar; - var newChar = curChar - numChars; - if (newChar < 0) newChar = 0; - while (curChar > newChar) - { - if (curChar - curCharWithinNode <= newChar || !prevNode()) - { - // going to prev node would be too far - var n = curChar - newChar; - if (n > curCharWithinNode) n = curCharWithinNode; - curChar -= n; - curCharWithinNode -= n; - break; - } - else - { - // go to prev node - curChar -= curCharWithinNode + 1; - curNode = prevNode(); - curCharWithinNode = deepFirstChildTextNode(curNode).length - 1; - } - } - updateCharData(deepFirstChildTextNode(curNode), curCharWithinNode); - return oldChar - curChar; - }, - getVirtualLine: function() - { - return whichLine; - }, - getLeftCoord: function() - { - return curLeft; - } - }; - } - else - { - curLeft = lineNode.offsetLeft; - seeker = { - forward: function(numChars) - { - return 0; - }, - backward: function(numChars) - { - return 0; - }, - getVirtualLine: function() - { - return 0; - }, - getLeftCoord: function() - { - return curLeft; - } - }; - } - seeker.getOffset = function() - { - return curChar; - }; - seeker.getLineLength = function() - { - return lineLength; - }; - seeker.toString = function() - { - return "seeker[curChar: " + curChar + "(" + lineText.charAt(curChar) + "), left: " + seeker.getLeftCoord() + ", vline: " + seeker.getVirtualLine() + "]"; - }; - - function moveByWhile(isBackward, amount, optCondFunc, optCharLimit) - { - var charsMovedLast = null; - var hasCondFunc = ((typeof optCondFunc) == "function"); - var condFunc = optCondFunc; - var hasCharLimit = ((typeof optCharLimit) == "number"); - var charLimit = optCharLimit; - while (charsMovedLast !== 0 && ((!hasCondFunc) || condFunc())) - { - var toMove = amount; - if (hasCharLimit) - { - var untilLimit = (isBackward ? curChar - charLimit : charLimit - curChar); - if (untilLimit < toMove) toMove = untilLimit; - } - if (toMove < 0) break; - charsMovedLast = (isBackward ? seeker.backward(toMove) : seeker.forward(toMove)); - } - } - - seeker.forwardByWhile = function(amount, optCondFunc, optCharLimit) - { - moveByWhile(false, amount, optCondFunc, optCharLimit); - } - seeker.backwardByWhile = function(amount, optCondFunc, optCharLimit) - { - moveByWhile(true, amount, optCondFunc, optCharLimit); - } - seeker.binarySearch = function(condFunc) - { - // returns index of boundary between false chars and true chars; - // positions seeker at first true char, or else last char - var trueFunc = condFunc; - var falseFunc = function() - { - return !condFunc(); - }; - seeker.forwardByWhile(20, falseFunc); - seeker.backwardByWhile(20, trueFunc); - seeker.forwardByWhile(10, falseFunc); - seeker.backwardByWhile(5, trueFunc); - seeker.forwardByWhile(1, falseFunc); - return seeker.getOffset() + (condFunc() ? 0 : 1); - } - - return seeker; - } - -} - -exports.makeVirtualLineView = makeVirtualLineView; diff --git a/src/templates/admin/index.html b/src/templates/admin/index.html index 487765150..750a4b52e 100644 --- a/src/templates/admin/index.html +++ b/src/templates/admin/index.html @@ -1,24 +1,24 @@ - - - - Admin Dashboard - Etherpad - - - - - - -
      - -
      - - + + + + Admin Dashboard - Etherpad + + + + + + +
      + +
      + + diff --git a/src/templates/admin/plugins-info.html b/src/templates/admin/plugins-info.html index d1ca9a11e..ca6fbc829 100644 --- a/src/templates/admin/plugins-info.html +++ b/src/templates/admin/plugins-info.html @@ -1,7 +1,7 @@ <% var plugins = require("ep_etherpad-lite/static/js/pluginfw/plugins"); %> - + Plugin information - Etherpad @@ -11,7 +11,7 @@
      diff --git a/src/templates/admin/plugins.html b/src/templates/admin/plugins.html index 7c2a7abf2..75c47ad49 100644 --- a/src/templates/admin/plugins.html +++ b/src/templates/admin/plugins.html @@ -1,97 +1,114 @@ - - - - Plugin manager - Etherpad - - - - - - - -
      - - <% if (errors.length) { %> -
      - <% errors.forEach(function (item) { %> -
      <%= item.toString() %>
      - <% }) %> -
      - <% } %> - - - -
      -

      Installed plugins

      - - - - - - - - - - - - - - - - - - - -
      NameDescriptionVersion
      - -
      - -
      -
      - -

      Available plugins

      -
      - -
      - - - - - - - - - - - - - - - - - - - - -
      NameDescriptionVersion
      - -
      - - .. of . - -
      - -
      -
      - - + + + + Plugin manager - Etherpad + + + + + + + +
      + + <% if (errors.length) { %> +
      + <% errors.forEach(function (item) { %> +
      <%= item.toString() %>
      + <% }) %> +
      + <% } %> + + + +
      +

      Installed plugins

      + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionVersion
      +
      + +

      +
      +
      +

      You haven't installed any plugins yet.

      +


      Fetching installed plugins...

      +
      + +
      +
      + +

      Available plugins

      +
      + +
      + + + + + + + + + + + + + + + + + + + + + + + +
      NameDescriptionVersion
      +
      + +

      +
      +
      +
      +

       

      +

      No plugins found.

      +


      Fetching...

      +
      +
      +
      + +
      +
      + + diff --git a/src/templates/admin/settings.html b/src/templates/admin/settings.html index 4476b733d..f6b8087ca 100644 --- a/src/templates/admin/settings.html +++ b/src/templates/admin/settings.html @@ -1,49 +1,49 @@ - - - - Settings - Etherpad - - - - - - - - - - -
      - - <% if (errors.length) { %> -
      - <% errors.forEach(function (item) { %> -
      <%= item.toString() %>
      - <% }) %> -
      - <% } %> - - - - - -
      - - + + + + Settings - Etherpad + + + + + + + + + + +
      + + <% if (errors.length) { %> +
      + <% errors.forEach(function (item) { %> +
      <%= item.toString() %>
      + <% }) %> +
      + <% } %> + + + + + +
      + + diff --git a/src/templates/index.html b/src/templates/index.html index 4f6d500b9..02ecf67a0 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -5,29 +5,29 @@ <%=settings.title%> - + |@licend The above is the entire license notice + for the JavaScript code in this page.| + */ + diff --git a/src/templates/pad.html b/src/templates/pad.html index 76df5133c..d03bcbe49 100644 --- a/src/templates/pad.html +++ b/src/templates/pad.html @@ -154,6 +154,7 @@ <% e.end_block(); %>
+ <% e.begin_block("afterEditbar"); %><% e.end_block(); %>
<% e.begin_block("userlist"); %> @@ -195,7 +196,9 @@

Your password was wrong

+ <% e.begin_block("loading"); %>

Loading...

+ <% e.end_block(); %>
@@ -217,6 +220,10 @@

+

+ + +

<% e.end_block(); %> <% e.begin_block("mySettings.dropdowns"); %> @@ -267,7 +274,6 @@
- @@ -277,7 +283,7 @@ <% e.end_block(); %>
-
+

<% e.begin_block("exportColumn"); %>
@@ -311,7 +317,7 @@
-

+

@@ -321,11 +327,22 @@

-

+

+
+

+

+

+ +
+
+

+

+

+

@@ -355,12 +372,12 @@

- +

- +
<% e.end_block(); %>
@@ -372,7 +389,10 @@
- +
loading.. diff --git a/src/templates/timeslider.html b/src/templates/timeslider.html index 4a8543c56..2e00b8c2a 100644 --- a/src/templates/timeslider.html +++ b/src/templates/timeslider.html @@ -40,8 +40,10 @@ <% e.end_block(); %> + <% e.begin_block("timesliderScripts"); %> + <% e.end_block(); %> <% e.begin_block("timesliderBody"); %> @@ -133,7 +135,7 @@
-

+

@@ -143,20 +145,33 @@

-

+

+
+

+

+

+ +
+
+

+

+

+

+ <% e.begin_block("disconnected"); %>

+ <% e.end_block(); %>
@@ -192,7 +207,7 @@