From d9142a73c32b7d49184ffe6966f1710588e3be8d Mon Sep 17 00:00:00 2001 From: PantsuDev Date: Sun, 23 Jul 2017 15:46:29 +1000 Subject: [PATCH] Fix most go lint warnings --- .eslintrc.json | 44 +- .gitignore | 2 +- .htmlhintrc | 25 + .travis.yml | 2 +- LICENSE.md | 1 - apidoc.json | 2 +- apidoc/api_data.js | 2076 +++++++------ apidoc/index.html | 883 +++--- apidoc/locales/ca.js | 46 +- apidoc/locales/de.js | 46 +- apidoc/locales/es.js | 46 +- apidoc/locales/fr.js | 46 +- apidoc/locales/it.js | 46 +- apidoc/locales/locale.js | 84 +- apidoc/locales/nl.js | 46 +- apidoc/locales/pl.js | 46 +- apidoc/locales/pt_br.js | 46 +- apidoc/locales/ro.js | 46 +- apidoc/locales/ru.js | 46 +- apidoc/locales/tr.js | 46 +- apidoc/locales/vi.js | 46 +- apidoc/locales/zh.js | 46 +- apidoc/locales/zh_cn.js | 46 +- apidoc/main.js | 1557 +++++----- config/config.go | 3 + config/config_example.yml | 2 +- controllers/api/_apidoc.js | 2 +- controllers/feed/helpers.go | 2 +- controllers/feed/torznab.go | 2 +- controllers/middlewares/middlewares.go | 2 +- controllers/moderator/helpers.go | 2 +- controllers/moderator/reassign.go | 2 +- controllers/settings/settings.go | 6 +- header_api.md | 2 +- translations/de-de.all.json | 2 +- translations/en-us.all.json | 34 +- translations/fr-fr.all.json | 6 +- translations/it-it.all.json | 6 +- translations/ja-jp.all.json | 3676 ++++++++++++------------ translations/nl-nl.all.json | 2 +- translations/pt-br.all.json | 2748 +++++++++--------- translations/pt-pt.all.json | 1124 ++++---- translations/ro-ro.all.json | 1412 ++++----- translations/th-th.all.json | 6 +- utils/cache/cache.go | 1 + utils/categories/categories.go | 4 +- utils/cookies/user.go | 2 +- utils/feeds/rss.go | 34 +- utils/sanitize/markdown.go | 7 +- utils/search/structs/cache.go | 1 + utils/search/structs/structs.go | 23 +- utils/signals/interrupt.go | 1 + utils/signals/unix.go | 1 + utils/validator/validator.go | 1 + 54 files changed, 7161 insertions(+), 7275 deletions(-) create mode 100644 .htmlhintrc diff --git a/.eslintrc.json b/.eslintrc.json index c428aca9..e7a1b01b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,24 +1,24 @@ { - "env": { - "browser": true, - "commonjs": true, - "es6": true, - "node": true + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true + }, + "parserOptions": { + "ecmaFeatures": { + "jsx": true }, - "parserOptions": { - "ecmaFeatures": { - "jsx": true - }, - "sourceType": "module" - }, - "rules": { - "no-const-assign": "warn", - "no-this-before-super": "warn", - "no-undef": "warn", - "no-unreachable": "warn", - "no-unused-vars": "warn", - "constructor-super": "warn", - "valid-typeof": "warn", - "indent": ["error", 2] - } -} \ No newline at end of file + "sourceType": "module" + }, + "rules": { + "no-const-assign": "warn", + "no-this-before-super": "warn", + "no-undef": "warn", + "no-unreachable": "warn", + "no-unused-vars": "warn", + "constructor-super": "warn", + "valid-typeof": "warn", + "indent": ["error", 2] + } +} diff --git a/.gitignore b/.gitignore index 34e59593..95ee4d63 100755 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,4 @@ config/config.yml # emacs temp files *\#* -*~ \ No newline at end of file +*~ diff --git a/.htmlhintrc b/.htmlhintrc new file mode 100644 index 00000000..19796123 --- /dev/null +++ b/.htmlhintrc @@ -0,0 +1,25 @@ +{ + "alt-require": true, + "attr-lowercase": true, + "attr-no-duplication": true, + "attr-unsafe-chars": true, + "attr-value-double-quotes": false, + "attr-value-not-empty": false, + "doctype-first": true, + "doctype-html5": true, + "head-script-disabled": true, + "href-abs-or-rel": false, + "id-class-ad-disabled": true, + "id-class-value": "dash", + "id-unique": true, + "inline-script-disabled": true, + "inline-style-disabled": true, + "space-tab-mixed-disabled": "space2", + "spec-char-escape": true, + "src-not-empty": true, + "style-disabled": true, + "tag-pair": true, + "tag-self-close": false, + "tagname-lowercase": true, + "title-require": true +} diff --git a/.travis.yml b/.travis.yml index 52928323..4306c765 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ deploy: provider: releases api_key: secure: Nz2M3ZbQumKGVga/nnZnz1VXikRkGoLXk5FoH4uOl6GF6rlUNmtvJYs34LWF0/CMswBXNhjCggEaMMtZC+j66ZjoAdHBXRfrOb6jisNJRF6FNk7Kob6W3itCEOTvEL/8a+k2fI95cLqOXDLR2tIX03nchb8rDmVALs7P4gQgy2Y7UAo/aa/0G+OhsSJrlQWt0MT9OKGoIXpeKZjOG3wO/YwqfDwRTItuA9DLFoMQ0gwQfgT58t1ullbpM+jISni7rwfK+jUnZHjUH/VHLguVFmL4A1DxWriJXNOrZR+i/eUJ94mWvfI08WR8Qh3UCr58FrKoWvPsu7HnCq0bn6RvQtCKqx5zgv+R+kxKIP+79SVjKZUi1ghswAuwx9+AT6vHgPLXjJLpZj9Ap/KhfnQR6VT3jBT+kEpmv3J+57JcJCyD4ZslT+LGW2ul0uWoGCVVMBdHqMzuC8OSxpKCw6bFNWnLq+JAU08zlJkAAllBKev+LZWiF8GBICKfynRgViy+MKNaMfzIUNlL9UDskaiWP+BL9RXGLJ2FVdeKkzqdAYdYlgdJChQ56KTtRukR7FlOqDXhszIPxJhU9wn9lNXmGvq1FJyo1LRY3HX+5o9lWw+enaswNxFxdLBMXPhF5jehMkImiR4/YS4WdlmHcEfsli9sBOjBQh1iIpCfme77PPU= - script: + script: - ./package.sh file: dist/*.zip skip_cleanup: true diff --git a/LICENSE.md b/LICENSE.md index c0831c37..62217aff 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -16,4 +16,3 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/apidoc.json b/apidoc.json index d2e33dfe..f1912b95 100644 --- a/apidoc.json +++ b/apidoc.json @@ -21,4 +21,4 @@ "withCompare": true, "withGenerator": true } -} \ No newline at end of file +} diff --git a/apidoc/api_data.js b/apidoc/api_data.js index abacba03..47ba70bc 100644 --- a/apidoc/api_data.js +++ b/apidoc/api_data.js @@ -1,1202 +1,1130 @@ -define({ "api": [ - { - "type": "get", - "url": "/search/", - "title": "Search Torrents", - "version": "1.1.1", - "name": "FindTorrents", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { - "group": "Parameter", - "type": "String[]", - "optional": false, - "field": "c", - "description": "

In which categories to search.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "q", - "description": "

Query to search (torrent name).

" - }, - { - "group": "Parameter", - "type": "Number", - "optional": false, - "field": "page", - "description": "

Page of the search results.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "limit", - "description": "

Number of results per page.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "userID", - "description": "

Uploader ID owning the torrents.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "fromID", - "description": "

Show results with torrents ID superior to this.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "s", - "description": "

Torrent status.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "maxage", - "description": "

Torrents which have been uploaded the last x days.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "toDate", - "description": "

Torrents which have been uploaded since x dateType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "fromDate", - "description": "

Torrents which have been uploaded the last x dateType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "dateType", - "description": "

Which type of date (d for days, m for months, y for years).

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "minSize", - "description": "

Filter by minimal size in sizeType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "maxSize", - "description": "

Filter by maximal size in sizeType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "sizeType", - "description": "

Which type of size (b for bytes, k for kilobytes, m for megabytes, g for gigabytes).

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "sort", - "description": "

Torrent sorting type (0 = id, 1 = name, 2 = date, 3 = downloads, 4 = size, 5 = seeders, 6 = leechers, 7 = completed).

" - }, - { - "group": "Parameter", - "type": "Boolean", - "optional": false, - "field": "order", - "description": "

Order ascending or descending (true = ascending).

" - }, - { - "group": "Parameter", - "type": "String[]", - "optional": false, - "field": "lang", - "description": "

Filter the languages.

" - } - ] - } - }, - "success": { - "fields": { - "Success 200": [ - { +define({ + "api": [{ + "type": "get", + "url": "/search/", + "title": "Search Torrents", + "version": "1.1.1", + "name": "FindTorrents", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ + "group": "Parameter", + "type": "String[]", + "optional": false, + "field": "c", + "description": "

In which categories to search.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "q", + "description": "

Query to search (torrent name).

" + }, + { + "group": "Parameter", + "type": "Number", + "optional": false, + "field": "page", + "description": "

Page of the search results.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "limit", + "description": "

Number of results per page.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "userID", + "description": "

Uploader ID owning the torrents.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "fromID", + "description": "

Show results with torrents ID superior to this.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "s", + "description": "

Torrent status.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "maxage", + "description": "

Torrents which have been uploaded the last x days.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "toDate", + "description": "

Torrents which have been uploaded since x dateType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "fromDate", + "description": "

Torrents which have been uploaded the last x dateType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "dateType", + "description": "

Which type of date (d for days, m for months, y for years).

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "minSize", + "description": "

Filter by minimal size in sizeType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "maxSize", + "description": "

Filter by maximal size in sizeType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "sizeType", + "description": "

Which type of size (b for bytes, k for kilobytes, m for megabytes, g for gigabytes).

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "sort", + "description": "

Torrent sorting type (0 = id, 1 = name, 2 = date, 3 = downloads, 4 = size, 5 = seeders, 6 = leechers, 7 = completed).

" + }, + { + "group": "Parameter", + "type": "Boolean", + "optional": false, + "field": "order", + "description": "

Order ascending or descending (true = ascending).

" + }, + { + "group": "Parameter", + "type": "String[]", + "optional": false, + "field": "lang", + "description": "

Filter the languages.

" + } + ] + } + }, + "success": { + "fields": { + "Success 200": [{ "group": "Success 200", "type": "Object[]", "optional": false, "field": "torrents", "description": "

List of torrent object (see view for the properties).

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Success-Response:", "content": " HTTP/1.1 200 OK\n {\n\t\t\t\"torrents\": [...],\n\t\t\t\"queryRecordCount\": 50,\n\t\t\t\"totalRecordCount\": 798414\n\t\t}", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { + }] + }, + "filename": "controllers/api/api.go", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ "group": "Error 4xx", "type": "String[]", "optional": false, "field": "errors", "description": "

List of errors messages with a 404 error message in it.

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Error-Response:", "content": "HTTP/1.1 404 Not Found\n{\n \"errors\": [ \"404_not_found\", ... ]\n}", "type": "json" - } - ] - } - }, - { - "type": "get", - "url": "/search/", - "title": "Search Torrents", - "version": "1.0.0", - "name": "FindTorrents", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { - "group": "Parameter", - "type": "String[]", - "optional": false, - "field": "c", - "description": "

In which categories to search.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "q", - "description": "

Query to search (torrent name).

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "limit", - "description": "

Number of results per page.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "userID", - "description": "

Uploader ID owning the torrents.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "fromID", - "description": "

Show results with torrents ID superior to this.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "s", - "description": "

Torrent status.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "maxage", - "description": "

Torrents which have been uploaded the last x days.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "toDate", - "description": "

Torrents which have been uploaded since x dateType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "fromDate", - "description": "

Torrents which have been uploaded the last x dateType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "dateType", - "description": "

Which type of date (d for days, m for months, y for years).

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "minSize", - "description": "

Filter by minimal size in sizeType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "maxSize", - "description": "

Filter by maximal size in sizeType.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "sizeType", - "description": "

Which type of size (b for bytes, k for kilobytes, m for megabytes, g for gigabytes).

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "sort", - "description": "

Torrent sorting type (0 = id, 1 = name, 2 = date, 3 = downloads, 4 = size, 5 = seeders, 6 = leechers, 7 = completed).

" - }, - { - "group": "Parameter", - "type": "Boolean", - "optional": false, - "field": "order", - "description": "

Order ascending or descending (true = ascending).

" - }, - { - "group": "Parameter", - "type": "String[]", - "optional": false, - "field": "lang", - "description": "

Filter the languages.

" - }, - { - "group": "Parameter", - "type": "Number", - "optional": false, - "field": "page", - "description": "

Search page.

" - } - ] + }] } }, - "success": { - "fields": { - "Success 200": [ - { + { + "type": "get", + "url": "/search/", + "title": "Search Torrents", + "version": "1.0.0", + "name": "FindTorrents", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ + "group": "Parameter", + "type": "String[]", + "optional": false, + "field": "c", + "description": "

In which categories to search.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "q", + "description": "

Query to search (torrent name).

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "limit", + "description": "

Number of results per page.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "userID", + "description": "

Uploader ID owning the torrents.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "fromID", + "description": "

Show results with torrents ID superior to this.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "s", + "description": "

Torrent status.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "maxage", + "description": "

Torrents which have been uploaded the last x days.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "toDate", + "description": "

Torrents which have been uploaded since x dateType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "fromDate", + "description": "

Torrents which have been uploaded the last x dateType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "dateType", + "description": "

Which type of date (d for days, m for months, y for years).

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "minSize", + "description": "

Filter by minimal size in sizeType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "maxSize", + "description": "

Filter by maximal size in sizeType.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "sizeType", + "description": "

Which type of size (b for bytes, k for kilobytes, m for megabytes, g for gigabytes).

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "sort", + "description": "

Torrent sorting type (0 = id, 1 = name, 2 = date, 3 = downloads, 4 = size, 5 = seeders, 6 = leechers, 7 = completed).

" + }, + { + "group": "Parameter", + "type": "Boolean", + "optional": false, + "field": "order", + "description": "

Order ascending or descending (true = ascending).

" + }, + { + "group": "Parameter", + "type": "String[]", + "optional": false, + "field": "lang", + "description": "

Filter the languages.

" + }, + { + "group": "Parameter", + "type": "Number", + "optional": false, + "field": "page", + "description": "

Search page.

" + } + ] + } + }, + "success": { + "fields": { + "Success 200": [{ "group": "Success 200", "type": "Object[]", "optional": false, "field": "torrents", "description": "

List of torrent object (see view for the properties).

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Success-Response:", "content": " HTTP/1.1 200 OK\n {\n\t\t\t[...]\n\t\t}", "type": "json" - } - ] - }, - "filename": "controllers/api/_apidoc.js", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { + }] + }, + "filename": "controllers/api/_apidoc.js", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ "group": "Error 4xx", "type": "String[]", "optional": false, "field": "errors", "description": "

List of errors messages with a 404 error message in it.

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Error-Response:", "content": "HTTP/1.1 404 Not Found\n{\n \"errors\": [ \"404_not_found\", ... ]\n}", "type": "json" - } - ] - } - }, - { - "type": "get", - "url": "/view/:id", - "title": "Request Torrent information", - "version": "1.1.1", - "name": "GetTorrent", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { + }] + } + }, + { + "type": "get", + "url": "/view/:id", + "title": "Request Torrent information", + "version": "1.1.1", + "name": "GetTorrent", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ "group": "Parameter", "type": "Number", "optional": false, "field": "id", "description": "

Torrent unique ID.

" - } - ] - } - }, - "success": { - "fields": { - "Success 200": [ - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "id", - "description": "

ID of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "name", - "description": "

Name of the torrent.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "status", - "description": "

Status of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "hash", - "description": "

Hash of the torrent.

" - }, - { - "group": "Success 200", - "type": "Date", - "optional": false, - "field": "date", - "description": "

Uploaded date of the torrent.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "filesize", - "description": "

File size in Bytes of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "description", - "description": "

Description of the torrent.

" - }, - { - "group": "Success 200", - "type": "Object[]", - "optional": false, - "field": "comments", - "description": "

Comments of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "sub_category", - "description": "

Sub Category of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "category", - "description": "

Category of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "anidb_id", - "description": "

Anidb ID of the torrent.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "uploader_id", - "description": "

ID of the torrent uploader.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "uploader_name", - "description": "

Username of the torrent uploader.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "uploader_old", - "description": "

Old username from nyaa of the torrent uploader.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "website_link", - "description": "

External Link of the torrent.

" - }, - { - "group": "Success 200", - "type": "String[]", - "optional": false, - "field": "languages", - "description": "

Languages of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "magnet", - "description": "

Magnet URI of the torrent.

" - }, - { - "group": "Success 200", - "type": "String", - "optional": false, - "field": "torrent", - "description": "

Download URL of the torrent.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "seeders", - "description": "

Number of seeders of the torrent.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "leechers", - "description": "

Number of leechers of the torrent.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "completed", - "description": "

Downloads completed of the torrent.

" - }, - { - "group": "Success 200", - "type": "Date", - "optional": false, - "field": "last_scrape", - "description": "

Last statistics update of the torrent.

" - }, - { - "group": "Success 200", - "type": "Object[]", - "optional": false, - "field": "file_list", - "description": "

List of files in the torrent.

" - } - ] + }] + } }, - "examples": [ - { + "success": { + "fields": { + "Success 200": [{ + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "id", + "description": "

ID of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "name", + "description": "

Name of the torrent.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "status", + "description": "

Status of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "hash", + "description": "

Hash of the torrent.

" + }, + { + "group": "Success 200", + "type": "Date", + "optional": false, + "field": "date", + "description": "

Uploaded date of the torrent.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "filesize", + "description": "

File size in Bytes of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "description", + "description": "

Description of the torrent.

" + }, + { + "group": "Success 200", + "type": "Object[]", + "optional": false, + "field": "comments", + "description": "

Comments of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "sub_category", + "description": "

Sub Category of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "category", + "description": "

Category of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "anidb_id", + "description": "

Anidb ID of the torrent.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "uploader_id", + "description": "

ID of the torrent uploader.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "uploader_name", + "description": "

Username of the torrent uploader.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "uploader_old", + "description": "

Old username from nyaa of the torrent uploader.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "website_link", + "description": "

External Link of the torrent.

" + }, + { + "group": "Success 200", + "type": "String[]", + "optional": false, + "field": "languages", + "description": "

Languages of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "magnet", + "description": "

Magnet URI of the torrent.

" + }, + { + "group": "Success 200", + "type": "String", + "optional": false, + "field": "torrent", + "description": "

Download URL of the torrent.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "seeders", + "description": "

Number of seeders of the torrent.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "leechers", + "description": "

Number of leechers of the torrent.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "completed", + "description": "

Downloads completed of the torrent.

" + }, + { + "group": "Success 200", + "type": "Date", + "optional": false, + "field": "last_scrape", + "description": "

Last statistics update of the torrent.

" + }, + { + "group": "Success 200", + "type": "Object[]", + "optional": false, + "field": "file_list", + "description": "

List of files in the torrent.

" + } + ] + }, + "examples": [{ "title": "Success-Response:", "content": " HTTP/1.1 200 OK\n\t{\n\t\"id\": 952801,\n\t\"name\": \"[HorribleSubs] Uchouten Kazoku S2 [720p]\",\n\t\"status\": 1,\n\t\"hash\": \"6E4D96F7A0B0456672E80B150CCB7C15868CD47D\",\n\t\"date\": \"2017-07-05T11:01:39Z\",\n\t\"filesize\": 4056160259,\n\t\"description\": \"

Unofficial batch

\\n\",\n\t\"comments\": [],\n\t\"sub_category\": \"5\",\n\t\"category\": \"3\",\n\t\"anidb_id\": \"\",\n\t\"downloads\": 0,\n\t\"uploader_id\": 7177,\n\t\"uploader_name\": \"DarAR92\",\n\t\"uploader_old\": \"\",\n\t\"website_link\": \"http://horriblesubs.info/\",\n\t\"languages\": [\n\t\"en-us\"\n\t],\n\t\"magnet\": \"magnet:?xt=urn:btih:6E4D96F7A0B0456672E80B150CCB7C15868CD47D&dn=%5BHorribleSubs%5D+Uchouten+Kazoku+S2+%5B720p%5D&tr=http://nyaa.tracker.wf:7777/announce&tr=http://nyaa.tracker.wf:7777/announce&tr=udp://tracker.doko.moe:6969&tr=http://tracker.anirena.com:80/announce&tr=http://anidex.moe:6969/announce&tr=udp://tracker.opentrackr.org:1337&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://zer0day.ch:1337&tr=udp://9.rarbg.com:2710/announce&tr=udp://tracker2.christianbro.pw:6969/announce&tr=udp://tracker.coppersurfer.tk:6969&tr=udp://tracker.leechers-paradise.org:6969&tr=udp://eddie4.nl:6969/announce&tr=udp://tracker.doko.moe:6969/announce\",\n\t\"torrent\": \"https://nyaa.pantsu.cat/download/6E4D96F7A0B0456672E80B150CCB7C15868CD47D\",\n\t\"seeders\": 4,\n\t\"leechers\": 2,\n\t\"completed\": 28,\n\t\"last_scrape\": \"2017-07-07T07:48:32.509635Z\",\n\t\"file_list\": [\n\t{\n\t\"path\": \"[HorribleSubs] Uchouten Kazoku S2 - 01[720p].mkv\",\n\t\"filesize\": 338250895\n\t},\n\t{\n\t\"path\": \"[HorribleSubs] Uchouten Kazoku S2 - 12 [720p].mkv\",\n\t\"filesize\": 338556275\n\t}\n\t]\n\t}", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { + }] + }, + "filename": "controllers/api/api.go", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ "group": "Error 4xx", "type": "String[]", "optional": false, "field": "errors", "description": "

List of errors messages with a 404 error message in it.

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Error-Response:", "content": "HTTP/1.1 404 Not Found\n{\n \"errors\": [ \"404_not_found\", ... ]\n}", "type": "json" - } - ] - } - }, - { - "type": "get", - "url": "/head/:id", - "title": "Request Torrent Head", - "version": "1.1.1", - "name": "GetTorrentHead", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { + }] + } + }, + { + "type": "get", + "url": "/head/:id", + "title": "Request Torrent Head", + "version": "1.1.1", + "name": "GetTorrentHead", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ "group": "Parameter", "type": "Number", "optional": false, "field": "id", "description": "

Torrent unique ID.

" - } - ] - } - }, - "success": { - "examples": [ - { + }] + } + }, + "success": { + "examples": [{ "title": "Success-Response:", "content": "HTTP/1.1 200 OK", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { + }] + }, + "filename": "controllers/api/api.go", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ "group": "Error 4xx", "type": "String[]", "optional": false, "field": "errors", "description": "

List of errors messages with a 404 error message in it.

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Error-Response:", "content": "HTTP/1.1 404 Not Found\n{\n \"errors\": [ \"404_not_found\", ... ]\n}", "type": "json" - } - ] - } - }, - { - "type": "get", - "url": "/", - "title": "Request Torrents index", - "version": "1.1.1", - "name": "GetTorrents", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { + }] + } + }, + { + "type": "get", + "url": "/", + "title": "Request Torrents index", + "version": "1.1.1", + "name": "GetTorrents", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ "group": "Parameter", "type": "Number", "optional": false, "field": "id", "description": "

Torrent unique ID.

" - } - ] - } - }, - "success": { - "fields": { - "Success 200": [ - { - "group": "Success 200", - "type": "Object[]", - "optional": false, - "field": "torrents", - "description": "

List of torrent object (see view for the properties).

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "queryRecordCount", - "description": "

Number of torrents given.

" - }, - { - "group": "Success 200", - "type": "Number", - "optional": false, - "field": "totalRecordCount", - "description": "

Total number of torrents.

" - } - ] + }] + } }, - "examples": [ - { + "success": { + "fields": { + "Success 200": [{ + "group": "Success 200", + "type": "Object[]", + "optional": false, + "field": "torrents", + "description": "

List of torrent object (see view for the properties).

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "queryRecordCount", + "description": "

Number of torrents given.

" + }, + { + "group": "Success 200", + "type": "Number", + "optional": false, + "field": "totalRecordCount", + "description": "

Total number of torrents.

" + } + ] + }, + "examples": [{ "title": "Success-Response:", "content": " HTTP/1.1 200 OK\n {\n\t\t\t\"torrents\": [...],\n\t\t\t\"queryRecordCount\": 50,\n\t\t\t\"totalRecordCount\": 798414\n\t\t}", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { + }] + }, + "filename": "controllers/api/api.go", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ "group": "Error 4xx", "type": "String[]", "optional": false, "field": "errors", "description": "

List of errors messages with a 404 error message in it.

" - } - ] - }, - "examples": [ - { + }] + }, + "examples": [{ "title": "Error-Response:", "content": "HTTP/1.1 404 Not Found\n{\n \"errors\": [ \"404_not_found\", ... ]\n}", "type": "json" - } - ] - } - }, - { - "type": "post", - "url": "/update/", - "title": "Update a Torrent", - "version": "1.1.1", - "name": "UpdateTorrent", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "username", - "description": "

Torrent uploader name.

" - }, - { - "group": "Parameter", - "type": "Number", - "optional": false, - "field": "id", - "description": "

Torrent ID.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "name", - "description": "

Torrent name.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "category", - "description": "

Torrent category.

" - }, - { - "group": "Parameter", - "type": "Boolean", - "optional": false, - "field": "remake", - "description": "

Torrent is a remake.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "description", - "description": "

Torrent description.

" - }, - { - "group": "Parameter", - "type": "Number", - "optional": false, - "field": "status", - "description": "

Torrent status.

" - }, - { - "group": "Parameter", - "type": "Boolean", - "optional": false, - "field": "hidden", - "description": "

Torrent hidden.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "website_link", - "description": "

Torrent website link.

" - }, - { - "group": "Parameter", - "type": "String[]", - "optional": false, - "field": "languages", - "description": "

Torrent languages.

" - } - ] + }] } }, - "success": { - "fields": { - "Success 200": [ - { - "group": "Success 200", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request is done without failing

" - }, - { - "group": "Success 200", - "type": "String[]", - "optional": false, - "field": "infos", - "description": "

Messages information relative to the request

" - }, - { - "group": "Success 200", - "type": "Object", - "optional": false, - "field": "data", - "description": "

The resulting torrent updated (see view for the properties)

" - } - ] + { + "type": "post", + "url": "/update/", + "title": "Update a Torrent", + "version": "1.1.1", + "name": "UpdateTorrent", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ + "group": "Parameter", + "type": "String", + "optional": false, + "field": "username", + "description": "

Torrent uploader name.

" + }, + { + "group": "Parameter", + "type": "Number", + "optional": false, + "field": "id", + "description": "

Torrent ID.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "name", + "description": "

Torrent name.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "category", + "description": "

Torrent category.

" + }, + { + "group": "Parameter", + "type": "Boolean", + "optional": false, + "field": "remake", + "description": "

Torrent is a remake.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "description", + "description": "

Torrent description.

" + }, + { + "group": "Parameter", + "type": "Number", + "optional": false, + "field": "status", + "description": "

Torrent status.

" + }, + { + "group": "Parameter", + "type": "Boolean", + "optional": false, + "field": "hidden", + "description": "

Torrent hidden.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "website_link", + "description": "

Torrent website link.

" + }, + { + "group": "Parameter", + "type": "String[]", + "optional": false, + "field": "languages", + "description": "

Torrent languages.

" + } + ] + } }, - "examples": [ - { + "success": { + "fields": { + "Success 200": [{ + "group": "Success 200", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request is done without failing

" + }, + { + "group": "Success 200", + "type": "String[]", + "optional": false, + "field": "infos", + "description": "

Messages information relative to the request

" + }, + { + "group": "Success 200", + "type": "Object", + "optional": false, + "field": "data", + "description": "

The resulting torrent updated (see view for the properties)

" + } + ] + }, + "examples": [{ "title": "Success-Response:", "content": "HTTP/1.1 200 OK", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { - "group": "Error 4xx", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request couldn't be done due to some errors.

" - }, - { - "group": "Error 4xx", - "type": "String[]", - "optional": false, - "field": "errors", - "description": "

List of errors messages.

" - }, - { - "group": "Error 4xx", - "type": "Object[]", - "optional": false, - "field": "all_errors", - "description": "

List of errors object messages for each wrong field

" - } - ] + }] }, - "examples": [ - { + "filename": "controllers/api/api.go", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ + "group": "Error 4xx", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request couldn't be done due to some errors.

" + }, + { + "group": "Error 4xx", + "type": "String[]", + "optional": false, + "field": "errors", + "description": "

List of errors messages.

" + }, + { + "group": "Error 4xx", + "type": "Object[]", + "optional": false, + "field": "all_errors", + "description": "

List of errors object messages for each wrong field

" + } + ] + }, + "examples": [{ "title": "Error-Response:", "content": " HTTP/1.1 200 OK\n {\n \"ok\": false,\n \"errors\": [ ... ]\n \"all_errors\": {\n\t\t \t\"username\": [ ... ],\n }\n }", "type": "json" - } - ] - } - }, - { - "type": "post", - "url": "/upload", - "title": "Upload a Torrent", - "version": "1.1.1", - "name": "UploadTorrent", - "group": "Torrents", - "parameter": { - "fields": { - "Parameter": [ - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "username", - "description": "

Torrent uploader name.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "name", - "description": "

Torrent name.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "magnet", - "description": "

Torrent magnet URI.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "category", - "description": "

Torrent category.

" - }, - { - "group": "Parameter", - "type": "Boolean", - "optional": false, - "field": "remake", - "description": "

Torrent is a remake.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "description", - "description": "

Torrent description.

" - }, - { - "group": "Parameter", - "type": "Number", - "optional": false, - "field": "status", - "description": "

Torrent status.

" - }, - { - "group": "Parameter", - "type": "Boolean", - "optional": false, - "field": "hidden", - "description": "

Torrent hidden.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "website_link", - "description": "

Torrent website link.

" - }, - { - "group": "Parameter", - "type": "String[]", - "optional": false, - "field": "languages", - "description": "

Torrent languages.

" - }, - { - "group": "Parameter", - "type": "File", - "optional": false, - "field": "torrent", - "description": "

Torrent file to upload (you have to send a torrent file or a magnet, not both!).

" - } - ] + }] } }, - "success": { - "fields": { - "Success 200": [ - { - "group": "Success 200", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request is done without failing

" - }, - { - "group": "Success 200", - "type": "String[]", - "optional": false, - "field": "infos", - "description": "

Messages information relative to the request

" - }, - { - "group": "Success 200", - "type": "Object", - "optional": false, - "field": "data", - "description": "

The resulting torrent uploaded (see view for the properties)

" - } - ] + { + "type": "post", + "url": "/upload", + "title": "Upload a Torrent", + "version": "1.1.1", + "name": "UploadTorrent", + "group": "Torrents", + "parameter": { + "fields": { + "Parameter": [{ + "group": "Parameter", + "type": "String", + "optional": false, + "field": "username", + "description": "

Torrent uploader name.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "name", + "description": "

Torrent name.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "magnet", + "description": "

Torrent magnet URI.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "category", + "description": "

Torrent category.

" + }, + { + "group": "Parameter", + "type": "Boolean", + "optional": false, + "field": "remake", + "description": "

Torrent is a remake.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "description", + "description": "

Torrent description.

" + }, + { + "group": "Parameter", + "type": "Number", + "optional": false, + "field": "status", + "description": "

Torrent status.

" + }, + { + "group": "Parameter", + "type": "Boolean", + "optional": false, + "field": "hidden", + "description": "

Torrent hidden.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "website_link", + "description": "

Torrent website link.

" + }, + { + "group": "Parameter", + "type": "String[]", + "optional": false, + "field": "languages", + "description": "

Torrent languages.

" + }, + { + "group": "Parameter", + "type": "File", + "optional": false, + "field": "torrent", + "description": "

Torrent file to upload (you have to send a torrent file or a magnet, not both!).

" + } + ] + } }, - "examples": [ - { + "success": { + "fields": { + "Success 200": [{ + "group": "Success 200", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request is done without failing

" + }, + { + "group": "Success 200", + "type": "String[]", + "optional": false, + "field": "infos", + "description": "

Messages information relative to the request

" + }, + { + "group": "Success 200", + "type": "Object", + "optional": false, + "field": "data", + "description": "

The resulting torrent uploaded (see view for the properties)

" + } + ] + }, + "examples": [{ "title": "Success-Response:", "content": "HTTP/1.1 200 OK", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Torrents", - "error": { - "fields": { - "Error 4xx": [ - { - "group": "Error 4xx", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request couldn't be done due to some errors.

" - }, - { - "group": "Error 4xx", - "type": "String[]", - "optional": false, - "field": "errors", - "description": "

List of errors messages.

" - }, - { - "group": "Error 4xx", - "type": "Object[]", - "optional": false, - "field": "all_errors", - "description": "

List of errors object messages for each wrong field

" - } - ] + }] }, - "examples": [ - { + "filename": "controllers/api/api.go", + "groupTitle": "Torrents", + "error": { + "fields": { + "Error 4xx": [{ + "group": "Error 4xx", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request couldn't be done due to some errors.

" + }, + { + "group": "Error 4xx", + "type": "String[]", + "optional": false, + "field": "errors", + "description": "

List of errors messages.

" + }, + { + "group": "Error 4xx", + "type": "Object[]", + "optional": false, + "field": "all_errors", + "description": "

List of errors object messages for each wrong field

" + } + ] + }, + "examples": [{ "title": "Error-Response:", "content": " HTTP/1.1 200 OK\n {\n \"ok\": false,\n \"errors\": [ ... ]\n \"all_errors\": {\n\t\t \t\"username\": [ ... ],\n }\n }", "type": "json" - } - ] - } - }, - { - "type": "post", - "url": "/login/", - "title": "Login a user", - "version": "1.1.1", - "name": "Login", - "group": "Users", - "parameter": { - "fields": { - "Parameter": [ - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "username", - "description": "

Username or Email.

" - }, - { - "group": "Parameter", - "type": "String", - "optional": false, - "field": "password", - "description": "

Password.

" - } - ] + }] } }, - "success": { - "fields": { - "Success 200": [ - { - "group": "Success 200", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request is done without failing

" - }, - { - "group": "Success 200", - "type": "String[]", - "optional": false, - "field": "infos", - "description": "

Messages information relative to the request

" - }, - { - "group": "Success 200", - "type": "Object", - "optional": false, - "field": "data", - "description": "

The connected user object

" - } - ] + { + "type": "post", + "url": "/login/", + "title": "Login a user", + "version": "1.1.1", + "name": "Login", + "group": "Users", + "parameter": { + "fields": { + "Parameter": [{ + "group": "Parameter", + "type": "String", + "optional": false, + "field": "username", + "description": "

Username or Email.

" + }, + { + "group": "Parameter", + "type": "String", + "optional": false, + "field": "password", + "description": "

Password.

" + } + ] + } }, - "examples": [ - { + "success": { + "fields": { + "Success 200": [{ + "group": "Success 200", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request is done without failing

" + }, + { + "group": "Success 200", + "type": "String[]", + "optional": false, + "field": "infos", + "description": "

Messages information relative to the request

" + }, + { + "group": "Success 200", + "type": "Object", + "optional": false, + "field": "data", + "description": "

The connected user object

" + } + ] + }, + "examples": [{ "title": "Success-Response:", "content": " HTTP/1.1 200 OK\n\t\t{\n\t\t\tdata:\n \t\t[{\n\t\t\t\t\tuser_id:1,\n\t\t\t\t\tusername:\"username\",\n\t\t\t\t\tstatus:1,\n\t\t\t\t\ttoken:\"token\",\n\t\t\t\t\tmd5:\"\",\n\t\t\t\t\tcreated_at:\"date\",\n\t\t\t\t\tliking_count:0,\n\t\t\t\t\tliked_count:0\n\t\t\t\t}],\n\t\t\tinfos: [\"Logged\", ... ],\n\t\t\tok:true\n\t\t}", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Users", - "error": { - "fields": { - "Error 4xx": [ - { - "group": "Error 4xx", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request couldn't be done due to some errors.

" - }, - { - "group": "Error 4xx", - "type": "String[]", - "optional": false, - "field": "errors", - "description": "

List of errors messages.

" - }, - { - "group": "Error 4xx", - "type": "Object[]", - "optional": false, - "field": "all_errors", - "description": "

List of errors object messages for each wrong field

" - } - ] + }] }, - "examples": [ - { + "filename": "controllers/api/api.go", + "groupTitle": "Users", + "error": { + "fields": { + "Error 4xx": [{ + "group": "Error 4xx", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request couldn't be done due to some errors.

" + }, + { + "group": "Error 4xx", + "type": "String[]", + "optional": false, + "field": "errors", + "description": "

List of errors messages.

" + }, + { + "group": "Error 4xx", + "type": "Object[]", + "optional": false, + "field": "all_errors", + "description": "

List of errors object messages for each wrong field

" + } + ] + }, + "examples": [{ "title": "Error-Response:", "content": " HTTP/1.1 200 OK\n {\n \"ok\": false,\n \"errors\": [ ... ]\n \"all_errors\": {\n\t\t \t\"username\": [ ... ],\n }\n }", "type": "json" - } - ] - } - }, - { - "type": "post", - "url": "/profile/", - "title": "Get a user profile", - "version": "1.1.1", - "name": "Profile", - "group": "Users", - "parameter": { - "fields": { - "Parameter": [ - { + }] + } + }, + { + "type": "post", + "url": "/profile/", + "title": "Get a user profile", + "version": "1.1.1", + "name": "Profile", + "group": "Users", + "parameter": { + "fields": { + "Parameter": [{ "group": "Parameter", "type": "Number", "optional": false, "field": "id", "description": "

User ID.

" - } - ] - } - }, - "success": { - "fields": { - "Success 200": [ - { - "group": "Success 200", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request is done without failing

" - }, - { - "group": "Success 200", - "type": "String[]", - "optional": false, - "field": "infos", - "description": "

Messages information relative to the request

" - }, - { - "group": "Success 200", - "type": "Object", - "optional": false, - "field": "data", - "description": "

The user object

" - } - ] + }] + } }, - "examples": [ - { + "success": { + "fields": { + "Success 200": [{ + "group": "Success 200", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request is done without failing

" + }, + { + "group": "Success 200", + "type": "String[]", + "optional": false, + "field": "infos", + "description": "

Messages information relative to the request

" + }, + { + "group": "Success 200", + "type": "Object", + "optional": false, + "field": "data", + "description": "

The user object

" + } + ] + }, + "examples": [{ "title": "Success-Response:", "content": " HTTP/1.1 200 OK\n\t\t{\n\t\t\tdata:\n \t\t[{\n\t\t\t\t\tuser_id:1,\n\t\t\t\t\tusername:\"username\",\n\t\t\t\t\tstatus:1,\n\t\t\t\t\tmd5:\"\",\n\t\t\t\t\tcreated_at:\"date\",\n\t\t\t\t\tliking_count:0,\n\t\t\t\t\tliked_count:0\n\t\t\t\t}],\n\t\t\tinfos: [\"Logged\", ... ],\n\t\t\tok:true\n\t\t}", "type": "json" - } - ] - }, - "filename": "controllers/api/api.go", - "groupTitle": "Users", - "error": { - "fields": { - "Error 4xx": [ - { - "group": "Error 4xx", - "type": "Boolean", - "optional": false, - "field": "ok", - "description": "

The request couldn't be done due to some errors.

" - }, - { - "group": "Error 4xx", - "type": "String[]", - "optional": false, - "field": "errors", - "description": "

List of errors messages.

" - }, - { - "group": "Error 4xx", - "type": "Object[]", - "optional": false, - "field": "all_errors", - "description": "

List of errors object messages for each wrong field

" - } - ] + }] }, - "examples": [ - { + "filename": "controllers/api/api.go", + "groupTitle": "Users", + "error": { + "fields": { + "Error 4xx": [{ + "group": "Error 4xx", + "type": "Boolean", + "optional": false, + "field": "ok", + "description": "

The request couldn't be done due to some errors.

" + }, + { + "group": "Error 4xx", + "type": "String[]", + "optional": false, + "field": "errors", + "description": "

List of errors messages.

" + }, + { + "group": "Error 4xx", + "type": "Object[]", + "optional": false, + "field": "all_errors", + "description": "

List of errors object messages for each wrong field

" + } + ] + }, + "examples": [{ "title": "Error-Response:", "content": " HTTP/1.1 200 OK\n {\n \"ok\": false,\n \"errors\": [ ... ]\n \"all_errors\": {\n\t\t \t\"username\": [ ... ],\n }\n }", "type": "json" - } - ] + }] + } } - } -] }); + ] +}); diff --git a/apidoc/index.html b/apidoc/index.html index 5f04deda..b5751e28 100644 --- a/apidoc/index.html +++ b/apidoc/index.html @@ -1,287 +1,249 @@ - - - Loading... - - - - - - - - - - + + + + + + {{/if}} {{else}} +
  • + {{title}} +
  • + {{/if}} {{/if}} {{/each}} + + + - + + + + {{/if}} +
    + - + - + - + {{/if}} {{/if}} + - + - - {{subTemplate "article-param-block" params=article.header _hasType=_hasTypeInHeaderFields section="header"}} - {{subTemplate "article-param-block" params=article.parameter _hasType=_hasTypeInParameterFields section="parameter"}} - {{subTemplate "article-param-block" params=article.success _hasType=_hasTypeInSuccessFields section="success"}} - {{subTemplate "article-param-block" params=article.error _col1="Name" _hasType=_hasTypeInErrorFields section="error"}} - - {{subTemplate "article-sample-request" article=article id=id}} - - - - + {{/if_gt}} {{/if}} + - + {{/if}} + - - {{/each_compare_title}} - - - {{subTemplate "article-compare-param-block" source=article.parameter compare=compare.parameter _hasType=_hasTypeInParameterFields section="parameter"}} - {{subTemplate "article-compare-param-block" source=article.success compare=compare.success _hasType=_hasTypeInSuccessFields section="success"}} - {{subTemplate "article-compare-param-block" source=article.error compare=compare.error _col1="Name" _hasType=_hasTypeInErrorFields section="error"}} - - {{subTemplate "article-sample-request" article=article id=id}} - - - - - + {{#unless _last}}, {{/unless}} {{/if}} {{/if}} {{/if}} {{/each_compare_list_field}} +

    + - + {{/if}} {{/each_compare_title}} + + {{/if}} {{/if}} + - - {{/each_compare_field}} - - +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    -
    -
    -
    -
    -
    - -
    - -
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    Loading...

    +
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    -

    Loading...

    -
    -
    + + - - diff --git a/apidoc/locales/ca.js b/apidoc/locales/ca.js index 65af5df2..7ccb7e3c 100644 --- a/apidoc/locales/ca.js +++ b/apidoc/locales/ca.js @@ -1,25 +1,25 @@ define({ - ca: { - 'Allowed values:' : 'Valors permesos:', - 'Compare all with predecessor': 'Comparar tot amb versió anterior', - 'compare changes to:' : 'comparar canvis amb:', - 'compared to' : 'comparat amb', - 'Default value:' : 'Valor per defecte:', - 'Description' : 'Descripció', - 'Field' : 'Camp', - 'General' : 'General', - 'Generated with' : 'Generat amb', - 'Name' : 'Nom', - 'No response values.' : 'Sense valors en la resposta.', - 'optional' : 'opcional', - 'Parameter' : 'Paràmetre', - 'Permission:' : 'Permisos:', - 'Response' : 'Resposta', - 'Send' : 'Enviar', - 'Send a Sample Request' : 'Enviar una petició d\'exemple', - 'show up to version:' : 'mostrar versió:', - 'Size range:' : 'Tamany de rang:', - 'Type' : 'Tipus', - 'url' : 'url' - } + ca: { + 'Allowed values:': 'Valors permesos:', + 'Compare all with predecessor': 'Comparar tot amb versió anterior', + 'compare changes to:': 'comparar canvis amb:', + 'compared to': 'comparat amb', + 'Default value:': 'Valor per defecte:', + 'Description': 'Descripció', + 'Field': 'Camp', + 'General': 'General', + 'Generated with': 'Generat amb', + 'Name': 'Nom', + 'No response values.': 'Sense valors en la resposta.', + 'optional': 'opcional', + 'Parameter': 'Paràmetre', + 'Permission:': 'Permisos:', + 'Response': 'Resposta', + 'Send': 'Enviar', + 'Send a Sample Request': 'Enviar una petició d\'exemple', + 'show up to version:': 'mostrar versió:', + 'Size range:': 'Tamany de rang:', + 'Type': 'Tipus', + 'url': 'url' + } }); diff --git a/apidoc/locales/de.js b/apidoc/locales/de.js index f66420d0..b3ca0119 100644 --- a/apidoc/locales/de.js +++ b/apidoc/locales/de.js @@ -1,25 +1,25 @@ define({ - de: { - 'Allowed values:' : 'Erlaubte Werte:', - 'Compare all with predecessor': 'Vergleiche alle mit ihren Vorgängern', - 'compare changes to:' : 'vergleiche Änderungen mit:', - 'compared to' : 'verglichen mit', - 'Default value:' : 'Standardwert:', - 'Description' : 'Beschreibung', - 'Field' : 'Feld', - 'General' : 'Allgemein', - 'Generated with' : 'Erstellt mit', - 'Name' : 'Name', - 'No response values.' : 'Keine Rückgabewerte.', - 'optional' : 'optional', - 'Parameter' : 'Parameter', - 'Permission:' : 'Berechtigung:', - 'Response' : 'Antwort', - 'Send' : 'Senden', - 'Send a Sample Request' : 'Eine Beispielanfrage senden', - 'show up to version:' : 'zeige bis zur Version:', - 'Size range:' : 'Größenbereich:', - 'Type' : 'Typ', - 'url' : 'url' - } + de: { + 'Allowed values:': 'Erlaubte Werte:', + 'Compare all with predecessor': 'Vergleiche alle mit ihren Vorgängern', + 'compare changes to:': 'vergleiche Änderungen mit:', + 'compared to': 'verglichen mit', + 'Default value:': 'Standardwert:', + 'Description': 'Beschreibung', + 'Field': 'Feld', + 'General': 'Allgemein', + 'Generated with': 'Erstellt mit', + 'Name': 'Name', + 'No response values.': 'Keine Rückgabewerte.', + 'optional': 'optional', + 'Parameter': 'Parameter', + 'Permission:': 'Berechtigung:', + 'Response': 'Antwort', + 'Send': 'Senden', + 'Send a Sample Request': 'Eine Beispielanfrage senden', + 'show up to version:': 'zeige bis zur Version:', + 'Size range:': 'Größenbereich:', + 'Type': 'Typ', + 'url': 'url' + } }); diff --git a/apidoc/locales/es.js b/apidoc/locales/es.js index 3d47e800..172cb9f8 100644 --- a/apidoc/locales/es.js +++ b/apidoc/locales/es.js @@ -1,25 +1,25 @@ define({ - es: { - 'Allowed values:' : 'Valores permitidos:', - 'Compare all with predecessor': 'Comparar todo con versión anterior', - 'compare changes to:' : 'comparar cambios con:', - 'compared to' : 'comparado con', - 'Default value:' : 'Valor por defecto:', - 'Description' : 'Descripción', - 'Field' : 'Campo', - 'General' : 'General', - 'Generated with' : 'Generado con', - 'Name' : 'Nombre', - 'No response values.' : 'Sin valores en la respuesta.', - 'optional' : 'opcional', - 'Parameter' : 'Parámetro', - 'Permission:' : 'Permisos:', - 'Response' : 'Respuesta', - 'Send' : 'Enviar', - 'Send a Sample Request' : 'Enviar una petición de ejemplo', - 'show up to version:' : 'mostrar a versión:', - 'Size range:' : 'Tamaño de rango:', - 'Type' : 'Tipo', - 'url' : 'url' - } + es: { + 'Allowed values:': 'Valores permitidos:', + 'Compare all with predecessor': 'Comparar todo con versión anterior', + 'compare changes to:': 'comparar cambios con:', + 'compared to': 'comparado con', + 'Default value:': 'Valor por defecto:', + 'Description': 'Descripción', + 'Field': 'Campo', + 'General': 'General', + 'Generated with': 'Generado con', + 'Name': 'Nombre', + 'No response values.': 'Sin valores en la respuesta.', + 'optional': 'opcional', + 'Parameter': 'Parámetro', + 'Permission:': 'Permisos:', + 'Response': 'Respuesta', + 'Send': 'Enviar', + 'Send a Sample Request': 'Enviar una petición de ejemplo', + 'show up to version:': 'mostrar a versión:', + 'Size range:': 'Tamaño de rango:', + 'Type': 'Tipo', + 'url': 'url' + } }); diff --git a/apidoc/locales/fr.js b/apidoc/locales/fr.js index 100a6429..8393c607 100644 --- a/apidoc/locales/fr.js +++ b/apidoc/locales/fr.js @@ -1,25 +1,25 @@ define({ - fr: { - 'Allowed values:' : 'Valeurs autorisées :', - 'Compare all with predecessor': 'Tout comparer avec ...', - 'compare changes to:' : 'comparer les changements à :', - 'compared to' : 'comparer à', - 'Default value:' : 'Valeur par défaut :', - 'Description' : 'Description', - 'Field' : 'Champ', - 'General' : 'Général', - 'Generated with' : 'Généré avec', - 'Name' : 'Nom', - 'No response values.' : 'Aucune valeur de réponse.', - 'optional' : 'optionnel', - 'Parameter' : 'Paramètre', - 'Permission:' : 'Permission :', - 'Response' : 'Réponse', - 'Send' : 'Envoyer', - 'Send a Sample Request' : 'Envoyer une requête représentative', - 'show up to version:' : 'Montrer à partir de la version :', - 'Size range:' : 'Ordre de grandeur :', - 'Type' : 'Type', - 'url' : 'url' - } + fr: { + 'Allowed values:': 'Valeurs autorisées :', + 'Compare all with predecessor': 'Tout comparer avec ...', + 'compare changes to:': 'comparer les changements à :', + 'compared to': 'comparer à', + 'Default value:': 'Valeur par défaut :', + 'Description': 'Description', + 'Field': 'Champ', + 'General': 'Général', + 'Generated with': 'Généré avec', + 'Name': 'Nom', + 'No response values.': 'Aucune valeur de réponse.', + 'optional': 'optionnel', + 'Parameter': 'Paramètre', + 'Permission:': 'Permission :', + 'Response': 'Réponse', + 'Send': 'Envoyer', + 'Send a Sample Request': 'Envoyer une requête représentative', + 'show up to version:': 'Montrer à partir de la version :', + 'Size range:': 'Ordre de grandeur :', + 'Type': 'Type', + 'url': 'url' + } }); diff --git a/apidoc/locales/it.js b/apidoc/locales/it.js index 8117108c..32057b25 100644 --- a/apidoc/locales/it.js +++ b/apidoc/locales/it.js @@ -1,25 +1,25 @@ define({ - it: { - 'Allowed values:' : 'Valori permessi:', - 'Compare all with predecessor': 'Confronta tutto con versioni precedenti', - 'compare changes to:' : 'confronta modifiche con:', - 'compared to' : 'confrontato con', - 'Default value:' : 'Valore predefinito:', - 'Description' : 'Descrizione', - 'Field' : 'Campo', - 'General' : 'Generale', - 'Generated with' : 'Creato con', - 'Name' : 'Nome', - 'No response values.' : 'Nessun valore di risposta.', - 'optional' : 'opzionale', - 'Parameter' : 'Parametro', - 'Permission:' : 'Permessi:', - 'Response' : 'Risposta', - 'Send' : 'Invia', - 'Send a Sample Request' : 'Invia una richiesta di esempio', - 'show up to version:' : 'mostra alla versione:', - 'Size range:' : 'Intervallo dimensione:', - 'Type' : 'Tipo', - 'url' : 'url' - } + it: { + 'Allowed values:': 'Valori permessi:', + 'Compare all with predecessor': 'Confronta tutto con versioni precedenti', + 'compare changes to:': 'confronta modifiche con:', + 'compared to': 'confrontato con', + 'Default value:': 'Valore predefinito:', + 'Description': 'Descrizione', + 'Field': 'Campo', + 'General': 'Generale', + 'Generated with': 'Creato con', + 'Name': 'Nome', + 'No response values.': 'Nessun valore di risposta.', + 'optional': 'opzionale', + 'Parameter': 'Parametro', + 'Permission:': 'Permessi:', + 'Response': 'Risposta', + 'Send': 'Invia', + 'Send a Sample Request': 'Invia una richiesta di esempio', + 'show up to version:': 'mostra alla versione:', + 'Size range:': 'Intervallo dimensione:', + 'Type': 'Tipo', + 'url': 'url' + } }); diff --git a/apidoc/locales/locale.js b/apidoc/locales/locale.js index ba82385a..08cb4421 100644 --- a/apidoc/locales/locale.js +++ b/apidoc/locales/locale.js @@ -1,50 +1,50 @@ define([ - './locales/ca.js', - './locales/de.js', - './locales/es.js', - './locales/fr.js', - './locales/it.js', - './locales/nl.js', - './locales/pl.js', - './locales/pt_br.js', - './locales/ro.js', - './locales/ru.js', - './locales/tr.js', - './locales/vi.js', - './locales/zh.js', - './locales/zh_cn.js' -], function() { - var langId = (navigator.language || navigator.userLanguage).toLowerCase().replace('-', '_'); - var language = langId.substr(0, 2); - var locales = {}; + './locales/ca.js', + './locales/de.js', + './locales/es.js', + './locales/fr.js', + './locales/it.js', + './locales/nl.js', + './locales/pl.js', + './locales/pt_br.js', + './locales/ro.js', + './locales/ru.js', + './locales/tr.js', + './locales/vi.js', + './locales/zh.js', + './locales/zh_cn.js' +], function () { + var langId = (navigator.language || navigator.userLanguage).toLowerCase().replace('-', '_'); + var language = langId.substr(0, 2); + var locales = {}; - for (index in arguments) { - for (property in arguments[index]) - locales[property] = arguments[index][property]; - } - if ( ! locales['en']) - locales['en'] = {}; + for (index in arguments) { + for (property in arguments[index]) + locales[property] = arguments[index][property]; + } + if (!locales['en']) + locales['en'] = {}; - if ( ! locales[langId] && ! locales[language]) - language = 'en'; + if (!locales[langId] && !locales[language]) + language = 'en'; - var locale = (locales[langId] ? locales[langId] : locales[language]); + var locale = (locales[langId] ? locales[langId] : locales[language]); - function __(text) { - var index = locale[text]; - if (index === undefined) - return text; - return index; - }; + function __(text) { + var index = locale[text]; + if (index === undefined) + return text; + return index; + }; - function setLanguage(language) { - locale = locales[language]; - } + function setLanguage(language) { + locale = locales[language]; + } - return { - __ : __, - locales : locales, - locale : locale, - setLanguage: setLanguage - }; + return { + __: __, + locales: locales, + locale: locale, + setLanguage: setLanguage + }; }); diff --git a/apidoc/locales/nl.js b/apidoc/locales/nl.js index bddfeeb1..989f3e00 100644 --- a/apidoc/locales/nl.js +++ b/apidoc/locales/nl.js @@ -1,25 +1,25 @@ define({ - nl: { - 'Allowed values:' : 'Toegestane waarden:', - 'Compare all with predecessor': 'Vergelijk alle met voorgaande versie', - 'compare changes to:' : 'vergelijk veranderingen met:', - 'compared to' : 'vergelijk met', - 'Default value:' : 'Standaard waarde:', - 'Description' : 'Omschrijving', - 'Field' : 'Veld', - 'General' : 'Algemeen', - 'Generated with' : 'Gegenereerd met', - 'Name' : 'Naam', - 'No response values.' : 'Geen response waardes.', - 'optional' : 'optioneel', - 'Parameter' : 'Parameter', - 'Permission:' : 'Permissie:', - 'Response' : 'Antwoorden', - 'Send' : 'Sturen', - 'Send a Sample Request' : 'Stuur een sample aanvragen', - 'show up to version:' : 'toon tot en met versie:', - 'Size range:' : 'Maatbereik:', - 'Type' : 'Type', - 'url' : 'url' - } + nl: { + 'Allowed values:': 'Toegestane waarden:', + 'Compare all with predecessor': 'Vergelijk alle met voorgaande versie', + 'compare changes to:': 'vergelijk veranderingen met:', + 'compared to': 'vergelijk met', + 'Default value:': 'Standaard waarde:', + 'Description': 'Omschrijving', + 'Field': 'Veld', + 'General': 'Algemeen', + 'Generated with': 'Gegenereerd met', + 'Name': 'Naam', + 'No response values.': 'Geen response waardes.', + 'optional': 'optioneel', + 'Parameter': 'Parameter', + 'Permission:': 'Permissie:', + 'Response': 'Antwoorden', + 'Send': 'Sturen', + 'Send a Sample Request': 'Stuur een sample aanvragen', + 'show up to version:': 'toon tot en met versie:', + 'Size range:': 'Maatbereik:', + 'Type': 'Type', + 'url': 'url' + } }); diff --git a/apidoc/locales/pl.js b/apidoc/locales/pl.js index db645ee1..bab52dad 100644 --- a/apidoc/locales/pl.js +++ b/apidoc/locales/pl.js @@ -1,25 +1,25 @@ define({ - pl: { - 'Allowed values:' : 'Dozwolone wartości:', - 'Compare all with predecessor': 'Porównaj z poprzednimi wersjami', - 'compare changes to:' : 'porównaj zmiany do:', - 'compared to' : 'porównaj do:', - 'Default value:' : 'Wartość domyślna:', - 'Description' : 'Opis', - 'Field' : 'Pole', - 'General' : 'Generalnie', - 'Generated with' : 'Wygenerowano z', - 'Name' : 'Nazwa', - 'No response values.' : 'Brak odpowiedzi.', - 'optional' : 'opcjonalny', - 'Parameter' : 'Parametr', - 'Permission:' : 'Uprawnienia:', - 'Response' : 'Odpowiedź', - 'Send' : 'Wyślij', - 'Send a Sample Request' : 'Wyślij przykładowe żądanie', - 'show up to version:' : 'pokaż do wersji:', - 'Size range:' : 'Zakres rozmiaru:', - 'Type' : 'Typ', - 'url' : 'url' - } + pl: { + 'Allowed values:': 'Dozwolone wartości:', + 'Compare all with predecessor': 'Porównaj z poprzednimi wersjami', + 'compare changes to:': 'porównaj zmiany do:', + 'compared to': 'porównaj do:', + 'Default value:': 'Wartość domyślna:', + 'Description': 'Opis', + 'Field': 'Pole', + 'General': 'Generalnie', + 'Generated with': 'Wygenerowano z', + 'Name': 'Nazwa', + 'No response values.': 'Brak odpowiedzi.', + 'optional': 'opcjonalny', + 'Parameter': 'Parametr', + 'Permission:': 'Uprawnienia:', + 'Response': 'Odpowiedź', + 'Send': 'Wyślij', + 'Send a Sample Request': 'Wyślij przykładowe żądanie', + 'show up to version:': 'pokaż do wersji:', + 'Size range:': 'Zakres rozmiaru:', + 'Type': 'Typ', + 'url': 'url' + } }); diff --git a/apidoc/locales/pt_br.js b/apidoc/locales/pt_br.js index 2bd78b0d..44ffae27 100644 --- a/apidoc/locales/pt_br.js +++ b/apidoc/locales/pt_br.js @@ -1,25 +1,25 @@ define({ - 'pt_br': { - 'Allowed values:' : 'Valores permitidos:', - 'Compare all with predecessor': 'Compare todos com antecessores', - 'compare changes to:' : 'comparar alterações com:', - 'compared to' : 'comparado com', - 'Default value:' : 'Valor padrão:', - 'Description' : 'Descrição', - 'Field' : 'Campo', - 'General' : 'Geral', - 'Generated with' : 'Gerado com', - 'Name' : 'Nome', - 'No response values.' : 'Sem valores de resposta.', - 'optional' : 'opcional', - 'Parameter' : 'Parâmetro', - 'Permission:' : 'Permissão:', - 'Response' : 'Resposta', - 'Send' : 'Enviar', - 'Send a Sample Request' : 'Enviar um Exemplo de Pedido', - 'show up to version:' : 'aparecer para a versão:', - 'Size range:' : 'Faixa de tamanho:', - 'Type' : 'Tipo', - 'url' : 'url' - } + 'pt_br': { + 'Allowed values:': 'Valores permitidos:', + 'Compare all with predecessor': 'Compare todos com antecessores', + 'compare changes to:': 'comparar alterações com:', + 'compared to': 'comparado com', + 'Default value:': 'Valor padrão:', + 'Description': 'Descrição', + 'Field': 'Campo', + 'General': 'Geral', + 'Generated with': 'Gerado com', + 'Name': 'Nome', + 'No response values.': 'Sem valores de resposta.', + 'optional': 'opcional', + 'Parameter': 'Parâmetro', + 'Permission:': 'Permissão:', + 'Response': 'Resposta', + 'Send': 'Enviar', + 'Send a Sample Request': 'Enviar um Exemplo de Pedido', + 'show up to version:': 'aparecer para a versão:', + 'Size range:': 'Faixa de tamanho:', + 'Type': 'Tipo', + 'url': 'url' + } }); diff --git a/apidoc/locales/ro.js b/apidoc/locales/ro.js index 8d4e4ed8..0935337d 100644 --- a/apidoc/locales/ro.js +++ b/apidoc/locales/ro.js @@ -1,25 +1,25 @@ define({ - ro: { - 'Allowed values:' : 'Valori permise:', - 'Compare all with predecessor': 'Compară toate cu versiunea precedentă', - 'compare changes to:' : 'compară cu versiunea:', - 'compared to' : 'comparat cu', - 'Default value:' : 'Valoare implicită:', - 'Description' : 'Descriere', - 'Field' : 'Câmp', - 'General' : 'General', - 'Generated with' : 'Generat cu', - 'Name' : 'Nume', - 'No response values.' : 'Nici o valoare returnată.', - 'optional' : 'opțional', - 'Parameter' : 'Parametru', - 'Permission:' : 'Permisiune:', - 'Response' : 'Răspuns', - 'Send' : 'Trimite', - 'Send a Sample Request' : 'Trimite o cerere de probă', - 'show up to version:' : 'arată până la versiunea:', - 'Size range:' : 'Interval permis:', - 'Type' : 'Tip', - 'url' : 'url' - } + ro: { + 'Allowed values:': 'Valori permise:', + 'Compare all with predecessor': 'Compară toate cu versiunea precedentă', + 'compare changes to:': 'compară cu versiunea:', + 'compared to': 'comparat cu', + 'Default value:': 'Valoare implicită:', + 'Description': 'Descriere', + 'Field': 'Câmp', + 'General': 'General', + 'Generated with': 'Generat cu', + 'Name': 'Nume', + 'No response values.': 'Nici o valoare returnată.', + 'optional': 'opțional', + 'Parameter': 'Parametru', + 'Permission:': 'Permisiune:', + 'Response': 'Răspuns', + 'Send': 'Trimite', + 'Send a Sample Request': 'Trimite o cerere de probă', + 'show up to version:': 'arată până la versiunea:', + 'Size range:': 'Interval permis:', + 'Type': 'Tip', + 'url': 'url' + } }); diff --git a/apidoc/locales/ru.js b/apidoc/locales/ru.js index c5f33821..3d3e2d01 100644 --- a/apidoc/locales/ru.js +++ b/apidoc/locales/ru.js @@ -1,25 +1,25 @@ define({ - ru: { - 'Allowed values:' : 'Допустимые значения:', - 'Compare all with predecessor': 'Сравнить с предыдущей версией', - 'compare changes to:' : 'сравнить с:', - 'compared to' : 'в сравнении с', - 'Default value:' : 'По умолчанию:', - 'Description' : 'Описание', - 'Field' : 'Название', - 'General' : 'Общая информация', - 'Generated with' : 'Сгенерировано с помощью', - 'Name' : 'Название', - 'No response values.' : 'Нет значений для ответа.', - 'optional' : 'необязательный', - 'Parameter' : 'Параметр', - 'Permission:' : 'Разрешено:', - 'Response' : 'Ответ', - 'Send' : 'Отправить', - 'Send a Sample Request' : 'Отправить тестовый запрос', - 'show up to version:' : 'показать версию:', - 'Size range:' : 'Ограничения:', - 'Type' : 'Тип', - 'url' : 'URL' - } + ru: { + 'Allowed values:': 'Допустимые значения:', + 'Compare all with predecessor': 'Сравнить с предыдущей версией', + 'compare changes to:': 'сравнить с:', + 'compared to': 'в сравнении с', + 'Default value:': 'По умолчанию:', + 'Description': 'Описание', + 'Field': 'Название', + 'General': 'Общая информация', + 'Generated with': 'Сгенерировано с помощью', + 'Name': 'Название', + 'No response values.': 'Нет значений для ответа.', + 'optional': 'необязательный', + 'Parameter': 'Параметр', + 'Permission:': 'Разрешено:', + 'Response': 'Ответ', + 'Send': 'Отправить', + 'Send a Sample Request': 'Отправить тестовый запрос', + 'show up to version:': 'показать версию:', + 'Size range:': 'Ограничения:', + 'Type': 'Тип', + 'url': 'URL' + } }); diff --git a/apidoc/locales/tr.js b/apidoc/locales/tr.js index 5c64e52d..beef64c2 100644 --- a/apidoc/locales/tr.js +++ b/apidoc/locales/tr.js @@ -1,25 +1,25 @@ define({ - tr: { - 'Allowed values:' : 'İzin verilen değerler:', - 'Compare all with predecessor': 'Tümünü öncekiler ile karşılaştır', - 'compare changes to:' : 'değişiklikleri karşılaştır:', - 'compared to' : 'karşılaştır', - 'Default value:' : 'Varsayılan değer:', - 'Description' : 'Açıklama', - 'Field' : 'Alan', - 'General' : 'Genel', - 'Generated with' : 'Oluşturan', - 'Name' : 'İsim', - 'No response values.' : 'Dönüş verisi yok.', - 'optional' : 'opsiyonel', - 'Parameter' : 'Parametre', - 'Permission:' : 'İzin:', - 'Response' : 'Dönüş', - 'Send' : 'Gönder', - 'Send a Sample Request' : 'Örnek istek gönder', - 'show up to version:' : 'bu versiyona kadar göster:', - 'Size range:' : 'Boyut aralığı:', - 'Type' : 'Tip', - 'url' : 'url' - } + tr: { + 'Allowed values:': 'İzin verilen değerler:', + 'Compare all with predecessor': 'Tümünü öncekiler ile karşılaştır', + 'compare changes to:': 'değişiklikleri karşılaştır:', + 'compared to': 'karşılaştır', + 'Default value:': 'Varsayılan değer:', + 'Description': 'Açıklama', + 'Field': 'Alan', + 'General': 'Genel', + 'Generated with': 'Oluşturan', + 'Name': 'İsim', + 'No response values.': 'Dönüş verisi yok.', + 'optional': 'opsiyonel', + 'Parameter': 'Parametre', + 'Permission:': 'İzin:', + 'Response': 'Dönüş', + 'Send': 'Gönder', + 'Send a Sample Request': 'Örnek istek gönder', + 'show up to version:': 'bu versiyona kadar göster:', + 'Size range:': 'Boyut aralığı:', + 'Type': 'Tip', + 'url': 'url' + } }); diff --git a/apidoc/locales/vi.js b/apidoc/locales/vi.js index 7ce77050..d6d8d8f7 100644 --- a/apidoc/locales/vi.js +++ b/apidoc/locales/vi.js @@ -1,25 +1,25 @@ define({ - vi: { - 'Allowed values:' : 'Giá trị chấp nhận:', - 'Compare all with predecessor': 'So sánh với tất cả phiên bản trước', - 'compare changes to:' : 'so sánh sự thay đổi với:', - 'compared to' : 'so sánh với', - 'Default value:' : 'Giá trị mặc định:', - 'Description' : 'Chú thích', - 'Field' : 'Trường dữ liệu', - 'General' : 'Tổng quan', - 'Generated with' : 'Được tạo bởi', - 'Name' : 'Tên', - 'No response values.' : 'Không có kết quả trả về.', - 'optional' : 'Tùy chọn', - 'Parameter' : 'Tham số', - 'Permission:' : 'Quyền hạn:', - 'Response' : 'Kết quả', - 'Send' : 'Gửi', - 'Send a Sample Request' : 'Gửi một yêu cầu mẫu', - 'show up to version:' : 'hiển thị phiên bản:', - 'Size range:' : 'Kích cỡ:', - 'Type' : 'Kiểu', - 'url' : 'liên kết' - } + vi: { + 'Allowed values:': 'Giá trị chấp nhận:', + 'Compare all with predecessor': 'So sánh với tất cả phiên bản trước', + 'compare changes to:': 'so sánh sự thay đổi với:', + 'compared to': 'so sánh với', + 'Default value:': 'Giá trị mặc định:', + 'Description': 'Chú thích', + 'Field': 'Trường dữ liệu', + 'General': 'Tổng quan', + 'Generated with': 'Được tạo bởi', + 'Name': 'Tên', + 'No response values.': 'Không có kết quả trả về.', + 'optional': 'Tùy chọn', + 'Parameter': 'Tham số', + 'Permission:': 'Quyền hạn:', + 'Response': 'Kết quả', + 'Send': 'Gửi', + 'Send a Sample Request': 'Gửi một yêu cầu mẫu', + 'show up to version:': 'hiển thị phiên bản:', + 'Size range:': 'Kích cỡ:', + 'Type': 'Kiểu', + 'url': 'liên kết' + } }); diff --git a/apidoc/locales/zh.js b/apidoc/locales/zh.js index 66522067..095cdb6a 100644 --- a/apidoc/locales/zh.js +++ b/apidoc/locales/zh.js @@ -1,25 +1,25 @@ define({ - zh: { - 'Allowed values​​:' : '允許值:', - 'Compare all with predecessor': '預先比較所有', - 'compare changes to:' : '比較變更:', - 'compared to' : '對比', - 'Default value:' : '默認值:', - 'Description' : '描述', - 'Field' : '字段', - 'General' : '概括', - 'Generated with' : '生成工具', - 'Name' : '名稱', - 'No response values​​.' : '無對應資料.', - 'optional' : '選項', - 'Parameter' : '參數', - 'Permission:' : '允許:', - 'Response' : '回應', - 'Send' : '發送', - 'Send a Sample Request' : '發送試用需求', - 'show up to version:' : '顯示到版本:', - 'Size range:' : '尺寸範圍:', - 'Type' : '類型', - 'url' : '網址' - } + zh: { + 'Allowed values​​:': '允許值:', + 'Compare all with predecessor': '預先比較所有', + 'compare changes to:': '比較變更:', + 'compared to': '對比', + 'Default value:': '默認值:', + 'Description': '描述', + 'Field': '字段', + 'General': '概括', + 'Generated with': '生成工具', + 'Name': '名稱', + 'No response values​​.': '無對應資料.', + 'optional': '選項', + 'Parameter': '參數', + 'Permission:': '允許:', + 'Response': '回應', + 'Send': '發送', + 'Send a Sample Request': '發送試用需求', + 'show up to version:': '顯示到版本:', + 'Size range:': '尺寸範圍:', + 'Type': '類型', + 'url': '網址' + } }); diff --git a/apidoc/locales/zh_cn.js b/apidoc/locales/zh_cn.js index 1938ca18..1ffa5b8e 100644 --- a/apidoc/locales/zh_cn.js +++ b/apidoc/locales/zh_cn.js @@ -1,25 +1,25 @@ define({ - 'zh_cn': { - 'Allowed values:' : '允许值:', - 'Compare all with predecessor': '与所有较早的比较', - 'compare changes to:' : '将当前版本与指定版本比较:', - 'compared to' : '相比于', - 'Default value:' : '默认值:', - 'Description' : '描述', - 'Field' : '字段', - 'General' : '概要', - 'Generated with' : '基于', - 'Name' : '名称', - 'No response values.' : '无返回值.', - 'optional' : '可选', - 'Parameter' : '参数', - 'Permission:' : '权限:', - 'Response' : '返回', - 'Send' : '发送', - 'Send a Sample Request' : '发送示例请求', - 'show up to version:' : '显示到指定版本:', - 'Size range:' : '取值范围:', - 'Type' : '类型', - 'url' : '网址' - } + 'zh_cn': { + 'Allowed values:': '允许值:', + 'Compare all with predecessor': '与所有较早的比较', + 'compare changes to:': '将当前版本与指定版本比较:', + 'compared to': '相比于', + 'Default value:': '默认值:', + 'Description': '描述', + 'Field': '字段', + 'General': '概要', + 'Generated with': '基于', + 'Name': '名称', + 'No response values.': '无返回值.', + 'optional': '可选', + 'Parameter': '参数', + 'Permission:': '权限:', + 'Response': '返回', + 'Send': '发送', + 'Send a Sample Request': '发送示例请求', + 'show up to version:': '显示到指定版本:', + 'Size range:': '取值范围:', + 'Type': '类型', + 'url': '网址' + } }); diff --git a/apidoc/main.js b/apidoc/main.js index 9d31fa5f..842ca58b 100644 --- a/apidoc/main.js +++ b/apidoc/main.js @@ -1,827 +1,848 @@ require.config({ - paths: { - bootstrap: './vendor/bootstrap.min', - diffMatchPatch: './vendor/diff_match_patch.min', - handlebars: './vendor/handlebars.min', - handlebarsExtended: './utils/handlebars_helper', - jquery: './vendor/jquery.min', - locales: './locales/locale', - lodash: './vendor/lodash.custom.min', - pathToRegexp: './vendor/path-to-regexp/index', - prettify: './vendor/prettify/prettify', - semver: './vendor/semver.min', - utilsSampleRequest: './utils/send_sample_request', - webfontloader: './vendor/webfontloader', - list: './vendor/list.min' + paths: { + bootstrap: './vendor/bootstrap.min', + diffMatchPatch: './vendor/diff_match_patch.min', + handlebars: './vendor/handlebars.min', + handlebarsExtended: './utils/handlebars_helper', + jquery: './vendor/jquery.min', + locales: './locales/locale', + lodash: './vendor/lodash.custom.min', + pathToRegexp: './vendor/path-to-regexp/index', + prettify: './vendor/prettify/prettify', + semver: './vendor/semver.min', + utilsSampleRequest: './utils/send_sample_request', + webfontloader: './vendor/webfontloader', + list: './vendor/list.min' + }, + shim: { + bootstrap: { + deps: ['jquery'] }, - shim: { - bootstrap: { - deps: ['jquery'] - }, - diffMatchPatch: { - exports: 'diff_match_patch' - }, - handlebars: { - exports: 'Handlebars' - }, - handlebarsExtended: { - deps: ['jquery', 'handlebars'], - exports: 'Handlebars' - }, - prettify: { - exports: 'prettyPrint' - } + diffMatchPatch: { + exports: 'diff_match_patch' }, - urlArgs: 'v=' + (new Date()).getTime(), - waitSeconds: 15 + handlebars: { + exports: 'Handlebars' + }, + handlebarsExtended: { + deps: ['jquery', 'handlebars'], + exports: 'Handlebars' + }, + prettify: { + exports: 'prettyPrint' + } + }, + urlArgs: 'v=' + (new Date()).getTime(), + waitSeconds: 15 }); require([ - 'jquery', - 'lodash', - 'locales', - 'handlebarsExtended', - './api_project.js', - './api_data.js', - 'prettify', - 'utilsSampleRequest', - 'semver', - 'webfontloader', - 'bootstrap', - 'pathToRegexp', - 'list' -], function($, _, locale, Handlebars, apiProject, apiData, prettyPrint, sampleRequest, semver, WebFont) { + 'jquery', + 'lodash', + 'locales', + 'handlebarsExtended', + './api_project.js', + './api_data.js', + 'prettify', + 'utilsSampleRequest', + 'semver', + 'webfontloader', + 'bootstrap', + 'pathToRegexp', + 'list' +], function ($, _, locale, Handlebars, apiProject, apiData, prettyPrint, sampleRequest, semver, WebFont) { - // load google web fonts - loadGoogleFontCss(); + // load google web fonts + loadGoogleFontCss(); - var api = apiData.api; + var api = apiData.api; - // - // Templates - // - var templateHeader = Handlebars.compile( $('#template-header').html() ); - var templateFooter = Handlebars.compile( $('#template-footer').html() ); - var templateArticle = Handlebars.compile( $('#template-article').html() ); - var templateCompareArticle = Handlebars.compile( $('#template-compare-article').html() ); - var templateGenerator = Handlebars.compile( $('#template-generator').html() ); - var templateProject = Handlebars.compile( $('#template-project').html() ); - var templateSections = Handlebars.compile( $('#template-sections').html() ); - var templateSidenav = Handlebars.compile( $('#template-sidenav').html() ); + // + // Templates + // + var templateHeader = Handlebars.compile($('#template-header').html()); + var templateFooter = Handlebars.compile($('#template-footer').html()); + var templateArticle = Handlebars.compile($('#template-article').html()); + var templateCompareArticle = Handlebars.compile($('#template-compare-article').html()); + var templateGenerator = Handlebars.compile($('#template-generator').html()); + var templateProject = Handlebars.compile($('#template-project').html()); + var templateSections = Handlebars.compile($('#template-sections').html()); + var templateSidenav = Handlebars.compile($('#template-sidenav').html()); - // - // apiProject defaults - // - if ( ! apiProject.template) - apiProject.template = {}; + // + // apiProject defaults + // + if (!apiProject.template) + apiProject.template = {}; - if (apiProject.template.withCompare == null) - apiProject.template.withCompare = true; + if (apiProject.template.withCompare == null) + apiProject.template.withCompare = true; - if (apiProject.template.withGenerator == null) - apiProject.template.withGenerator = true; + if (apiProject.template.withGenerator == null) + apiProject.template.withGenerator = true; - if (apiProject.template.forceLanguage) - locale.setLanguage(apiProject.template.forceLanguage); + if (apiProject.template.forceLanguage) + locale.setLanguage(apiProject.template.forceLanguage); - // Setup jQuery Ajax - $.ajaxSetup(apiProject.template.jQueryAjaxSetup); + // Setup jQuery Ajax + $.ajaxSetup(apiProject.template.jQueryAjaxSetup); - // - // Data transform - // - // grouped by group - var apiByGroup = _.groupBy(api, function(entry) { - return entry.group; + // + // Data transform + // + // grouped by group + var apiByGroup = _.groupBy(api, function (entry) { + return entry.group; + }); + + // grouped by group and name + var apiByGroupAndName = {}; + $.each(apiByGroup, function (index, entries) { + apiByGroupAndName[index] = _.groupBy(entries, function (entry) { + return entry.name; }); + }); - // grouped by group and name - var apiByGroupAndName = {}; - $.each(apiByGroup, function(index, entries) { - apiByGroupAndName[index] = _.groupBy(entries, function(entry) { - return entry.name; + // + // sort api within a group by title ASC and custom order + // + var newList = []; + var umlauts = { + 'ä': 'ae', + 'ü': 'ue', + 'ö': 'oe', + 'ß': 'ss' + }; // TODO: remove in version 1.0 + $.each(apiByGroupAndName, function (index, groupEntries) { + // get titles from the first entry of group[].name[] (name has versioning) + var titles = []; + $.each(groupEntries, function (titleName, entries) { + var title = entries[0].title; + if (title !== undefined) { + title.toLowerCase().replace(/[äöüß]/g, function ($0) { + return umlauts[$0]; }); + titles.push(title + '#~#' + titleName); // '#~#' keep reference to titleName after sorting + } }); - - // - // sort api within a group by title ASC and custom order - // - var newList = []; - var umlauts = { 'ä': 'ae', 'ü': 'ue', 'ö': 'oe', 'ß': 'ss' }; // TODO: remove in version 1.0 - $.each (apiByGroupAndName, function(index, groupEntries) { - // get titles from the first entry of group[].name[] (name has versioning) - var titles = []; - $.each (groupEntries, function(titleName, entries) { - var title = entries[0].title; - if(title !== undefined) { - title.toLowerCase().replace(/[äöüß]/g, function($0) { return umlauts[$0]; }); - titles.push(title + '#~#' + titleName); // '#~#' keep reference to titleName after sorting - } - }); - // sort by name ASC - titles.sort(); - - // custom order - if (apiProject.order) - titles = sortByOrder(titles, apiProject.order, '#~#'); - - // add single elements to the new list - titles.forEach(function(name) { - var values = name.split('#~#'); - var key = values[1]; - groupEntries[key].forEach(function(entry) { - newList.push(entry); - }); - }); - }); - // api overwrite with ordered list - api = newList; - - // - // Group- and Versionlists - // - var apiGroups = {}; - var apiGroupTitles = {}; - var apiVersions = {}; - apiVersions[apiProject.version] = 1; - - $.each(api, function(index, entry) { - apiGroups[entry.group] = 1; - apiGroupTitles[entry.group] = entry.groupTitle || entry.group; - apiVersions[entry.version] = 1; - }); - - // sort groups - apiGroups = Object.keys(apiGroups); - apiGroups.sort(); + // sort by name ASC + titles.sort(); // custom order if (apiProject.order) - apiGroups = sortByOrder(apiGroups, apiProject.order); + titles = sortByOrder(titles, apiProject.order, '#~#'); - // sort versions DESC - apiVersions = Object.keys(apiVersions); - apiVersions.sort(semver.compare); - apiVersions.reverse(); + // add single elements to the new list + titles.forEach(function (name) { + var values = name.split('#~#'); + var key = values[1]; + groupEntries[key].forEach(function (entry) { + newList.push(entry); + }); + }); + }); + // api overwrite with ordered list + api = newList; - // - // create Navigationlist - // - var nav = []; - apiGroups.forEach(function(group) { - // Mainmenu entry - nav.push({ - group: group, - isHeader: true, - title: apiGroupTitles[group] - }); + // + // Group- and Versionlists + // + var apiGroups = {}; + var apiGroupTitles = {}; + var apiVersions = {}; + apiVersions[apiProject.version] = 1; - // Submenu - var oldName = ''; - api.forEach(function(entry) { - if (entry.group === group) { - if (oldName !== entry.name) { - nav.push({ - title: entry.title, - group: group, - name: entry.name, - type: entry.type, - version: entry.version - }); - } else { - nav.push({ - title: entry.title, - group: group, - hidden: true, - name: entry.name, - type: entry.type, - version: entry.version - }); - } - oldName = entry.name; - } - }); + $.each(api, function (index, entry) { + apiGroups[entry.group] = 1; + apiGroupTitles[entry.group] = entry.groupTitle || entry.group; + apiVersions[entry.version] = 1; + }); + + // sort groups + apiGroups = Object.keys(apiGroups); + apiGroups.sort(); + + // custom order + if (apiProject.order) + apiGroups = sortByOrder(apiGroups, apiProject.order); + + // sort versions DESC + apiVersions = Object.keys(apiVersions); + apiVersions.sort(semver.compare); + apiVersions.reverse(); + + // + // create Navigationlist + // + var nav = []; + apiGroups.forEach(function (group) { + // Mainmenu entry + nav.push({ + group: group, + isHeader: true, + title: apiGroupTitles[group] }); - /** - * Add navigation items by analyzing the HTML content and searching for h1 and h2 tags - * @param nav Object the navigation array - * @param content string the compiled HTML content - * @param index where to insert items - * @return boolean true if any good-looking (i.e. with a group identifier)

    tag was found - */ - function add_nav(nav, content, index) { - var found_level1 = false; - if ( ! content) { - return found_level1; - } - var topics = content.match(/(.+?)<\/h(1|2)>/gi); - if ( topics ) { - topics.forEach(function(entry) { - var level = entry.substring(2,3); - var title = entry.replace(/<.+?>/g, ''); // Remove all HTML tags for the title - var entry_tags = entry.match(/id="api-([^\-]+)(?:-(.+))?"/); // Find the group and name in the id property - var group = (entry_tags ? entry_tags[1] : null); - var name = (entry_tags ? entry_tags[2] : null); - if (level==1 && title && group) { - nav.splice(index, 0, { - group: group, - isHeader: true, - title: title, - isFixed: true - }); - index++; - found_level1 = true; - } - if (level==2 && title && group && name) { - nav.splice(index, 0, { - group: group, - name: name, - isHeader: false, - title: title, - isFixed: false, - version: '1.0' - }); - index++; - } + // Submenu + var oldName = ''; + api.forEach(function (entry) { + if (entry.group === group) { + if (oldName !== entry.name) { + nav.push({ + title: entry.title, + group: group, + name: entry.name, + type: entry.type, + version: entry.version + }); + } else { + nav.push({ + title: entry.title, + group: group, + hidden: true, + name: entry.name, + type: entry.type, + version: entry.version }); } - return found_level1; + oldName = entry.name; + } + }); + }); + + /** + * Add navigation items by analyzing the HTML content and searching for h1 and h2 tags + * @param nav Object the navigation array + * @param content string the compiled HTML content + * @param index where to insert items + * @return boolean true if any good-looking (i.e. with a group identifier)

    tag was found + */ + function add_nav(nav, content, index) { + var found_level1 = false; + if (!content) { + return found_level1; } - - // Mainmenu Header entry - if (apiProject.header) { - var found_level1 = add_nav(nav, apiProject.header.content, 0); // Add level 1 and 2 titles - if (!found_level1) { // If no Level 1 tags were found, make a title - nav.unshift({ - group: '_', - isHeader: true, - title: (apiProject.header.title == null) ? locale.__('General') : apiProject.header.title, - isFixed: true - }); - } - } - - // Mainmenu Footer entry - if (apiProject.footer) { - var last_nav_index = nav.length; - var found_level1 = add_nav(nav, apiProject.footer.content, nav.length); // Add level 1 and 2 titles - if (!found_level1 && apiProject.footer.title != null) { // If no Level 1 tags were found, make a title - nav.splice(last_nav_index, 0, { - group: '_footer', - isHeader: true, - title: apiProject.footer.title, - isFixed: true - }); - } - } - - // render pagetitle - var title = apiProject.title ? apiProject.title : 'apiDoc: ' + apiProject.name + ' - ' + apiProject.version; - $(document).attr('title', title); - - // remove loader - $('#loader').remove(); - - // render sidenav - var fields = { - nav: nav - }; - $('#sidenav').append( templateSidenav(fields) ); - - // render Generator - $('#generator').append( templateGenerator(apiProject) ); - - // render Project - _.extend(apiProject, { versions: apiVersions}); - $('#project').append( templateProject(apiProject) ); - - // render apiDoc, header/footer documentation - if (apiProject.header) - $('#header').append( templateHeader(apiProject.header) ); - - if (apiProject.footer) - $('#footer').append( templateFooter(apiProject.footer) ); - - // - // Render Sections and Articles - // - var articleVersions = {}; - var content = ''; - apiGroups.forEach(function(groupEntry) { - var articles = []; - var oldName = ''; - var fields = {}; - var title = groupEntry; - var description = ''; - articleVersions[groupEntry] = {}; - - // render all articles of a group - api.forEach(function(entry) { - if(groupEntry === entry.group) { - if (oldName !== entry.name) { - // determine versions - api.forEach(function(versionEntry) { - if (groupEntry === versionEntry.group && entry.name === versionEntry.name) { - if ( ! articleVersions[entry.group].hasOwnProperty(entry.name) ) { - articleVersions[entry.group][entry.name] = []; - } - articleVersions[entry.group][entry.name].push(versionEntry.version); - } - }); - fields = { - article: entry, - versions: articleVersions[entry.group][entry.name] - }; - } else { - fields = { - article: entry, - hidden: true, - versions: articleVersions[entry.group][entry.name] - }; - } - - // add prefix URL for endpoint - if (apiProject.url) - fields.article.url = apiProject.url + fields.article.url; - - addArticleSettings(fields, entry); - - if (entry.groupTitle) - title = entry.groupTitle; - - // TODO: make groupDescription compareable with older versions (not important for the moment) - if (entry.groupDescription) - description = entry.groupDescription; - - articles.push({ - article: templateArticle(fields), - group: entry.group, - name: entry.name - }); - oldName = entry.name; - } - }); - - // render Section with Articles - var fields = { - group: groupEntry, + var topics = content.match(/(.+?)<\/h(1|2)>/gi); + if (topics) { + topics.forEach(function (entry) { + var level = entry.substring(2, 3); + var title = entry.replace(/<.+?>/g, ''); // Remove all HTML tags for the title + var entry_tags = entry.match(/id="api-([^\-]+)(?:-(.+))?"/); // Find the group and name in the id property + var group = (entry_tags ? entry_tags[1] : null); + var name = (entry_tags ? entry_tags[2] : null); + if (level == 1 && title && group) { + nav.splice(index, 0, { + group: group, + isHeader: true, title: title, - description: description, - articles: articles - }; - content += templateSections(fields); - }); - $('#sections').append( content ); - - // Bootstrap Scrollspy - $(this).scrollspy({ target: '#scrollingNav', offset: 18 }); - - // Content-Scroll on Navigation click. - $('.sidenav').find('a').on('click', function(e) { - e.preventDefault(); - var id = $(this).attr('href'); - if ($(id).length > 0) - $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 400); - window.location.hash = $(this).attr('href'); - }); - - // Quickjump on Pageload to hash position. - if(window.location.hash) { - var id = window.location.hash; - if ($(id).length > 0) - $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 0); - } - - /** - * Check if Parameter (sub) List has a type Field. - * Example: @apiSuccess varname1 No type. - * @apiSuccess {String} varname2 With type. - * - * @param {Object} fields - */ - function _hasTypeInFields(fields) { - var result = false; - $.each(fields, function(name) { - result = result || _.some(fields[name], function(item) { return item.type; }); - }); - return result; - } - - /** - * On Template changes, recall plugins. - */ - function initDynamic() { - // Bootstrap popover - $('button[data-toggle="popover"]').popover().click(function(e) { - e.preventDefault(); - }); - - var version = $('#version strong').html(); - $('#sidenav li').removeClass('is-new'); - if (apiProject.template.withCompare) { - $('#sidenav li[data-version=\'' + version + '\']').each(function(){ - var group = $(this).data('group'); - var name = $(this).data('name'); - var length = $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\']').length; - var index = $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\']').index($(this)); - if (length === 1 || index === (length - 1)) - $(this).addClass('is-new'); - }); + isFixed: true + }); + index++; + found_level1 = true; } - - // tabs - $('.nav-tabs-examples a').click(function (e) { - e.preventDefault(); - $(this).tab('show'); - }); - $('.nav-tabs-examples').find('a:first').tab('show'); - - // sample request switch - $('.sample-request-switch').click(function (e) { - var name = '.' + $(this).attr('name') + '-fields'; - $(name).addClass('hide'); - $(this).parent().next(name).removeClass('hide'); - }); - - // call scrollspy refresh method - $(window).scrollspy('refresh'); - - // init modules - sampleRequest.initDynamic(); + if (level == 2 && title && group && name) { + nav.splice(index, 0, { + group: group, + name: name, + isHeader: false, + title: title, + isFixed: false, + version: '1.0' + }); + index++; + } + }); } - initDynamic(); + return found_level1; + } - // Pre- / Code-Format - prettyPrint(); + // Mainmenu Header entry + if (apiProject.header) { + var found_level1 = add_nav(nav, apiProject.header.content, 0); // Add level 1 and 2 titles + if (!found_level1) { // If no Level 1 tags were found, make a title + nav.unshift({ + group: '_', + isHeader: true, + title: (apiProject.header.title == null) ? locale.__('General') : apiProject.header.title, + isFixed: true + }); + } + } - // - // HTML-Template specific jQuery-Functions - // - // Change Main Version - $('#versions li.version a').on('click', function(e) { - e.preventDefault(); + // Mainmenu Footer entry + if (apiProject.footer) { + var last_nav_index = nav.length; + var found_level1 = add_nav(nav, apiProject.footer.content, nav.length); // Add level 1 and 2 titles + if (!found_level1 && apiProject.footer.title != null) { // If no Level 1 tags were found, make a title + nav.splice(last_nav_index, 0, { + group: '_footer', + isHeader: true, + title: apiProject.footer.title, + isFixed: true + }); + } + } - var selectedVersion = $(this).html(); - $('#version strong').html(selectedVersion); + // render pagetitle + var title = apiProject.title ? apiProject.title : 'apiDoc: ' + apiProject.name + ' - ' + apiProject.version; + $(document).attr('title', title); - // hide all - $('article').addClass('hide'); - $('#sidenav li:not(.nav-fixed)').addClass('hide'); + // remove loader + $('#loader').remove(); - // show 1st equal or lower Version of each entry - $('article[data-version]').each(function(index) { - var group = $(this).data('group'); - var name = $(this).data('name'); - var version = $(this).data('version'); + // render sidenav + var fields = { + nav: nav + }; + $('#sidenav').append(templateSidenav(fields)); - if (semver.lte(version, selectedVersion)) { - if ($('article[data-group=\'' + group + '\'][data-name=\'' + name + '\']:visible').length === 0) { - // enable Article - $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('hide'); - // enable Navigation - $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('hide'); - $('#sidenav li.nav-header[data-group=\'' + group + '\']').removeClass('hide'); - } + // render Generator + $('#generator').append(templateGenerator(apiProject)); + + // render Project + _.extend(apiProject, { + versions: apiVersions + }); + $('#project').append(templateProject(apiProject)); + + // render apiDoc, header/footer documentation + if (apiProject.header) + $('#header').append(templateHeader(apiProject.header)); + + if (apiProject.footer) + $('#footer').append(templateFooter(apiProject.footer)); + + // + // Render Sections and Articles + // + var articleVersions = {}; + var content = ''; + apiGroups.forEach(function (groupEntry) { + var articles = []; + var oldName = ''; + var fields = {}; + var title = groupEntry; + var description = ''; + articleVersions[groupEntry] = {}; + + // render all articles of a group + api.forEach(function (entry) { + if (groupEntry === entry.group) { + if (oldName !== entry.name) { + // determine versions + api.forEach(function (versionEntry) { + if (groupEntry === versionEntry.group && entry.name === versionEntry.name) { + if (!articleVersions[entry.group].hasOwnProperty(entry.name)) { + articleVersions[entry.group][entry.name] = []; + } + articleVersions[entry.group][entry.name].push(versionEntry.version); } - }); - - // show 1st equal or lower Version of each entry - $('article[data-version]').each(function(index) { - var group = $(this).data('group'); - $('section#api-' + group).removeClass('hide'); - if ($('section#api-' + group + ' article:visible').length === 0) { - $('section#api-' + group).addClass('hide'); - } else { - $('section#api-' + group).removeClass('hide'); - } - }); - - initDynamic(); - return; - }); - - // compare all article with their predecessor - $('#compareAllWithPredecessor').on('click', changeAllVersionCompareTo); - - // change version of an article - $('article .versions li.version a').on('click', changeVersionCompareTo); - - // compare url-parameter - $.urlParam = function(name) { - var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); - return (results && results[1]) ? results[1] : null; - }; - - if ($.urlParam('compare')) { - // URL Paramter ?compare=1 is set - $('#compareAllWithPredecessor').trigger('click'); - - if (window.location.hash) { - var id = window.location.hash; - $('html,body').animate({ scrollTop: parseInt($(id).offset().top) - 18 }, 0); - } - } - - /** - * Initialize search - */ - var options = { - valueNames: [ 'nav-list-item' ] - }; - var endpointsList = new List('scrollingNav', options); - - /** - * Set initial focus to search input - */ - $('#scrollingNav .sidenav-search input.search').focus(); - - /** - * Detect ESC key to reset search - */ - $(document).keyup(function(e) { - if (e.keyCode === 27) $('span.search-reset').click(); - }); - - /** - * Search reset - */ - $('span.search-reset').on('click', function() { - $('#scrollingNav .sidenav-search input.search') - .val("") - .focus() - ; - endpointsList.search(); - }); - - /** - * Change version of an article to compare it to an other version. - */ - function changeVersionCompareTo(e) { - e.preventDefault(); - - var $root = $(this).parents('article'); - var selectedVersion = $(this).html(); - var $button = $root.find('.version'); - var currentVersion = $button.find('strong').html(); - $button.find('strong').html(selectedVersion); - - var group = $root.data('group'); - var name = $root.data('name'); - var version = $root.data('version'); - - var compareVersion = $root.data('compare-version'); - - if (compareVersion === selectedVersion) - return; - - if ( ! compareVersion && version == selectedVersion) - return; - - if (compareVersion && articleVersions[group][name][0] === selectedVersion || version === selectedVersion) { - // the version of the entry is set to the highest version (reset) - resetArticle(group, name, version); - } else { - var $compareToArticle = $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + selectedVersion + '\']'); - - var sourceEntry = {}; - var compareEntry = {}; - $.each(apiByGroupAndName[group][name], function(index, entry) { - if (entry.version === version) - sourceEntry = entry; - if (entry.version === selectedVersion) - compareEntry = entry; - }); - - var fields = { - article: sourceEntry, - compare: compareEntry, - versions: articleVersions[group][name] - }; - - // add unique id - // TODO: replace all group-name-version in template with id. - fields.article.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version; - fields.article.id = fields.article.id.replace(/\./g, '_'); - - fields.compare.id = fields.compare.group + '-' + fields.compare.name + '-' + fields.compare.version; - fields.compare.id = fields.compare.id.replace(/\./g, '_'); - - var entry = sourceEntry; - if (entry.parameter && entry.parameter.fields) - fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields); - - if (entry.error && entry.error.fields) - fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields); - - if (entry.success && entry.success.fields) - fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields); - - if (entry.info && entry.info.fields) - fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields); - - var entry = compareEntry; - if (fields._hasTypeInParameterFields !== true && entry.parameter && entry.parameter.fields) - fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields); - - if (fields._hasTypeInErrorFields !== true && entry.error && entry.error.fields) - fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields); - - if (fields._hasTypeInSuccessFields !== true && entry.success && entry.success.fields) - fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields); - - if (fields._hasTypeInInfoFields !== true && entry.info && entry.info.fields) - fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields); - - var content = templateCompareArticle(fields); - $root.after(content); - var $content = $root.next(); - - // Event on.click re-assign - $content.find('.versions li.version a').on('click', changeVersionCompareTo); - - // select navigation - $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + currentVersion + '\']').addClass('has-modifications'); - - $root.remove(); - // TODO: on change main version or select the highest version re-render - } - - initDynamic(); - } - - /** - * Compare all currently selected Versions with their predecessor. - */ - function changeAllVersionCompareTo(e) { - e.preventDefault(); - $('article:visible .versions').each(function(){ - var $root = $(this).parents('article'); - var currentVersion = $root.data('version'); - var $foundElement = null; - $(this).find('li.version a').each(function() { - var selectVersion = $(this).html(); - if (selectVersion < currentVersion && ! $foundElement) - $foundElement = $(this); - }); - - if($foundElement) - $foundElement.trigger('click'); - }); - initDynamic(); - } - - /** - * Sort the fields. - */ - function sortFields(fields_object) { - $.each(fields_object, function (key, fields) { - - var reversed = fields.slice().reverse() - - var max_dot_count = Math.max.apply(null, reversed.map(function (item) { - return item.field.split(".").length - 1; - })) - - for (var dot_count = 1; dot_count <= max_dot_count; dot_count++) { - reversed.forEach(function (item, index) { - var parts = item.field.split("."); - if (parts.length - 1 == dot_count) { - var fields_names = fields.map(function (item) { return item.field; }); - if (parts.slice(1).length >= 1) { - var prefix = parts.slice(0, parts.length - 1).join("."); - var prefix_index = fields_names.indexOf(prefix); - if (prefix_index > -1) { - fields.splice(fields_names.indexOf(item.field), 1); - fields.splice(prefix_index + 1, 0, item); - } - } - } - }); - } - }); - } - - /** - * Add article settings. - */ - function addArticleSettings(fields, entry) { - // add unique id - // TODO: replace all group-name-version in template with id. - fields.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version; - fields.id = fields.id.replace(/\./g, '_'); - - if (entry.header && entry.header.fields) { - sortFields(entry.header.fields); - fields._hasTypeInHeaderFields = _hasTypeInFields(entry.header.fields); - } - - if (entry.parameter && entry.parameter.fields) { - sortFields(entry.parameter.fields); - fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields); - } - - if (entry.error && entry.error.fields) { - sortFields(entry.error.fields); - fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields); - } - - if (entry.success && entry.success.fields) { - sortFields(entry.success.fields); - fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields); - } - - if (entry.info && entry.info.fields) { - sortFields(entry.info.fields); - fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields); - } - - // add template settings - fields.template = apiProject.template; - } - - /** - * Render Article. - */ - function renderArticle(group, name, version) { - var entry = {}; - $.each(apiByGroupAndName[group][name], function(index, currentEntry) { - if (currentEntry.version === version) - entry = currentEntry; - }); - var fields = { + }); + fields = { article: entry, - versions: articleVersions[group][name] - }; + versions: articleVersions[entry.group][entry.name] + }; + } else { + fields = { + article: entry, + hidden: true, + versions: articleVersions[entry.group][entry.name] + }; + } + + // add prefix URL for endpoint + if (apiProject.url) + fields.article.url = apiProject.url + fields.article.url; addArticleSettings(fields, entry); - return templateArticle(fields); + if (entry.groupTitle) + title = entry.groupTitle; + + // TODO: make groupDescription compareable with older versions (not important for the moment) + if (entry.groupDescription) + description = entry.groupDescription; + + articles.push({ + article: templateArticle(fields), + group: entry.group, + name: entry.name + }); + oldName = entry.name; + } + }); + + // render Section with Articles + var fields = { + group: groupEntry, + title: title, + description: description, + articles: articles + }; + content += templateSections(fields); + }); + $('#sections').append(content); + + // Bootstrap Scrollspy + $(this).scrollspy({ + target: '#scrollingNav', + offset: 18 + }); + + // Content-Scroll on Navigation click. + $('.sidenav').find('a').on('click', function (e) { + e.preventDefault(); + var id = $(this).attr('href'); + if ($(id).length > 0) + $('html,body').animate({ + scrollTop: parseInt($(id).offset().top) + }, 400); + window.location.hash = $(this).attr('href'); + }); + + // Quickjump on Pageload to hash position. + if (window.location.hash) { + var id = window.location.hash; + if ($(id).length > 0) + $('html,body').animate({ + scrollTop: parseInt($(id).offset().top) + }, 0); + } + + /** + * Check if Parameter (sub) List has a type Field. + * Example: @apiSuccess varname1 No type. + * @apiSuccess {String} varname2 With type. + * + * @param {Object} fields + */ + function _hasTypeInFields(fields) { + var result = false; + $.each(fields, function (name) { + result = result || _.some(fields[name], function (item) { + return item.type; + }); + }); + return result; + } + + /** + * On Template changes, recall plugins. + */ + function initDynamic() { + // Bootstrap popover + $('button[data-toggle="popover"]').popover().click(function (e) { + e.preventDefault(); + }); + + var version = $('#version strong').html(); + $('#sidenav li').removeClass('is-new'); + if (apiProject.template.withCompare) { + $('#sidenav li[data-version=\'' + version + '\']').each(function () { + var group = $(this).data('group'); + var name = $(this).data('name'); + var length = $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\']').length; + var index = $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\']').index($(this)); + if (length === 1 || index === (length - 1)) + $(this).addClass('is-new'); + }); } - /** - * Render original Article and remove the current visible Article. - */ - function resetArticle(group, name, version) { - var $root = $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\']:visible'); - var content = renderArticle(group, name, version); + // tabs + $('.nav-tabs-examples a').click(function (e) { + e.preventDefault(); + $(this).tab('show'); + }); + $('.nav-tabs-examples').find('a:first').tab('show'); - $root.after(content); - var $content = $root.next(); + // sample request switch + $('.sample-request-switch').click(function (e) { + var name = '.' + $(this).attr('name') + '-fields'; + $(name).addClass('hide'); + $(this).parent().next(name).removeClass('hide'); + }); - // Event on.click muss neu zugewiesen werden (sollte eigentlich mit on automatisch funktionieren... sollte) - $content.find('.versions li.version a').on('click', changeVersionCompareTo); + // call scrollspy refresh method + $(window).scrollspy('refresh'); - $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('has-modifications'); + // init modules + sampleRequest.initDynamic(); + } + initDynamic(); - $root.remove(); - return; + // Pre- / Code-Format + prettyPrint(); + + // + // HTML-Template specific jQuery-Functions + // + // Change Main Version + $('#versions li.version a').on('click', function (e) { + e.preventDefault(); + + var selectedVersion = $(this).html(); + $('#version strong').html(selectedVersion); + + // hide all + $('article').addClass('hide'); + $('#sidenav li:not(.nav-fixed)').addClass('hide'); + + // show 1st equal or lower Version of each entry + $('article[data-version]').each(function (index) { + var group = $(this).data('group'); + var name = $(this).data('name'); + var version = $(this).data('version'); + + if (semver.lte(version, selectedVersion)) { + if ($('article[data-group=\'' + group + '\'][data-name=\'' + name + '\']:visible').length === 0) { + // enable Article + $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('hide'); + // enable Navigation + $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('hide'); + $('#sidenav li.nav-header[data-group=\'' + group + '\']').removeClass('hide'); + } + } + }); + + // show 1st equal or lower Version of each entry + $('article[data-version]').each(function (index) { + var group = $(this).data('group'); + $('section#api-' + group).removeClass('hide'); + if ($('section#api-' + group + ' article:visible').length === 0) { + $('section#api-' + group).addClass('hide'); + } else { + $('section#api-' + group).removeClass('hide'); + } + }); + + initDynamic(); + return; + }); + + // compare all article with their predecessor + $('#compareAllWithPredecessor').on('click', changeAllVersionCompareTo); + + // change version of an article + $('article .versions li.version a').on('click', changeVersionCompareTo); + + // compare url-parameter + $.urlParam = function (name) { + var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(window.location.href); + return (results && results[1]) ? results[1] : null; + }; + + if ($.urlParam('compare')) { + // URL Paramter ?compare=1 is set + $('#compareAllWithPredecessor').trigger('click'); + + if (window.location.hash) { + var id = window.location.hash; + $('html,body').animate({ + scrollTop: parseInt($(id).offset().top) - 18 + }, 0); + } + } + + /** + * Initialize search + */ + var options = { + valueNames: ['nav-list-item'] + }; + var endpointsList = new List('scrollingNav', options); + + /** + * Set initial focus to search input + */ + $('#scrollingNav .sidenav-search input.search').focus(); + + /** + * Detect ESC key to reset search + */ + $(document).keyup(function (e) { + if (e.keyCode === 27) $('span.search-reset').click(); + }); + + /** + * Search reset + */ + $('span.search-reset').on('click', function () { + $('#scrollingNav .sidenav-search input.search') + .val("") + .focus(); + endpointsList.search(); + }); + + /** + * Change version of an article to compare it to an other version. + */ + function changeVersionCompareTo(e) { + e.preventDefault(); + + var $root = $(this).parents('article'); + var selectedVersion = $(this).html(); + var $button = $root.find('.version'); + var currentVersion = $button.find('strong').html(); + $button.find('strong').html(selectedVersion); + + var group = $root.data('group'); + var name = $root.data('name'); + var version = $root.data('version'); + + var compareVersion = $root.data('compare-version'); + + if (compareVersion === selectedVersion) + return; + + if (!compareVersion && version == selectedVersion) + return; + + if (compareVersion && articleVersions[group][name][0] === selectedVersion || version === selectedVersion) { + // the version of the entry is set to the highest version (reset) + resetArticle(group, name, version); + } else { + var $compareToArticle = $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + selectedVersion + '\']'); + + var sourceEntry = {}; + var compareEntry = {}; + $.each(apiByGroupAndName[group][name], function (index, entry) { + if (entry.version === version) + sourceEntry = entry; + if (entry.version === selectedVersion) + compareEntry = entry; + }); + + var fields = { + article: sourceEntry, + compare: compareEntry, + versions: articleVersions[group][name] + }; + + // add unique id + // TODO: replace all group-name-version in template with id. + fields.article.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version; + fields.article.id = fields.article.id.replace(/\./g, '_'); + + fields.compare.id = fields.compare.group + '-' + fields.compare.name + '-' + fields.compare.version; + fields.compare.id = fields.compare.id.replace(/\./g, '_'); + + var entry = sourceEntry; + if (entry.parameter && entry.parameter.fields) + fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields); + + if (entry.error && entry.error.fields) + fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields); + + if (entry.success && entry.success.fields) + fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields); + + if (entry.info && entry.info.fields) + fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields); + + var entry = compareEntry; + if (fields._hasTypeInParameterFields !== true && entry.parameter && entry.parameter.fields) + fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields); + + if (fields._hasTypeInErrorFields !== true && entry.error && entry.error.fields) + fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields); + + if (fields._hasTypeInSuccessFields !== true && entry.success && entry.success.fields) + fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields); + + if (fields._hasTypeInInfoFields !== true && entry.info && entry.info.fields) + fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields); + + var content = templateCompareArticle(fields); + $root.after(content); + var $content = $root.next(); + + // Event on.click re-assign + $content.find('.versions li.version a').on('click', changeVersionCompareTo); + + // select navigation + $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + currentVersion + '\']').addClass('has-modifications'); + + $root.remove(); + // TODO: on change main version or select the highest version re-render } - /** - * Load google fonts. - */ - function loadGoogleFontCss() { - WebFont.load({ - active: function() { - // Update scrollspy - $(window).scrollspy('refresh') - }, - google: { - families: ['Source Code Pro', 'Source Sans Pro:n4,n6,n7'] + initDynamic(); + } + + /** + * Compare all currently selected Versions with their predecessor. + */ + function changeAllVersionCompareTo(e) { + e.preventDefault(); + $('article:visible .versions').each(function () { + var $root = $(this).parents('article'); + var currentVersion = $root.data('version'); + var $foundElement = null; + $(this).find('li.version a').each(function () { + var selectVersion = $(this).html(); + if (selectVersion < currentVersion && !$foundElement) + $foundElement = $(this); + }); + + if ($foundElement) + $foundElement.trigger('click'); + }); + initDynamic(); + } + + /** + * Sort the fields. + */ + function sortFields(fields_object) { + $.each(fields_object, function (key, fields) { + + var reversed = fields.slice().reverse() + + var max_dot_count = Math.max.apply(null, reversed.map(function (item) { + return item.field.split(".").length - 1; + })) + + for (var dot_count = 1; dot_count <= max_dot_count; dot_count++) { + reversed.forEach(function (item, index) { + var parts = item.field.split("."); + if (parts.length - 1 == dot_count) { + var fields_names = fields.map(function (item) { + return item.field; + }); + if (parts.slice(1).length >= 1) { + var prefix = parts.slice(0, parts.length - 1).join("."); + var prefix_index = fields_names.indexOf(prefix); + if (prefix_index > -1) { + fields.splice(fields_names.indexOf(item.field), 1); + fields.splice(prefix_index + 1, 0, item); + } } + } }); + } + }); + } + + /** + * Add article settings. + */ + function addArticleSettings(fields, entry) { + // add unique id + // TODO: replace all group-name-version in template with id. + fields.id = fields.article.group + '-' + fields.article.name + '-' + fields.article.version; + fields.id = fields.id.replace(/\./g, '_'); + + if (entry.header && entry.header.fields) { + sortFields(entry.header.fields); + fields._hasTypeInHeaderFields = _hasTypeInFields(entry.header.fields); } - /** - * Return ordered entries by custom order and append not defined entries to the end. - * @param {String[]} elements - * @param {String[]} order - * @param {String} splitBy - * @return {String[]} Custom ordered list. - */ - function sortByOrder(elements, order, splitBy) { - var results = []; - order.forEach (function(name) { - if (splitBy) - elements.forEach (function(element) { - var parts = element.split(splitBy); - var key = parts[1]; // reference keep for sorting - if (key == name) - results.push(element); - }); - else - elements.forEach (function(key) { - if (key == name) - results.push(name); - }); - }); - // Append all other entries that ar not defined in order - elements.forEach(function(element) { - if (results.indexOf(element) === -1) - results.push(element); - }); - return results; + if (entry.parameter && entry.parameter.fields) { + sortFields(entry.parameter.fields); + fields._hasTypeInParameterFields = _hasTypeInFields(entry.parameter.fields); } + if (entry.error && entry.error.fields) { + sortFields(entry.error.fields); + fields._hasTypeInErrorFields = _hasTypeInFields(entry.error.fields); + } + + if (entry.success && entry.success.fields) { + sortFields(entry.success.fields); + fields._hasTypeInSuccessFields = _hasTypeInFields(entry.success.fields); + } + + if (entry.info && entry.info.fields) { + sortFields(entry.info.fields); + fields._hasTypeInInfoFields = _hasTypeInFields(entry.info.fields); + } + + // add template settings + fields.template = apiProject.template; + } + + /** + * Render Article. + */ + function renderArticle(group, name, version) { + var entry = {}; + $.each(apiByGroupAndName[group][name], function (index, currentEntry) { + if (currentEntry.version === version) + entry = currentEntry; + }); + var fields = { + article: entry, + versions: articleVersions[group][name] + }; + + addArticleSettings(fields, entry); + + return templateArticle(fields); + } + + /** + * Render original Article and remove the current visible Article. + */ + function resetArticle(group, name, version) { + var $root = $('article[data-group=\'' + group + '\'][data-name=\'' + name + '\']:visible'); + var content = renderArticle(group, name, version); + + $root.after(content); + var $content = $root.next(); + + // Event on.click muss neu zugewiesen werden (sollte eigentlich mit on automatisch funktionieren... sollte) + $content.find('.versions li.version a').on('click', changeVersionCompareTo); + + $('#sidenav li[data-group=\'' + group + '\'][data-name=\'' + name + '\'][data-version=\'' + version + '\']').removeClass('has-modifications'); + + $root.remove(); + return; + } + + /** + * Load google fonts. + */ + function loadGoogleFontCss() { + WebFont.load({ + active: function () { + // Update scrollspy + $(window).scrollspy('refresh') + }, + google: { + families: ['Source Code Pro', 'Source Sans Pro:n4,n6,n7'] + } + }); + } + + /** + * Return ordered entries by custom order and append not defined entries to the end. + * @param {String[]} elements + * @param {String[]} order + * @param {String} splitBy + * @return {String[]} Custom ordered list. + */ + function sortByOrder(elements, order, splitBy) { + var results = []; + order.forEach(function (name) { + if (splitBy) + elements.forEach(function (element) { + var parts = element.split(splitBy); + var key = parts[1]; // reference keep for sorting + if (key == name) + results.push(element); + }); + else + elements.forEach(function (key) { + if (key == name) + results.push(name); + }); + }); + // Append all other entries that ar not defined in order + elements.forEach(function (element) { + if (results.indexOf(element) === -1) + results.push(element); + }); + return results; + } + }); diff --git a/config/config.go b/config/config.go index d7b0d6ec..29de51da 100644 --- a/config/config.go +++ b/config/config.go @@ -13,8 +13,11 @@ import ( var config *Config var once sync.Once + +// Configpaths default configuration file paths var Configpaths = []string{"config/config.yml", "config/default_config.yml"} +// Get config variable func Get() *Config { once.Do(func() { config = &Config{} diff --git a/config/config_example.yml b/config/config_example.yml index fc695861..8e5ff374 100644 --- a/config/config_example.yml +++ b/config/config_example.yml @@ -2,4 +2,4 @@ # Please, do not change default_config, create your own config.yml # You do not have to change every values, just set here what you want to edit # For example, if you just want to change the port, just write: -#port: 9998 \ No newline at end of file +#port: 9998 diff --git a/controllers/api/_apidoc.js b/controllers/api/_apidoc.js index 48cb3df4..9094557d 100644 --- a/controllers/api/_apidoc.js +++ b/controllers/api/_apidoc.js @@ -58,4 +58,4 @@ * } * * @apiUse NotFoundError - */ \ No newline at end of file + */ diff --git a/controllers/feed/helpers.go b/controllers/feed/helpers.go index e7ccf852..76a7dffa 100644 --- a/controllers/feed/helpers.go +++ b/controllers/feed/helpers.go @@ -54,7 +54,7 @@ func getTorrentList(c *gin.Context) (torrents []models.Torrent, createdAsTime ti } if userID != "" { - userIDnum := 0 + var userIDnum int userIDnum, err = strconv.Atoi(html.EscapeString(userID)) // Should we have a feed for anonymous uploads? if err != nil || userIDnum == 0 { diff --git a/controllers/feed/torznab.go b/controllers/feed/torznab.go index 857492f2..3ec927ed 100644 --- a/controllers/feed/torznab.go +++ b/controllers/feed/torznab.go @@ -17,7 +17,7 @@ import ( // RSSTorznabHandler : Controller for displaying rss feed, accepting common search arguments func RSSTorznabHandler(c *gin.Context) { t := c.Query("t") - rss := "" + var rss string title := "Nyaa Pantsu" if config.IsSukebei() { title = "Sukebei Pantsu" diff --git a/controllers/middlewares/middlewares.go b/controllers/middlewares/middlewares.go index 6615d366..66284729 100644 --- a/controllers/middlewares/middlewares.go +++ b/controllers/middlewares/middlewares.go @@ -11,7 +11,7 @@ import ( "github.com/gin-gonic/gin" ) -// Middleware for managing errors on status +// ErrorMiddleware for managing errors on status func ErrorMiddleware() gin.HandlerFunc { return func(c *gin.Context) { c.Next() diff --git a/controllers/moderator/helpers.go b/controllers/moderator/helpers.go index d7393e19..f2f04c89 100644 --- a/controllers/moderator/helpers.go +++ b/controllers/moderator/helpers.go @@ -113,7 +113,7 @@ func torrentManyAction(c *gin.Context) { } /* Changes are done, we save */ - _, err := torrent.UpdateUnscope() + _, err = torrent.UpdateUnscope() if err == nil { if torrent.Uploader == nil { torrent.Uploader = &models.User{} diff --git a/controllers/moderator/reassign.go b/controllers/moderator/reassign.go index eeb32100..12aec374 100644 --- a/controllers/moderator/reassign.go +++ b/controllers/moderator/reassign.go @@ -14,7 +14,7 @@ func TorrentReassignModPanel(c *gin.Context) { templates.Form(c, "admin/reassign.jet.html", torrentValidator.ReassignForm{}) } -// ExecuteAction : Function for applying the changes from ReassignForm +// ExecuteReassign : Function for applying the changes from ReassignForm func ExecuteReassign(f *torrentValidator.ReassignForm) (int, error) { var toBeChanged []uint var err error diff --git a/controllers/settings/settings.go b/controllers/settings/settings.go index 694816a2..d48df2fc 100644 --- a/controllers/settings/settings.go +++ b/controllers/settings/settings.go @@ -17,13 +17,13 @@ import ( func SeePublicSettingsHandler(c *gin.Context) { _, Tlang := publicSettings.GetTfuncAndLanguageFromRequest(c) availableLanguages := publicSettings.GetAvailableLanguages() - languagesJson := templates.LanguagesJSONResponse{Tlang.Tag, availableLanguages} + languagesJSON := templates.LanguagesJSONResponse{Tlang.Tag, availableLanguages} contentType := c.Request.Header.Get("Content-Type") if contentType == "application/json" { c.Header("Content-Type", "application/json") - c.JSON(http.StatusOK, languagesJson) + c.JSON(http.StatusOK, languagesJSON) } else { - templates.Form(c, "site/user/public/settings.jet.html", languagesJson) + templates.Form(c, "site/user/public/settings.jet.html", languagesJSON) } } diff --git a/header_api.md b/header_api.md index 2501a006..28846fe5 100644 --- a/header_api.md +++ b/header_api.md @@ -4,4 +4,4 @@ You can use this API without being logged or any token API ## Except for Upload -When you upload, you have to provide your username and api token! \ No newline at end of file +When you upload, you have to provide your username and API token! diff --git a/translations/de-de.all.json b/translations/de-de.all.json index 0edb3c92..4be90cbe 100644 --- a/translations/de-de.all.json +++ b/translations/de-de.all.json @@ -579,7 +579,7 @@ "id": "moderation", "translation": "Moderation" }, - { + { "id": "who_is_renchon", "translation": "Wer zum Teufel ist れんちょん?" }, diff --git a/translations/en-us.all.json b/translations/en-us.all.json index 415fb46e..88ad8574 100644 --- a/translations/en-us.all.json +++ b/translations/en-us.all.json @@ -1440,16 +1440,16 @@ "translation": "%s must be less than the current Date & Time" }, { - "id":"error_less_array", - "translation":"%s must contain less than %s items" + "id": "error_less_array", + "translation": "%s must contain less than %s items" }, { "id": "error_less_length", "translation": "%s must be less than %s in length" }, { - "id":"error_less_number", - "translation":"%s must be less than %s" + "id": "error_less_number", + "translation": "%s must be less than %s" }, { "id": "error_less_equal_date", @@ -1476,35 +1476,35 @@ "translation": "%s must be equal or less to %s" }, { - "id":"error_max_length", - "translation":"Maximal length of %s required for the input: %s" + "id": "error_max_length", + "translation": "Maximal length of %s required for the input: %s" }, { - "id":"error_max_number", - "translation":"%s must be %s or less" + "id": "error_max_number", + "translation": "%s must be %s or less" }, { - "id":"error_max_array", - "translation":"%s must contain at maximum %s items" + "id": "error_max_array", + "translation": "%s must contain at maximum %s items" }, { - "id":"error_length", - "translation":"Length of %s required for the input: %s" + "id": "error_length", + "translation": "Length of %s required for the input: %s" }, { - "id":"error_equal", + "id": "error_equal", "translation": "%s is not equal to %s" }, { - "id":"error_same_value", + "id": "error_same_value", "translation": "Field '%s' must have the same value as the field '%s'" }, { - "id":"error_field", + "id": "error_field", "translation": "Unexpected error on field: %s" }, { - "id":"error_not_equal", + "id": "error_not_equal", "translation": "%s should not be equal to %s" }, { @@ -1680,7 +1680,7 @@ "translation": "No username/password entered" }, { - "id":"account_banned", + "id": "account_banned", "translation": "Account banned" }, { diff --git a/translations/fr-fr.all.json b/translations/fr-fr.all.json index afc349b1..945f1766 100644 --- a/translations/fr-fr.all.json +++ b/translations/fr-fr.all.json @@ -1,4 +1,4 @@ -[ +[ { "id": "rules", "translation": "Règlement" @@ -1437,7 +1437,7 @@ }, { "id": "error_less_array", - "translation":"%s doit contenir moins de %s items" + "translation": "%s doit contenir moins de %s items" }, { "id": "error_less_length", @@ -1445,7 +1445,7 @@ }, { "id": "error_less_number", - "translation":"%s doit être inférieur à %s" + "translation": "%s doit être inférieur à %s" }, { "id": "error_less_equal_date", diff --git a/translations/it-it.all.json b/translations/it-it.all.json index b9cedd21..daf37b10 100644 --- a/translations/it-it.all.json +++ b/translations/it-it.all.json @@ -1364,11 +1364,11 @@ "translation": "Minimal length of %s required for the input: %s" }, { - "id":"error_max_length", - "translation":"Maximal length of %s required for the input: %s" + "id": "error_max_length", + "translation": "Maximal length of %s required for the input: %s" }, { - "id":"error_same_value", + "id": "error_same_value", "translation": "Must be same %s" }, { diff --git a/translations/ja-jp.all.json b/translations/ja-jp.all.json index c63a09c5..557abf44 100644 --- a/translations/ja-jp.all.json +++ b/translations/ja-jp.all.json @@ -1,1838 +1,1838 @@ -[ - { - "id": "rules", - "translation": "ルール" - }, - { - "id": "no_cp", - "translation": "児童ポルノ禁止 (ロリはこれに含まれません)" - }, - { - "id": "asia", - "translation": "アジア関連のコンテンツのみ (洋画やカートゥーン禁止)" - }, - { - "id": "rules_spam", - "translation": "スパム禁止" - }, - { - "id": "rules_sukebei", - "translation": "えっちいのは sukebei.pantsu.cat へ" - }, - { - "id": "verify_email_title", - "translation": "【Nyaa Pantsu】メールアドレスの認証" - }, - { - "id": "verify_email_content", - "translation": "お使いのメールアドレスを認証するには、以下のリンクをクリックします。" - }, - { - "id": "reset_password_title", - "translation": "【Nyaa Pantsu】パスワードのリセット" - }, - { - "id": "reset_password_content", - "translation": "パスワードをリセットするには、以下のリンクをクリックします。" - }, - { - "id": "register_title", - "translation": "新しいアカウントの作成" - }, - { - "id": "signup_box_title", - "translation": "アカウント登録 ずっと無料です" - }, - { - "id": "username", - "translation": "ユーザー名" - }, - { - "id": "email_address_or_username", - "translation": "メールアドレスまたはユーザー名" - }, - { - "id": "email_address", - "translation": "メールアドレス" - }, - { - "id": "password", - "translation": "パスワード" - }, - { - "id": "confirm_password", - "translation": "パスワードの再入力" - }, - { - "id": "terms_conditions_confirm", - "translation": "登録 をクリックすることにより、Cookie の使用を含む、本サイトの 利用規約 に同意したものとみなします。" - }, - { - "id": "signin", - "translation": "ログイン" - }, - { - "id": "register", - "translation": "登録" - }, - { - "id": "terms_conditions", - "translation": "利用規約" - }, - { - "id": "terms_conditions_full", - "translation": "ダミー" - }, - { - "id": "remember_me", - "translation": "ログイン情報を記憶する" - }, - { - "id": "forgot_password", - "translation": "パスワードをお忘れですか?" - }, - { - "id": "sign_in_box_title", - "translation": "ログイン" - }, - { - "id": "sign_in_title", - "translation": "ログイン" - }, - { - "id": "register_success_title", - "translation": "登録完了" - }, - { - "id": "sign_up_success", - "translation": "ご登録いただきありがとうございます。" - }, - { - "id": "verify_success", - "translation": "お使いのアカウントは有効になりました。" - }, - { - "id": "signup_verification_email", - "translation": "現在は一時的にメールアドレスの認証が無効になっているため、すぐにアカウントを使うことができます。後日、メールボックスを確認してください。迷惑メールフォルダーの確認もお忘れなく。" - }, - { - "id": "signup_verification_noemail", - "translation": "認証が完了しました。今からこのアカウントを使えるようになります。" - }, - { - "id": "email_placeholder", - "translation": "空欄のままでも構いません。" - }, - { - "id": "settings", - "translation": "アカウント設定" - }, - { - "id": "torrents", - "translation": "Torrent" - }, - { - "id": "follow", - "translation": "フォロー" - }, - { - "id": "unfollow", - "translation": "フォロー解除" - }, - { - "id": "user_followed_msg", - "translation": "%s さんをフォローしました。" - }, - { - "id": "user_unfollowed_msg", - "translation": "%s さんのフォローを解除しました。" - }, - { - "id": "profile_page", - "translation": "%s さんのプロフィールページ" - }, - { - "id": "see_more_torrents_from", - "translation": "%s さんの Torrent をもっと表示" - }, - { - "id": "torrents_uploaded", - "translation": "Torrent はアップロードされました" - }, - { - "id": "category", - "translation": "カテゴリー" - }, - { - "id": "name", - "translation": "名前" - }, - { - "id": "date", - "translation": "日時" - }, - { - "id": "size", - "translation": "サイズ" - }, - { - "id": "links", - "translation": "リンク" - }, - { - "id": "home", - "translation": "ホーム" - }, - { - "id": "error_404", - "translation": "404 エラー" - }, - { - "id": "error_400", - "translation": "400 エラー" - }, - { - "id": "error_500", - "translation": "500 エラー" - }, - { - "id": "err_no_results", - "translation": "結果が見つかりません" - }, - { - "id": "upload", - "translation": "アップロード" - }, - { - "id": "faq", - "translation": "よくある質問" - }, - { - "id": "fap", - "translation": "えっち" - }, - { - "id": "fun", - "translation": "にゃあ" - }, - { - "id": "nothing_here", - "translation": "ここには何もありません。" - }, - { - "id": "404_not_found", - "translation": "404 ページが見つかりません" - }, - { - "id": "500_internal_server_error", - "translation": "500 内部サーバーエラー" - }, - { - "id": "400_bad_request", - "translation": "400 不正なリクエスト" - }, - { - "id": "no_torrents_uploaded", - "translation": "まだアップロードされた Torrent はありません。" - }, - { - "id": "profile", - "translation": "プロフィール" - }, - { - "id": "sign_out", - "translation": "ログアウト" - }, - { - "id": "member", - "translation": "アカウント" - }, - { - "id": "no_results_found", - "translation": "結果が見つかりませんでした" - }, - { - "id": "notice_keep_seeding", - "translation": "お知らせ: DHT 機能を有効にし、なるべくシードを継続してください" - }, - { - "id": "official_nyaapocalipse_faq", - "translation": "公式 nyaa の最期についてよくある質問" - }, - { - "id": "links_replacement_mirror", - "translation": "代替 / ミラーリンク" - }, - { - "id": "what_happened", - "translation": "なにが起こったの?" - }, - { - "id": "nyaa_se_went_offline", - "translation": "nyaa.se 並びにその関連ドメイン (nyaatorrents.info など) は 2017年5月1日 にオフラインになった。" - }, - { - "id": "its_not_a_ddos", - "translation": "いつものような DDoS 攻撃ではなく、サイト自体が利用停止になった。" - }, - { - "id": "future_not_looking_good", - "translation": "nyaa.se の将来が危うい。(現に死んでるし)" - }, - { - "id": "recovery_effort", - "translation": "復旧に努力を注いでいるところ。" - }, - { - "id": "is_everything_lost", - "translation": "すべてが失われてしまったの?" - }, - { - "id": "in_short_no", - "translation": "一言で言えば、NO です。" - }, - { - "id": "are_some_things_lost", - "translation": "でも、いくつか失われた?" - }, - { - "id": "answer_is_nyaa_db_lost", - "translation": "4月5日 5月1日までのデータベースはあります。要するに、ほとんど失われていません。" - }, - { - "id": "answer_is_sukebei_db_lost", - "translation": "sukebei の方も問題なく、ほとんど失われていません。" - }, - { - "id": "how_are_we_recovering", - "translation": "どのように復旧してるの?" - }, - { - "id": "answer_how_are_we_recovering", - "translation": "上述のデータベースは nyaa.pantsu.cat と sukebei.pantsu.cat にホストされています。検索機能はすでにあり、近いうちに nyaa.se にあったほぼすべての機能が利用可能になるでしょう。" - }, - { - "id": "how_do_i_link_my_old_account", - "translation": "以前のアップロードを新しいアカウントにリンクさせるにはどうすればいいの?" - }, - { - "id": "answer_how_do_i_link_my_old_account", - "translation": "#nyaapantsu-help@Rizon に参加し、モデレーターに以前のユーザー名と新しいユーザー名を添えて Torrent を移行するようお申し付けください。" - }, - { - "id": "are_the_trackers_working", - "translation": "Torrent ファイルはまだ利用できる?" - }, - { - "id": "answer_are_the_trackers_working", - "translation": "トラッカーがダウンしたとしても、Seeder はまだ DHT ネットワークに接続しているはずです。ファイルが DHT ネットワーク上にリスティングされてさえいれば、いつも通り利用できます。" - }, - { - "id": "how_do_i_download_the_torrents", - "translation": "どうやって Torrent をダウンロードすればいいの?" - }, - { - "id": "answer_how_do_i_download_the_torrents", - "translation": "magnet リンク をご利用ください。magnet リンクは BitTorrent クライアントが DHT ネットワーク上のファイルを検出するのに利用されます。もちろんいつも通りダウンロードすることができます。" - }, - { - "id": "magnet_link_should_look_like", - "translation": "magnet リンクは次のようになっているはずです:" - }, - { - "id": "which_trackers_do_you_recommend", - "translation": "どのトラッカーがおすすめ?" - }, - { - "id": "answer_which_trackers_do_you_recommend", - "translation": "doko.moe という独自のトラッカーをご用意しました。アップロードする前にリストの一番上に追加してください。また、Torrent の安定性を維持するために、以下のトラッカーをすべて追加する必要があります。" - }, - { - "id": "how_can_i_help", - "translation": "なにか手伝えることはある?" - }, - { - "id": "answer_how_can_i_help", - "translation": "ウェブ開発の専門知識がおありでしたら、irc.rizon.net の #nyaapantsu IRC チャンネルに参加できますよ。また、現在のデータベースをお持ちの場合、特に sukebei の場合は、ぜひともアップロードしていただきたいです。" - }, - { - "id": "your_design_sucks_found_a_bug", - "translation": "なんだこのデザイン!? / バグを見つけたよ" - }, - { - "id": "why_written_in_go", - "translation": "なんで Go で書いてるの?" - }, - { - "id": "authors_favorite_language", - "translation": "作者の一番好きなプログラミング言語だからです。" - }, - { - "id": "torrent_file", - "translation": "Torrent ファイル" - }, - { - "id": "uploading_file_prefills_fields", - "translation": "Torrent ファイルをアップロードする前にいくつかの項目を入力できます。そうすることをお勧めします。" - }, - { - "id": "magnet_link", - "translation": "magnet リンク" - }, - { - "id": "all_categories", - "translation": "すべてのカテゴリー" - }, - { - "id": "select_a_torrent_category", - "translation": "-- Torrent カテゴリーを選択 --" - }, - { - "id": "anime", - "translation": "アニメ" - }, - { - "id": "anime_amv", - "translation": "アニメ ‐ AMV" - }, - { - "id": "anime_english_translated", - "translation": "アニメ ‐ 英語翻訳" - }, - { - "id": "anime_non_english_translated", - "translation": "アニメ ‐ 英語以外への翻訳" - }, - { - "id": "anime_raw", - "translation": "アニメ ‐ RAW" - }, - { - "id": "audio", - "translation": "オーディオ" - }, - { - "id": "audio_lossless", - "translation": "オーディオ ‐ 可逆圧縮" - }, - { - "id": "audio_lossy", - "translation": "オーディオ ‐ 非可逆圧縮" - }, - { - "id": "literature", - "translation": "書籍" - }, - { - "id": "literature_english_translated", - "translation": "書籍 ‐ 英語翻訳" - }, - { - "id": "literature_raw", - "translation": "書籍 ‐ RAW" - }, - { - "id": "literature_non_english_translated", - "translation": "書籍 ‐ 英語以外への翻訳" - }, - { - "id": "live_action", - "translation": "実写" - }, - { - "id": "live_action_english_translated", - "translation": "実写 ‐ 英語翻訳" - }, - { - "id": "live_action_idol_pv", - "translation": "実写 ‐ アイドル / PV" - }, - { - "id": "live_action_non_english_translated", - "translation": "実写 ‐ 英語以外への翻訳" - }, - { - "id": "live_action_raw", - "translation": "実写 ‐ RAW" - }, - { - "id": "pictures", - "translation": "画像" - }, - { - "id": "pictures_graphics", - "translation": "画像 ‐ グラフィック" - }, - { - "id": "pictures_photos", - "translation": "画像 ‐ 写真" - }, - { - "id": "software", - "translation": "ソフトウェア" - }, - { - "id": "software_applications", - "translation": "ソフトウェア ‐ アプリ" - }, - { - "id": "software_games", - "translation": "ソフトウェア ‐ ゲーム" - }, - { - "id": "art", - "translation": "二次元" - }, - { - "id": "art_anime", - "translation": "二次元 - アニメ" - }, - { - "id": "art_doujinshi", - "translation": "二次元 - 同人誌" - }, - { - "id": "art_games", - "translation": "二次元 - ゲーム" - }, - { - "id": "art_manga", - "translation": "二次元 - 漫画" - }, - { - "id": "art_pictures", - "translation": "二次元 - 画像" - }, - { - "id": "real_life", - "translation": "三次元" - }, - { - "id": "real_life_photobooks_and_pictures", - "translation": "三次元 - フォトブック、写真" - }, - { - "id": "real_life_videos", - "translation": "三次元 - ビデオ" - }, - { - "id": "torrent_description", - "translation": "Torrent の説明" - }, - { - "id": "description_markdown_notice", - "translation": "説明文には MarkDown 記法を使うことができます。" - }, - { - "id": "show_all", - "translation": "すべて表示" - }, - { - "id": "filter_remakes", - "translation": "再頒布を非表示" - }, - { - "id": "trusted", - "translation": "高信頼のみ" - }, - { - "id": "search", - "translation": "検索" - }, - { - "id": "hash", - "translation": "ハッシュ" - }, - { - "id": "description", - "translation": "説明" - }, - { - "id": "no_description", - "translation": "説明はありません。" - }, - { - "id": "comments", - "translation": "コメント" - }, - { - "id": "submit_a_comment_as_username", - "translation": "%s でコメントを残す" - }, - { - "id": "submit_a_comment_as_anonymous", - "translation": "匿名ユーザーでコメントを残す" - }, - { - "id": "submit", - "translation": "送信" - }, - { - "id": "personal_info", - "translation": "個人情報" - }, - { - "id": "language", - "translation": "言語" - }, - { - "id": "current_password", - "translation": "現在のパスワード" - }, - { - "id": "role", - "translation": "役割" - }, - { - "id": "banned", - "translation": "BAN" - }, - { - "id": "default", - "translation": "デフォルト" - }, - { - "id": "trusted_member", - "translation": "高信頼アカウント" - }, - { - "id": "scraped_user", - "translation": "保留ユーザー" - }, - { - "id": "moderator", - "translation": "モデレーター" - }, - { - "id": " api_token", - "translation": "API トークン" - }, - { - "id": "save_changes", - "translation": "変更を保存" - }, - { - "id": "profile_updated", - "translation": "プロフィールが更新されました。" - }, - { - "id": "delete_account", - "translation": "アカウントの削除" - }, - { - "id": "delete_account_confirm", - "translation": "このアカウントを削除してもよろしいですか。" - }, - { - "id": "delete_success", - "translation": "アカウントが削除されました。" - }, - { - "id": "moderation", - "translation": "モデレーション" - }, - { - "id": "extensions_and_plugins", - "translation": "拡張機能およびプラグイン (サードパーティー製)" - }, - { - "id": "qbittorrent_plugin", - "translation": "qBittorrent プラグイン" - }, - { - "id": "local_client", - "translation": "ローカルクライアント" - }, - { - "id": "chrome_extension", - "translation": "Chrome 拡張機能" - }, - { - "id": "firefox_extension", - "translation": "Firefox 拡張機能" - }, - { - "id": "android_app", - "translation": "Android アプリ" - }, - { - "id": "who_is_renchon", - "translation": "「れんちょん」って誰やねん" - }, - { - "id": "renchon_anon_explanation", - "translation": "「れんちょん」は匿名でアップロードもしくはコメントを書き込んだ場合に割り当てられるユーザー名なのん。オリジナルのアップロード者と一緒に表示されることがあるけど、オリジナルの nyaa からインポートされた Torrent にも使用されるのん。" - }, - { - "id": "mark_as_remake", - "translation": "再頒布としてマークする" - }, - { - "id": "email_changed", - "translation": "メールアドレスが変更されました。なお、送信されたリンクをクリックして認証を済ませる必要があります: %s" - }, - { - "id": "torrent_status", - "translation": "Torrent の状態" - }, - { - "id": "torrent_status_normal", - "translation": "通常" - }, - { - "id": "torrent_status_remake", - "translation": "再頒布" - }, - { - "id": "torrent_status_blocked", - "translation": "ロック" - }, - { - "id": "profile_edit_page", - "translation": "%s のプロフィールを編集" - }, - { - "id": "seeders", - "translation": "Seeder 数" - }, - { - "id": "leechers", - "translation": "Leecher 数" - }, - { - "id": "completed", - "translation": "完了数" - }, - { - "id": "change_language", - "translation": "言語の変更" - }, - { - "id": "language_name", - "translation": "日本語" - }, - { - "id": "language_code", - "translation": "ja-jp" - }, - { - "id": "delete", - "translation": "削除" - }, - { - "id": "website_link", - "translation": "Web サイト" - }, - { - "id": "files", - "translation": "ファイル一覧" - }, - { - "id": "no_files", - "translation": "ファイル一覧が見つからない?もー!意味わかんない!" - }, - { - "id": "uploaded_by", - "translation": "アップロード者" - }, - { - "id": "report_btn", - "translation": "通報" - }, - { - "id": "are_you_sure", - "translation": "よろしいですか。" - }, - { - "id": "report_torrent_number", - "translation": "Torrent #%s を通報" - }, - { - "id": "report_type", - "translation": "通報理由" - }, - { - "id": "illegal_content", - "translation": "違法なコンテンツ" - }, - { - "id": "spam_garbage", - "translation": "スパム / ゴミファイル" - }, - { - "id": "wrong_category", - "translation": "誤ったカテゴリー" - }, - { - "id": "duplicate_deprecated", - "translation": "重複 / 非推奨" - }, - { - "id": "captcha", - "translation": "画像認証" - }, - { - "id": "captcha_audio", - "translation": "音声認証" - }, - { - "id": "file_name", - "translation": "ファイル名" - }, - { - "id": "cancel", - "translation": "キャンセル" - }, - { - "id": "please_include_our_tracker", - "translation": "トラッカーに udp://tracker.doko.moe:6969 を含めてください。" - }, - { - "id": "unknown", - "translation": "不明" - }, - { - "id": "last_scraped", - "translation": "最終統計日時: " - }, - { - "id": "server_status_link", - "translation": "サーバーの状態" - }, - { - "id": "no_database_dumps_available", - "translation": "現在利用可能なデータベースダンプはありません。" - }, - { - "id": "clear_notifications", - "translation": "通知をクリア" - }, - { - "id": "notifications_cleared", - "translation": "通知がクリアされました。" - }, - { - "id": "my_notifications", - "translation": "通知" - }, - { - "id": "new_torrent_uploaded", - "translation": "Torrent がアップロードされました: \"%s\"、 %s さんから" - }, - { - "id": "torrent_uploaded", - "translation": "Torrent は正常にアップロードされました。" - }, - { - "id": "preferences", - "translation": "カスタム設定" - }, - { - "id": "new_torrent_settings", - "translation": "フォロー中のアカウントから新しい Torrent がアップロードされたら通知する" - }, - { - "id": "new_torrent_email_settings", - "translation": "フォロー中のアカウントから新しい Torrent がアップロードされたらメールで通知する" - }, - { - "id": "new_comment_settings", - "translation": "自分の Torrent にコメントが付いたら通知する" - }, - { - "id": "new_comment_email_settings", - "translation": "自分の Torrent にコメントが付いたらメールで通知する" - }, - { - "id": "new_responses_settings", - "translation": "自分のコメントにリプライが付いたら通知する" - }, - { - "id": "new_responses_email_settings", - "translation": "自分のコメントにリプライが付いたらメールで通知する" - }, - { - "id": "new_follower_settings", - "translation": "フォローされたら通知する" - }, - { - "id": "new_follower_email_settings", - "translation": "フォローされたらメールで通知する" - }, - { - "id": "followed_settings", - "translation": "フォローしたら通知する" - }, - { - "id": "followed_email_settings", - "translation": "フォローしたらメールで通知する" - }, - { - "id": "yes", - "translation": "はい" - }, - { - "id": "no", - "translation": "いいえ" - }, - { - "id": "new_comment_on_torrent", - "translation": "コメントが付きました: \"%s\"" - }, - { - "id": "no_action_selected", - "translation": "アクションが選択されていません。" - }, - { - "id": "no_move_location_selected", - "translation": "移動先が選択されていません。" - }, - { - "id": "select_one_element", - "translation": "1 つ以上の要素を選択する必要があります。" - }, - { - "id": "torrent_moved", - "translation": "Torrent %s が移動されました。" - }, - { - "id": "no_status_exist", - "translation": "ステータス %d は存在しません。" - }, - { - "id": "torrent_deleted", - "translation": "Torrent %s が削除されました。" - }, - { - "id": "torrent_deleted_by", - "translation": "Torrent #%s (%s アップロード) は %s によって削除されました。" - }, - { - "id": "torrent_edited_by", - "translation": "Torrent #%s (%s アップロード) は %s によって編集されました。" - }, - { - "id": "torrent_blocked_by", - "translation": "Torrent #%s (%s アップロード) は %s によってロックされました。" - }, - { - "id": "torrent_blocked_by", - "translation": "Torrent #%s (%s アップロード) は %s によってロック解除されました。" - }, - { - "id": "torrents_deleted", - "translation": "Torrent が削除されました" - }, - { - "id": "delete_torrent", - "translation": "Torrent を削除" - }, - { - "id": "delete_report", - "translation": "レポートを削除" - }, - { - "id": "comment_deleted_by", - "translation": "コメント #%s (%s 投稿) は %s によって削除されました。" - }, - { - "id": "comment_edited_by", - "translation": "コメント #%s (%s 投稿) は %s によって編集されました。" - }, - { - "id": "no_action_exist", - "translation": "アクション %s は存在しません。" - }, - { - "id": "torrent_not_exist", - "translation": "Torrent ID %s は存在しません。" - }, - { - "id": "something_went_wrong", - "translation": "不具合が発生しました。" - }, - { - "id": "nb_torrents_updated", - "translation": "%d 個の Torrent が更新されました。" - }, - { - "id": "torrent_updated", - "translation": "Torrent の詳細が更新されました。" - }, - { - "id": "fail_torrent_update", - "translation": "Torrent の更新に失敗しました。" - }, - { - "id": "bad_captcha", - "translation": "画像認証が間違っています。" - }, - { - "id": "comment_empty", - "translation": "コメントなし" - }, - { - "id": "no_owner_selected", - "translation": "Torrent の新しいオーナーが選択されていません。" - }, - { - "id": "no_category_selected", - "translation": "カテゴリーが選択されていません。" - }, - { - "id": "no_user_found_id", - "translation": "ID %d のユーザーはデータベースに存在しません。" - }, - { - "id": "invalid_torrent_category", - "translation": "Torrent カテゴリーは存在しません。" - }, - { - "id": "torrent_owner_changed", - "translation": "Torrent \"%s\" のオーナーが変更されました。" - }, - { - "id": "torrent_category_changed", - "translation": "Torrent \"%s\" のカテゴリーが変更されました。" - }, - { - "id": "torrent_reports_deleted", - "translation": "Torrent \"%s\" の通報が削除されました。" - }, - { - "id": "edit", - "translation": "編集" - }, - { - "id": "lock_delete", - "translation": "ロックおよび削除" - }, - { - "id": "delete_definitely_torrent_warning", - "translation": "削除するとファイルを元に戻すことはできなくなります。また、他の誰かがファイルを再アップロードする恐れもあります。" - }, - { - "id": "delete_definitely", - "translation": "確実に削除" - }, - { - "id": "torrent_unblock", - "translation": "ロック解除" - }, - { - "id": "torrent_block", - "translation": "ロック" - }, - { - "id": "torrent_deleted_definitely", - "translation": "Torrent がデータベースから削除されました。" - }, - { - "id": "torrent_not_deleted", - "translation": "Torrent は削除されていません" - }, - { - "id": "torrent_unblocked", - "translation": "Torrent のロックが解除されました。" - }, - { - "id": "torrent_blocked", - "translation": "Torrent がロックされました。" - }, - { - "id": "torrent_nav_notdeleted", - "translation": "Torrent は削除されません" - }, - { - "id": "torrent_nav_deleted", - "translation": "Torrent は削除されます" - }, - { - "id": "change_settings", - "translation": "外観 / 言語の変更" - }, - { - "id": "mascot", - "translation": "マスコット" - }, - { - "id": "theme", - "translation": "テーマ" - }, - { - "id": "theme_select", - "translation": "-- テーマを選択 --" - }, - { - "id": "theme_none", - "translation": "なし" - }, - { - "id": "mark_as_hidden", - "translation": "非表示としてマークする" - }, - { - "id": "cookies", - "translation": "保存をクリックすることで、Cookie の使用に同意したことになります" - }, - { - "id": "show", - "translation": "表示" - }, - { - "id": "hide", - "translation": "非表示" - }, - { - "id": "nyaa_pantsu", - "translation": "Nyaa Pantsu" - }, - { - "id": "users", - "translation": "ユーザー" - }, - { - "id": "torrent_reports", - "translation": "Torrent レポート" - }, - { - "id": "show_mod_tools", - "translation": "Mod Tools を表示" - }, - { - "id": "hide_mod_tools", - "translation": "Mod Tools を非表示" - }, - { - "id": "following_changes_applied", - "translation": "以下の変更が適用されます" - }, - { - "id": "changes_in_following_order", - "translation": "変更は以下の順序で行われます:" - }, - { - "id": "edit_changes", - "translation": "変更の編集" - }, - { - "id": "delete_changes", - "translation": "変更の破棄" - }, - { - "id": "owner_id_placeholder", - "translation": "新しいオーナー" - }, - { - "id": "try_new_attempt", - "translation": "変更を試行中..." - }, - { - "id": "query_is_broken", - "translation": "クエリー ({0}?{1}) が破損しているようです。" - }, - { - "id": "query_executed_success", - "translation": "クエリーが正常に実行されました。" - }, - { - "id": "all_operations_done", - "translation": "すべての操作が完了しました。" - }, - { - "id": "refreshing_in", - "translation": "{0} 秒後にページが更新されます..." - }, - { - "id": "delete_reports_with_torrents", - "translation": "選択した Torrent に沿ってレポートを削除しますか。" - }, - { - "id": "with_st", - "translation": "{0} に沿う" - }, - { - "id": "and_reports", - "translation": "およびレポート" - }, - { - "id": "reports", - "translation": "レポート" - }, - { - "id": "lock", - "translation": "ロック" - }, - { - "id": "status_js", - "translation": "status: {0}" - }, - { - "id": "owner_id_js", - "translation": "owner_id: {0}" - }, - { - "id": "category_js", - "translation": "category: {0}" - }, - { - "id": "no_changes", - "translation": "変更なし" - }, - { - "id": "query_nb", - "translation": "クエリー #{0}" - }, - { - "id": "reason", - "translation": "理由" - }, - { - "id": "actions", - "translation": "アクション" - }, - { - "id": "action_select", - "translation": "アクション..." - }, - { - "id": "change_status", - "translation": "状態の変更" - }, - { - "id": "to_status", - "translation": "変更後の状態..." - }, - { - "id": "torrents_not_deleted", - "translation": "Torrent は削除されません" - }, - { - "id": "more", - "translation": "もっと表示" - }, - { - "id": "last_comments", - "translation": "最後のコメント" - }, - { - "id": "last_reports", - "translation": "最後のレポート" - }, - { - "id": "last_torrents", - "translation": "最後の Torrent" - }, - { - "id": "last_users", - "translation": "最後のユーザー" - }, - { - "id": "moderation_overview", - "translation": "モデレーションの概要" - }, - { - "id": "users_list", - "translation": "ユーザー一覧" - }, - { - "id": "comments_list", - "translation": "コメント一覧" - }, - { - "id": "reports_list", - "translation": "レポート一覧" - }, - { - "id": "torrents_list", - "translation": "Torrent 一覧" - }, - { - "id": "torrent_edit_panel", - "translation": "Torrent 編集パネル" - }, - { - "id": "torrent_reassign", - "translation": "Torrent 再割り当て" - }, - { - "id": "reassign_warning", - "translation": "Torrent の新しいユーザーへの再割り当ては容易に元に戻すことができないため、注意して行うようにしてください。" - }, - { - "id": "previous_username", - "translation": "変更前のユーザー名" - }, - { - "id": "torrent_id", - "translation": "Torrent ID" - }, - { - "id": "reassign_indication", - "translation": "1 ラインにつき 1 つの ID もしくは 1 つのユーザー名" - }, - { - "id": "reassign_warning_2", - "translation": "処理には時間がかかることがあります。絶対にリクエストを中止しないでください。" - }, - { - "id": "reassign_to", - "translation": "再割り当て先:" - }, - { - "id": "reassign_based_on", - "translation": "以下に基づいて再割り当て:" - }, - { - "id": "user_id", - "translation": "ユーザー ID" - }, - { - "id": "mascot_url", - "translation": "マスコット URL" - }, - { - "id": "no_notifications", - "translation": "通知なし" - }, - { - "id": "report_msg", - "translation": "Torrent #%s は通報されました。" - }, - { - "id": "email_not_valid", - "translation": "メールアドレスが有効ではありません。" - }, - { - "id": "username_illegal", - "translation": "ユーザー名に使用できない文字が含まれています。" - }, - { - "id": "torrent_language", - "translation": "Torrent の言語" - }, - { - "id": "select_a_torrent_language", - "translation": "-- Torrent の言語を選択 --" - }, - { - "id": "language_en-us_name", - "translation": "英語" - }, - { - "id": "language_ca-es_name", - "translation": "カタルーニャ語" - }, - { - "id": "language_de-de_name", - "translation": "ドイツ語" - }, - { - "id": "language_es-es_name", - "translation": "スペイン語" - }, - { - "id": "language_es-mx_name", - "translation": "スペイン語 (ラテンアメリカ)" - }, - { - "id": "language_fr-fr_name", - "translation": "フランス語" - }, - { - "id": "language_hu-hu_name", - "translation": "ハンガリー語" - }, - { - "id": "language_is-is_name", - "translation": "アイスランド語" - }, - { - "id": "language_it-it_name", - "translation": "イタリア語" - }, - { - "id": "language_ja-jp_name", - "translation": "日本語" - }, - { - "id": "language_ko-kr_name", - "translation": "韓国語" - }, - { - "id": "language_nb-no_name", - "translation": "ノルウェー語" - }, - { - "id": "language_nl-nl_name", - "translation": "オランダ語" - }, - { - "id": "language_pt-br_name", - "translation": "ポルトガル語 (ブラジル)" - }, - { - "id": "language_pt-pt_name", - "translation": "ポルトガル語 (ポルトガル)" - }, - { - "id": "language_ro-ro_name", - "translation": "ルーマニア語" - }, - { - "id": "language_ru-ru_name", - "translation": "ロシア語" - }, - { - "id": "language_sv-se_name", - "translation": "スウェーデン語" - }, - { - "id": "language_th-th_name", - "translation": "タイ語" - }, - { - "id": "language_zh-cn_name", - "translation": "簡体中国語" - }, - { - "id": "language_zh-tw_name", - "translation": "繁体中国語" - }, - { - "id": "language_other_name", - "translation": "その他" - }, - { - "id": "language_multiple_name", - "translation": "複数の言語" - }, - { - "id": "activity_list", - "translation": "アクティビティー一覧" - }, - { - "id": "activities", - "translation": "アクティビティー" - }, - { - "id": "filter", - "translation": "フィルター" - }, - { - "id": "error_min_length", - "translation": "必要な入力値 %s の最小長: %s" - }, - { - "id": "error_min_number", - "translation": "%s は %s 以上でなければなりません" - }, - { - "id": "error_min_field", - "translation": "%s は %s 以上でなければなりません" - }, - { - "id": "error_min_array", - "translation": "%s には少なくとも %s 個のアイテムが必要です" - }, - { - "id": "error_less_date", - "translation": "%s は現在の日付および時刻より小さくなければなりません" - }, - { - "id":"error_less_array", - "translation": "%s は %s 個未満のアイテムを含む必要があります" - }, - { - "id": "error_less_length", - "translation": "%s は長さが %s 未満でなければなりません" - }, - { - "id":"error_less_number", - "translation": "%s は %s 未満でなければなりません" - }, - { - "id": "error_less_equal_date", - "translation": "%s は現在の日付および時刻以下でなければなりません" - }, - { - "id": "error_greater_date", - "translation": "%s は現在の日付および時刻より大きくなければなりません" - }, - { - "id": "error_greater_length", - "translation": "%s は長さが %s より大きくなければなりません" - }, - { - "id": "error_greater_number", - "translation": "%s は %s より大きくなければなりません" - }, - { - "id": "error_greater_equal_date", - "translation": "%s は現在の日付および時刻以上でなければなりません" - }, - { - "id": "error_max_field", - "translation": "%s は %s 以下でなければなりません" - }, - { - "id":"error_max_length", - "translation": "必要な入力値 %s の最大長: %s" - }, - { - "id":"error_max_number", - "translation": "%s は %s 以下でなければなりません" - }, - { - "id":"error_max_array", - "translation": "%s にはアイテム %s 個まで含める必要があります" - }, - { - "id":"error_length", - "translation": "必要な入力値 %s の長さ: %s" - }, - { - "id":"error_equal", - "translation": "%s は %s と等しくありません" - }, - { - "id":"error_same_value", - "translation": "同じ %s である必要があります" - }, - { - "id":"error_field", - "translation": "フィールドで予期せぬエラーが発生しました: %s" - }, - { - "id":"error_not_equal", - "translation": "%s は %s と同じであってはなりません" - }, - { - "id": "error_wrong_value", - "translation": "誤った入力値: %s" - }, - { - "id": "error_field_needed", - "translation": "必要なフィールド: %s" - }, - { - "id": "error_len_array", - "translation": "%s には %s 個のアイテムが含まれている必要があります" - }, - { - "id": "error_alpha", - "translation": "%s には英字のみを使用できます" - }, - { - "id": "error_alphanum", - "translation": "%s には英数字のみを使用できます" - }, - { - "id": "error_numeric_valid", - "translation": "%s は有効な数値でなければなりません" - }, - { - "id": "error_number_valid", - "translation": "%s は有効な数字でなければなりません" - }, - { - "id": "error_hexadecimal_valid", - "translation": "%s は有効な 16 進数でなければなりません" - }, - { - "id": "error_hex_valid", - "translation": "%s は有効な 16 進数カラーでなければなりません" - }, - { - "id": "error_rgb_valid", - "translation": "%s は有効な RGB カラーでなければなりません" - }, - { - "id": "error_rgba_valid", - "translation": "%s は有効な RGBA カラーでなければなりません" - }, - { - "id": "error_hsl_valid", - "translation": "%s は有効な HSL カラーでなければなりません" - }, - { - "id": "error_hsla_valid", - "translation": "%s は有効な HSLA カラーでなければなりません" - }, - { - "id": "error_url_valid", - "translation": "%s は有効な URL でなければなりません" - }, - { - "id": "error_uri_valid", - "translation": "%s は有効な URI でなければなりません" - }, - { - "id": "error_base64_valid", - "translation": "%s は有効な Base64 文字列でなければなりません" - }, - { - "id": "error_contains", - "translation": "%s にはテキスト '%s' が含まれている必要があります" - }, - { - "id": "error_contains_any", - "translation": "%s には次の文字 '%s' のうち少なくとも 1 つを含める必要があります" - }, - { - "id": "error_excludes", - "translation": "%s にはテキスト '%s' を含めることはできません" - }, - { - "id": "error_excludes_all", - "translation": "%s には次の文字 '%s' を含めることはできません" - }, - { - "id": "error_excludes_rune", - "translation": "%s には次の '%s' を含めることはできません" - }, - { - "id": "error_color_valid", - "translation": "%s は有効なカラーでなければなりません" - }, - { - "id": "error_", - "translation": "%s には %s 個のアイテムが含まれている必要があります" - }, - { - "id": "error_len_array", - "translation": "%s には %s 個のアイテムが含まれている必要があります" - }, - { - "id": "refine_search", - "translation": "検索の絞り込み" - }, - { - "id": "between", - "translation": " " - }, - { - "id": "and", - "translation": "〜" - }, - { - "id": "days", - "translation": "日" - }, - { - "id": "months", - "translation": "ヶ月" - }, - { - "id": "years", - "translation": "年" - }, - { - "id": "refine", - "translation": "絞り込み" - }, - { - "id": "large", - "translation": " " - }, - { - "id": "old", - "translation": "前" - }, - { - "id": "optional", - "translation": "任意" - }, - { - "id": "search_for", - "translation": "以下を検索:" - }, - { - "id": "show", - "translation": "表示" - }, - { - "id": "username_taken", - "translation": "ユーザー名は既に取得されています。以下から選ぶことができます: %s" - }, - { - "id": "email_in_db", - "translation": "メールアドレスが既にデータベース上に存在します" - }, - { - "id": "user_not_found", - "translation": "ユーザーが見つかりません" - }, - { - "id": "incorrect_password", - "translation": "パスワードが不正です" - }, - { - "id": "password_error_generating", - "translation": "パスワードハッシュの生成中にエラーが発生しました" - }, - { - "id": "permission_delete_error", - "translation": "これを削除する権限がありません" - }, - { - "id": "no_username_password", - "translation": "ユーザー名またはパスワードが入力されていません" - }, - { - "id":"account_banned", - "translation": "アカウントは BAN されています" - }, - { - "id": "account_need_activation", - "translation": "このアカウントはモデレーターによるアクティベーションが必要です。ご連絡ください" - }, - { - "id": "retrieve_torrent_error", - "translation": "Torrent を検索できませんでした" - }, - { - "id": "multiple_username_error", - "translation": "複数のユーザー名が指定されています" - }, - { - "id": "elevating_user_error", - "translation": "モデレーターへのステータス降格は禁止されています" - }, - { - "id": "parse_error_line", - "translation": "ライン %d をパースできませんでした" - }, - { - "id": "language_not_available", - "translation": "言語は利用できません" - }, - { - "id": "mascot_url_too_long", - "translation": "マスコット URL が長すぎます (最大 255 文字)" - }, - { - "id": "mascor_url_parse_error", - "translation": "マスコット URL のパース中にエラーが発生しました: %s" - }, - { - "id": "no_id_given", - "translation": "Torrent ID が指定されていません" - }, - { - "id": "error_api_token", - "translation": "エラー API トークンが存在しません" - }, - { - "id": "uploads_disabled", - "translation": "アップロードは無効です" - }, - { - "id": "try_to_delete_report_inexistant", - "translation": "存在しない Torrent 報告を削除しようとしています" - }, - { - "id": "torrent_report_not_created", - "translation": "Torrent 報告は作成されていません" - }, - { - "id": "user_not_deleted", - "translation": "ユーザーは削除されていません" - }, - { - "id": "error_content_type_post", - "translation": "ヘッダーに Content-Type: application/json または multipart/form-data を入力してください" - }, - { - "id": "torrent_name_invalid", - "translation": "Torrent 名が無効です" - }, - { - "id": "torrent_private", - "translation": "Torrent はプライベートです" - }, - { - "id": "torrent_no_working_trackers", - "translation": "Torrent に (稼働中の) トラッカーが含まれていません: トラッカーリスト" - }, - { - "id": "torrent_desc_invalid", - "translation": "Torrent 説明文が無効です" - }, - { - "id": "torrent_cat_invalid", - "translation": "Torrent カテゴリーが無効です" - }, - { - "id": "torrent_lang_invalid", - "translation": "送信された言語はまだサポートされていません。私たちの GitHub ページへの貢献で支援できます" - }, - { - "id": "torrent_cat_is_english", - "translation": "Torrent カテゴリーは英語への翻訳となっていますが、言語が英語になっていません。英語に変更しました" - }, - { - "id": "torrent_cat_not_english", - "translation": "Torrent カテゴリーは英語以外への翻訳となっていますが、言語は英語しか選択されていません" - }, - { - "id": "torrent_magnet_invalid", - "translation": "magnet リンクをパースできません。お確かめください" - }, - { - "id": "torrent_hash_invalid", - "translation": "Torrent ハッシュが不正です" - }, - { - "id": "torrent_plus_magnet", - "translation": "Torrent ファイルもしくは magnet リンクのどちらかをアップロードしてください。両方はできません" - }, - { - "id": "torrent_file_invalid", - "translation": "Torrent ファイルが不正です" - }, - { - "id": "torrent_uri_invalid", - "translation": "Web サイトもしくは IRC リンクが不正です" - }, - { - "id": "api_documentation", - "translation": "API ドキュメント" - }, - { - "id": "api_help", - "translation": "API はあるの?" - }, - { - "id": "trusted", - "translation": "高信頼ユーザーによるアップロード" - }, - { - "id": "reencodes", - "translation": "再エンコード" - }, - { - "id": "remux", - "translation": "他のアップロード者のオリジナルリリースのリミックス" - }, - { - "id": "reupload", - "translation": "欠落した、もしくは関係のない追加ファイルを含む、他のユーザーの Torrent の再アップロード" - }, - { - "id": "red", - "translation": "赤色の場合、" - }, - { - "id": "green", - "translation": "緑色の場合、" - }, - { - "id": "torrent_colors", - "translation": "Torrent の色について" - }, - { - "id": "torrent_preview", - "translation": "Torrent のプレビュー" - } -] +[ + { + "id": "rules", + "translation": "ルール" + }, + { + "id": "no_cp", + "translation": "児童ポルノ禁止 (ロリはこれに含まれません)" + }, + { + "id": "asia", + "translation": "アジア関連のコンテンツのみ (洋画やカートゥーン禁止)" + }, + { + "id": "rules_spam", + "translation": "スパム禁止" + }, + { + "id": "rules_sukebei", + "translation": "えっちいのは sukebei.pantsu.cat へ" + }, + { + "id": "verify_email_title", + "translation": "【Nyaa Pantsu】メールアドレスの認証" + }, + { + "id": "verify_email_content", + "translation": "お使いのメールアドレスを認証するには、以下のリンクをクリックします。" + }, + { + "id": "reset_password_title", + "translation": "【Nyaa Pantsu】パスワードのリセット" + }, + { + "id": "reset_password_content", + "translation": "パスワードをリセットするには、以下のリンクをクリックします。" + }, + { + "id": "register_title", + "translation": "新しいアカウントの作成" + }, + { + "id": "signup_box_title", + "translation": "アカウント登録 ずっと無料です" + }, + { + "id": "username", + "translation": "ユーザー名" + }, + { + "id": "email_address_or_username", + "translation": "メールアドレスまたはユーザー名" + }, + { + "id": "email_address", + "translation": "メールアドレス" + }, + { + "id": "password", + "translation": "パスワード" + }, + { + "id": "confirm_password", + "translation": "パスワードの再入力" + }, + { + "id": "terms_conditions_confirm", + "translation": "登録 をクリックすることにより、Cookie の使用を含む、本サイトの 利用規約 に同意したものとみなします。" + }, + { + "id": "signin", + "translation": "ログイン" + }, + { + "id": "register", + "translation": "登録" + }, + { + "id": "terms_conditions", + "translation": "利用規約" + }, + { + "id": "terms_conditions_full", + "translation": "ダミー" + }, + { + "id": "remember_me", + "translation": "ログイン情報を記憶する" + }, + { + "id": "forgot_password", + "translation": "パスワードをお忘れですか?" + }, + { + "id": "sign_in_box_title", + "translation": "ログイン" + }, + { + "id": "sign_in_title", + "translation": "ログイン" + }, + { + "id": "register_success_title", + "translation": "登録完了" + }, + { + "id": "sign_up_success", + "translation": "ご登録いただきありがとうございます。" + }, + { + "id": "verify_success", + "translation": "お使いのアカウントは有効になりました。" + }, + { + "id": "signup_verification_email", + "translation": "現在は一時的にメールアドレスの認証が無効になっているため、すぐにアカウントを使うことができます。後日、メールボックスを確認してください。迷惑メールフォルダーの確認もお忘れなく。" + }, + { + "id": "signup_verification_noemail", + "translation": "認証が完了しました。今からこのアカウントを使えるようになります。" + }, + { + "id": "email_placeholder", + "translation": "空欄のままでも構いません。" + }, + { + "id": "settings", + "translation": "アカウント設定" + }, + { + "id": "torrents", + "translation": "Torrent" + }, + { + "id": "follow", + "translation": "フォロー" + }, + { + "id": "unfollow", + "translation": "フォロー解除" + }, + { + "id": "user_followed_msg", + "translation": "%s さんをフォローしました。" + }, + { + "id": "user_unfollowed_msg", + "translation": "%s さんのフォローを解除しました。" + }, + { + "id": "profile_page", + "translation": "%s さんのプロフィールページ" + }, + { + "id": "see_more_torrents_from", + "translation": "%s さんの Torrent をもっと表示" + }, + { + "id": "torrents_uploaded", + "translation": "Torrent はアップロードされました" + }, + { + "id": "category", + "translation": "カテゴリー" + }, + { + "id": "name", + "translation": "名前" + }, + { + "id": "date", + "translation": "日時" + }, + { + "id": "size", + "translation": "サイズ" + }, + { + "id": "links", + "translation": "リンク" + }, + { + "id": "home", + "translation": "ホーム" + }, + { + "id": "error_404", + "translation": "404 エラー" + }, + { + "id": "error_400", + "translation": "400 エラー" + }, + { + "id": "error_500", + "translation": "500 エラー" + }, + { + "id": "err_no_results", + "translation": "結果が見つかりません" + }, + { + "id": "upload", + "translation": "アップロード" + }, + { + "id": "faq", + "translation": "よくある質問" + }, + { + "id": "fap", + "translation": "えっち" + }, + { + "id": "fun", + "translation": "にゃあ" + }, + { + "id": "nothing_here", + "translation": "ここには何もありません。" + }, + { + "id": "404_not_found", + "translation": "404 ページが見つかりません" + }, + { + "id": "500_internal_server_error", + "translation": "500 内部サーバーエラー" + }, + { + "id": "400_bad_request", + "translation": "400 不正なリクエスト" + }, + { + "id": "no_torrents_uploaded", + "translation": "まだアップロードされた Torrent はありません。" + }, + { + "id": "profile", + "translation": "プロフィール" + }, + { + "id": "sign_out", + "translation": "ログアウト" + }, + { + "id": "member", + "translation": "アカウント" + }, + { + "id": "no_results_found", + "translation": "結果が見つかりませんでした" + }, + { + "id": "notice_keep_seeding", + "translation": "お知らせ: DHT 機能を有効にし、なるべくシードを継続してください" + }, + { + "id": "official_nyaapocalipse_faq", + "translation": "公式 nyaa の最期についてよくある質問" + }, + { + "id": "links_replacement_mirror", + "translation": "代替 / ミラーリンク" + }, + { + "id": "what_happened", + "translation": "なにが起こったの?" + }, + { + "id": "nyaa_se_went_offline", + "translation": "nyaa.se 並びにその関連ドメイン (nyaatorrents.info など) は 2017年5月1日 にオフラインになった。" + }, + { + "id": "its_not_a_ddos", + "translation": "いつものような DDoS 攻撃ではなく、サイト自体が利用停止になった。" + }, + { + "id": "future_not_looking_good", + "translation": "nyaa.se の将来が危うい。(現に死んでるし)" + }, + { + "id": "recovery_effort", + "translation": "復旧に努力を注いでいるところ。" + }, + { + "id": "is_everything_lost", + "translation": "すべてが失われてしまったの?" + }, + { + "id": "in_short_no", + "translation": "一言で言えば、NO です。" + }, + { + "id": "are_some_things_lost", + "translation": "でも、いくつか失われた?" + }, + { + "id": "answer_is_nyaa_db_lost", + "translation": "4月5日 5月1日までのデータベースはあります。要するに、ほとんど失われていません。" + }, + { + "id": "answer_is_sukebei_db_lost", + "translation": "sukebei の方も問題なく、ほとんど失われていません。" + }, + { + "id": "how_are_we_recovering", + "translation": "どのように復旧してるの?" + }, + { + "id": "answer_how_are_we_recovering", + "translation": "上述のデータベースは nyaa.pantsu.cat と sukebei.pantsu.cat にホストされています。検索機能はすでにあり、近いうちに nyaa.se にあったほぼすべての機能が利用可能になるでしょう。" + }, + { + "id": "how_do_i_link_my_old_account", + "translation": "以前のアップロードを新しいアカウントにリンクさせるにはどうすればいいの?" + }, + { + "id": "answer_how_do_i_link_my_old_account", + "translation": "#nyaapantsu-help@Rizon に参加し、モデレーターに以前のユーザー名と新しいユーザー名を添えて Torrent を移行するようお申し付けください。" + }, + { + "id": "are_the_trackers_working", + "translation": "Torrent ファイルはまだ利用できる?" + }, + { + "id": "answer_are_the_trackers_working", + "translation": "トラッカーがダウンしたとしても、Seeder はまだ DHT ネットワークに接続しているはずです。ファイルが DHT ネットワーク上にリスティングされてさえいれば、いつも通り利用できます。" + }, + { + "id": "how_do_i_download_the_torrents", + "translation": "どうやって Torrent をダウンロードすればいいの?" + }, + { + "id": "answer_how_do_i_download_the_torrents", + "translation": "magnet リンク をご利用ください。magnet リンクは BitTorrent クライアントが DHT ネットワーク上のファイルを検出するのに利用されます。もちろんいつも通りダウンロードすることができます。" + }, + { + "id": "magnet_link_should_look_like", + "translation": "magnet リンクは次のようになっているはずです:" + }, + { + "id": "which_trackers_do_you_recommend", + "translation": "どのトラッカーがおすすめ?" + }, + { + "id": "answer_which_trackers_do_you_recommend", + "translation": "doko.moe という独自のトラッカーをご用意しました。アップロードする前にリストの一番上に追加してください。また、Torrent の安定性を維持するために、以下のトラッカーをすべて追加する必要があります。" + }, + { + "id": "how_can_i_help", + "translation": "なにか手伝えることはある?" + }, + { + "id": "answer_how_can_i_help", + "translation": "ウェブ開発の専門知識がおありでしたら、irc.rizon.net の #nyaapantsu IRC チャンネルに参加できますよ。また、現在のデータベースをお持ちの場合、特に sukebei の場合は、ぜひともアップロードしていただきたいです。" + }, + { + "id": "your_design_sucks_found_a_bug", + "translation": "なんだこのデザイン!? / バグを見つけたよ" + }, + { + "id": "why_written_in_go", + "translation": "なんで Go で書いてるの?" + }, + { + "id": "authors_favorite_language", + "translation": "作者の一番好きなプログラミング言語だからです。" + }, + { + "id": "torrent_file", + "translation": "Torrent ファイル" + }, + { + "id": "uploading_file_prefills_fields", + "translation": "Torrent ファイルをアップロードする前にいくつかの項目を入力できます。そうすることをお勧めします。" + }, + { + "id": "magnet_link", + "translation": "magnet リンク" + }, + { + "id": "all_categories", + "translation": "すべてのカテゴリー" + }, + { + "id": "select_a_torrent_category", + "translation": "-- Torrent カテゴリーを選択 --" + }, + { + "id": "anime", + "translation": "アニメ" + }, + { + "id": "anime_amv", + "translation": "アニメ ‐ AMV" + }, + { + "id": "anime_english_translated", + "translation": "アニメ ‐ 英語翻訳" + }, + { + "id": "anime_non_english_translated", + "translation": "アニメ ‐ 英語以外への翻訳" + }, + { + "id": "anime_raw", + "translation": "アニメ ‐ RAW" + }, + { + "id": "audio", + "translation": "オーディオ" + }, + { + "id": "audio_lossless", + "translation": "オーディオ ‐ 可逆圧縮" + }, + { + "id": "audio_lossy", + "translation": "オーディオ ‐ 非可逆圧縮" + }, + { + "id": "literature", + "translation": "書籍" + }, + { + "id": "literature_english_translated", + "translation": "書籍 ‐ 英語翻訳" + }, + { + "id": "literature_raw", + "translation": "書籍 ‐ RAW" + }, + { + "id": "literature_non_english_translated", + "translation": "書籍 ‐ 英語以外への翻訳" + }, + { + "id": "live_action", + "translation": "実写" + }, + { + "id": "live_action_english_translated", + "translation": "実写 ‐ 英語翻訳" + }, + { + "id": "live_action_idol_pv", + "translation": "実写 ‐ アイドル / PV" + }, + { + "id": "live_action_non_english_translated", + "translation": "実写 ‐ 英語以外への翻訳" + }, + { + "id": "live_action_raw", + "translation": "実写 ‐ RAW" + }, + { + "id": "pictures", + "translation": "画像" + }, + { + "id": "pictures_graphics", + "translation": "画像 ‐ グラフィック" + }, + { + "id": "pictures_photos", + "translation": "画像 ‐ 写真" + }, + { + "id": "software", + "translation": "ソフトウェア" + }, + { + "id": "software_applications", + "translation": "ソフトウェア ‐ アプリ" + }, + { + "id": "software_games", + "translation": "ソフトウェア ‐ ゲーム" + }, + { + "id": "art", + "translation": "二次元" + }, + { + "id": "art_anime", + "translation": "二次元 - アニメ" + }, + { + "id": "art_doujinshi", + "translation": "二次元 - 同人誌" + }, + { + "id": "art_games", + "translation": "二次元 - ゲーム" + }, + { + "id": "art_manga", + "translation": "二次元 - 漫画" + }, + { + "id": "art_pictures", + "translation": "二次元 - 画像" + }, + { + "id": "real_life", + "translation": "三次元" + }, + { + "id": "real_life_photobooks_and_pictures", + "translation": "三次元 - フォトブック、写真" + }, + { + "id": "real_life_videos", + "translation": "三次元 - ビデオ" + }, + { + "id": "torrent_description", + "translation": "Torrent の説明" + }, + { + "id": "description_markdown_notice", + "translation": "説明文には MarkDown 記法を使うことができます。" + }, + { + "id": "show_all", + "translation": "すべて表示" + }, + { + "id": "filter_remakes", + "translation": "再頒布を非表示" + }, + { + "id": "trusted", + "translation": "高信頼のみ" + }, + { + "id": "search", + "translation": "検索" + }, + { + "id": "hash", + "translation": "ハッシュ" + }, + { + "id": "description", + "translation": "説明" + }, + { + "id": "no_description", + "translation": "説明はありません。" + }, + { + "id": "comments", + "translation": "コメント" + }, + { + "id": "submit_a_comment_as_username", + "translation": "%s でコメントを残す" + }, + { + "id": "submit_a_comment_as_anonymous", + "translation": "匿名ユーザーでコメントを残す" + }, + { + "id": "submit", + "translation": "送信" + }, + { + "id": "personal_info", + "translation": "個人情報" + }, + { + "id": "language", + "translation": "言語" + }, + { + "id": "current_password", + "translation": "現在のパスワード" + }, + { + "id": "role", + "translation": "役割" + }, + { + "id": "banned", + "translation": "BAN" + }, + { + "id": "default", + "translation": "デフォルト" + }, + { + "id": "trusted_member", + "translation": "高信頼アカウント" + }, + { + "id": "scraped_user", + "translation": "保留ユーザー" + }, + { + "id": "moderator", + "translation": "モデレーター" + }, + { + "id": " api_token", + "translation": "API トークン" + }, + { + "id": "save_changes", + "translation": "変更を保存" + }, + { + "id": "profile_updated", + "translation": "プロフィールが更新されました。" + }, + { + "id": "delete_account", + "translation": "アカウントの削除" + }, + { + "id": "delete_account_confirm", + "translation": "このアカウントを削除してもよろしいですか。" + }, + { + "id": "delete_success", + "translation": "アカウントが削除されました。" + }, + { + "id": "moderation", + "translation": "モデレーション" + }, + { + "id": "extensions_and_plugins", + "translation": "拡張機能およびプラグイン (サードパーティー製)" + }, + { + "id": "qbittorrent_plugin", + "translation": "qBittorrent プラグイン" + }, + { + "id": "local_client", + "translation": "ローカルクライアント" + }, + { + "id": "chrome_extension", + "translation": "Chrome 拡張機能" + }, + { + "id": "firefox_extension", + "translation": "Firefox 拡張機能" + }, + { + "id": "android_app", + "translation": "Android アプリ" + }, + { + "id": "who_is_renchon", + "translation": "「れんちょん」って誰やねん" + }, + { + "id": "renchon_anon_explanation", + "translation": "「れんちょん」は匿名でアップロードもしくはコメントを書き込んだ場合に割り当てられるユーザー名なのん。オリジナルのアップロード者と一緒に表示されることがあるけど、オリジナルの nyaa からインポートされた Torrent にも使用されるのん。" + }, + { + "id": "mark_as_remake", + "translation": "再頒布としてマークする" + }, + { + "id": "email_changed", + "translation": "メールアドレスが変更されました。なお、送信されたリンクをクリックして認証を済ませる必要があります: %s" + }, + { + "id": "torrent_status", + "translation": "Torrent の状態" + }, + { + "id": "torrent_status_normal", + "translation": "通常" + }, + { + "id": "torrent_status_remake", + "translation": "再頒布" + }, + { + "id": "torrent_status_blocked", + "translation": "ロック" + }, + { + "id": "profile_edit_page", + "translation": "%s のプロフィールを編集" + }, + { + "id": "seeders", + "translation": "Seeder 数" + }, + { + "id": "leechers", + "translation": "Leecher 数" + }, + { + "id": "completed", + "translation": "完了数" + }, + { + "id": "change_language", + "translation": "言語の変更" + }, + { + "id": "language_name", + "translation": "日本語" + }, + { + "id": "language_code", + "translation": "ja-jp" + }, + { + "id": "delete", + "translation": "削除" + }, + { + "id": "website_link", + "translation": "Web サイト" + }, + { + "id": "files", + "translation": "ファイル一覧" + }, + { + "id": "no_files", + "translation": "ファイル一覧が見つからない?もー!意味わかんない!" + }, + { + "id": "uploaded_by", + "translation": "アップロード者" + }, + { + "id": "report_btn", + "translation": "通報" + }, + { + "id": "are_you_sure", + "translation": "よろしいですか。" + }, + { + "id": "report_torrent_number", + "translation": "Torrent #%s を通報" + }, + { + "id": "report_type", + "translation": "通報理由" + }, + { + "id": "illegal_content", + "translation": "違法なコンテンツ" + }, + { + "id": "spam_garbage", + "translation": "スパム / ゴミファイル" + }, + { + "id": "wrong_category", + "translation": "誤ったカテゴリー" + }, + { + "id": "duplicate_deprecated", + "translation": "重複 / 非推奨" + }, + { + "id": "captcha", + "translation": "画像認証" + }, + { + "id": "captcha_audio", + "translation": "音声認証" + }, + { + "id": "file_name", + "translation": "ファイル名" + }, + { + "id": "cancel", + "translation": "キャンセル" + }, + { + "id": "please_include_our_tracker", + "translation": "トラッカーに udp://tracker.doko.moe:6969 を含めてください。" + }, + { + "id": "unknown", + "translation": "不明" + }, + { + "id": "last_scraped", + "translation": "最終統計日時: " + }, + { + "id": "server_status_link", + "translation": "サーバーの状態" + }, + { + "id": "no_database_dumps_available", + "translation": "現在利用可能なデータベースダンプはありません。" + }, + { + "id": "clear_notifications", + "translation": "通知をクリア" + }, + { + "id": "notifications_cleared", + "translation": "通知がクリアされました。" + }, + { + "id": "my_notifications", + "translation": "通知" + }, + { + "id": "new_torrent_uploaded", + "translation": "Torrent がアップロードされました: \"%s\"、 %s さんから" + }, + { + "id": "torrent_uploaded", + "translation": "Torrent は正常にアップロードされました。" + }, + { + "id": "preferences", + "translation": "カスタム設定" + }, + { + "id": "new_torrent_settings", + "translation": "フォロー中のアカウントから新しい Torrent がアップロードされたら通知する" + }, + { + "id": "new_torrent_email_settings", + "translation": "フォロー中のアカウントから新しい Torrent がアップロードされたらメールで通知する" + }, + { + "id": "new_comment_settings", + "translation": "自分の Torrent にコメントが付いたら通知する" + }, + { + "id": "new_comment_email_settings", + "translation": "自分の Torrent にコメントが付いたらメールで通知する" + }, + { + "id": "new_responses_settings", + "translation": "自分のコメントにリプライが付いたら通知する" + }, + { + "id": "new_responses_email_settings", + "translation": "自分のコメントにリプライが付いたらメールで通知する" + }, + { + "id": "new_follower_settings", + "translation": "フォローされたら通知する" + }, + { + "id": "new_follower_email_settings", + "translation": "フォローされたらメールで通知する" + }, + { + "id": "followed_settings", + "translation": "フォローしたら通知する" + }, + { + "id": "followed_email_settings", + "translation": "フォローしたらメールで通知する" + }, + { + "id": "yes", + "translation": "はい" + }, + { + "id": "no", + "translation": "いいえ" + }, + { + "id": "new_comment_on_torrent", + "translation": "コメントが付きました: \"%s\"" + }, + { + "id": "no_action_selected", + "translation": "アクションが選択されていません。" + }, + { + "id": "no_move_location_selected", + "translation": "移動先が選択されていません。" + }, + { + "id": "select_one_element", + "translation": "1 つ以上の要素を選択する必要があります。" + }, + { + "id": "torrent_moved", + "translation": "Torrent %s が移動されました。" + }, + { + "id": "no_status_exist", + "translation": "ステータス %d は存在しません。" + }, + { + "id": "torrent_deleted", + "translation": "Torrent %s が削除されました。" + }, + { + "id": "torrent_deleted_by", + "translation": "Torrent #%s (%s アップロード) は %s によって削除されました。" + }, + { + "id": "torrent_edited_by", + "translation": "Torrent #%s (%s アップロード) は %s によって編集されました。" + }, + { + "id": "torrent_blocked_by", + "translation": "Torrent #%s (%s アップロード) は %s によってロックされました。" + }, + { + "id": "torrent_blocked_by", + "translation": "Torrent #%s (%s アップロード) は %s によってロック解除されました。" + }, + { + "id": "torrents_deleted", + "translation": "Torrent が削除されました" + }, + { + "id": "delete_torrent", + "translation": "Torrent を削除" + }, + { + "id": "delete_report", + "translation": "レポートを削除" + }, + { + "id": "comment_deleted_by", + "translation": "コメント #%s (%s 投稿) は %s によって削除されました。" + }, + { + "id": "comment_edited_by", + "translation": "コメント #%s (%s 投稿) は %s によって編集されました。" + }, + { + "id": "no_action_exist", + "translation": "アクション %s は存在しません。" + }, + { + "id": "torrent_not_exist", + "translation": "Torrent ID %s は存在しません。" + }, + { + "id": "something_went_wrong", + "translation": "不具合が発生しました。" + }, + { + "id": "nb_torrents_updated", + "translation": "%d 個の Torrent が更新されました。" + }, + { + "id": "torrent_updated", + "translation": "Torrent の詳細が更新されました。" + }, + { + "id": "fail_torrent_update", + "translation": "Torrent の更新に失敗しました。" + }, + { + "id": "bad_captcha", + "translation": "画像認証が間違っています。" + }, + { + "id": "comment_empty", + "translation": "コメントなし" + }, + { + "id": "no_owner_selected", + "translation": "Torrent の新しいオーナーが選択されていません。" + }, + { + "id": "no_category_selected", + "translation": "カテゴリーが選択されていません。" + }, + { + "id": "no_user_found_id", + "translation": "ID %d のユーザーはデータベースに存在しません。" + }, + { + "id": "invalid_torrent_category", + "translation": "Torrent カテゴリーは存在しません。" + }, + { + "id": "torrent_owner_changed", + "translation": "Torrent \"%s\" のオーナーが変更されました。" + }, + { + "id": "torrent_category_changed", + "translation": "Torrent \"%s\" のカテゴリーが変更されました。" + }, + { + "id": "torrent_reports_deleted", + "translation": "Torrent \"%s\" の通報が削除されました。" + }, + { + "id": "edit", + "translation": "編集" + }, + { + "id": "lock_delete", + "translation": "ロックおよび削除" + }, + { + "id": "delete_definitely_torrent_warning", + "translation": "削除するとファイルを元に戻すことはできなくなります。また、他の誰かがファイルを再アップロードする恐れもあります。" + }, + { + "id": "delete_definitely", + "translation": "確実に削除" + }, + { + "id": "torrent_unblock", + "translation": "ロック解除" + }, + { + "id": "torrent_block", + "translation": "ロック" + }, + { + "id": "torrent_deleted_definitely", + "translation": "Torrent がデータベースから削除されました。" + }, + { + "id": "torrent_not_deleted", + "translation": "Torrent は削除されていません" + }, + { + "id": "torrent_unblocked", + "translation": "Torrent のロックが解除されました。" + }, + { + "id": "torrent_blocked", + "translation": "Torrent がロックされました。" + }, + { + "id": "torrent_nav_notdeleted", + "translation": "Torrent は削除されません" + }, + { + "id": "torrent_nav_deleted", + "translation": "Torrent は削除されます" + }, + { + "id": "change_settings", + "translation": "外観 / 言語の変更" + }, + { + "id": "mascot", + "translation": "マスコット" + }, + { + "id": "theme", + "translation": "テーマ" + }, + { + "id": "theme_select", + "translation": "-- テーマを選択 --" + }, + { + "id": "theme_none", + "translation": "なし" + }, + { + "id": "mark_as_hidden", + "translation": "非表示としてマークする" + }, + { + "id": "cookies", + "translation": "保存をクリックすることで、Cookie の使用に同意したことになります" + }, + { + "id": "show", + "translation": "表示" + }, + { + "id": "hide", + "translation": "非表示" + }, + { + "id": "nyaa_pantsu", + "translation": "Nyaa Pantsu" + }, + { + "id": "users", + "translation": "ユーザー" + }, + { + "id": "torrent_reports", + "translation": "Torrent レポート" + }, + { + "id": "show_mod_tools", + "translation": "Mod Tools を表示" + }, + { + "id": "hide_mod_tools", + "translation": "Mod Tools を非表示" + }, + { + "id": "following_changes_applied", + "translation": "以下の変更が適用されます" + }, + { + "id": "changes_in_following_order", + "translation": "変更は以下の順序で行われます:" + }, + { + "id": "edit_changes", + "translation": "変更の編集" + }, + { + "id": "delete_changes", + "translation": "変更の破棄" + }, + { + "id": "owner_id_placeholder", + "translation": "新しいオーナー" + }, + { + "id": "try_new_attempt", + "translation": "変更を試行中..." + }, + { + "id": "query_is_broken", + "translation": "クエリー ({0}?{1}) が破損しているようです。" + }, + { + "id": "query_executed_success", + "translation": "クエリーが正常に実行されました。" + }, + { + "id": "all_operations_done", + "translation": "すべての操作が完了しました。" + }, + { + "id": "refreshing_in", + "translation": "{0} 秒後にページが更新されます..." + }, + { + "id": "delete_reports_with_torrents", + "translation": "選択した Torrent に沿ってレポートを削除しますか。" + }, + { + "id": "with_st", + "translation": "{0} に沿う" + }, + { + "id": "and_reports", + "translation": "およびレポート" + }, + { + "id": "reports", + "translation": "レポート" + }, + { + "id": "lock", + "translation": "ロック" + }, + { + "id": "status_js", + "translation": "status: {0}" + }, + { + "id": "owner_id_js", + "translation": "owner_id: {0}" + }, + { + "id": "category_js", + "translation": "category: {0}" + }, + { + "id": "no_changes", + "translation": "変更なし" + }, + { + "id": "query_nb", + "translation": "クエリー #{0}" + }, + { + "id": "reason", + "translation": "理由" + }, + { + "id": "actions", + "translation": "アクション" + }, + { + "id": "action_select", + "translation": "アクション..." + }, + { + "id": "change_status", + "translation": "状態の変更" + }, + { + "id": "to_status", + "translation": "変更後の状態..." + }, + { + "id": "torrents_not_deleted", + "translation": "Torrent は削除されません" + }, + { + "id": "more", + "translation": "もっと表示" + }, + { + "id": "last_comments", + "translation": "最後のコメント" + }, + { + "id": "last_reports", + "translation": "最後のレポート" + }, + { + "id": "last_torrents", + "translation": "最後の Torrent" + }, + { + "id": "last_users", + "translation": "最後のユーザー" + }, + { + "id": "moderation_overview", + "translation": "モデレーションの概要" + }, + { + "id": "users_list", + "translation": "ユーザー一覧" + }, + { + "id": "comments_list", + "translation": "コメント一覧" + }, + { + "id": "reports_list", + "translation": "レポート一覧" + }, + { + "id": "torrents_list", + "translation": "Torrent 一覧" + }, + { + "id": "torrent_edit_panel", + "translation": "Torrent 編集パネル" + }, + { + "id": "torrent_reassign", + "translation": "Torrent 再割り当て" + }, + { + "id": "reassign_warning", + "translation": "Torrent の新しいユーザーへの再割り当ては容易に元に戻すことができないため、注意して行うようにしてください。" + }, + { + "id": "previous_username", + "translation": "変更前のユーザー名" + }, + { + "id": "torrent_id", + "translation": "Torrent ID" + }, + { + "id": "reassign_indication", + "translation": "1 ラインにつき 1 つの ID もしくは 1 つのユーザー名" + }, + { + "id": "reassign_warning_2", + "translation": "処理には時間がかかることがあります。絶対にリクエストを中止しないでください。" + }, + { + "id": "reassign_to", + "translation": "再割り当て先:" + }, + { + "id": "reassign_based_on", + "translation": "以下に基づいて再割り当て:" + }, + { + "id": "user_id", + "translation": "ユーザー ID" + }, + { + "id": "mascot_url", + "translation": "マスコット URL" + }, + { + "id": "no_notifications", + "translation": "通知なし" + }, + { + "id": "report_msg", + "translation": "Torrent #%s は通報されました。" + }, + { + "id": "email_not_valid", + "translation": "メールアドレスが有効ではありません。" + }, + { + "id": "username_illegal", + "translation": "ユーザー名に使用できない文字が含まれています。" + }, + { + "id": "torrent_language", + "translation": "Torrent の言語" + }, + { + "id": "select_a_torrent_language", + "translation": "-- Torrent の言語を選択 --" + }, + { + "id": "language_en-us_name", + "translation": "英語" + }, + { + "id": "language_ca-es_name", + "translation": "カタルーニャ語" + }, + { + "id": "language_de-de_name", + "translation": "ドイツ語" + }, + { + "id": "language_es-es_name", + "translation": "スペイン語" + }, + { + "id": "language_es-mx_name", + "translation": "スペイン語 (ラテンアメリカ)" + }, + { + "id": "language_fr-fr_name", + "translation": "フランス語" + }, + { + "id": "language_hu-hu_name", + "translation": "ハンガリー語" + }, + { + "id": "language_is-is_name", + "translation": "アイスランド語" + }, + { + "id": "language_it-it_name", + "translation": "イタリア語" + }, + { + "id": "language_ja-jp_name", + "translation": "日本語" + }, + { + "id": "language_ko-kr_name", + "translation": "韓国語" + }, + { + "id": "language_nb-no_name", + "translation": "ノルウェー語" + }, + { + "id": "language_nl-nl_name", + "translation": "オランダ語" + }, + { + "id": "language_pt-br_name", + "translation": "ポルトガル語 (ブラジル)" + }, + { + "id": "language_pt-pt_name", + "translation": "ポルトガル語 (ポルトガル)" + }, + { + "id": "language_ro-ro_name", + "translation": "ルーマニア語" + }, + { + "id": "language_ru-ru_name", + "translation": "ロシア語" + }, + { + "id": "language_sv-se_name", + "translation": "スウェーデン語" + }, + { + "id": "language_th-th_name", + "translation": "タイ語" + }, + { + "id": "language_zh-cn_name", + "translation": "簡体中国語" + }, + { + "id": "language_zh-tw_name", + "translation": "繁体中国語" + }, + { + "id": "language_other_name", + "translation": "その他" + }, + { + "id": "language_multiple_name", + "translation": "複数の言語" + }, + { + "id": "activity_list", + "translation": "アクティビティー一覧" + }, + { + "id": "activities", + "translation": "アクティビティー" + }, + { + "id": "filter", + "translation": "フィルター" + }, + { + "id": "error_min_length", + "translation": "必要な入力値 %s の最小長: %s" + }, + { + "id": "error_min_number", + "translation": "%s は %s 以上でなければなりません" + }, + { + "id": "error_min_field", + "translation": "%s は %s 以上でなければなりません" + }, + { + "id": "error_min_array", + "translation": "%s には少なくとも %s 個のアイテムが必要です" + }, + { + "id": "error_less_date", + "translation": "%s は現在の日付および時刻より小さくなければなりません" + }, + { + "id": "error_less_array", + "translation": "%s は %s 個未満のアイテムを含む必要があります" + }, + { + "id": "error_less_length", + "translation": "%s は長さが %s 未満でなければなりません" + }, + { + "id": "error_less_number", + "translation": "%s は %s 未満でなければなりません" + }, + { + "id": "error_less_equal_date", + "translation": "%s は現在の日付および時刻以下でなければなりません" + }, + { + "id": "error_greater_date", + "translation": "%s は現在の日付および時刻より大きくなければなりません" + }, + { + "id": "error_greater_length", + "translation": "%s は長さが %s より大きくなければなりません" + }, + { + "id": "error_greater_number", + "translation": "%s は %s より大きくなければなりません" + }, + { + "id": "error_greater_equal_date", + "translation": "%s は現在の日付および時刻以上でなければなりません" + }, + { + "id": "error_max_field", + "translation": "%s は %s 以下でなければなりません" + }, + { + "id": "error_max_length", + "translation": "必要な入力値 %s の最大長: %s" + }, + { + "id": "error_max_number", + "translation": "%s は %s 以下でなければなりません" + }, + { + "id": "error_max_array", + "translation": "%s にはアイテム %s 個まで含める必要があります" + }, + { + "id": "error_length", + "translation": "必要な入力値 %s の長さ: %s" + }, + { + "id": "error_equal", + "translation": "%s は %s と等しくありません" + }, + { + "id": "error_same_value", + "translation": "同じ %s である必要があります" + }, + { + "id": "error_field", + "translation": "フィールドで予期せぬエラーが発生しました: %s" + }, + { + "id": "error_not_equal", + "translation": "%s は %s と同じであってはなりません" + }, + { + "id": "error_wrong_value", + "translation": "誤った入力値: %s" + }, + { + "id": "error_field_needed", + "translation": "必要なフィールド: %s" + }, + { + "id": "error_len_array", + "translation": "%s には %s 個のアイテムが含まれている必要があります" + }, + { + "id": "error_alpha", + "translation": "%s には英字のみを使用できます" + }, + { + "id": "error_alphanum", + "translation": "%s には英数字のみを使用できます" + }, + { + "id": "error_numeric_valid", + "translation": "%s は有効な数値でなければなりません" + }, + { + "id": "error_number_valid", + "translation": "%s は有効な数字でなければなりません" + }, + { + "id": "error_hexadecimal_valid", + "translation": "%s は有効な 16 進数でなければなりません" + }, + { + "id": "error_hex_valid", + "translation": "%s は有効な 16 進数カラーでなければなりません" + }, + { + "id": "error_rgb_valid", + "translation": "%s は有効な RGB カラーでなければなりません" + }, + { + "id": "error_rgba_valid", + "translation": "%s は有効な RGBA カラーでなければなりません" + }, + { + "id": "error_hsl_valid", + "translation": "%s は有効な HSL カラーでなければなりません" + }, + { + "id": "error_hsla_valid", + "translation": "%s は有効な HSLA カラーでなければなりません" + }, + { + "id": "error_url_valid", + "translation": "%s は有効な URL でなければなりません" + }, + { + "id": "error_uri_valid", + "translation": "%s は有効な URI でなければなりません" + }, + { + "id": "error_base64_valid", + "translation": "%s は有効な Base64 文字列でなければなりません" + }, + { + "id": "error_contains", + "translation": "%s にはテキスト '%s' が含まれている必要があります" + }, + { + "id": "error_contains_any", + "translation": "%s には次の文字 '%s' のうち少なくとも 1 つを含める必要があります" + }, + { + "id": "error_excludes", + "translation": "%s にはテキスト '%s' を含めることはできません" + }, + { + "id": "error_excludes_all", + "translation": "%s には次の文字 '%s' を含めることはできません" + }, + { + "id": "error_excludes_rune", + "translation": "%s には次の '%s' を含めることはできません" + }, + { + "id": "error_color_valid", + "translation": "%s は有効なカラーでなければなりません" + }, + { + "id": "error_", + "translation": "%s には %s 個のアイテムが含まれている必要があります" + }, + { + "id": "error_len_array", + "translation": "%s には %s 個のアイテムが含まれている必要があります" + }, + { + "id": "refine_search", + "translation": "検索の絞り込み" + }, + { + "id": "between", + "translation": " " + }, + { + "id": "and", + "translation": "〜" + }, + { + "id": "days", + "translation": "日" + }, + { + "id": "months", + "translation": "ヶ月" + }, + { + "id": "years", + "translation": "年" + }, + { + "id": "refine", + "translation": "絞り込み" + }, + { + "id": "large", + "translation": " " + }, + { + "id": "old", + "translation": "前" + }, + { + "id": "optional", + "translation": "任意" + }, + { + "id": "search_for", + "translation": "以下を検索:" + }, + { + "id": "show", + "translation": "表示" + }, + { + "id": "username_taken", + "translation": "ユーザー名は既に取得されています。以下から選ぶことができます: %s" + }, + { + "id": "email_in_db", + "translation": "メールアドレスが既にデータベース上に存在します" + }, + { + "id": "user_not_found", + "translation": "ユーザーが見つかりません" + }, + { + "id": "incorrect_password", + "translation": "パスワードが不正です" + }, + { + "id": "password_error_generating", + "translation": "パスワードハッシュの生成中にエラーが発生しました" + }, + { + "id": "permission_delete_error", + "translation": "これを削除する権限がありません" + }, + { + "id": "no_username_password", + "translation": "ユーザー名またはパスワードが入力されていません" + }, + { + "id": "account_banned", + "translation": "アカウントは BAN されています" + }, + { + "id": "account_need_activation", + "translation": "このアカウントはモデレーターによるアクティベーションが必要です。ご連絡ください" + }, + { + "id": "retrieve_torrent_error", + "translation": "Torrent を検索できませんでした" + }, + { + "id": "multiple_username_error", + "translation": "複数のユーザー名が指定されています" + }, + { + "id": "elevating_user_error", + "translation": "モデレーターへのステータス降格は禁止されています" + }, + { + "id": "parse_error_line", + "translation": "ライン %d をパースできませんでした" + }, + { + "id": "language_not_available", + "translation": "言語は利用できません" + }, + { + "id": "mascot_url_too_long", + "translation": "マスコット URL が長すぎます (最大 255 文字)" + }, + { + "id": "mascor_url_parse_error", + "translation": "マスコット URL のパース中にエラーが発生しました: %s" + }, + { + "id": "no_id_given", + "translation": "Torrent ID が指定されていません" + }, + { + "id": "error_api_token", + "translation": "エラー API トークンが存在しません" + }, + { + "id": "uploads_disabled", + "translation": "アップロードは無効です" + }, + { + "id": "try_to_delete_report_inexistant", + "translation": "存在しない Torrent 報告を削除しようとしています" + }, + { + "id": "torrent_report_not_created", + "translation": "Torrent 報告は作成されていません" + }, + { + "id": "user_not_deleted", + "translation": "ユーザーは削除されていません" + }, + { + "id": "error_content_type_post", + "translation": "ヘッダーに Content-Type: application/json または multipart/form-data を入力してください" + }, + { + "id": "torrent_name_invalid", + "translation": "Torrent 名が無効です" + }, + { + "id": "torrent_private", + "translation": "Torrent はプライベートです" + }, + { + "id": "torrent_no_working_trackers", + "translation": "Torrent に (稼働中の) トラッカーが含まれていません: トラッカーリスト" + }, + { + "id": "torrent_desc_invalid", + "translation": "Torrent 説明文が無効です" + }, + { + "id": "torrent_cat_invalid", + "translation": "Torrent カテゴリーが無効です" + }, + { + "id": "torrent_lang_invalid", + "translation": "送信された言語はまだサポートされていません。私たちの GitHub ページへの貢献で支援できます" + }, + { + "id": "torrent_cat_is_english", + "translation": "Torrent カテゴリーは英語への翻訳となっていますが、言語が英語になっていません。英語に変更しました" + }, + { + "id": "torrent_cat_not_english", + "translation": "Torrent カテゴリーは英語以外への翻訳となっていますが、言語は英語しか選択されていません" + }, + { + "id": "torrent_magnet_invalid", + "translation": "magnet リンクをパースできません。お確かめください" + }, + { + "id": "torrent_hash_invalid", + "translation": "Torrent ハッシュが不正です" + }, + { + "id": "torrent_plus_magnet", + "translation": "Torrent ファイルもしくは magnet リンクのどちらかをアップロードしてください。両方はできません" + }, + { + "id": "torrent_file_invalid", + "translation": "Torrent ファイルが不正です" + }, + { + "id": "torrent_uri_invalid", + "translation": "Web サイトもしくは IRC リンクが不正です" + }, + { + "id": "api_documentation", + "translation": "API ドキュメント" + }, + { + "id": "api_help", + "translation": "API はあるの?" + }, + { + "id": "trusted", + "translation": "高信頼ユーザーによるアップロード" + }, + { + "id": "reencodes", + "translation": "再エンコード" + }, + { + "id": "remux", + "translation": "他のアップロード者のオリジナルリリースのリミックス" + }, + { + "id": "reupload", + "translation": "欠落した、もしくは関係のない追加ファイルを含む、他のユーザーの Torrent の再アップロード" + }, + { + "id": "red", + "translation": "赤色の場合、" + }, + { + "id": "green", + "translation": "緑色の場合、" + }, + { + "id": "torrent_colors", + "translation": "Torrent の色について" + }, + { + "id": "torrent_preview", + "translation": "Torrent のプレビュー" + } +] diff --git a/translations/nl-nl.all.json b/translations/nl-nl.all.json index 5351ef8f..6fb75e21 100644 --- a/translations/nl-nl.all.json +++ b/translations/nl-nl.all.json @@ -548,7 +548,7 @@ "translation": "Real Life" }, { - "id": "real_life_photobooks_and_pictures", + "id": "real_life_photobooks_and_pictures", "translation": "Real Life - Fotoboeken en Afbeeldingen" }, { diff --git a/translations/pt-br.all.json b/translations/pt-br.all.json index 40b2eff6..4c5c2288 100644 --- a/translations/pt-br.all.json +++ b/translations/pt-br.all.json @@ -1,1374 +1,1374 @@ -[ - { - "id": "verify_email_title", - "translation": "Verifique o seu endereço de e-mail do Nyaapantsu." - }, - { - "id": "verify_email_content", - "translation": "Clique no link abaixo para verificar o seu endereço de e-mail." - }, - { - "id": "reset_password_title", - "translation": "Redefina a sua senha do Nyaapantsu." - }, - { - "id": "reset_password_content", - "translation": "Clique no link abaixo para redefinir a sua senha." - }, - { - "id": "register_title", - "translation": "Criar conta" - }, - { - "id": "signup_box_title", - "translation": "Por favor, cadastre-se (é de graça e sempre será)" - }, - { - "id": "username", - "translation": "Nome de usuário" - }, - { - "id": "email_address_or_username", - "translation": "Endereço de e-mail ou nome de usuário" - }, - { - "id": "email_address", - "translation": "Endereço de e-mail" - }, - { - "id": "password", - "translation": "Senha" - }, - { - "id": "confirm_password", - "translation": "Confirmar senha" - }, - { - "id": "terms_conditions_confirm", - "translation": "Ao clicar em Registrar, você concorda com os Termos e Condições estabelecidos pelo site, incluindo o nosso uso de cookies." - }, - { - "id": "signin", - "translation": "Iniciar sessão" - }, - { - "id": "register", - "translation": "Registrar" - }, - { - "id": "terms_conditions", - "translation": "Termos e Condições" - }, - { - "id": "terms_conditions_full", - "translation": "Algumas coisas." - }, - { - "id": "remember_me", - "translation": "Lembre-se de mim" - }, - { - "id": "forgot_password", - "translation": "Esqueceu sua senha?" - }, - { - "id": "sign_in_box_title", - "translation": "Por favor, inicie a sessão" - }, - { - "id": "sign_in_title", - "translation": "Iniciar sessão" - }, - { - "id": "register_success_title", - "translation": "Cadastro bem-sucedido" - }, - { - "id": "sign_up_success", - "translation": "Obrigado por se cadastrar!" - }, - { - "id": "verify_success", - "translation": "A sua conta foi ativada!" - }, - { - "id": "signup_verification_email", - "translation": "No momento, a verificação por e-mail está desabilitada, então você já pode usar a sua conta. Futuramente, verifique a sua caixa de entrada (e pasta de spam!) pelo e-mail de verificação." - }, - { - "id": "signup_verification_noemail", - "translation": "Cadastro bem-sucedido, você já pode usar a sua conta." - }, - { - "id": "email_placeholder", - "translation": "Não deve ser deixado vazio." - }, - { - "id": "settings", - "translation": "Configurações de conta" - }, - { - "id": "torrents", - "translation": "Torrents" - }, - { - "id": "follow", - "translation": "Seguir" - }, - { - "id": "unfollow", - "translation": "Deixar de seguir" - }, - { - "id": "user_followed_msg", - "translation": "Você seguiu %s!" - }, - { - "id": "user_unfollowed_msg", - "translation": "Você deixou de seguir %s!" - }, - { - "id": "profile_page", - "translation": "Perfil de %s" - }, - { - "id": "see_more_torrents_from", - "translation": "Ver mais torrents de %s " - }, - { - "id": "category", - "translation": "Categoria" - }, - { - "id": "name", - "translation": "Nome" - }, - { - "id": "date", - "translation": "Data" - }, - { - "id": "size", - "translation": "Tamanho" - }, - { - "id": "links", - "translation": "Links" - }, - { - "id": "home", - "translation": "Página inicial" - }, - { - "id": "error_404", - "translation": "Erro 404" - }, - { - "id": "upload", - "translation": "Enviar" - }, - { - "id": "faq", - "translation": "Dúvidas" - }, - { - "id": "fap", - "translation": "Fap" - }, - { - "id": "fun", - "translation": "Fun" - }, - { - "id": "nothing_here", - "translation": "Nada aqui." - }, - { - "id": "404_not_found", - "translation": "404 Não encontrado" - }, - { - "id": "no_torrents_uploaded", - "translation": "Nenhum torrent enviado ainda!" - }, - { - "id": "profile", - "translation": "Perfil" - }, - { - "id": "sign_out", - "translation": "Sair" - }, - { - "id": "member", - "translation": "Membro" - }, - { - "id": "no_results_found", - "translation": "Nenhum resultado encontrado" - }, - { - "id": "notice_keep_seeding", - "translation": "AVISO: CONTINUE SEMEANDO E HABILITE O DHT" - }, - { - "id": "official_nyaapocalipse_faq", - "translation": "Perguntas frequentes sobre o Nyaapocalipse" - }, - { - "id": "links_replacement_mirror", - "translation": "Links para a reposição/mirror" - }, - { - "id": "what_happened", - "translation": "O que aconteceu?" - }, - { - "id": "nyaa_se_went_offline", - "translation": "nyaa.se e domínios associados (como nyaatorrents.info) saíram do ar em 1º de maio de 2017." - }, - { - "id": "its_not_a_ddos", - "translation": "Eles foram desativados, então não é um ataque DDoS (ataque de negação de serviço) como normalmente." - }, - { - "id": "future_not_looking_good", - "translation": "Perspectivas futuras para o nyaa não parecem boas. (Está morto)" - }, - { - "id": "recovery_effort", - "translation": "Há uma tentativa de recuperação acontecendo." - }, - { - "id": "is_everything_lost", - "translation": "Tudo foi perdido?" - }, - { - "id": "in_short_no", - "translation": "Resumindo, não." - }, - { - "id": "are_some_things_lost", - "translation": "Algumas coisas foram perdidas?" - }, - { - "id": "answer_is_nyaa_db_lost", - "translation": "Nós temos um banco de dados contendo os torrents do nyaa até 5 de abril 1º de maio. Isso significa que quase nada foi perdido." - }, - { - "id": "answer_is_sukebei_db_lost", - "translation": "Sukebei também está em perfeito estado e quase nada foi perdido." - }, - { - "id": "how_are_we_recovering", - "translation": "Como estamos nos recuperando?" - }, - { - "id": "answer_how_are_we_recovering", - "translation": "Os bancos de dados estão hospedados em nyaa.pantsu.cat e sukebei.pantsu.cat. Há uma função de busca, e (quase) todas as funcionalidades do nyaa devem estar de volta em breve." - }, - { - "id": "how_do_i_link_my_old_account", - "translation": "O que devo fazer para transferir meus antigos envios de volta a minha nova conta?" - }, - { - "id": "answer_how_do_i_link_my_old_account", - "translation": "Entre em #nyaapantsu-help@Rizon e informe a moderação seu antigo e novo nome de usuário." - }, - { - "id": "are_the_trackers_working", - "translation": "Os torrents ainda funcionam?" - }, - { - "id": "answer_are_the_trackers_working", - "translation": "Mesmo com os trackers offline, seeders ainda estão conectados à rede descentralizada DHT. Enquanto o arquivo estiver listado na rede DHT, as coisas devem funcionar normalmente." - }, - { - "id": "how_do_i_download_the_torrents", - "translation": "Como posso baixar os torrents?" - }, - { - "id": "answer_how_do_i_download_the_torrents", - "translation": "Use os links magnéticos. Os links magnéticos serão usados pelo seu cliente BitTorrent para procurar o arquivo na rede DHT, e deverá baixá-lo sem problemas." - }, - { - "id": "magnet_link_should_look_like", - "translation": "O link magnético se parece com isso:" - }, - { - "id": "which_trackers_do_you_recommend", - "translation": "Quais trackers vocês recomendam usar?" - }, - { - "id": "answer_which_trackers_do_you_recommend", - "translation": "Agora nós temos um tracker chamado doko.moe, adicione-o ao topo da lista antes de enviar um torrent. Você também deve adicionar todos estes outros trackers para garantir redundância." - }, - { - "id": "how_can_i_help", - "translation": "Como posso ajudar?" - }, - { - "id": "answer_how_can_i_help", - "translation": "Se você tem experiência em desenvolvimento para a web, você pode entrar no canal de IRC #nyaapantsu em irc.rizon.net. Se você tiver algum banco de dados atual, especialmente para o sukebei, ENVIE-O." - }, - { - "id": "your_design_sucks_found_a_bug", - "translation": "Seu design é horrível / Encontrei um bug" - }, - { - "id": "why_written_in_go", - "translation": "Por que as suas coisas estão escritas em Go?" - }, - { - "id": "authors_favorite_language", - "translation": "É a linguagem de programação favorita do autor." - }, - { - "id": "torrent_file", - "translation": "Arquivo de torrent" - }, - { - "id": "uploading_file_prefills_fields", - "translation": "Enviar um arquivo de torrent permite o pré-preenchimento de alguns campos, isso é recomendado." - }, - { - "id": "magnet_link", - "translation": "Link magnético" - }, - { - "id": "all_categories", - "translation": "Todas as categorias" - }, - { - "id": "select_a_torrent_category", - "translation": "Selecione uma categoria para o torrent." - }, - { - "id": "anime", - "translation": "Anime" - }, - { - "id": "anime_amv", - "translation": "Anime - AMV (Anime Music Video)" - }, - { - "id": "anime_english_translated", - "translation": "Anime - Traduções em inglês" - }, - { - "id": "anime_non_english_translated", - "translation": "Anime - Traduções em outros idiomas" - }, - { - "id": "anime_raw", - "translation": "Anime - Sem tradução" - }, - { - "id": "audio", - "translation": "Áudio" - }, - { - "id": "audio_lossless", - "translation": "Áudio - Sem perdas" - }, - { - "id": "audio_lossy", - "translation": "Audio - Com perdas" - }, - { - "id": "literature", - "translation": "Literatura" - }, - { - "id": "literature_english_translated", - "translation": "Literatura - Traduções em inglês" - }, - { - "id": "literature_raw", - "translation": "Literatura - Sem tradução" - }, - { - "id": "literature_non_english_translated", - "translation": "Literatura - Traduções em outros idiomas" - }, - { - "id": "live_action", - "translation": "Live Action" - }, - { - "id": "live_action_english_translated", - "translation": "Live Action - Traduções em inglês" - }, - { - "id": "live_action_idol_pv", - "translation": "Live Action - Idol/Vídeo promocional" - }, - { - "id": "live_action_non_english_translated", - "translation": "Live Action - Traduções em outros idiomas" - }, - { - "id": "live_action_raw", - "translation": "Live Action - Sem tradução" - }, - { - "id": "pictures", - "translation": "Imagens" - }, - { - "id": "pictures_graphics", - "translation": "Imagens - Artes gráficas" - }, - { - "id": "pictures_photos", - "translation": "Imagens - Fotos" - }, - { - "id": "software", - "translation": "Software" - }, - { - "id": "software_applications", - "translation": "Software - Aplicativos" - }, - { - "id": "software_games", - "translation": "Software - Jogos" - }, - { - "id": "art", - "translation": "Arte" - }, - { - "id": "art_anime", - "translation": "Arte - Anime" - }, - { - "id": "art_doujinshi", - "translation": "Arte - Doujinshi" - }, - { - "id": "art_games", - "translation": "Arte - Jogos" - }, - { - "id": "art_manga", - "translation": "Arte - Manga" - }, - { - "id": "art_pictures", - "translation": "Arte - Imagens" - }, - { - "id": "real_life", - "translation": "Vida real" - }, - { - "id": "real_life_photobooks_and_pictures", - "translation": "Vida real - Albums de fotos e fotografias" - }, - { - "id": "real_life_videos", - "translation": "Vida real - Vídeos" - }, - { - "id": "torrent_description", - "translation": "Descrição do torrent" - }, - { - "id": "description_markdown_notice", - "translation": "Markdown pode ser usado em descrições." - }, - { - "id": "show_all", - "translation": "Exibir todos" - }, - { - "id": "filter_remakes", - "translation": "Filtrar refeitos" - }, - { - "id": "trusted", - "translation": "Confiável" - }, - { - "id": "search", - "translation": "Buscar" - }, - { - "id": "hash", - "translation": "Hash" - }, - { - "id": "description", - "translation": "Descrição" - }, - { - "id": "no_description", - "translation": "Nenhuma descrição foi fornecida!" - }, - { - "id": "comments", - "translation": "Comentários" - }, - { - "id": "submit_a_comment_as_username", - "translation": "Comentar como %s" - }, - { - "id": "submit_a_comment_as_anonymous", - "translation": "Comentar como Anônimo" - }, - { - "id": "submit", - "translation": "Enviar" - }, - { - "id": "personal_info", - "translation": "Informações pessoais" - }, - { - "id": "language", - "translation": "Idioma" - }, - { - "id": "current_password", - "translation": "Senha atual" - }, - { - "id": "role", - "translation": "Cargo" - }, - { - "id": "banned", - "translation": "Banido" - }, - { - "id": "default", - "translation": "Padrão" - }, - { - "id": "trusted_member", - "translation": "Membro confiável" - }, - { - "id": "scraped_user", - "translation": "Usuário analisado" - }, - { - "id": "moderator", - "translation": "Moderador" - }, - { - "id": "api_token", - "translation": "API Token" - }, - { - "id": "save_changes", - "translation": "Salvar alterações" - }, - { - "id": "profile_updated", - "translation": "Seu perfil foi atualizado corretamente!" - }, - { - "id": "delete_account", - "translation": "Excluir conta" - }, - { - "id": "delete_account_confirm", - "translation": "Tem certeza de que deseja excluir esta conta?" - }, - { - "id": "delete_success", - "translation": "A conta foi excluída com sucesso!" - }, - { - "id": "moderation", - "translation": "Moderação" - }, - { - "id": "extensions_and_plugins", - "translation": "Extensões e Plugins (feitos por terceiros)" - }, - { - "id": "qbittorrent_plugin", - "translation": "Plugin para qBittorrent" - }, - { - "id": "local_client", - "translation": "Cliente Local" - }, - { - "id": "chrome_extension", - "translation": "Extensão para Chrome" - }, - { - "id": "firefox_extension", - "translation": "Extensão para Firefox" - }, - { - "id": "android_app", - "translation": "App para Android" - }, - { - "id": "who_is_renchon", - "translation": "Quem é れんちょん?" - }, - { - "id": "renchon_anon_explanation", - "translation": "れんちょん (Ren-chon) é o nome atribuído a uploads e comentários feitos anonimamente. Também é usado para torrents importados do nyaa original, embora o uploader original seja mostrado ao lado." - }, - { - "id": "mark_as_remake", - "translation": "Marcar como remake" - }, - { - "id": "email_changed", - "translation": "E-mail alterado com sucesso! Porém, você deve confirmá-lo clicando no link enviado para: %s" - }, - { - "id": "torrent_status", - "translation": "Status do torrent" - }, - { - "id": "torrent_status_normal", - "translation": "Normal" - }, - { - "id": "torrent_status_remake", - "translation": "Remake" - }, - { - "id": "profile_edit_page", - "translation": "Editar o perfil de %s" - }, - { - "id": "torrent_status_blocked", - "translation": "Bloqueado" - }, - { - "id": "seeders", - "translation": "Seeders" - }, - { - "id": "leechers", - "translation": "Leechers" - }, - { - "id": "completed", - "translation": "Completos" - }, - { - "id": "change_language", - "translation": "Mudar Idioma" - }, - { - "id": "language_name", - "translation": "Português (Brasil)" - }, - { - "id": "language_code", - "translation": "pt-br" - }, - { - "id": "delete", - "translation": "Excluir" - }, - { - "id": "website_link", - "translation": "Link do Website" - }, - { - "id": "files", - "translation": "Arquivos" - }, - { - "id": "no_files", - "translation": "Nenhum arquivo encontrado? Isto sequer faz sentido!" - }, - { - "id": "uploaded_by", - "translation": "Enviado por" - }, - { - "id": "report_btn", - "translation": "Denunciar" - }, - { - "id": "are_you_sure", - "translation": "Você tem certeza?" - }, - { - "id": "report_torrent_number", - "translation": "Denunciar torrent #%s" - }, - { - "id": "report_type", - "translation": "Motivo da denúncia" - }, - { - "id": "illegal_content", - "translation": "Conteúdo não permitido" - }, - { - "id": "spam_garbage", - "translation": "Spam / Lixo" - }, - { - "id": "wrong_category", - "translation": "Categoria incorreta" - }, - { - "id": "duplicate_deprecated", - "translation": "Duplicado / Obsoleto" - }, - { - "id": "captcha", - "translation": "Captcha" - }, - { - "id": "captcha_audio", - "translation": "Captcha Auditivo" - }, - { - "id": "file_name", - "translation": "Nome do arquivo" - }, - { - "id": "cancel", - "translation": "Cancelar" - }, - { - "id": "please_include_our_tracker", - "translation": "Por favor inclua udp://tracker.doko.moe:6969 em sua lista de trackers." - }, - { - "id": "unknown", - "translation": "Desconhecido" - }, - { - "id": "last_scraped", - "translation": "Último scrape: " - }, - { - "id": "server_status_link", - "translation": "Você pode consultar o status do server aqui" - }, - { - "id": "no_database_dumps_available", - "translation": "No momento, não há backups da database disponíveis." - }, - { - "id": "clear_notifications", - "translation": "Limpar notificações" - }, - { - "id": "notifications_cleared", - "translation": "Notificações apagadas!" - }, - { - "id": "my_notifications", - "translation": "Minhas notificações" - }, - { - "id": "new_torrent_uploaded", - "translation": "Novo torrent: \"%s\" por %s" - }, - { - "id": "torrent_uploaded", - "translation": "torrent enviado com sucesso!" - }, - { - "id": "preferences", - "translation": "Preferências" - }, - { - "id": "new_torrent_settings", - "translation": "Seja notificado quando alguém que você está seguindo enviar um novo torrent" - }, - { - "id": "new_torrent_email_settings", - "translation": "Seja notificado por e-mail quando alguém que você está seguindo enviar um novo torrent." - }, - { - "id": "new_comment_settings", - "translation": "Seja notificado quando houver um novo comentário em seus torrents" - }, - { - "id": "new_comment_email_settings", - "translation": "Seja notificado por e-mail quando houver um novo comentário em seus torrents" - }, - { - "id": "new_responses_settings", - "translation": "Seja notificado quando houver uma resposta a seus comentários" - }, - { - "id": "new_responses_email_settings", - "translation": "Seja notificado por e-mail quando houver uma resposta a seus comentários" - }, - { - "id": "new_follower_settings", - "translation": "Seja notificado quando houver um novo seguidor" - }, - { - "id": "new_follower_email_settings", - "translation": "Seja notificado por e-mail quando houver um novo seguidor" - }, - { - "id": "followed_settings", - "translation": "Seja notificado ao seguir alguém." - }, - { - "id": "followed_email_settings", - "translation": "Seja notificado por e-mail ao seguir alguém." - }, - { - "id": "yes", - "translation": "Sim" - }, - { - "id": "no", - "translation": "Não" - }, - { - "id": "new_comment_on_torrent", - "translation": "Novo comentário no torrent: \"%s\"" - }, - { - "id": "no_action_selected", - "translation": "Você deve dizer o que quer fazer com a seleção!" - }, - { - "id": "no_move_location_selected", - "translation": "Tu deves dizer para onde mover a seleção!" - }, - { - "id": "select_one_element", - "translation": "Você precisa selecionar algum elemento!" - }, - { - "id": "torrent_moved", - "translation": "Torrent %s movido!" - }, - { - "id": "no_status_exist", - "translation": "O status %d não existe!" - }, - { - "id": "torrent_deleted", - "translation": "Torrent %s excluído!" - }, - { - "id": "torrent_deleted_by", - "translation": "Torrent #%s de %s foi deletado por %s." - }, - { - "id": "torrent_edited_by", - "translation": "Torrent #%s de %s foi editado por %s." - }, - { - "id": "torrent_blocked_by", - "translation": "Torrent #%s de %s foi bloqueado por %s." - }, - { - "id": "torrent_blocked_by", - "translation": "Torrent #%s de %s foi desbloqueado por %s." - }, - { - "id": "torrents_deleted", - "translation": "Torrents excluídos" - }, - { - "id": "delete_torrent", - "translation": "Excluir Torrent" - }, - { - "id": "delete_report", - "translation": "Excluir Denúncia" - }, - { - "id": "comment_deleted_by", - "translation": "Comentário #%s de %s foi deletado por %s." - }, - { - "id": "comment_edited_by", - "translation": "Comentário #%s de %s foi editado por %s." - }, - { - "id": "no_action_exist", - "translation": "A ação %s não existe!" - }, - { - "id": "torrent_not_exist", - "translation": "O torrent de ID %s não existe!" - }, - { - "id": "something_went_wrong", - "translation": "Algo deu errado" - }, - { - "id": "nb_torrents_updated", - "translation": "%d torrents atualizados." - }, - { - "id": "torrent_updated", - "translation": "As informações do torrent foram atualizadas." - }, - { - "id": "fail_torrent_update", - "translation": "Falha ao atualizar o torrent!" - }, - { - "id": "bad_captcha", - "translation": "Captcha incorreto!" - }, - { - "id": "comment_empty", - "translation": "Comentário vazio!" - }, - { - "id": "no_owner_selected", - "translation": "Você deve informar o novo dono do torrent!" - }, - { - "id": "no_category_selected", - "translation": "Nenhuma categoria selecionada!" - }, - { - "id": "no_user_found_id", - "translation": "O usuário de ID %d não está na database!" - }, - { - "id": "invalid_torrent_category", - "translation": "Esta categoria de torrents não existe!" - }, - { - "id": "torrent_owner_changed", - "translation": "O dono do torrent \"%s\" foi alterado com sucesso!" - }, - { - "id": "torrent_category_changed", - "translation": "A categoria do torrent \"%s\" foi alterada com sucesso!" - }, - { - "id": "torrent_reports_deleted", - "translation": "As denúncias do torrent \"%s\" foram excluídas!" - }, - { - "id": "edit", - "translation": "Editar" - }, - { - "id": "lock_delete", - "translation": "Bloquear & Deletar" - }, - { - "id": "delete_definitely_torrent_warning", - "translation": "Você não poderá recuperar este arquivo, nem impedir alguém de enviá-lo novamente." - }, - { - "id": "delete_definitely", - "translation": "Excluir definitivamente" - }, - { - "id": "torrent_unblock", - "translation": "Desbloquear" - }, - { - "id": "torrent_block", - "translation": "Bloquear" - }, - { - "id": "torrent_deleted_definitely", - "translation": "O torrent foi excluído do banco de dados!" - }, - { - "id": "torrent_unblocked", - "translation": "O torrent foi desbloqueado!" - }, - { - "id": "torrent_blocked", - "translation": "O torrent foi bloqueado!" - }, - { - "id": "torrent_nav_notdeleted", - "translation": "Os torrents não foram deletados" - }, - { - "id": "torrent_nav_deleted", - "translation": "Torrents deletados" - }, - { - "id": "change_settings", - "translation": "Alterar Configurações" - }, - { - "id": "mascot", - "translation": "Mascote" - }, - { - "id": "theme", - "translation": "Tema" - }, - { - "id": "theme_select", - "translation": "Selecione um tema" - }, - { - "id": "theme_none", - "translation": "Nenhum" - }, - { - "id": "mark_as_hidden", - "translation": "Marcar como oculto" - }, - { - "id": "cookies", - "translation": "Ao clicar em salvar, você consente o uso de Cookies." - }, - { - "id": "show", - "translation": "Mostrar" - }, - { - "id": "hide", - "translation": "Ocultar" - }, - { - "id": "nyaa_pantsu", - "translation": "Nyaa Pantsu" - }, - { - "id": "users", - "translation": "Usuários" - }, - { - "id": "torrent_reports", - "translation": "Torrents Denunciados" - }, - { - "id": "show_mod_tools", - "translation": "Mostrar Ferramentas de Moderação" - }, - { - "id": "hide_mod_tools", - "translation": "Ocultar Ferramentas de Moderação" - }, - { - "id": "following_changes_applied", - "translation": "As seguintes mudanças serão aplicadas" - }, - { - "id": "changes_in_following_order", - "translation": "As mudanças serão aplicadas na seguinte ordem:" - }, - { - "id": "edit_changes", - "translation": "Editar Mudanças" - }, - { - "id": "delete_changes", - "translation": "Deletar Mudanças" - }, - { - "id": "owner_id_placeholder", - "translation": "Novo Dono" - }, - { - "id": "try_new_attempt", - "translation": "Tentando outra vez..." - }, - { - "id": "query_is_broken", - "translation": "A query ({0}?{1}) parece não estar funcionando!" - }, - { - "id": "query_executed_success", - "translation": "Query executada com sucesso!" - }, - { - "id": "all_operations_done", - "translation": "Todas as operações foram completadas!" - }, - { - "id": "refreshing_in", - "translation": "Atualizando página em {0} segundos..." - }, - { - "id": "delete_reports_with_torrents", - "translation": "Deseja deletar as denúncias junto com os torrents selecionados?" - }, - { - "id": "with_st", - "translation": "com {0}" - }, - { - "id": "and_reports", - "translation": " e denúncias" - }, - { - "id": "reports", - "translation": "denúncias" - }, - { - "id": "lock", - "translation": "bloquear" - }, - { - "id": "status_js", - "translation": "status: {0}" - }, - { - "id": "owner_id_js", - "translation": "owner_id: {0}" - }, - { - "id": "category_js", - "translation": "category: {0}" - }, - { - "id": "no_changes", - "translation": "Nenhuma mudança" - }, - { - "id": "query_nb", - "translation": "Query #{0}" - }, - { - "id": "reason", - "translation": "Razão" - }, - { - "id": "actions", - "translation": "Ações" - }, - { - "id": "action_select", - "translation": "Ação..." - }, - { - "id": "change_status", - "translation": "Mudar Status" - }, - { - "id": "to_status", - "translation": "Para..." - }, - { - "id": "torrents_not_deleted", - "translation": "Torrents Não Deletados" - }, - { - "id": "more", - "translation": "Mais" - }, - { - "id": "last_comments", - "translation": "Últimos Comentários" - }, - { - "id": "last_reports", - "translation": "Últimas Denúncias" - }, - { - "id": "last_torrents", - "translation": "Últimos Torrents" - }, - { - "id": "last_users", - "translation": "Últimos Usuários" - }, - { - "id": "moderation_overview", - "translation": "Painel de Moderação" - }, - { - "id": "users_list", - "translation": "Lista de Usuários" - }, - { - "id": "comments_list", - "translation": "Lista de Comentários" - }, - { - "id": "reports_list", - "translation": "Lista de Denúncias" - }, - { - "id": "torrents_list", - "translation": "Lista de Torrents" - }, - { - "id": "torrent_edit_panel", - "translation": "Painel de Edição de Torrents" - }, - { - "id": "torrent_reassign", - "translation": "Reatribuir Torrent" - }, - { - "id": "reassign_warning", - "translation": "Reatribuir um torrent a um novo usuário não é facilmente revertido e deve ser feito com cuidado." - }, - { - "id": "previous_username", - "translation": "Nome de Usuário Anterior" - }, - { - "id": "torrent_id", - "translation": "ID do Torrent" - }, - { - "id": "reassign_indication", - "translation": "Um ID por linha ou um único nome de usuário" - }, - { - "id": "reassign_warning_2", - "translation": "Pode levar bastante tempo, NÃO aborte a operação." - }, - { - "id": "reassign_to", - "translation": "Reatribuir para:" - }, - { - "id": "reassign_based_on", - "translation": "Reatribuir baseado em:" - }, - { - "id": "user_id", - "translation": "ID do Usuário" - }, - { - "id": "mascot_url", - "translation": "URL do Mascote" - }, - { - "id": "no_notifications", - "translation": "Nenhuma Notificação" - }, - { - "id": "report_msg", - "translation": "O torrent #%s recebeu uma denúncia!" - }, - { - "id": "email_not_valid", - "translation": "Endereço de e-mail inválido!" - }, - { - "id": "username_illegal", - "translation": "O nome de usuário contém caracteres não permitidos!" - }, - { - "id": "torrent_language", - "translation": "Idioma do Torrent" - }, - { - "id": "select_a_torrent_language", - "translation": "Selecione um Idioma" - }, - { - "id": "language_en-us_name", - "translation": "Inglês" - }, - { - "id": "language_ca-es_name", - "translation": "Catalã" - }, - { - "id": "language_de-de_name", - "translation": "Alemão" - }, - { - "id": "language_es-es_name", - "translation": "Espanhol" - }, - { - "id": "language_es-mx_name", - "translation": "Espanhol (LATAM)" - }, - { - "id": "language_fr-fr_name", - "translation": "Francês" - }, - { - "id": "language_hu-hu_name", - "translation": "Húngaro" - }, - { - "id": "language_is-is_name", - "translation": "Islandês" - }, - { - "id": "language_it-it_name", - "translation": "Italiano" - }, - { - "id": "language_ja-jp_name", - "translation": "Japonês" - }, - { - "id": "language_ko-kr_name", - "translation": "Coreano" - }, - { - "id": "language_nb-no_name", - "translation": "Norueguês" - }, - { - "id": "language_nl-nl_name", - "translation": "Holandês" - }, - { - "id": "language_pt-br_name", - "translation": "Português (Brazil)" - }, - { - "id": "language_pt-pt_name", - "translation": "Português (Portugal)" - }, - { - "id": "language_ro-ro_name", - "translation": "Romeno" - }, - { - "id": "language_ru-ru_name", - "translation": "Russo" - }, - { - "id": "language_sv-se_name", - "translation": "Sueco" - }, - { - "id": "language_th-th_name", - "translation": "Tailandês" - }, - { - "id": "language_zh-cn_name", - "translation": "Chinês Simplifiacdo" - }, - { - "id": "language_zh-tw_name", - "translation": "Chinês Tradicional" - }, - { - "id": "language_other_name", - "translation": "Outro" - }, - { - "id": "language_multiple_name", - "translation": "Multiplos Idiomas" - }, - { - "id": "activity_list", - "translation": "Lista de Atividades" - }, - { - "id": "activities", - "translation": "Atividades" - }, - { - "id": "filter", - "translation": "Filtro" - } -] +[ + { + "id": "verify_email_title", + "translation": "Verifique o seu endereço de e-mail do Nyaapantsu." + }, + { + "id": "verify_email_content", + "translation": "Clique no link abaixo para verificar o seu endereço de e-mail." + }, + { + "id": "reset_password_title", + "translation": "Redefina a sua senha do Nyaapantsu." + }, + { + "id": "reset_password_content", + "translation": "Clique no link abaixo para redefinir a sua senha." + }, + { + "id": "register_title", + "translation": "Criar conta" + }, + { + "id": "signup_box_title", + "translation": "Por favor, cadastre-se (é de graça e sempre será)" + }, + { + "id": "username", + "translation": "Nome de usuário" + }, + { + "id": "email_address_or_username", + "translation": "Endereço de e-mail ou nome de usuário" + }, + { + "id": "email_address", + "translation": "Endereço de e-mail" + }, + { + "id": "password", + "translation": "Senha" + }, + { + "id": "confirm_password", + "translation": "Confirmar senha" + }, + { + "id": "terms_conditions_confirm", + "translation": "Ao clicar em Registrar, você concorda com os Termos e Condições estabelecidos pelo site, incluindo o nosso uso de cookies." + }, + { + "id": "signin", + "translation": "Iniciar sessão" + }, + { + "id": "register", + "translation": "Registrar" + }, + { + "id": "terms_conditions", + "translation": "Termos e Condições" + }, + { + "id": "terms_conditions_full", + "translation": "Algumas coisas." + }, + { + "id": "remember_me", + "translation": "Lembre-se de mim" + }, + { + "id": "forgot_password", + "translation": "Esqueceu sua senha?" + }, + { + "id": "sign_in_box_title", + "translation": "Por favor, inicie a sessão" + }, + { + "id": "sign_in_title", + "translation": "Iniciar sessão" + }, + { + "id": "register_success_title", + "translation": "Cadastro bem-sucedido" + }, + { + "id": "sign_up_success", + "translation": "Obrigado por se cadastrar!" + }, + { + "id": "verify_success", + "translation": "A sua conta foi ativada!" + }, + { + "id": "signup_verification_email", + "translation": "No momento, a verificação por e-mail está desabilitada, então você já pode usar a sua conta. Futuramente, verifique a sua caixa de entrada (e pasta de spam!) pelo e-mail de verificação." + }, + { + "id": "signup_verification_noemail", + "translation": "Cadastro bem-sucedido, você já pode usar a sua conta." + }, + { + "id": "email_placeholder", + "translation": "Não deve ser deixado vazio." + }, + { + "id": "settings", + "translation": "Configurações de conta" + }, + { + "id": "torrents", + "translation": "Torrents" + }, + { + "id": "follow", + "translation": "Seguir" + }, + { + "id": "unfollow", + "translation": "Deixar de seguir" + }, + { + "id": "user_followed_msg", + "translation": "Você seguiu %s!" + }, + { + "id": "user_unfollowed_msg", + "translation": "Você deixou de seguir %s!" + }, + { + "id": "profile_page", + "translation": "Perfil de %s" + }, + { + "id": "see_more_torrents_from", + "translation": "Ver mais torrents de %s " + }, + { + "id": "category", + "translation": "Categoria" + }, + { + "id": "name", + "translation": "Nome" + }, + { + "id": "date", + "translation": "Data" + }, + { + "id": "size", + "translation": "Tamanho" + }, + { + "id": "links", + "translation": "Links" + }, + { + "id": "home", + "translation": "Página inicial" + }, + { + "id": "error_404", + "translation": "Erro 404" + }, + { + "id": "upload", + "translation": "Enviar" + }, + { + "id": "faq", + "translation": "Dúvidas" + }, + { + "id": "fap", + "translation": "Fap" + }, + { + "id": "fun", + "translation": "Fun" + }, + { + "id": "nothing_here", + "translation": "Nada aqui." + }, + { + "id": "404_not_found", + "translation": "404 Não encontrado" + }, + { + "id": "no_torrents_uploaded", + "translation": "Nenhum torrent enviado ainda!" + }, + { + "id": "profile", + "translation": "Perfil" + }, + { + "id": "sign_out", + "translation": "Sair" + }, + { + "id": "member", + "translation": "Membro" + }, + { + "id": "no_results_found", + "translation": "Nenhum resultado encontrado" + }, + { + "id": "notice_keep_seeding", + "translation": "AVISO: CONTINUE SEMEANDO E HABILITE O DHT" + }, + { + "id": "official_nyaapocalipse_faq", + "translation": "Perguntas frequentes sobre o Nyaapocalipse" + }, + { + "id": "links_replacement_mirror", + "translation": "Links para a reposição/mirror" + }, + { + "id": "what_happened", + "translation": "O que aconteceu?" + }, + { + "id": "nyaa_se_went_offline", + "translation": "nyaa.se e domínios associados (como nyaatorrents.info) saíram do ar em 1º de maio de 2017." + }, + { + "id": "its_not_a_ddos", + "translation": "Eles foram desativados, então não é um ataque DDoS (ataque de negação de serviço) como normalmente." + }, + { + "id": "future_not_looking_good", + "translation": "Perspectivas futuras para o nyaa não parecem boas. (Está morto)" + }, + { + "id": "recovery_effort", + "translation": "Há uma tentativa de recuperação acontecendo." + }, + { + "id": "is_everything_lost", + "translation": "Tudo foi perdido?" + }, + { + "id": "in_short_no", + "translation": "Resumindo, não." + }, + { + "id": "are_some_things_lost", + "translation": "Algumas coisas foram perdidas?" + }, + { + "id": "answer_is_nyaa_db_lost", + "translation": "Nós temos um banco de dados contendo os torrents do nyaa até 5 de abril 1º de maio. Isso significa que quase nada foi perdido." + }, + { + "id": "answer_is_sukebei_db_lost", + "translation": "Sukebei também está em perfeito estado e quase nada foi perdido." + }, + { + "id": "how_are_we_recovering", + "translation": "Como estamos nos recuperando?" + }, + { + "id": "answer_how_are_we_recovering", + "translation": "Os bancos de dados estão hospedados em nyaa.pantsu.cat e sukebei.pantsu.cat. Há uma função de busca, e (quase) todas as funcionalidades do nyaa devem estar de volta em breve." + }, + { + "id": "how_do_i_link_my_old_account", + "translation": "O que devo fazer para transferir meus antigos envios de volta a minha nova conta?" + }, + { + "id": "answer_how_do_i_link_my_old_account", + "translation": "Entre em #nyaapantsu-help@Rizon e informe a moderação seu antigo e novo nome de usuário." + }, + { + "id": "are_the_trackers_working", + "translation": "Os torrents ainda funcionam?" + }, + { + "id": "answer_are_the_trackers_working", + "translation": "Mesmo com os trackers offline, seeders ainda estão conectados à rede descentralizada DHT. Enquanto o arquivo estiver listado na rede DHT, as coisas devem funcionar normalmente." + }, + { + "id": "how_do_i_download_the_torrents", + "translation": "Como posso baixar os torrents?" + }, + { + "id": "answer_how_do_i_download_the_torrents", + "translation": "Use os links magnéticos. Os links magnéticos serão usados pelo seu cliente BitTorrent para procurar o arquivo na rede DHT, e deverá baixá-lo sem problemas." + }, + { + "id": "magnet_link_should_look_like", + "translation": "O link magnético se parece com isso:" + }, + { + "id": "which_trackers_do_you_recommend", + "translation": "Quais trackers vocês recomendam usar?" + }, + { + "id": "answer_which_trackers_do_you_recommend", + "translation": "Agora nós temos um tracker chamado doko.moe, adicione-o ao topo da lista antes de enviar um torrent. Você também deve adicionar todos estes outros trackers para garantir redundância." + }, + { + "id": "how_can_i_help", + "translation": "Como posso ajudar?" + }, + { + "id": "answer_how_can_i_help", + "translation": "Se você tem experiência em desenvolvimento para a web, você pode entrar no canal de IRC #nyaapantsu em irc.rizon.net. Se você tiver algum banco de dados atual, especialmente para o sukebei, ENVIE-O." + }, + { + "id": "your_design_sucks_found_a_bug", + "translation": "Seu design é horrível / Encontrei um bug" + }, + { + "id": "why_written_in_go", + "translation": "Por que as suas coisas estão escritas em Go?" + }, + { + "id": "authors_favorite_language", + "translation": "É a linguagem de programação favorita do autor." + }, + { + "id": "torrent_file", + "translation": "Arquivo de torrent" + }, + { + "id": "uploading_file_prefills_fields", + "translation": "Enviar um arquivo de torrent permite o pré-preenchimento de alguns campos, isso é recomendado." + }, + { + "id": "magnet_link", + "translation": "Link magnético" + }, + { + "id": "all_categories", + "translation": "Todas as categorias" + }, + { + "id": "select_a_torrent_category", + "translation": "Selecione uma categoria para o torrent." + }, + { + "id": "anime", + "translation": "Anime" + }, + { + "id": "anime_amv", + "translation": "Anime - AMV (Anime Music Video)" + }, + { + "id": "anime_english_translated", + "translation": "Anime - Traduções em inglês" + }, + { + "id": "anime_non_english_translated", + "translation": "Anime - Traduções em outros idiomas" + }, + { + "id": "anime_raw", + "translation": "Anime - Sem tradução" + }, + { + "id": "audio", + "translation": "Áudio" + }, + { + "id": "audio_lossless", + "translation": "Áudio - Sem perdas" + }, + { + "id": "audio_lossy", + "translation": "Audio - Com perdas" + }, + { + "id": "literature", + "translation": "Literatura" + }, + { + "id": "literature_english_translated", + "translation": "Literatura - Traduções em inglês" + }, + { + "id": "literature_raw", + "translation": "Literatura - Sem tradução" + }, + { + "id": "literature_non_english_translated", + "translation": "Literatura - Traduções em outros idiomas" + }, + { + "id": "live_action", + "translation": "Live Action" + }, + { + "id": "live_action_english_translated", + "translation": "Live Action - Traduções em inglês" + }, + { + "id": "live_action_idol_pv", + "translation": "Live Action - Idol/Vídeo promocional" + }, + { + "id": "live_action_non_english_translated", + "translation": "Live Action - Traduções em outros idiomas" + }, + { + "id": "live_action_raw", + "translation": "Live Action - Sem tradução" + }, + { + "id": "pictures", + "translation": "Imagens" + }, + { + "id": "pictures_graphics", + "translation": "Imagens - Artes gráficas" + }, + { + "id": "pictures_photos", + "translation": "Imagens - Fotos" + }, + { + "id": "software", + "translation": "Software" + }, + { + "id": "software_applications", + "translation": "Software - Aplicativos" + }, + { + "id": "software_games", + "translation": "Software - Jogos" + }, + { + "id": "art", + "translation": "Arte" + }, + { + "id": "art_anime", + "translation": "Arte - Anime" + }, + { + "id": "art_doujinshi", + "translation": "Arte - Doujinshi" + }, + { + "id": "art_games", + "translation": "Arte - Jogos" + }, + { + "id": "art_manga", + "translation": "Arte - Manga" + }, + { + "id": "art_pictures", + "translation": "Arte - Imagens" + }, + { + "id": "real_life", + "translation": "Vida real" + }, + { + "id": "real_life_photobooks_and_pictures", + "translation": "Vida real - Albums de fotos e fotografias" + }, + { + "id": "real_life_videos", + "translation": "Vida real - Vídeos" + }, + { + "id": "torrent_description", + "translation": "Descrição do torrent" + }, + { + "id": "description_markdown_notice", + "translation": "Markdown pode ser usado em descrições." + }, + { + "id": "show_all", + "translation": "Exibir todos" + }, + { + "id": "filter_remakes", + "translation": "Filtrar refeitos" + }, + { + "id": "trusted", + "translation": "Confiável" + }, + { + "id": "search", + "translation": "Buscar" + }, + { + "id": "hash", + "translation": "Hash" + }, + { + "id": "description", + "translation": "Descrição" + }, + { + "id": "no_description", + "translation": "Nenhuma descrição foi fornecida!" + }, + { + "id": "comments", + "translation": "Comentários" + }, + { + "id": "submit_a_comment_as_username", + "translation": "Comentar como %s" + }, + { + "id": "submit_a_comment_as_anonymous", + "translation": "Comentar como Anônimo" + }, + { + "id": "submit", + "translation": "Enviar" + }, + { + "id": "personal_info", + "translation": "Informações pessoais" + }, + { + "id": "language", + "translation": "Idioma" + }, + { + "id": "current_password", + "translation": "Senha atual" + }, + { + "id": "role", + "translation": "Cargo" + }, + { + "id": "banned", + "translation": "Banido" + }, + { + "id": "default", + "translation": "Padrão" + }, + { + "id": "trusted_member", + "translation": "Membro confiável" + }, + { + "id": "scraped_user", + "translation": "Usuário analisado" + }, + { + "id": "moderator", + "translation": "Moderador" + }, + { + "id": "api_token", + "translation": "API Token" + }, + { + "id": "save_changes", + "translation": "Salvar alterações" + }, + { + "id": "profile_updated", + "translation": "Seu perfil foi atualizado corretamente!" + }, + { + "id": "delete_account", + "translation": "Excluir conta" + }, + { + "id": "delete_account_confirm", + "translation": "Tem certeza de que deseja excluir esta conta?" + }, + { + "id": "delete_success", + "translation": "A conta foi excluída com sucesso!" + }, + { + "id": "moderation", + "translation": "Moderação" + }, + { + "id": "extensions_and_plugins", + "translation": "Extensões e Plugins (feitos por terceiros)" + }, + { + "id": "qbittorrent_plugin", + "translation": "Plugin para qBittorrent" + }, + { + "id": "local_client", + "translation": "Cliente Local" + }, + { + "id": "chrome_extension", + "translation": "Extensão para Chrome" + }, + { + "id": "firefox_extension", + "translation": "Extensão para Firefox" + }, + { + "id": "android_app", + "translation": "App para Android" + }, + { + "id": "who_is_renchon", + "translation": "Quem é れんちょん?" + }, + { + "id": "renchon_anon_explanation", + "translation": "れんちょん (Ren-chon) é o nome atribuído a uploads e comentários feitos anonimamente. Também é usado para torrents importados do nyaa original, embora o uploader original seja mostrado ao lado." + }, + { + "id": "mark_as_remake", + "translation": "Marcar como remake" + }, + { + "id": "email_changed", + "translation": "E-mail alterado com sucesso! Porém, você deve confirmá-lo clicando no link enviado para: %s" + }, + { + "id": "torrent_status", + "translation": "Status do torrent" + }, + { + "id": "torrent_status_normal", + "translation": "Normal" + }, + { + "id": "torrent_status_remake", + "translation": "Remake" + }, + { + "id": "profile_edit_page", + "translation": "Editar o perfil de %s" + }, + { + "id": "torrent_status_blocked", + "translation": "Bloqueado" + }, + { + "id": "seeders", + "translation": "Seeders" + }, + { + "id": "leechers", + "translation": "Leechers" + }, + { + "id": "completed", + "translation": "Completos" + }, + { + "id": "change_language", + "translation": "Mudar Idioma" + }, + { + "id": "language_name", + "translation": "Português (Brasil)" + }, + { + "id": "language_code", + "translation": "pt-br" + }, + { + "id": "delete", + "translation": "Excluir" + }, + { + "id": "website_link", + "translation": "Link do Website" + }, + { + "id": "files", + "translation": "Arquivos" + }, + { + "id": "no_files", + "translation": "Nenhum arquivo encontrado? Isto sequer faz sentido!" + }, + { + "id": "uploaded_by", + "translation": "Enviado por" + }, + { + "id": "report_btn", + "translation": "Denunciar" + }, + { + "id": "are_you_sure", + "translation": "Você tem certeza?" + }, + { + "id": "report_torrent_number", + "translation": "Denunciar torrent #%s" + }, + { + "id": "report_type", + "translation": "Motivo da denúncia" + }, + { + "id": "illegal_content", + "translation": "Conteúdo não permitido" + }, + { + "id": "spam_garbage", + "translation": "Spam / Lixo" + }, + { + "id": "wrong_category", + "translation": "Categoria incorreta" + }, + { + "id": "duplicate_deprecated", + "translation": "Duplicado / Obsoleto" + }, + { + "id": "captcha", + "translation": "Captcha" + }, + { + "id": "captcha_audio", + "translation": "Captcha Auditivo" + }, + { + "id": "file_name", + "translation": "Nome do arquivo" + }, + { + "id": "cancel", + "translation": "Cancelar" + }, + { + "id": "please_include_our_tracker", + "translation": "Por favor inclua udp://tracker.doko.moe:6969 em sua lista de trackers." + }, + { + "id": "unknown", + "translation": "Desconhecido" + }, + { + "id": "last_scraped", + "translation": "Último scrape: " + }, + { + "id": "server_status_link", + "translation": "Você pode consultar o status do server aqui" + }, + { + "id": "no_database_dumps_available", + "translation": "No momento, não há backups da database disponíveis." + }, + { + "id": "clear_notifications", + "translation": "Limpar notificações" + }, + { + "id": "notifications_cleared", + "translation": "Notificações apagadas!" + }, + { + "id": "my_notifications", + "translation": "Minhas notificações" + }, + { + "id": "new_torrent_uploaded", + "translation": "Novo torrent: \"%s\" por %s" + }, + { + "id": "torrent_uploaded", + "translation": "torrent enviado com sucesso!" + }, + { + "id": "preferences", + "translation": "Preferências" + }, + { + "id": "new_torrent_settings", + "translation": "Seja notificado quando alguém que você está seguindo enviar um novo torrent" + }, + { + "id": "new_torrent_email_settings", + "translation": "Seja notificado por e-mail quando alguém que você está seguindo enviar um novo torrent." + }, + { + "id": "new_comment_settings", + "translation": "Seja notificado quando houver um novo comentário em seus torrents" + }, + { + "id": "new_comment_email_settings", + "translation": "Seja notificado por e-mail quando houver um novo comentário em seus torrents" + }, + { + "id": "new_responses_settings", + "translation": "Seja notificado quando houver uma resposta a seus comentários" + }, + { + "id": "new_responses_email_settings", + "translation": "Seja notificado por e-mail quando houver uma resposta a seus comentários" + }, + { + "id": "new_follower_settings", + "translation": "Seja notificado quando houver um novo seguidor" + }, + { + "id": "new_follower_email_settings", + "translation": "Seja notificado por e-mail quando houver um novo seguidor" + }, + { + "id": "followed_settings", + "translation": "Seja notificado ao seguir alguém." + }, + { + "id": "followed_email_settings", + "translation": "Seja notificado por e-mail ao seguir alguém." + }, + { + "id": "yes", + "translation": "Sim" + }, + { + "id": "no", + "translation": "Não" + }, + { + "id": "new_comment_on_torrent", + "translation": "Novo comentário no torrent: \"%s\"" + }, + { + "id": "no_action_selected", + "translation": "Você deve dizer o que quer fazer com a seleção!" + }, + { + "id": "no_move_location_selected", + "translation": "Tu deves dizer para onde mover a seleção!" + }, + { + "id": "select_one_element", + "translation": "Você precisa selecionar algum elemento!" + }, + { + "id": "torrent_moved", + "translation": "Torrent %s movido!" + }, + { + "id": "no_status_exist", + "translation": "O status %d não existe!" + }, + { + "id": "torrent_deleted", + "translation": "Torrent %s excluído!" + }, + { + "id": "torrent_deleted_by", + "translation": "Torrent #%s de %s foi deletado por %s." + }, + { + "id": "torrent_edited_by", + "translation": "Torrent #%s de %s foi editado por %s." + }, + { + "id": "torrent_blocked_by", + "translation": "Torrent #%s de %s foi bloqueado por %s." + }, + { + "id": "torrent_blocked_by", + "translation": "Torrent #%s de %s foi desbloqueado por %s." + }, + { + "id": "torrents_deleted", + "translation": "Torrents excluídos" + }, + { + "id": "delete_torrent", + "translation": "Excluir Torrent" + }, + { + "id": "delete_report", + "translation": "Excluir Denúncia" + }, + { + "id": "comment_deleted_by", + "translation": "Comentário #%s de %s foi deletado por %s." + }, + { + "id": "comment_edited_by", + "translation": "Comentário #%s de %s foi editado por %s." + }, + { + "id": "no_action_exist", + "translation": "A ação %s não existe!" + }, + { + "id": "torrent_not_exist", + "translation": "O torrent de ID %s não existe!" + }, + { + "id": "something_went_wrong", + "translation": "Algo deu errado" + }, + { + "id": "nb_torrents_updated", + "translation": "%d torrents atualizados." + }, + { + "id": "torrent_updated", + "translation": "As informações do torrent foram atualizadas." + }, + { + "id": "fail_torrent_update", + "translation": "Falha ao atualizar o torrent!" + }, + { + "id": "bad_captcha", + "translation": "Captcha incorreto!" + }, + { + "id": "comment_empty", + "translation": "Comentário vazio!" + }, + { + "id": "no_owner_selected", + "translation": "Você deve informar o novo dono do torrent!" + }, + { + "id": "no_category_selected", + "translation": "Nenhuma categoria selecionada!" + }, + { + "id": "no_user_found_id", + "translation": "O usuário de ID %d não está na database!" + }, + { + "id": "invalid_torrent_category", + "translation": "Esta categoria de torrents não existe!" + }, + { + "id": "torrent_owner_changed", + "translation": "O dono do torrent \"%s\" foi alterado com sucesso!" + }, + { + "id": "torrent_category_changed", + "translation": "A categoria do torrent \"%s\" foi alterada com sucesso!" + }, + { + "id": "torrent_reports_deleted", + "translation": "As denúncias do torrent \"%s\" foram excluídas!" + }, + { + "id": "edit", + "translation": "Editar" + }, + { + "id": "lock_delete", + "translation": "Bloquear & Deletar" + }, + { + "id": "delete_definitely_torrent_warning", + "translation": "Você não poderá recuperar este arquivo, nem impedir alguém de enviá-lo novamente." + }, + { + "id": "delete_definitely", + "translation": "Excluir definitivamente" + }, + { + "id": "torrent_unblock", + "translation": "Desbloquear" + }, + { + "id": "torrent_block", + "translation": "Bloquear" + }, + { + "id": "torrent_deleted_definitely", + "translation": "O torrent foi excluído do banco de dados!" + }, + { + "id": "torrent_unblocked", + "translation": "O torrent foi desbloqueado!" + }, + { + "id": "torrent_blocked", + "translation": "O torrent foi bloqueado!" + }, + { + "id": "torrent_nav_notdeleted", + "translation": "Os torrents não foram deletados" + }, + { + "id": "torrent_nav_deleted", + "translation": "Torrents deletados" + }, + { + "id": "change_settings", + "translation": "Alterar Configurações" + }, + { + "id": "mascot", + "translation": "Mascote" + }, + { + "id": "theme", + "translation": "Tema" + }, + { + "id": "theme_select", + "translation": "Selecione um tema" + }, + { + "id": "theme_none", + "translation": "Nenhum" + }, + { + "id": "mark_as_hidden", + "translation": "Marcar como oculto" + }, + { + "id": "cookies", + "translation": "Ao clicar em salvar, você consente o uso de Cookies." + }, + { + "id": "show", + "translation": "Mostrar" + }, + { + "id": "hide", + "translation": "Ocultar" + }, + { + "id": "nyaa_pantsu", + "translation": "Nyaa Pantsu" + }, + { + "id": "users", + "translation": "Usuários" + }, + { + "id": "torrent_reports", + "translation": "Torrents Denunciados" + }, + { + "id": "show_mod_tools", + "translation": "Mostrar Ferramentas de Moderação" + }, + { + "id": "hide_mod_tools", + "translation": "Ocultar Ferramentas de Moderação" + }, + { + "id": "following_changes_applied", + "translation": "As seguintes mudanças serão aplicadas" + }, + { + "id": "changes_in_following_order", + "translation": "As mudanças serão aplicadas na seguinte ordem:" + }, + { + "id": "edit_changes", + "translation": "Editar Mudanças" + }, + { + "id": "delete_changes", + "translation": "Deletar Mudanças" + }, + { + "id": "owner_id_placeholder", + "translation": "Novo Dono" + }, + { + "id": "try_new_attempt", + "translation": "Tentando outra vez..." + }, + { + "id": "query_is_broken", + "translation": "A query ({0}?{1}) parece não estar funcionando!" + }, + { + "id": "query_executed_success", + "translation": "Query executada com sucesso!" + }, + { + "id": "all_operations_done", + "translation": "Todas as operações foram completadas!" + }, + { + "id": "refreshing_in", + "translation": "Atualizando página em {0} segundos..." + }, + { + "id": "delete_reports_with_torrents", + "translation": "Deseja deletar as denúncias junto com os torrents selecionados?" + }, + { + "id": "with_st", + "translation": "com {0}" + }, + { + "id": "and_reports", + "translation": " e denúncias" + }, + { + "id": "reports", + "translation": "denúncias" + }, + { + "id": "lock", + "translation": "bloquear" + }, + { + "id": "status_js", + "translation": "status: {0}" + }, + { + "id": "owner_id_js", + "translation": "owner_id: {0}" + }, + { + "id": "category_js", + "translation": "category: {0}" + }, + { + "id": "no_changes", + "translation": "Nenhuma mudança" + }, + { + "id": "query_nb", + "translation": "Query #{0}" + }, + { + "id": "reason", + "translation": "Razão" + }, + { + "id": "actions", + "translation": "Ações" + }, + { + "id": "action_select", + "translation": "Ação..." + }, + { + "id": "change_status", + "translation": "Mudar Status" + }, + { + "id": "to_status", + "translation": "Para..." + }, + { + "id": "torrents_not_deleted", + "translation": "Torrents Não Deletados" + }, + { + "id": "more", + "translation": "Mais" + }, + { + "id": "last_comments", + "translation": "Últimos Comentários" + }, + { + "id": "last_reports", + "translation": "Últimas Denúncias" + }, + { + "id": "last_torrents", + "translation": "Últimos Torrents" + }, + { + "id": "last_users", + "translation": "Últimos Usuários" + }, + { + "id": "moderation_overview", + "translation": "Painel de Moderação" + }, + { + "id": "users_list", + "translation": "Lista de Usuários" + }, + { + "id": "comments_list", + "translation": "Lista de Comentários" + }, + { + "id": "reports_list", + "translation": "Lista de Denúncias" + }, + { + "id": "torrents_list", + "translation": "Lista de Torrents" + }, + { + "id": "torrent_edit_panel", + "translation": "Painel de Edição de Torrents" + }, + { + "id": "torrent_reassign", + "translation": "Reatribuir Torrent" + }, + { + "id": "reassign_warning", + "translation": "Reatribuir um torrent a um novo usuário não é facilmente revertido e deve ser feito com cuidado." + }, + { + "id": "previous_username", + "translation": "Nome de Usuário Anterior" + }, + { + "id": "torrent_id", + "translation": "ID do Torrent" + }, + { + "id": "reassign_indication", + "translation": "Um ID por linha ou um único nome de usuário" + }, + { + "id": "reassign_warning_2", + "translation": "Pode levar bastante tempo, NÃO aborte a operação." + }, + { + "id": "reassign_to", + "translation": "Reatribuir para:" + }, + { + "id": "reassign_based_on", + "translation": "Reatribuir baseado em:" + }, + { + "id": "user_id", + "translation": "ID do Usuário" + }, + { + "id": "mascot_url", + "translation": "URL do Mascote" + }, + { + "id": "no_notifications", + "translation": "Nenhuma Notificação" + }, + { + "id": "report_msg", + "translation": "O torrent #%s recebeu uma denúncia!" + }, + { + "id": "email_not_valid", + "translation": "Endereço de e-mail inválido!" + }, + { + "id": "username_illegal", + "translation": "O nome de usuário contém caracteres não permitidos!" + }, + { + "id": "torrent_language", + "translation": "Idioma do Torrent" + }, + { + "id": "select_a_torrent_language", + "translation": "Selecione um Idioma" + }, + { + "id": "language_en-us_name", + "translation": "Inglês" + }, + { + "id": "language_ca-es_name", + "translation": "Catalã" + }, + { + "id": "language_de-de_name", + "translation": "Alemão" + }, + { + "id": "language_es-es_name", + "translation": "Espanhol" + }, + { + "id": "language_es-mx_name", + "translation": "Espanhol (LATAM)" + }, + { + "id": "language_fr-fr_name", + "translation": "Francês" + }, + { + "id": "language_hu-hu_name", + "translation": "Húngaro" + }, + { + "id": "language_is-is_name", + "translation": "Islandês" + }, + { + "id": "language_it-it_name", + "translation": "Italiano" + }, + { + "id": "language_ja-jp_name", + "translation": "Japonês" + }, + { + "id": "language_ko-kr_name", + "translation": "Coreano" + }, + { + "id": "language_nb-no_name", + "translation": "Norueguês" + }, + { + "id": "language_nl-nl_name", + "translation": "Holandês" + }, + { + "id": "language_pt-br_name", + "translation": "Português (Brazil)" + }, + { + "id": "language_pt-pt_name", + "translation": "Português (Portugal)" + }, + { + "id": "language_ro-ro_name", + "translation": "Romeno" + }, + { + "id": "language_ru-ru_name", + "translation": "Russo" + }, + { + "id": "language_sv-se_name", + "translation": "Sueco" + }, + { + "id": "language_th-th_name", + "translation": "Tailandês" + }, + { + "id": "language_zh-cn_name", + "translation": "Chinês Simplifiacdo" + }, + { + "id": "language_zh-tw_name", + "translation": "Chinês Tradicional" + }, + { + "id": "language_other_name", + "translation": "Outro" + }, + { + "id": "language_multiple_name", + "translation": "Multiplos Idiomas" + }, + { + "id": "activity_list", + "translation": "Lista de Atividades" + }, + { + "id": "activities", + "translation": "Atividades" + }, + { + "id": "filter", + "translation": "Filtro" + } +] diff --git a/translations/pt-pt.all.json b/translations/pt-pt.all.json index 87cb100b..cb3319eb 100644 --- a/translations/pt-pt.all.json +++ b/translations/pt-pt.all.json @@ -1,562 +1,562 @@ -[ - { - "id": "verify_email_title", - "translation": "Verifique o seu endereço de e-mail do Nyaapantsu." - }, - { - "id": "verify_email_content", - "translation": "Clique no link abaixo para verificar o seu endereço de e-mail." - }, - { - "id": "reset_password_title", - "translation": "Redefina a sua senha." - }, - { - "id": "reset_password_content", - "translation": "Clique no link abaixo para redefinir a sua senha." - }, - { - "id": "register_title", - "translation": "Criar conta" - }, - { - "id": "signup_box_title", - "translation": "Por favor, registe-se (é de graça e sempre será)" - }, - { - "id": "username", - "translation": "Nome de usuário" - }, - { - "id": "email_address_or_username", - "translation": "Endereço de e-mail ou nome de usuário" - }, - { - "id": "email_address", - "translation": "Endereço de e-mail" - }, - { - "id": "password", - "translation": "Senha" - }, - { - "id": "confirm_password", - "translation": "Confirmar senha" - }, - { - "id": "terms_conditions_confirm", - "translation": "Ao clicar em Registar, estará a concordar com os Termos e Condições estabelecidos pelo site, incluindo o nosso uso de cookies." - }, - { - "id": "signin", - "translation": "Iniciar sessão" - }, - { - "id": "register", - "translation": "Registar" - }, - { - "id": "terms_conditions", - "translation": "Termos e Condições" - }, - { - "id": "terms_conditions_full", - "translation": "Algumas coisas." - }, - { - "id": "remember_me", - "translation": "Lembre-se de mim" - }, - { - "id": "forgot_password", - "translation": "Esqueceu-se da sua senha?" - }, - { - "id": "sign_in_box_title", - "translation": "Por favor, inicie a sessão" - }, - { - "id": "sign_in_title", - "translation": "Iniciar sessão" - }, - { - "id": "register_success_title", - "translation": "Registo bem-sucedido" - }, - { - "id": "sign_up_success", - "translation": "Obrigado por se registar!" - }, - { - "id": "verify_success", - "translation": "A sua conta foi ativada!" - }, - { - "id": "signup_verification_email", - "translation": "Por fim, procure o e-mail de verificação na sua caixa de entrada (e pasta de spam!)." - }, - { - "id": "signup_verification_noemail", - "translation": "Registo bem-sucedido. Já pode usar a sua conta." - }, - { - "id": "settings", - "translation": "Configurações de conta" - }, - { - "id": "torrents", - "translation": "Torrents" - }, - { - "id": "follow", - "translation": "Seguir" - }, - { - "id": "unfollow", - "translation": "Deixar de seguir" - }, - { - "id": "user_followed_msg", - "translation": "Seguiu %s!" - }, - { - "id": "user_unfollowed_msg", - "translation": "Deixou de seguir %s!" - }, - { - "id": "profile_page", - "translation": "Perfil de %s" - }, - { - "id": "see_more_torrents_from", - "translation": "Ver mais torrents de %s " - }, - { - "id": "category", - "translation": "Categoria" - }, - { - "id": "name", - "translation": "Nome" - }, - { - "id": "date", - "translation": "Data" - }, - { - "id": "size", - "translation": "Tamanho" - }, - { - "id": "links", - "translation": "Links" - }, - { - "id": "home", - "translation": "Página inicial" - }, - { - "id": "error_404", - "translation": "Erro 404" - }, - { - "id": "upload", - "translation": "Enviar" - }, - { - "id": "faq", - "translation": "Perguntas Frequentes" - }, - { - "id": "fap", - "translation": "Fap" - }, - { - "id": "nothing_here", - "translation": "Nada aqui." - }, - { - "id": "404_not_found", - "translation": "404 Não encontrado" - }, - { - "id": "no_torrents_uploaded", - "translation": "Nenhum torrent enviado ainda!" - }, - { - "id": "profile", - "translation": "Perfil" - }, - { - "id": "sign_out", - "translation": "Sair" - }, - { - "id": "member", - "translation": "Membro" - }, - { - "id": "no_results_found", - "translation": "Nenhum resultado encontrado" - }, - { - "id": "notice_keep_seeding", - "translation": "AVISO: CONTINUE SEMEANDO E ACTIVE O DHT" - }, - { - "id": "official_nyaapocalipse_faq", - "translation": "Perguntas frequentes sobre o Nyaapocalipse" - }, - { - "id": "links_replacement_mirror", - "translation": "Links para a reposição/mirror" - }, - { - "id": "what_happened", - "translation": "O que aconteceu?" - }, - { - "id": "nyaa_se_went_offline", - "translation": "nyaa.se e domínios associados (como nyaatorrents.info) saíram do ar a 1 de maio de 2017." - }, - { - "id": "its_not_a_ddos", - "translation": "Foram desativados, portanto não foi um ataque DDoS (ataque de negação de serviço) como normalmente." - }, - { - "id": "future_not_looking_good", - "translation": "Prospectos futuros para o nyaa não parecem boas. (Está morto)" - }, - { - "id": "recovery_effort", - "translation": "Está a decorrer uma tentativa de recuperação." - }, - { - "id": "is_everything_lost", - "translation": "Foi tudo perdido?" - }, - { - "id": "in_short_no", - "translation": "Resumindo, não." - }, - { - "id": "are_some_things_lost", - "translation": "Foram perdidas algumas coisas?" - }, - { - "id": "answer_is_nyaa_db_lost", - "translation": "Temos uma base de dados que contém os torrents do nyaa até 5 de abril 1 de maio. Isso significa que quase nada foi perdido." - }, - { - "id": "answer_is_sukebei_db_lost", - "translation": "Sukebei, no entanto, está numa situação pior. Actualmente só temos os dados do sukebei até 2016, mas uma nova base de dados pode estar disponível para uso." - }, - { - "id": "how_are_we_recovering", - "translation": "Como estamos a recuperar?" - }, - { - "id": "answer_how_are_we_recovering", - "translation": "As bases de dados estão hospedadas em nyaa.pantsu.cat e sukebei.pantsu.cat. Há uma função de pesquisa, e (quase) todas as funcionalidades do nyaa deverão estar de volta em breve. Estatísticas de seeders/leechers estão disponíveis via raspagem de dados e podem ser restauradas no futuro, já que outras funções têm prioridade de momento." - }, - { - "id": "how_do_i_link_my_old_account", - "translation": "O que devo fazer para transferir os meus antigos torrents de volta para minha nova conta?" - }, - { - "id": "answer_how_do_i_link_my_old_account", - "translation": "Entre em #nyaapantsu-help@Rizon e informe a moderação acerca do seu antigo e novo nome de usuário." - }, - { - "id": "are_the_trackers_working", - "translation": "Os torrents ainda funcionam?" - }, - { - "id": "answer_are_the_trackers_working", - "translation": "Mesmo com os trackers offline, seeders ainda estão conectados à rede descentralizada DHT. Enquanto o arquivo estiver listado na rede DHT, as coisas deverão funcionar normalmente." - }, - { - "id": "how_do_i_download_the_torrents", - "translation": "Como posso transferir os torrents?" - }, - { - "id": "answer_how_do_i_download_the_torrents", - "translation": "Use os links magnéticos. Os links magnéticos serão usados pelo seu cliente BitTorrent para procurar o arquivo na rede DHT, e deverá transferi-lo sem problemas." - }, - { - "id": "magnet_link_should_look_like", - "translation": "O link magnético parece-se com isso:" - }, - { - "id": "which_trackers_do_you_recommend", - "translation": "Que trackers recomendam usar?" - }, - { - "id": "answer_which_trackers_do_you_recommend", - "translation": "Agora possuímos o nosso próprio Tracker. Adicione-o ao topo da lista antes de enviar um torrent:" - }, - { - "id": "other_trackers", - "translation": "Mas também deve adicionar estes, caso algo dê errado." - }, - { - "id": "how_can_i_help", - "translation": "Como posso ajudar?" - }, - { - "id": "answer_how_can_i_help", - "translation": "Se tiver experiência em desenvolvimento para a web, pode entrar no canal de IRC #nyaapantsu em irc.rizon.net. Se tiver alguma base de dados actual, especialmente para o sukebei, ENVIE-A." - }, - { - "id": "your_design_sucks_found_a_bug", - "translation": "O vosso design é horrível / Encontrei um bug" - }, - { - "id": "why_written_in_go", - "translation": "Porquê que programou em Go?" - }, - { - "id": "authors_favorite_language", - "translation": "É a linguagem de programação favorita do autor." - }, - { - "id": "torrent_file", - "translation": "Arquivo de torrent" - }, - { - "id": "uploading_file_prefills_fields", - "translation": "Enviar um arquivo de torrent permite o pré-preenchimento de alguns campos, isso é recomendado." - }, - { - "id": "magnet_link", - "translation": "Link magnético" - }, - { - "id": "all_categories", - "translation": "Todas as categorias" - }, - { - "id": "anime", - "translation": "Anime" - }, - { - "id": "anime_amv", - "translation": "Anime - AMV (Anime Music Video)" - }, - { - "id": "anime_english_translated", - "translation": "Anime - Traduções em inglês" - }, - { - "id": "anime_non_english_translated", - "translation": "Anime - Traduções noutras línguas" - }, - { - "id": "anime_raw", - "translation": "Anime - Sem tradução" - }, - { - "id": "audio", - "translation": "Áudio" - }, - { - "id": "audio_lossless", - "translation": "Áudio - Sem perdas" - }, - { - "id": "audio_lossy", - "translation": "Audio - Com perdas" - }, - { - "id": "literature", - "translation": "Literatura" - }, - { - "id": "literature_english_translated", - "translation": "Literatura - Traduções em inglês" - }, - { - "id": "literature_raw", - "translation": "Literatura - Sem tradução" - }, - { - "id": "literature_non_english_translated", - "translation": "Literatura - Traduções noutras línguas" - }, - { - "id": "live_action", - "translation": "Live Action" - }, - { - "id": "live_action_english_translated", - "translation": "Live Action - Traduções em inglês" - }, - { - "id": "live_action_idol_pv", - "translation": "Live Action - Idol/Vídeo promocional" - }, - { - "id": "live_action_non_english_translated", - "translation": "Live Action - Traduções noutras línguas" - }, - { - "id": "live_action_raw", - "translation": "Live Action - Sem tradução" - }, - { - "id": "pictures", - "translation": "Imagens" - }, - { - "id": "pictures_graphics", - "translation": "Imagens - Artes gráficas" - }, - { - "id": "pictures_photos", - "translation": "Imagens - Fotos" - }, - { - "id": "software", - "translation": "Software" - }, - { - "id": "software_applications", - "translation": "Software - Aplicações" - }, - { - "id": "software_games", - "translation": "Software - Jogos" - }, - { - "id": "torrent_description", - "translation": "Descrição do torrent" - }, - { - "id": "description_markdown_notice", - "translation": "Markdown pode ser usado em descrições." - }, - { - "id": "show_all", - "translation": "Mostrar todos" - }, - { - "id": "filter_remakes", - "translation": "Filtrar refeitos" - }, - { - "id": "trusted", - "translation": "Confiável" - }, - { - "id": "search", - "translation": "Pesquisar" - }, - { - "id": "hash", - "translation": "Hash" - }, - { - "id": "description", - "translation": "Descrição" - }, - { - "id": "comments", - "translation": "Comentários" - }, - { - "id": "submit_a_comment_as_username", - "translation": "Comentar como %s" - }, - { - "id": "submit_a_comment_as_anonymous", - "translation": "Comentar como Anónimo" - }, - { - "id": "submit", - "translation": "Enviar" - }, - { - "id": "personal_info", - "translation": "Informações pessoais" - }, - { - "id": "language", - "translation": "Língua" - }, - { - "id": "current_password", - "translation": "Senha atual" - }, - { - "id": "role", - "translation": "Cargo" - }, - { - "id": "banned", - "translation": "Banido" - }, - { - "id": "default", - "translation": "Padrão" - }, - { - "id": "trusted_member", - "translation": "Membro confiável" - }, - { - "id": "moderator", - "translation": "Moderador" - }, - { - "id": "save_changes", - "translation": "Guardar alterações" - }, - { - "id": "profile_updated", - "translation": "O seu perfil foi actualizado correctamente!" - }, - { - "id": "delete_account", - "translation": "Apagar conta" - }, - { - "id": "delete_account_confirm", - "translation": "Tem a certeza que deseja apagar a sua conta?" - }, - { - "id": "delete_success", - "translation": "A sua conta foi apagada com sucesso!" - }, - { - "id": "moderation", - "translation": "Moderação" - }, - { - "id": "who_is_renchon", - "translation": "Quem é れんちょん?" - }, - { - "id": "renchon_anon_explanation", - "translation": "れんちょん (Ren-chon) é o nome atribuído a uploads e comentários feitos anonimamente. Também é usado para torrents importados do nyaa original, embora o uploader original seja mostrado ao lado." - }, - { - "id": "mark_as_remake", - "translation": "Marcar como remake" - }, - { - "id": "profile_edit_page", - "translation": "Editar o perfil de %s" - }, - { - "id": "change_language", - "translation": "Mudar língua" - }, - { - "id": "language_name", - "translation": "Português (Portugal)" - }, - { - "id": "language_code", - "translation": "pt-pt" - } -] +[ + { + "id": "verify_email_title", + "translation": "Verifique o seu endereço de e-mail do Nyaapantsu." + }, + { + "id": "verify_email_content", + "translation": "Clique no link abaixo para verificar o seu endereço de e-mail." + }, + { + "id": "reset_password_title", + "translation": "Redefina a sua senha." + }, + { + "id": "reset_password_content", + "translation": "Clique no link abaixo para redefinir a sua senha." + }, + { + "id": "register_title", + "translation": "Criar conta" + }, + { + "id": "signup_box_title", + "translation": "Por favor, registe-se (é de graça e sempre será)" + }, + { + "id": "username", + "translation": "Nome de usuário" + }, + { + "id": "email_address_or_username", + "translation": "Endereço de e-mail ou nome de usuário" + }, + { + "id": "email_address", + "translation": "Endereço de e-mail" + }, + { + "id": "password", + "translation": "Senha" + }, + { + "id": "confirm_password", + "translation": "Confirmar senha" + }, + { + "id": "terms_conditions_confirm", + "translation": "Ao clicar em Registar, estará a concordar com os Termos e Condições estabelecidos pelo site, incluindo o nosso uso de cookies." + }, + { + "id": "signin", + "translation": "Iniciar sessão" + }, + { + "id": "register", + "translation": "Registar" + }, + { + "id": "terms_conditions", + "translation": "Termos e Condições" + }, + { + "id": "terms_conditions_full", + "translation": "Algumas coisas." + }, + { + "id": "remember_me", + "translation": "Lembre-se de mim" + }, + { + "id": "forgot_password", + "translation": "Esqueceu-se da sua senha?" + }, + { + "id": "sign_in_box_title", + "translation": "Por favor, inicie a sessão" + }, + { + "id": "sign_in_title", + "translation": "Iniciar sessão" + }, + { + "id": "register_success_title", + "translation": "Registo bem-sucedido" + }, + { + "id": "sign_up_success", + "translation": "Obrigado por se registar!" + }, + { + "id": "verify_success", + "translation": "A sua conta foi ativada!" + }, + { + "id": "signup_verification_email", + "translation": "Por fim, procure o e-mail de verificação na sua caixa de entrada (e pasta de spam!)." + }, + { + "id": "signup_verification_noemail", + "translation": "Registo bem-sucedido. Já pode usar a sua conta." + }, + { + "id": "settings", + "translation": "Configurações de conta" + }, + { + "id": "torrents", + "translation": "Torrents" + }, + { + "id": "follow", + "translation": "Seguir" + }, + { + "id": "unfollow", + "translation": "Deixar de seguir" + }, + { + "id": "user_followed_msg", + "translation": "Seguiu %s!" + }, + { + "id": "user_unfollowed_msg", + "translation": "Deixou de seguir %s!" + }, + { + "id": "profile_page", + "translation": "Perfil de %s" + }, + { + "id": "see_more_torrents_from", + "translation": "Ver mais torrents de %s " + }, + { + "id": "category", + "translation": "Categoria" + }, + { + "id": "name", + "translation": "Nome" + }, + { + "id": "date", + "translation": "Data" + }, + { + "id": "size", + "translation": "Tamanho" + }, + { + "id": "links", + "translation": "Links" + }, + { + "id": "home", + "translation": "Página inicial" + }, + { + "id": "error_404", + "translation": "Erro 404" + }, + { + "id": "upload", + "translation": "Enviar" + }, + { + "id": "faq", + "translation": "Perguntas Frequentes" + }, + { + "id": "fap", + "translation": "Fap" + }, + { + "id": "nothing_here", + "translation": "Nada aqui." + }, + { + "id": "404_not_found", + "translation": "404 Não encontrado" + }, + { + "id": "no_torrents_uploaded", + "translation": "Nenhum torrent enviado ainda!" + }, + { + "id": "profile", + "translation": "Perfil" + }, + { + "id": "sign_out", + "translation": "Sair" + }, + { + "id": "member", + "translation": "Membro" + }, + { + "id": "no_results_found", + "translation": "Nenhum resultado encontrado" + }, + { + "id": "notice_keep_seeding", + "translation": "AVISO: CONTINUE SEMEANDO E ACTIVE O DHT" + }, + { + "id": "official_nyaapocalipse_faq", + "translation": "Perguntas frequentes sobre o Nyaapocalipse" + }, + { + "id": "links_replacement_mirror", + "translation": "Links para a reposição/mirror" + }, + { + "id": "what_happened", + "translation": "O que aconteceu?" + }, + { + "id": "nyaa_se_went_offline", + "translation": "nyaa.se e domínios associados (como nyaatorrents.info) saíram do ar a 1 de maio de 2017." + }, + { + "id": "its_not_a_ddos", + "translation": "Foram desativados, portanto não foi um ataque DDoS (ataque de negação de serviço) como normalmente." + }, + { + "id": "future_not_looking_good", + "translation": "Prospectos futuros para o nyaa não parecem boas. (Está morto)" + }, + { + "id": "recovery_effort", + "translation": "Está a decorrer uma tentativa de recuperação." + }, + { + "id": "is_everything_lost", + "translation": "Foi tudo perdido?" + }, + { + "id": "in_short_no", + "translation": "Resumindo, não." + }, + { + "id": "are_some_things_lost", + "translation": "Foram perdidas algumas coisas?" + }, + { + "id": "answer_is_nyaa_db_lost", + "translation": "Temos uma base de dados que contém os torrents do nyaa até 5 de abril 1 de maio. Isso significa que quase nada foi perdido." + }, + { + "id": "answer_is_sukebei_db_lost", + "translation": "Sukebei, no entanto, está numa situação pior. Actualmente só temos os dados do sukebei até 2016, mas uma nova base de dados pode estar disponível para uso." + }, + { + "id": "how_are_we_recovering", + "translation": "Como estamos a recuperar?" + }, + { + "id": "answer_how_are_we_recovering", + "translation": "As bases de dados estão hospedadas em nyaa.pantsu.cat e sukebei.pantsu.cat. Há uma função de pesquisa, e (quase) todas as funcionalidades do nyaa deverão estar de volta em breve. Estatísticas de seeders/leechers estão disponíveis via raspagem de dados e podem ser restauradas no futuro, já que outras funções têm prioridade de momento." + }, + { + "id": "how_do_i_link_my_old_account", + "translation": "O que devo fazer para transferir os meus antigos torrents de volta para minha nova conta?" + }, + { + "id": "answer_how_do_i_link_my_old_account", + "translation": "Entre em #nyaapantsu-help@Rizon e informe a moderação acerca do seu antigo e novo nome de usuário." + }, + { + "id": "are_the_trackers_working", + "translation": "Os torrents ainda funcionam?" + }, + { + "id": "answer_are_the_trackers_working", + "translation": "Mesmo com os trackers offline, seeders ainda estão conectados à rede descentralizada DHT. Enquanto o arquivo estiver listado na rede DHT, as coisas deverão funcionar normalmente." + }, + { + "id": "how_do_i_download_the_torrents", + "translation": "Como posso transferir os torrents?" + }, + { + "id": "answer_how_do_i_download_the_torrents", + "translation": "Use os links magnéticos. Os links magnéticos serão usados pelo seu cliente BitTorrent para procurar o arquivo na rede DHT, e deverá transferi-lo sem problemas." + }, + { + "id": "magnet_link_should_look_like", + "translation": "O link magnético parece-se com isso:" + }, + { + "id": "which_trackers_do_you_recommend", + "translation": "Que trackers recomendam usar?" + }, + { + "id": "answer_which_trackers_do_you_recommend", + "translation": "Agora possuímos o nosso próprio Tracker. Adicione-o ao topo da lista antes de enviar um torrent:" + }, + { + "id": "other_trackers", + "translation": "Mas também deve adicionar estes, caso algo dê errado." + }, + { + "id": "how_can_i_help", + "translation": "Como posso ajudar?" + }, + { + "id": "answer_how_can_i_help", + "translation": "Se tiver experiência em desenvolvimento para a web, pode entrar no canal de IRC #nyaapantsu em irc.rizon.net. Se tiver alguma base de dados actual, especialmente para o sukebei, ENVIE-A." + }, + { + "id": "your_design_sucks_found_a_bug", + "translation": "O vosso design é horrível / Encontrei um bug" + }, + { + "id": "why_written_in_go", + "translation": "Porquê que programou em Go?" + }, + { + "id": "authors_favorite_language", + "translation": "É a linguagem de programação favorita do autor." + }, + { + "id": "torrent_file", + "translation": "Arquivo de torrent" + }, + { + "id": "uploading_file_prefills_fields", + "translation": "Enviar um arquivo de torrent permite o pré-preenchimento de alguns campos, isso é recomendado." + }, + { + "id": "magnet_link", + "translation": "Link magnético" + }, + { + "id": "all_categories", + "translation": "Todas as categorias" + }, + { + "id": "anime", + "translation": "Anime" + }, + { + "id": "anime_amv", + "translation": "Anime - AMV (Anime Music Video)" + }, + { + "id": "anime_english_translated", + "translation": "Anime - Traduções em inglês" + }, + { + "id": "anime_non_english_translated", + "translation": "Anime - Traduções noutras línguas" + }, + { + "id": "anime_raw", + "translation": "Anime - Sem tradução" + }, + { + "id": "audio", + "translation": "Áudio" + }, + { + "id": "audio_lossless", + "translation": "Áudio - Sem perdas" + }, + { + "id": "audio_lossy", + "translation": "Audio - Com perdas" + }, + { + "id": "literature", + "translation": "Literatura" + }, + { + "id": "literature_english_translated", + "translation": "Literatura - Traduções em inglês" + }, + { + "id": "literature_raw", + "translation": "Literatura - Sem tradução" + }, + { + "id": "literature_non_english_translated", + "translation": "Literatura - Traduções noutras línguas" + }, + { + "id": "live_action", + "translation": "Live Action" + }, + { + "id": "live_action_english_translated", + "translation": "Live Action - Traduções em inglês" + }, + { + "id": "live_action_idol_pv", + "translation": "Live Action - Idol/Vídeo promocional" + }, + { + "id": "live_action_non_english_translated", + "translation": "Live Action - Traduções noutras línguas" + }, + { + "id": "live_action_raw", + "translation": "Live Action - Sem tradução" + }, + { + "id": "pictures", + "translation": "Imagens" + }, + { + "id": "pictures_graphics", + "translation": "Imagens - Artes gráficas" + }, + { + "id": "pictures_photos", + "translation": "Imagens - Fotos" + }, + { + "id": "software", + "translation": "Software" + }, + { + "id": "software_applications", + "translation": "Software - Aplicações" + }, + { + "id": "software_games", + "translation": "Software - Jogos" + }, + { + "id": "torrent_description", + "translation": "Descrição do torrent" + }, + { + "id": "description_markdown_notice", + "translation": "Markdown pode ser usado em descrições." + }, + { + "id": "show_all", + "translation": "Mostrar todos" + }, + { + "id": "filter_remakes", + "translation": "Filtrar refeitos" + }, + { + "id": "trusted", + "translation": "Confiável" + }, + { + "id": "search", + "translation": "Pesquisar" + }, + { + "id": "hash", + "translation": "Hash" + }, + { + "id": "description", + "translation": "Descrição" + }, + { + "id": "comments", + "translation": "Comentários" + }, + { + "id": "submit_a_comment_as_username", + "translation": "Comentar como %s" + }, + { + "id": "submit_a_comment_as_anonymous", + "translation": "Comentar como Anónimo" + }, + { + "id": "submit", + "translation": "Enviar" + }, + { + "id": "personal_info", + "translation": "Informações pessoais" + }, + { + "id": "language", + "translation": "Língua" + }, + { + "id": "current_password", + "translation": "Senha atual" + }, + { + "id": "role", + "translation": "Cargo" + }, + { + "id": "banned", + "translation": "Banido" + }, + { + "id": "default", + "translation": "Padrão" + }, + { + "id": "trusted_member", + "translation": "Membro confiável" + }, + { + "id": "moderator", + "translation": "Moderador" + }, + { + "id": "save_changes", + "translation": "Guardar alterações" + }, + { + "id": "profile_updated", + "translation": "O seu perfil foi actualizado correctamente!" + }, + { + "id": "delete_account", + "translation": "Apagar conta" + }, + { + "id": "delete_account_confirm", + "translation": "Tem a certeza que deseja apagar a sua conta?" + }, + { + "id": "delete_success", + "translation": "A sua conta foi apagada com sucesso!" + }, + { + "id": "moderation", + "translation": "Moderação" + }, + { + "id": "who_is_renchon", + "translation": "Quem é れんちょん?" + }, + { + "id": "renchon_anon_explanation", + "translation": "れんちょん (Ren-chon) é o nome atribuído a uploads e comentários feitos anonimamente. Também é usado para torrents importados do nyaa original, embora o uploader original seja mostrado ao lado." + }, + { + "id": "mark_as_remake", + "translation": "Marcar como remake" + }, + { + "id": "profile_edit_page", + "translation": "Editar o perfil de %s" + }, + { + "id": "change_language", + "translation": "Mudar língua" + }, + { + "id": "language_name", + "translation": "Português (Portugal)" + }, + { + "id": "language_code", + "translation": "pt-pt" + } +] diff --git a/translations/ro-ro.all.json b/translations/ro-ro.all.json index 83a6530d..5e4138b6 100644 --- a/translations/ro-ro.all.json +++ b/translations/ro-ro.all.json @@ -1,706 +1,706 @@ -[ - { - "id": "verify_email_title", - "translation": "Verifică adresa ta de email pentru Nyaapantsu." - }, - { - "id": "verify_email_content", - "translation": "Vă rog să daţi click pe link-ul de dedesupt pentru a verifica adresa dumneavoastră de email." - }, - { - "id": "reset_password_title", - "translation": "Resetează parola pentru Nyaapantsu." - }, - { - "id": "reset_password_content", - "translation": "Vă rog să daţi click pe link-ul de dedesupt pentru a reseta parola dumneavoastră." - }, - { - "id": "register_title", - "translation": "Crează un cont nou" - }, - { - "id": "signup_box_title", - "translation": "Vă rog înregistraţi-vă E gratuit şi va fi întotdeauna." - }, - { - "id": "username", - "translation": "Nume de utilizator" - }, - { - "id": "email_address_or_username", - "translation": "Adresă de email sau Nume de utilizator" - }, - { - "id": "email_address", - "translation": "Adresă de email" - }, - { - "id": "password", - "translation": "Parola" - }, - { - "id": "confirm_password", - "translation": "Confirmă parola" - }, - { - "id": "terms_conditions_confirm", - "translation": "Dacă daţi click Register, sunteţi de acord cu Termenii şi Condiţiile acestui site, incluzând folosirea noastra de Cookie-uri." - }, - { - "id": "signin", - "translation": "Autentificare" - }, - { - "id": "register", - "translation": "Înregistrare" - }, - { - "id": "terms_conditions", - "translation": "Termeni şi Condiţii" - }, - { - "id": "terms_conditions_full", - "translation": "Some Shit." - }, - { - "id": "remember_me", - "translation": "Ţine-mă minte" - }, - { - "id": "forgot_password", - "translation": "Ai uitat parola?" - }, - { - "id": "sign_in_box_title", - "translation": "Vă rog să vă autentificați" - }, - { - "id": "sign_in_title", - "translation": "Autentificare" - }, - { - "id": "register_success_title", - "translation": "Înregistrare reuşită" - }, - { - "id": "sign_up_success", - "translation": "Mulţumim pentru înregistrare!" - }, - { - "id": "verify_success", - "translation": "Contul tău este acum activat!" - }, - { - "id": "signup_verification_email", - "translation": "Verificarea prin email nu funcţionează în acest moment, aşa că puteţi folosi contul imediat. În viitor, vă rog să verificaţi inbox-ul(şi folderul de spam!) pentru emailul de verificare." - }, - { - "id": "signup_verification_noemail", - "translation": "Înregistrarea a fost reuşită, acum îţi poţi folosi contul." - }, - { - "id": "settings", - "translation": "Setări cont" - }, - { - "id": "torrents", - "translation": "Torrente" - }, - { - "id": "follow", - "translation": "Urmăreşte" - }, - { - "id": "unfollow", - "translation": "Nu mai urmări" - }, - { - "id": "user_followed_msg", - "translation": "Ai urmărit %s!" - }, - { - "id": "user_unfollowed_msg", - "translation": "Nu mai urmăreşti %s!" - }, - { - "id": "profile_page", - "translation": "Pagina de profil a lui %s" - }, - { - "id": "see_more_torrents_from", - "translation": "Vezi mai multe torrente de la %s " - }, - { - "id": "category", - "translation": "Categorie" - }, - { - "id": "name", - "translation": "Nume" - }, - { - "id": "date", - "translation": "Dată" - }, - { - "id": "size", - "translation": "Mărime" - }, - { - "id": "links", - "translation": "Linkuri" - }, - { - "id": "home", - "translation": "Acasă" - }, - { - "id": "error_404", - "translation": "Eroare 404" - }, - { - "id": "upload", - "translation": "Upload" - }, - { - "id": "faq", - "translation": "FAQ" - }, - { - "id": "fap", - "translation": "Labă" - }, - { - "id": "fun", - "translation": "Distracţie" - }, - { - "id": "nothing_here", - "translation": "Nu e nimic aici." - }, - { - "id": "404_not_found", - "translation": "404 Nu am găsit" - }, - { - "id": "no_torrents_uploaded", - "translation": "Niciun torrent uploadat încă!" - }, - { - "id": "profile", - "translation": "Profil" - }, - { - "id": "sign_out", - "translation": "Ieşit" - }, - { - "id": "member", - "translation": "Membru" - }, - { - "id": "no_results_found", - "translation": "Nu am găsit rezultate" - }, - { - "id": "notice_keep_seeding", - "translation": "ATENŢIE: STAI LA SEED ŞI ACTIVEAZĂ DHT ÎN CLIENTUL DE TORRENTE!" - }, - { - "id": "official_nyaapocalipse_faq", - "translation": "FAQ Oficial Nyaapocalypse" - }, - { - "id": "links_replacement_mirror", - "translation": "Linkuri pentru înlocuitori" - }, - { - "id": "what_happened", - "translation": "Ce s-a întâmplat?" - }, - { - "id": "nyaa_se_went_offline", - "translation": "nyaa.se şi domeniile asociate (cum ar fi nyaatorrents.info) sunt offline din 1 Mai 2017." - }, - { - "id": "its_not_a_ddos", - "translation": "Au fost dezactivate, aşa că nu e un atac DDoS ca de obicei." - }, - { - "id": "future_not_looking_good", - "translation": "Şansele ca nyaa să revină nu sunt bune. (A murit)" - }, - { - "id": "recovery_effort", - "translation": "Există un efort pentru a recupera totul." - }, - { - "id": "is_everything_lost", - "translation": "Este totul pierdut?" - }, - { - "id": "in_short_no", - "translation": "Pe scurt, nu." - }, - { - "id": "are_some_things_lost", - "translation": "Sunt nişte lucruri pierdute?" - }, - { - "id": "answer_is_nyaa_db_lost", - "translation": "Avem o bază de date a torrentelor de pe nyaa până pe 1 May. Asta înseamnă că nimic nu e pierdut." - }, - { - "id": "answer_is_sukebei_db_lost", - "translation": "Sukebei e salvat de asemenea , şi aproape nimic nu e pierdut." - }, - { - "id": "how_are_we_recovering", - "translation": "Cum recuperăm?" - }, - { - "id": "answer_how_are_we_recovering", - "translation": "Bazele de date menţionate mai sus le puteţi găsi la nyaa.pantsu.cat şi sukebei.pantsu.cat. Există o funcţie de căutare, şi (aproape) toată funcţionalitatea lui nyaa ar trebui să vină în curând." - }, - { - "id": "how_do_i_link_my_old_account", - "translation": "Cum mut uploadurile mele vechi către contul nou?" - }, - { - "id": "answer_how_do_i_link_my_old_account", - "translation": "Intră pe #nyaapantsu-help@Rizon şi întreabă un moderator să îţi migreze torrentele menţionând vechiul şi noul nume de utilizator." - }, - { - "id": "are_the_trackers_working", - "translation": "Torrentele încă funcţionează?" - }, - { - "id": "answer_are_the_trackers_working", - "translation": "Chiar dacă trackerele nu funcționează, seederii sunt încă conectați la rețeaua decentralizată DHT. Atât timp cât fișierul e listat în rețeaua DHT, lucrurile merg ca de obicei." - }, - { - "id": "how_do_i_download_the_torrents", - "translation": "Cum descarc torrentele?" - }, - { - "id": "answer_how_do_i_download_the_torrents", - "translation": "Foloseşte Linkul magnet. Linkul magnet va fi folosit de clientul tău de BitTorrent pentru a căuta fișierul în rețeaua DHT și se va descărca fără probleme." - }, - { - "id": "magnet_link_should_look_like", - "translation": "Linkul magnet ar trebui să arate aşa:" - }, - { - "id": "which_trackers_do_you_recommend", - "translation": "Ce trackere recomandaţi să folosesc?" - }, - { - "id": "answer_which_trackers_do_you_recommend", - "translation": "Avem acum trackerul nostru numit doko.moe, adaugă-l la începutul listei înainte de upload. Ar trebui să adaugi toți acești trackeri pentru a păstra torrentul sănătos." - }, - { - "id": "how_can_i_help", - "translation": "Cum pot ajuta?" - }, - { - "id": "answer_how_can_i_help", - "translation": "Daca te pricepi la website development, vino pe canalul de IRC #nyaapantsu pe irc.rizon.net. Daca ai date de baze mai curente, în special pentru sukebei, te rog uploadeazale." - }, - { - "id": "your_design_sucks_found_a_bug", - "translation": "Designul tău e urât / Am găsit un bug" - }, - { - "id": "why_written_in_go", - "translation": "De ce e totul scris în Go?" - }, - { - "id": "authors_favorite_language", - "translation": "Este limbajul de programare favorit al autorului." - }, - { - "id": "torrent_file", - "translation": "Fişier torrent" - }, - { - "id": "uploading_file_prefills_fields", - "translation": "Uploadarea unui fişier torrent permite precompletarea unor cămpuri. Este recomandat." - }, - { - "id": "magnet_link", - "translation": "Link Magnet" - }, - { - "id": "all_categories", - "translation": "Toate categoriile" - }, - { - "id": "select_a_torrent_category", - "translation": "Selecteză o categorie de torrente" - }, - { - "id": "anime", - "translation": "Anime" - }, - { - "id": "anime_amv", - "translation": "Anime - Anime Music Video" - }, - { - "id": "anime_english_translated", - "translation": "Anime - Tradus în Engleză" - }, - { - "id": "anime_non_english_translated", - "translation": "Anime - Tradus în altă limbă" - }, - { - "id": "anime_raw", - "translation": "Anime - Raw" - }, - { - "id": "audio", - "translation": "Audio" - }, - { - "id": "audio_lossless", - "translation": "Audio - Lossless" - }, - { - "id": "audio_lossy", - "translation": "Audio - Lossy" - }, - { - "id": "literature", - "translation": "Literatură" - }, - { - "id": "literature_english_translated", - "translation": "Literatură - Tradus în Engleză" - }, - { - "id": "literature_raw", - "translation": "Literatură - Raw" - }, - { - "id": "literature_non_english_translated", - "translation": "Literatură - Tradus în altă limbă" - }, - { - "id": "live_action", - "translation": "Live Action" - }, - { - "id": "live_action_english_translated", - "translation": "Live Action - Tradus în Engleză" - }, - { - "id": "live_action_idol_pv", - "translation": "Live Action - Idol/Video Promoţional" - }, - { - "id": "live_action_non_english_translated", - "translation": "Live Action - Tradus în altă limbă" - }, - { - "id": "live_action_raw", - "translation": "Live Action - Raw" - }, - { - "id": "pictures", - "translation": "Imagini" - }, - { - "id": "pictures_graphics", - "translation": "Imagini - Grafică" - }, - { - "id": "pictures_photos", - "translation": "Imagini - Fotografii" - }, - { - "id": "software", - "translation": "Software" - }, - { - "id": "software_applications", - "translation": "Software - Aplicaţii" - }, - { - "id": "software_games", - "translation": "Software - Jocuri" - }, - { - "id": "art", - "translation": "Artă" - }, - { - "id": "art_anime", - "translation": "Artă - Anime" - }, - { - "id": "art_doujinshi", - "translation": "Artă - Doujinshi" - }, - { - "id": "art_games", - "translation": "Artă - Jocuri" - }, - { - "id": "art_manga", - "translation": "Artă - Manga" - }, - { - "id": "real_life", - "translation": "Viaţa Reală" - }, - { - "id": "real_life_photobooks_and_pictures", - "translation": "Viaţa Reală - Albume şi Imagini" - }, - { - "id": "real_life_videos", - "translation": "Viaţa Reală - Videoclipuri" - }, - { - "id": "torrent_description", - "translation": "Descripţie Torrent" - }, - { - "id": "description_markdown_notice", - "translation": "Markdown poate fi folosit in descripţie." - }, - { - "id": "show_all", - "translation": "Arată tot" - }, - { - "id": "filter_remakes", - "translation": "Filtreaza Remakeurile" - }, - { - "id": "trusted", - "translation": "De încredere" - }, - { - "id": "search", - "translation": "Caută" - }, - { - "id": "hash", - "translation": "Hash" - }, - { - "id": "description", - "translation": "Descripţie" - }, - { - "id": "comments", - "translation": "Comentarii" - }, - { - "id": "submit_a_comment_as_username", - "translation": "Postează un comentariu ca %s" - }, - { - "id": "submit_a_comment_as_anonymous", - "translation": "Postează un comentariu ca Anonim" - }, - { - "id": "submit", - "translation": "Postează" - }, - { - "id": "personal_info", - "translation": "Informaţii Personale" - }, - { - "id": "language", - "translation": "Limbă" - }, - { - "id": "current_password", - "translation": "Parola curentă" - }, - { - "id": "role", - "translation": "Rol" - }, - { - "id": "banned", - "translation": "Banat" - }, - { - "id": "default", - "translation": "Implicit" - }, - { - "id": "trusted_member", - "translation": "Membru de încredere" - }, - { - "id": "moderator", - "translation": "Moderator" - }, - { - "id": "api_token", - "translation": "Token API" - }, - { - "id": "save_changes", - "translation": "Salvează Schimbările" - }, - { - "id": "profile_updated", - "translation": "Profilul tău a fost actualizat corect!" - }, - { - "id": "delete_account", - "translation": "Şterge Contul" - }, - { - "id": "delete_account_confirm", - "translation": "Eşti sigur că vrei să stergi acest cont?" - }, - { - "id": "delete_success", - "translation": "Contul a fost şters cu succes!" - }, - { - "id": "moderation", - "translation": "Moderare" - }, - { - "id": "who_is_renchon", - "translation": "Cine e れんちょん?" - }, - { - "id": "renchon_anon_explanation", - "translation": "れんちょん (Ren-chon) este numele de utilizator alocat uploadurilor şi comentariilor anonime. Este folosit şi pentru torrentele importate de pe vechiul nyaa, dar câteodată uploaderul original poate fi afişat langă el." - }, - { - "id": "mark_as_remake", - "translation": "Marchează ca remake" - }, - { - "id": "email_changed", - "translation": "Emailul a fost schimbat cu succes! Trebuie însă să confirmi dând click pe linkul trimis către: %s" - }, - { - "id": "torrent_status", - "translation": "Status torrent" - }, - { - "id": "torrent_status_normal", - "translation": "Normal" - }, - { - "id": "torrent_status_remake", - "translation": "Remake" - }, - { - "id": "profile_edit_page", - "translation": "Modifică profilul lui %s" - }, - { - "id": "seeders", - "translation": "Seeders" - }, - { - "id": "leechers", - "translation": "Leechers" - }, - { - "id": "completed", - "translation": "Completat" - }, - { - "id": "change_language", - "translation": "Schimbă Limba" - }, - { - "id": "language_name", - "translation": "Română" - }, - { - "id": "language_code", - "translation": "ro-ro" - }, - { - "id": "delete", - "translation": "Şterge" - }, - { - "id": "files", - "translation": "Fişiere" - }, - { - "id": "uploaded_by", - "translation": "Uploadat de" - }, - { - "id": "report_btn", - "translation": "Raportează" - }, - { - "id": "are_you_sure", - "translation": "Eşti sigur?" - }, - { - "id": "report_torrent_number", - "translation": "Raportează Torrentul #%s" - }, - { - "id": "report_type", - "translation": "Tip de raport" - }, - { - "id": "illegal_content", - "translation": "Conţinut ilegal" - }, - { - "id": "spam_garbage", - "translation": "Spam / Gunoi" - }, - { - "id": "wrong_category", - "translation": "Categorie greşită" - }, - { - "id": "duplicate_deprecated", - "translation": "Duplicat / Depreciat" - }, - { - "id": "captcha", - "translation": "Captcha" - }, - { - "id": "file_name", - "translation": "Nume Fişier" - }, - { - "id": "cancel", - "translation": "Anulează" - }, - { - "id": "please_include_our_tracker", - "translation": "Te rog include udp://tracker.doko.moe:6969 la trackerele tale." - }, - { - "id": "unknown", - "translation": "Necunoscut" - }, - { - "id": "last_scraped", - "translation": "Ultimul scrape: " - }, - { - "id": "server_status_link", - "translation": "Statusul servărului poate fi găsit aici" - }, - { - "id": "no_database_dumps_available", - "translation": "Dumpurile bazei de date nu sunt disponibile în acest moment." - } -] +[ + { + "id": "verify_email_title", + "translation": "Verifică adresa ta de email pentru Nyaapantsu." + }, + { + "id": "verify_email_content", + "translation": "Vă rog să daţi click pe link-ul de dedesupt pentru a verifica adresa dumneavoastră de email." + }, + { + "id": "reset_password_title", + "translation": "Resetează parola pentru Nyaapantsu." + }, + { + "id": "reset_password_content", + "translation": "Vă rog să daţi click pe link-ul de dedesupt pentru a reseta parola dumneavoastră." + }, + { + "id": "register_title", + "translation": "Crează un cont nou" + }, + { + "id": "signup_box_title", + "translation": "Vă rog înregistraţi-vă E gratuit şi va fi întotdeauna." + }, + { + "id": "username", + "translation": "Nume de utilizator" + }, + { + "id": "email_address_or_username", + "translation": "Adresă de email sau Nume de utilizator" + }, + { + "id": "email_address", + "translation": "Adresă de email" + }, + { + "id": "password", + "translation": "Parola" + }, + { + "id": "confirm_password", + "translation": "Confirmă parola" + }, + { + "id": "terms_conditions_confirm", + "translation": "Dacă daţi click Register, sunteţi de acord cu Termenii şi Condiţiile acestui site, incluzând folosirea noastra de Cookie-uri." + }, + { + "id": "signin", + "translation": "Autentificare" + }, + { + "id": "register", + "translation": "Înregistrare" + }, + { + "id": "terms_conditions", + "translation": "Termeni şi Condiţii" + }, + { + "id": "terms_conditions_full", + "translation": "Some Shit." + }, + { + "id": "remember_me", + "translation": "Ţine-mă minte" + }, + { + "id": "forgot_password", + "translation": "Ai uitat parola?" + }, + { + "id": "sign_in_box_title", + "translation": "Vă rog să vă autentificați" + }, + { + "id": "sign_in_title", + "translation": "Autentificare" + }, + { + "id": "register_success_title", + "translation": "Înregistrare reuşită" + }, + { + "id": "sign_up_success", + "translation": "Mulţumim pentru înregistrare!" + }, + { + "id": "verify_success", + "translation": "Contul tău este acum activat!" + }, + { + "id": "signup_verification_email", + "translation": "Verificarea prin email nu funcţionează în acest moment, aşa că puteţi folosi contul imediat. În viitor, vă rog să verificaţi inbox-ul(şi folderul de spam!) pentru emailul de verificare." + }, + { + "id": "signup_verification_noemail", + "translation": "Înregistrarea a fost reuşită, acum îţi poţi folosi contul." + }, + { + "id": "settings", + "translation": "Setări cont" + }, + { + "id": "torrents", + "translation": "Torrente" + }, + { + "id": "follow", + "translation": "Urmăreşte" + }, + { + "id": "unfollow", + "translation": "Nu mai urmări" + }, + { + "id": "user_followed_msg", + "translation": "Ai urmărit %s!" + }, + { + "id": "user_unfollowed_msg", + "translation": "Nu mai urmăreşti %s!" + }, + { + "id": "profile_page", + "translation": "Pagina de profil a lui %s" + }, + { + "id": "see_more_torrents_from", + "translation": "Vezi mai multe torrente de la %s " + }, + { + "id": "category", + "translation": "Categorie" + }, + { + "id": "name", + "translation": "Nume" + }, + { + "id": "date", + "translation": "Dată" + }, + { + "id": "size", + "translation": "Mărime" + }, + { + "id": "links", + "translation": "Linkuri" + }, + { + "id": "home", + "translation": "Acasă" + }, + { + "id": "error_404", + "translation": "Eroare 404" + }, + { + "id": "upload", + "translation": "Upload" + }, + { + "id": "faq", + "translation": "FAQ" + }, + { + "id": "fap", + "translation": "Labă" + }, + { + "id": "fun", + "translation": "Distracţie" + }, + { + "id": "nothing_here", + "translation": "Nu e nimic aici." + }, + { + "id": "404_not_found", + "translation": "404 Nu am găsit" + }, + { + "id": "no_torrents_uploaded", + "translation": "Niciun torrent uploadat încă!" + }, + { + "id": "profile", + "translation": "Profil" + }, + { + "id": "sign_out", + "translation": "Ieşit" + }, + { + "id": "member", + "translation": "Membru" + }, + { + "id": "no_results_found", + "translation": "Nu am găsit rezultate" + }, + { + "id": "notice_keep_seeding", + "translation": "ATENŢIE: STAI LA SEED ŞI ACTIVEAZĂ DHT ÎN CLIENTUL DE TORRENTE!" + }, + { + "id": "official_nyaapocalipse_faq", + "translation": "FAQ Oficial Nyaapocalypse" + }, + { + "id": "links_replacement_mirror", + "translation": "Linkuri pentru înlocuitori" + }, + { + "id": "what_happened", + "translation": "Ce s-a întâmplat?" + }, + { + "id": "nyaa_se_went_offline", + "translation": "nyaa.se şi domeniile asociate (cum ar fi nyaatorrents.info) sunt offline din 1 Mai 2017." + }, + { + "id": "its_not_a_ddos", + "translation": "Au fost dezactivate, aşa că nu e un atac DDoS ca de obicei." + }, + { + "id": "future_not_looking_good", + "translation": "Şansele ca nyaa să revină nu sunt bune. (A murit)" + }, + { + "id": "recovery_effort", + "translation": "Există un efort pentru a recupera totul." + }, + { + "id": "is_everything_lost", + "translation": "Este totul pierdut?" + }, + { + "id": "in_short_no", + "translation": "Pe scurt, nu." + }, + { + "id": "are_some_things_lost", + "translation": "Sunt nişte lucruri pierdute?" + }, + { + "id": "answer_is_nyaa_db_lost", + "translation": "Avem o bază de date a torrentelor de pe nyaa până pe 1 May. Asta înseamnă că nimic nu e pierdut." + }, + { + "id": "answer_is_sukebei_db_lost", + "translation": "Sukebei e salvat de asemenea , şi aproape nimic nu e pierdut." + }, + { + "id": "how_are_we_recovering", + "translation": "Cum recuperăm?" + }, + { + "id": "answer_how_are_we_recovering", + "translation": "Bazele de date menţionate mai sus le puteţi găsi la nyaa.pantsu.cat şi sukebei.pantsu.cat. Există o funcţie de căutare, şi (aproape) toată funcţionalitatea lui nyaa ar trebui să vină în curând." + }, + { + "id": "how_do_i_link_my_old_account", + "translation": "Cum mut uploadurile mele vechi către contul nou?" + }, + { + "id": "answer_how_do_i_link_my_old_account", + "translation": "Intră pe #nyaapantsu-help@Rizon şi întreabă un moderator să îţi migreze torrentele menţionând vechiul şi noul nume de utilizator." + }, + { + "id": "are_the_trackers_working", + "translation": "Torrentele încă funcţionează?" + }, + { + "id": "answer_are_the_trackers_working", + "translation": "Chiar dacă trackerele nu funcționează, seederii sunt încă conectați la rețeaua decentralizată DHT. Atât timp cât fișierul e listat în rețeaua DHT, lucrurile merg ca de obicei." + }, + { + "id": "how_do_i_download_the_torrents", + "translation": "Cum descarc torrentele?" + }, + { + "id": "answer_how_do_i_download_the_torrents", + "translation": "Foloseşte Linkul magnet. Linkul magnet va fi folosit de clientul tău de BitTorrent pentru a căuta fișierul în rețeaua DHT și se va descărca fără probleme." + }, + { + "id": "magnet_link_should_look_like", + "translation": "Linkul magnet ar trebui să arate aşa:" + }, + { + "id": "which_trackers_do_you_recommend", + "translation": "Ce trackere recomandaţi să folosesc?" + }, + { + "id": "answer_which_trackers_do_you_recommend", + "translation": "Avem acum trackerul nostru numit doko.moe, adaugă-l la începutul listei înainte de upload. Ar trebui să adaugi toți acești trackeri pentru a păstra torrentul sănătos." + }, + { + "id": "how_can_i_help", + "translation": "Cum pot ajuta?" + }, + { + "id": "answer_how_can_i_help", + "translation": "Daca te pricepi la website development, vino pe canalul de IRC #nyaapantsu pe irc.rizon.net. Daca ai date de baze mai curente, în special pentru sukebei, te rog uploadeazale." + }, + { + "id": "your_design_sucks_found_a_bug", + "translation": "Designul tău e urât / Am găsit un bug" + }, + { + "id": "why_written_in_go", + "translation": "De ce e totul scris în Go?" + }, + { + "id": "authors_favorite_language", + "translation": "Este limbajul de programare favorit al autorului." + }, + { + "id": "torrent_file", + "translation": "Fişier torrent" + }, + { + "id": "uploading_file_prefills_fields", + "translation": "Uploadarea unui fişier torrent permite precompletarea unor cămpuri. Este recomandat." + }, + { + "id": "magnet_link", + "translation": "Link Magnet" + }, + { + "id": "all_categories", + "translation": "Toate categoriile" + }, + { + "id": "select_a_torrent_category", + "translation": "Selecteză o categorie de torrente" + }, + { + "id": "anime", + "translation": "Anime" + }, + { + "id": "anime_amv", + "translation": "Anime - Anime Music Video" + }, + { + "id": "anime_english_translated", + "translation": "Anime - Tradus în Engleză" + }, + { + "id": "anime_non_english_translated", + "translation": "Anime - Tradus în altă limbă" + }, + { + "id": "anime_raw", + "translation": "Anime - Raw" + }, + { + "id": "audio", + "translation": "Audio" + }, + { + "id": "audio_lossless", + "translation": "Audio - Lossless" + }, + { + "id": "audio_lossy", + "translation": "Audio - Lossy" + }, + { + "id": "literature", + "translation": "Literatură" + }, + { + "id": "literature_english_translated", + "translation": "Literatură - Tradus în Engleză" + }, + { + "id": "literature_raw", + "translation": "Literatură - Raw" + }, + { + "id": "literature_non_english_translated", + "translation": "Literatură - Tradus în altă limbă" + }, + { + "id": "live_action", + "translation": "Live Action" + }, + { + "id": "live_action_english_translated", + "translation": "Live Action - Tradus în Engleză" + }, + { + "id": "live_action_idol_pv", + "translation": "Live Action - Idol/Video Promoţional" + }, + { + "id": "live_action_non_english_translated", + "translation": "Live Action - Tradus în altă limbă" + }, + { + "id": "live_action_raw", + "translation": "Live Action - Raw" + }, + { + "id": "pictures", + "translation": "Imagini" + }, + { + "id": "pictures_graphics", + "translation": "Imagini - Grafică" + }, + { + "id": "pictures_photos", + "translation": "Imagini - Fotografii" + }, + { + "id": "software", + "translation": "Software" + }, + { + "id": "software_applications", + "translation": "Software - Aplicaţii" + }, + { + "id": "software_games", + "translation": "Software - Jocuri" + }, + { + "id": "art", + "translation": "Artă" + }, + { + "id": "art_anime", + "translation": "Artă - Anime" + }, + { + "id": "art_doujinshi", + "translation": "Artă - Doujinshi" + }, + { + "id": "art_games", + "translation": "Artă - Jocuri" + }, + { + "id": "art_manga", + "translation": "Artă - Manga" + }, + { + "id": "real_life", + "translation": "Viaţa Reală" + }, + { + "id": "real_life_photobooks_and_pictures", + "translation": "Viaţa Reală - Albume şi Imagini" + }, + { + "id": "real_life_videos", + "translation": "Viaţa Reală - Videoclipuri" + }, + { + "id": "torrent_description", + "translation": "Descripţie Torrent" + }, + { + "id": "description_markdown_notice", + "translation": "Markdown poate fi folosit in descripţie." + }, + { + "id": "show_all", + "translation": "Arată tot" + }, + { + "id": "filter_remakes", + "translation": "Filtreaza Remakeurile" + }, + { + "id": "trusted", + "translation": "De încredere" + }, + { + "id": "search", + "translation": "Caută" + }, + { + "id": "hash", + "translation": "Hash" + }, + { + "id": "description", + "translation": "Descripţie" + }, + { + "id": "comments", + "translation": "Comentarii" + }, + { + "id": "submit_a_comment_as_username", + "translation": "Postează un comentariu ca %s" + }, + { + "id": "submit_a_comment_as_anonymous", + "translation": "Postează un comentariu ca Anonim" + }, + { + "id": "submit", + "translation": "Postează" + }, + { + "id": "personal_info", + "translation": "Informaţii Personale" + }, + { + "id": "language", + "translation": "Limbă" + }, + { + "id": "current_password", + "translation": "Parola curentă" + }, + { + "id": "role", + "translation": "Rol" + }, + { + "id": "banned", + "translation": "Banat" + }, + { + "id": "default", + "translation": "Implicit" + }, + { + "id": "trusted_member", + "translation": "Membru de încredere" + }, + { + "id": "moderator", + "translation": "Moderator" + }, + { + "id": "api_token", + "translation": "Token API" + }, + { + "id": "save_changes", + "translation": "Salvează Schimbările" + }, + { + "id": "profile_updated", + "translation": "Profilul tău a fost actualizat corect!" + }, + { + "id": "delete_account", + "translation": "Şterge Contul" + }, + { + "id": "delete_account_confirm", + "translation": "Eşti sigur că vrei să stergi acest cont?" + }, + { + "id": "delete_success", + "translation": "Contul a fost şters cu succes!" + }, + { + "id": "moderation", + "translation": "Moderare" + }, + { + "id": "who_is_renchon", + "translation": "Cine e れんちょん?" + }, + { + "id": "renchon_anon_explanation", + "translation": "れんちょん (Ren-chon) este numele de utilizator alocat uploadurilor şi comentariilor anonime. Este folosit şi pentru torrentele importate de pe vechiul nyaa, dar câteodată uploaderul original poate fi afişat langă el." + }, + { + "id": "mark_as_remake", + "translation": "Marchează ca remake" + }, + { + "id": "email_changed", + "translation": "Emailul a fost schimbat cu succes! Trebuie însă să confirmi dând click pe linkul trimis către: %s" + }, + { + "id": "torrent_status", + "translation": "Status torrent" + }, + { + "id": "torrent_status_normal", + "translation": "Normal" + }, + { + "id": "torrent_status_remake", + "translation": "Remake" + }, + { + "id": "profile_edit_page", + "translation": "Modifică profilul lui %s" + }, + { + "id": "seeders", + "translation": "Seeders" + }, + { + "id": "leechers", + "translation": "Leechers" + }, + { + "id": "completed", + "translation": "Completat" + }, + { + "id": "change_language", + "translation": "Schimbă Limba" + }, + { + "id": "language_name", + "translation": "Română" + }, + { + "id": "language_code", + "translation": "ro-ro" + }, + { + "id": "delete", + "translation": "Şterge" + }, + { + "id": "files", + "translation": "Fişiere" + }, + { + "id": "uploaded_by", + "translation": "Uploadat de" + }, + { + "id": "report_btn", + "translation": "Raportează" + }, + { + "id": "are_you_sure", + "translation": "Eşti sigur?" + }, + { + "id": "report_torrent_number", + "translation": "Raportează Torrentul #%s" + }, + { + "id": "report_type", + "translation": "Tip de raport" + }, + { + "id": "illegal_content", + "translation": "Conţinut ilegal" + }, + { + "id": "spam_garbage", + "translation": "Spam / Gunoi" + }, + { + "id": "wrong_category", + "translation": "Categorie greşită" + }, + { + "id": "duplicate_deprecated", + "translation": "Duplicat / Depreciat" + }, + { + "id": "captcha", + "translation": "Captcha" + }, + { + "id": "file_name", + "translation": "Nume Fişier" + }, + { + "id": "cancel", + "translation": "Anulează" + }, + { + "id": "please_include_our_tracker", + "translation": "Te rog include udp://tracker.doko.moe:6969 la trackerele tale." + }, + { + "id": "unknown", + "translation": "Necunoscut" + }, + { + "id": "last_scraped", + "translation": "Ultimul scrape: " + }, + { + "id": "server_status_link", + "translation": "Statusul servărului poate fi găsit aici" + }, + { + "id": "no_database_dumps_available", + "translation": "Dumpurile bazei de date nu sunt disponibile în acest moment." + } +] diff --git a/translations/th-th.all.json b/translations/th-th.all.json index 700183e5..217b847d 100644 --- a/translations/th-th.all.json +++ b/translations/th-th.all.json @@ -339,7 +339,7 @@ "id": "all_categories", "translation": "ทุกหมวดหมู่" }, - { + { "id": "select_a_torrent_category", "translation": "เลือกหมวดหมู่ทอร์เรนท์" }, @@ -651,7 +651,7 @@ "id": "delete", "translation": "ลบ" }, - { + { "id": "website_link", "translation": "ลิงค์เว็บ" }, @@ -726,7 +726,7 @@ { "id": "server_status_link", "translation": "สามารถดูสถานะของเซิร์ฟเวอร์ได้ที่นี่" - }, + }, { "id": "no_database_dumps_available", "translation": "ยังไม่มีไฟล์ดัมพ์ฐานข้อมูลในขณะนี้" diff --git a/utils/cache/cache.go b/utils/cache/cache.go index 69d1f107..9fabdc93 100644 --- a/utils/cache/cache.go +++ b/utils/cache/cache.go @@ -6,6 +6,7 @@ import ( "github.com/patrickmn/go-cache" ) +// C global cache variable var C *cache.Cache func init() { diff --git a/utils/categories/categories.go b/utils/categories/categories.go index 36a44f3c..632b1cf3 100644 --- a/utils/categories/categories.go +++ b/utils/categories/categories.go @@ -12,10 +12,12 @@ type Category struct { Name string } -// Cateogories is a struct defining an array of categories +// Categories is a struct defining an array of categories type Categories []Category var categories Categories + +// Index variable var Index map[string]int // InitCategories init the categories and index variables. Exported for tests diff --git a/utils/cookies/user.go b/utils/cookies/user.go index 856c1c6f..30806579 100644 --- a/utils/cookies/user.go +++ b/utils/cookies/user.go @@ -159,7 +159,7 @@ func setUserToContext(c *gin.Context, val *models.User) { context.Set(c.Request, UserContextKey, val) } -// RetrieveUser retrieves a user. +// RetrieveUserFromRequest retrieves a user. func RetrieveUserFromRequest(c *gin.Context, id uint) (*models.User, bool, uint, int, error) { var user models.User var currentUserID uint diff --git a/utils/feeds/rss.go b/utils/feeds/rss.go index 1fdbb2f8..ef2b13af 100644 --- a/utils/feeds/rss.go +++ b/utils/feeds/rss.go @@ -13,7 +13,7 @@ import ( "github.com/gorilla/feeds" ) -// private wrapper around the RssFeed which gives us the .. xml +// rssFeedXML private wrapper around the RssFeed which gives us the .. xml type rssFeedXML struct { XMLName xml.Name `xml:"rss"` Xmlns string `xml:"xmlns:torznab,attr,omitempty"` @@ -23,6 +23,7 @@ type rssFeedXML struct { Caps *RssCaps `xml:"caps,omitempty"` } +// RssImage RSS image struct type RssImage struct { XMLName xml.Name `xml:"image"` URL string `xml:"url"` @@ -32,6 +33,7 @@ type RssImage struct { Height int `xml:"height,omitempty"` } +// RssTextInput RSS text struct type RssTextInput struct { XMLName xml.Name `xml:"textInput"` Title string `xml:"title"` @@ -40,11 +42,13 @@ type RssTextInput struct { Link string `xml:"link"` } +// RssMagnetLink RSS struct for magnet links type RssMagnetLink struct { XMLName xml.Name `xml:"link"` Text string `xml:",cdata"` } +// RssFeed RSS feed struct type RssFeed struct { XMLName xml.Name `xml:"channel"` Xmlns string `xml:"-"` @@ -70,6 +74,7 @@ type RssFeed struct { Items []*RssItem } +// RssItem struct for rss feed items type RssItem struct { XMLName xml.Name `xml:"item"` Title string `xml:"title"` // required @@ -86,6 +91,7 @@ type RssItem struct { Torznab []*RssTorznab } +// RssCaps xml struct for torznab caps type RssCaps struct { XMLName xml.Name `xml:"caps"` Server *RssServer `xml:"server,omitempty"` @@ -95,6 +101,7 @@ type RssCaps struct { Categories *RssCategories `xml:"categories,omitempty"` } +// RssServer basic server information type RssServer struct { XMLName xml.Name `xml:"server"` Xmlns string `xml:"xmlns,attr"` @@ -106,18 +113,21 @@ type RssServer struct { Image string `xml:"image,attr"` } +// RssLimits struct for max results type RssLimits struct { XMLName xml.Name `xml:"limits"` Max string `xml:"max,attr"` Default string `xml:"default,attr"` } +// RssRegistration torznab registration information type RssRegistration struct { XMLName xml.Name `xml:"registration"` Available string `xml:"available,attr"` Open string `xml:"open,attr"` } +// RssSearching struct for supported search types type RssSearching struct { XMLName xml.Name `xml:"searching"` Search *RssSearch `xml:"search,omitempty"` @@ -125,16 +135,19 @@ type RssSearching struct { MovieSearch *RssSearch `xml:"movie-search,omitempty"` } +// RssSearch struct for supported searching params type RssSearch struct { Available string `xml:"available,attr"` SupportedParams string `xml:"supportedParams,attr,omitempty"` } +// RssCategories categories for rss type RssCategories struct { XMLName xml.Name `xml:"categories"` Category []*RssCategoryTorznab } +// RssCategoryTorznab categories for torznab type RssCategoryTorznab struct { XMLName xml.Name `xml:"category"` ID string `xml:"id,attr"` @@ -143,6 +156,7 @@ type RssCategoryTorznab struct { Description string `xml:"description,attr,omitempty"` } +// RssSubCat sub category type RssSubCat struct { XMLName xml.Name `xml:"subcat"` ID string `xml:"id,attr"` @@ -150,6 +164,7 @@ type RssSubCat struct { Description string `xml:"description,attr,omitempty"` } +// RssTorrent item for torrents type RssTorrent struct { XMLName xml.Name `xml:"torrent"` Xmlns string `xml:"xmlns,attr"` @@ -159,6 +174,7 @@ type RssTorrent struct { MagnetURI string `xml:"magnetUri,omitempty"` } +// RssTorznab feed for torznab type RssTorznab struct { XMLName xml.Name `xml:"torznab:attr,omitempty"` Name string `xml:"name,attr,omitempty"` @@ -171,6 +187,7 @@ type RssCategory struct { Domain string `xml:"domain"` } +// RssEnclosure enclosure for downloads type RssEnclosure struct { //RSS 2.0 XMLName xml.Name `xml:"enclosure"` @@ -179,6 +196,7 @@ type RssEnclosure struct { Type string `xml:"type,attr"` } +// Rss struct type Rss struct { *feeds.Feed } @@ -241,22 +259,22 @@ func (r *Rss) RssFeed() *RssFeed { return channel } -// FeedXml : return an XML-Ready object for an Rss object -func (r *Rss) FeedXml() interface{} { +// FeedXML : return an XML-Ready object for an Rss object +func (r *Rss) FeedXML() interface{} { // only generate version 2.0 feeds for now - return r.RssFeed().FeedXml() + return r.RssFeed().FeedXML() } -// FeedXml : return an XML-ready object for an RssFeed object -func (r *RssFeed) FeedXml() interface{} { +// FeedXML : return an XML-ready object for an RssFeed object +func (r *RssFeed) FeedXML() interface{} { if r.Xmlns != "" { return &rssFeedXML{Version: "2.0", Encoding: "UTF-8", Channel: r, Xmlns: r.Xmlns} } return &rssFeedXML{Version: "2.0", Encoding: "UTF-8", Channel: r} } -// FeedXml : return an XML-ready object for an RssFeed object -func (r *RssCaps) FeedXml() interface{} { +// FeedXML : return an XML-ready object for an RssFeed object +func (r *RssCaps) FeedXML() interface{} { return r } diff --git a/utils/sanitize/markdown.go b/utils/sanitize/markdown.go index 92d79409..34ec3249 100644 --- a/utils/sanitize/markdown.go +++ b/utils/sanitize/markdown.go @@ -29,10 +29,11 @@ var htmlFlags = 0 | md.HTML_HREF_TARGET_BLANK func init() { - HtmlMdRenderer = md.HtmlRenderer(htmlFlags, "", "") + HTMLMdRenderer = md.HtmlRenderer(htmlFlags, "", "") } -var HtmlMdRenderer md.Renderer +// HTMLMdRenderer render for markdown to html +var HTMLMdRenderer md.Renderer // MarkdownToHTML : convert markdown to html // TODO: restrict certain types of markdown @@ -41,7 +42,7 @@ func MarkdownToHTML(markdown string) template.HTML { markdown = ">" + markdown[4:] } markdown = strings.Replace(markdown, "\n>", "\n>", -1) - unsafe := md.MarkdownOptions([]byte(markdown), HtmlMdRenderer, md.Options{Extensions: mdOptions}) + unsafe := md.MarkdownOptions([]byte(markdown), HTMLMdRenderer, md.Options{Extensions: mdOptions}) html := bluemonday.UGCPolicy().SanitizeBytes(unsafe) return template.HTML(html) } diff --git a/utils/search/structs/cache.go b/utils/search/structs/cache.go index 70118988..930f7db1 100644 --- a/utils/search/structs/cache.go +++ b/utils/search/structs/cache.go @@ -2,6 +2,7 @@ package structs import "github.com/NyaaPantsu/nyaa/models" +// TorrentCache torrent cache struct type TorrentCache struct { Torrents []models.Torrent Count int diff --git a/utils/search/structs/structs.go b/utils/search/structs/structs.go index 2a1f0b4b..63379fbf 100644 --- a/utils/search/structs/structs.go +++ b/utils/search/structs/structs.go @@ -17,19 +17,34 @@ import ( ) const ( - ShowAll Status = 0 - FilterRemakes = 2 - Trusted = 3 - APlus = 4 + // ShowAll by default show all torrents + ShowAll Status = 0 + // FilterRemakes filter torrent remakes + FilterRemakes = 2 + // Trusted trusted torrents + Trusted = 3 + // APlus torrents not used anymore + APlus = 4 ) +// Status torrent status type Status uint8 + +// SortMode selected sort mode type SortMode uint8 + +// Category torrent categories type Category struct { Main, Sub uint8 } + +// SizeBytes size in bytes type SizeBytes uint64 + +// DateFilter date to filter for type DateFilter string + +// Categories multiple torrent categories type Categories []*Category // TorrentParam defines all parameters that can be provided when searching for a torrent diff --git a/utils/signals/interrupt.go b/utils/signals/interrupt.go index eca8fbb1..5d87a7fa 100644 --- a/utils/signals/interrupt.go +++ b/utils/signals/interrupt.go @@ -13,6 +13,7 @@ var intEvents struct { funcs []func() } +// OnInterrupt handles signal interupts func OnInterrupt(fn func()) { intEvents.lock.Lock() intEvents.funcs = append(intEvents.funcs, fn) diff --git a/utils/signals/unix.go b/utils/signals/unix.go index 0476ac17..1430dae2 100644 --- a/utils/signals/unix.go +++ b/utils/signals/unix.go @@ -8,6 +8,7 @@ import ( "syscall" ) +// Handle handles unix interupts func Handle() { chnl := make(chan os.Signal) signal.Notify(chnl, syscall.SIGHUP, os.Interrupt) diff --git a/utils/validator/validator.go b/utils/validator/validator.go index 284ff17c..e431d9a1 100644 --- a/utils/validator/validator.go +++ b/utils/validator/validator.go @@ -139,6 +139,7 @@ func IsUTFLetterNumericValidator(fl validator.FieldLevel) bool { return IsUTFLetterNumeric(value) } +// DefaultValidator default validator func DefaultValidator(fl validator.FieldLevel) bool { switch fl.Field().Kind() { case reflect.String: