Compare commits

...

114 Commits

Author SHA1 Message Date
Balu Babu
8d8d55b3fd chore: changed target to prod in hoppscotch-old-backend service 2023-12-05 18:20:14 +05:30
Balu Babu
3e3bab28d2 chore: completed changes requested in PR review 2023-12-05 18:19:25 +05:30
Balu Babu
55c70159ed chore: resolved issue with team-request testcases 2023-12-05 16:52:44 +05:30
Balu Babu
c1fdb04130 chore: fixed edgecases for data being null 2023-12-05 16:35:34 +05:30
Balu Babu
337c79447e chore: made data field optional in team and user collections 2023-12-05 13:12:06 +05:30
Balu Babu
1f2aaf528a chore: added new testcases for updateUserCollection method in user-collection module 2023-12-05 09:43:11 +05:30
Balu Babu
a67ecaa922 chore: refactored all existing testcases in user-collection to reflect new changes 2023-12-05 09:25:55 +05:30
Balu Babu
289cd06995 chore: added tests for updateTeamCollection method in team-collection module 2023-12-04 14:11:07 +05:30
Balu Babu
990d500333 chore: updated all tests in team-collection module 2023-12-04 13:52:07 +05:30
Balu Babu
e712d1e3ae feat: completed addition of new data field in UserCollections 2023-12-01 16:22:22 +05:30
Balu Babu
f13d00465d feat: completed addition of new data field in TeamCollection 2023-12-01 12:59:34 +05:30
Balu Babu
85c42da31c feat: added new columns into the TeamCollections and UserCollections models 2023-11-30 13:54:32 +05:30
Liyas Thomas
1cc845e17d fix: minor ui improvements (#3603) 2023-11-29 22:45:40 +05:30
James George
60bfb6fe2c refactor: move persistence logic into a dedicated service (#3493) 2023-11-29 22:40:26 +05:30
Joel Jacob Stephen
144d14ab5b fix: email validation failure in cases when email entered is correct when trying to create a team in admin dashboard (#3588)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-11-29 21:49:49 +05:30
Anwarul Islam
8f1ca6e282 feat: platform definition added for additional settings components (#3503) 2023-11-29 21:42:51 +05:30
Dante Calderon
a93758c6b7 chore: Remove whitespace in env variables 2023-11-22 19:40:32 +05:30
James George
1829c088cc feat: support for subpath based access in SH apps (#3449)
Co-authored-by: Balu Babu <balub997@gmail.com>
2023-11-22 19:35:35 +05:30
Akash K
ee1425d0dd fix: XML body disappearing with invalid XML (#3567)
fix: catch xmlformatter errors
2023-11-20 15:02:07 +05:30
Joel Jacob Stephen
24ae090916 refactor: allow banner service to hold multiple banners and display the banner with the highest score (#3556) 2023-11-17 20:31:34 +05:30
Nivedin
a3aa9b68fc refactor: interceptor error display in graphql response (#3553) 2023-11-17 17:03:53 +05:30
Joel Jacob Stephen
50f475334e fix: enlarged hoppscotch logo on dashboard login screen (#3559)
fix: resize the dashboard login icon
2023-11-16 22:51:08 +05:30
Andrew Bastin
7b18526f24 chore: merge hoppscotch/main into hoppscotch/release/2023.12.0 2023-11-16 13:51:12 +05:30
Andrew Bastin
23afc201a1 chore: bump version to release/2023.8.4 2023-11-14 21:26:16 +05:30
Andrew Bastin
b1982d74a6 fix: make schema more lenient while parsing public data structures 2023-11-14 21:24:25 +05:30
Andrew Bastin
e93a37c711 fix: add i18n entries for oauth errors 2023-11-14 17:44:37 +05:30
Nivedin
8d7509cdea fix: interceptor error from extension issue (#3548) 2023-11-14 17:17:23 +05:30
Akash K
e24d0ce605 fix: oauth 2.0 authentication type is breaking (#3531) 2023-11-14 00:12:04 +05:30
Balu Babu
f5d2e4f11f feat: introducing shortcode into admin module (#3504)
* feat: added query in infra to fetch all shortcodes

* feat: added mutation in admin to delete shortcode

* chore: added new tests for methods in shortcode module

* chore: removed .vscode file

* chore: added a new ShortcodeCreator type to output of fetchAllShortcodes query

* chore: shortcodeCreator type is now nullable

* chore: added type defs to fetchAllShortcodes method in admin module

* docs: update code comments

* chore: changed target to prod in hoppscotch-old-backend

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
2023-11-10 14:28:02 +05:30
Andrew Bastin
de725337d6 fix: window drag taking precedence on windows 2023-11-08 20:07:13 +05:30
Andrew Bastin
9d1d369f37 fix: performance issues due to mouse on header detection 2023-11-08 18:47:40 +05:30
Andrew Bastin
2bd925d441 chore: correct version of selfhost-desktop 2023-11-08 17:18:12 +05:30
Liyas Thomas
bb8dc6f7eb chore: updated brand assets (#3500)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-11-08 15:47:35 +05:30
Anwarul Islam
be3e5ba7e7 fix: graphql query deprecation issue (#3506) 2023-11-08 14:51:39 +05:30
Andrew Bastin
663134839f feat: let platforms disable we are using cookies prompt 2023-11-07 20:49:07 +05:30
Andrew Bastin
736f83a70c fix: header inspector cookie inspection will not trigger if current interceptor supports cookies 2023-11-07 20:36:34 +05:30
Andrew Bastin
05d2175f43 fix: selfhost-desktop not running gql-codegen 2023-11-07 20:24:22 +05:30
Balu Babu
4caf0053cd feat: introduction of shared-requests (#3476)
* feat: added new property to existing shortcode model in prisma schema

* chore: created shared-requests module

* chore: created shared-request model

* chore: complete sharedRequest query

* chore: completed mutation to create a SharedRequest

* chore: completed subscription to create a SharedRequest

* chore: completed query to fetch all user created shared-requests

* chore: completed mutation to delete a SharedRequest

* chore: completed subscription to delete a SharedRequest

* chore: removed unused dependncues in share-requests module

* chore: added shared-requests into user deletion spec

* test: added all testcases for shared-request module

* test: modified all relevant tests in shortcode module

* chore: added deprecated label to all queries,mutations and subscriptions in the shortcode module

* chore: resolved all comments raised in review

* feat: added ability to update and listen to updates of shared-requests

* chore: added updatedOn field to shortcode model

* chore: fixed issue with updateSharedRequest method

* chore: fixed incorrect value getting updated

* chore: added all test-cases for updateSharedRequest method

* chore: created migration for shared-requests

* chore: moved shared-requests into shortcode module

* chore: added missing import in shortcode tests

* chore: changed properties to embedProperties in shortcode model

* feat: generated migrations file for new schema changes to Shortcodes table

* chore: changed target of old-backend service in docker-compose file

* chore: fixed issue with updatedOn field in shortcodes model

* chore: removed unused dependencies

* fix: handle invalid input for shortcode properties

* Revert "fix: handle invalid input for shortcode properties"

This reverts commit 4dcb0afb18.

* chore: changed updateShortcode method name to updateEmbedProperties

* chore: changed target of hoppscotch-old-backend service to prod

---------

Co-authored-by: Mir Arif Hasan <arif.ishan05@gmail.com>
2023-11-07 17:57:51 +05:30
Andrew Bastin
97bd808431 chore: set versions with a bump version 2023-11-07 16:04:02 +05:30
Andrew Bastin
a13c2fd4c1 chore: pin @codemirror/language to 6.9.0 2023-11-07 15:57:19 +05:30
Andrew Bastin
16044b5840 feat: desktop app
Co-authored-by: Vivek R <123vivekr@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-11-07 14:20:03 +05:30
Andrew Bastin
93ce86f32d chore: merge hoppscotch/release/2023.8.3 into hoppscotch/release/2023.12.0 2023-11-06 18:56:01 +05:30
Andrew Bastin
4ebf850cb6 chore: bump version to 2023.8.3 2023-11-06 17:39:31 +05:30
Balu Babu
76af7d5e10 fix: mailer template issue (#3475) 2023-11-06 17:25:36 +05:30
Joel Jacob Stephen
507fe69efe feat: new banner service and added ability to bind additional services from other platforms (#3474)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-11-06 11:41:19 +05:30
Joel Jacob Stephen
23e3739718 feat: introducing a new smart table hoppscotch ui component (#3178)
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-11-06 11:31:55 +05:30
Nicolas Merget
5428a73811 fix: add optional chaining for teamMembers to handle undefined team (#3484)
Co-authored-by: James George <jamesgeorge998001@gmail.com>
2023-11-06 11:25:39 +05:30
Anwarul Islam
4a154e6569 chore: fix spelling mistake on type import (#3487) 2023-11-06 11:25:03 +05:30
Liyas Thomas
0aa5825d8b fix: cleanup ui and improve consistency in input elements (#3494) 2023-11-06 10:56:15 +05:30
Andrew Bastin
bdb63e99d5 fix: pin @lezer/highlight to 1.1.4 to prevent page breaks 2023-11-03 23:30:46 +05:30
Andrew Bastin
6daa043a1b chore: merge hoppscotch/release/2023.8.3 into hoppscotch/release/2023.12.0 2023-11-03 10:12:54 +05:30
James George
8175ec640a chore(data): bump dependencies (#3473) 2023-11-02 23:53:52 +05:30
James George
b5307e4a89 chore(common): implement enforced pre-commit type checks for FE service files (#3472) 2023-11-02 23:37:27 +05:30
Akash K
19294802be fix: graphql page crashing and broken syntax highlighting (#3488) 2023-11-02 23:10:37 +05:30
Andrew Bastin
cbe3e14b47 refactor: versioning and migration mechanism for public data structures (#3457)
Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-11-02 18:54:16 +05:30
Joel Jacob Stephen
9dcbc4a126 refactor: updated dashboard gql queries and components to use the new infra type of the updated schema (#3455) 2023-11-01 23:40:19 +05:30
Gaurav K P
01df1663ad fix(common): handle false negatives in url validation (#3465) 2023-11-01 22:23:33 +05:30
Anwarul Islam
a215860782 feat: replacing windicss by tailwindcss in hoppscotch-ui (#3076)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Joel Jacob Stephen <70131076+JoelJacobStephen@users.noreply.github.com>
Co-authored-by: nivedin <nivedinp@gmail.com>
2023-11-01 20:55:08 +05:30
Nivedin
abd5288da8 refactor: move sentry to platform (#3451) 2023-11-01 18:17:55 +05:30
Michel Tomas
a89bc473f6 fix(self-hosted/web): add "useCredentials: true" to Vite PWA options (#3460) 2023-11-01 09:46:20 +05:30
Mir Arif Hasan
59b5a50a97 HBE-296 feat: introducing 'infra' type and splitting model properties between 'admin' and 'infra' (#3445)
* feat: infra type added in admin module

* feat: infra-resolver added in admin module

* feat: feedback resolved

* feat: deprecated tag added in some admin ResolveFields

* build: update pnpm-lock file

* feat: add field in infra type

* feat: admin extends user partially

* feat: admin extends user with omitting some fields

* chore: remove unused imports

* build: conflict resolve in pnpm lock file
2023-10-30 17:03:43 +06:00
Andrew Bastin
57cb59027b chore: bump codemirror dependencies 2023-10-19 13:37:07 +05:30
Andrew Bastin
d1c9c3583f chore: merge hoppscotch/release/2023.8.3 into hoppscotch/release/2023.12.0 2023-10-19 09:34:49 +05:30
James George
2462492c86 chore(cli): bump dependencies (#3441)
* chore: bump CLI dependencies

* chore: update package.json

Bump version and specify minimum Node.js version
2023-10-16 18:23:22 +05:30
Joel Jacob Stephen
7a9f0c8756 refactor: improvements to the auth implementation in admin dashboard (#3444)
* refactor: abstract axios queries to a separate helper file

* chore: delete unnecessary file

* chore: remove unnecessary console logs

* refactor: updated urls for api and authquery helpers

* refactor: updated auth implementation

* refactor: use default axios instance

* chore: improve code readability

* refactor: separate instances for rest and gql calls

* refactor: removed async await from functions that do not need them

* refactor: removed probable login and probable user from the auth system

* refactor: better error handling in login component

* chore: deleted unnecessary files and restructured some files

* feat: new errors file with typed error message formats

* refactor: removed unwanted usage of async await

* refactor: optimizing the usage and return of promises in auth flow

* refactor: convey boolean return type in a better way

* chore: apply suggestions

* refactor: handle case when mailcatcher is not active

---------

Co-authored-by: nivedin <nivedinp@gmail.com>
Co-authored-by: James George <jamesgeorge998001@gmail.com>
2023-10-16 18:14:02 +05:30
Balu Babu
46caf9b198 refactor: removed all instances of rejectOnNotFound in prisma queries (#3377)
* chore: removed rejectOnNotFound property from prisma query in team-enviroment method

* chore: fixed issues with test cases in team-environment module

* chore: changed target of hoppscotch-old-backend service back to prod
2023-10-16 14:04:03 +05:30
Mir Arif Hasan
f5db54484c HBE-266 Update NestJS packages (#3389)
* build: update npm nest packages

* build: removed depricated apollo-server-plugin package

* build: pnpm-lock file added

* build: swc integrated

* Revert "build: swc integrated"

This reverts commit 803a01f38f210dfbcd603665893d29af565c8908.

* feat: upgrade graphql* packages version

* feat: upgrade point release

* feat: update pnpm-lock file
2023-10-16 12:23:55 +05:30
Mir Arif Hasan
8deb6471b9 HBE-270 Test-Case timestamp issue fix in backend (#3415)
test: timestamp issue fix in user-history
2023-10-16 12:11:15 +05:30
Liyas Thomas
73b3ff8e41 feat: improve import-export UI (#3452)
* chore: uniform styles across components

* chore: removed absolute wrapper divs

* feat: add import button when graphql collections are empty

* chore: add icon for button

---------

Co-authored-by: nivedin <nivedinp@gmail.com>
2023-10-13 17:57:14 +05:30
James George
016a18d3b2 fix(common): use tab service within helpers (#3448) 2023-10-12 13:15:45 +05:30
Anwarul Islam
ba31cdabea feat: tab service added (#3367) 2023-10-11 18:21:07 +05:30
Nivedin
51510566bc refactor: add import buttons in empty state for collections & environments (#3438) 2023-10-11 11:08:51 +05:30
Anwarul Islam
cabee0ecc8 fix: memory leak issue on TeamInvite modal (#3440)
* fix: memory leak issue

* feat: added rerun ability

* chore: lint fix
2023-10-11 07:59:12 +05:30
Anwarul Islam
2c2b39a236 feat: no permission warning added for users except owner while deleting team (#3328)
* feat: no permission warning added
* chore: changed to function reference
2023-10-09 19:31:48 +05:30
Liyas Thomas
78450c9316 fix: tooltip position in editor instance (#3374) 2023-10-09 11:37:52 +05:30
Joel Jacob Stephen
b18fd90b64 fix: blank screen in admin dashboard on authentication problems (#3385)
* fix: dashboard logs out user when cookie expires or is unauthorized

* fix: handles the 401 error thrown when trying to refresh tokens

* chore: updated wrong logic when returning state in refresh token function

* feat: introduced auth exchange to urql client to check for errors on each backend call

* fix: prevent multiple window reloads

---------

Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-10-09 10:08:35 +05:30
Andrew Bastin
0188a8d7db chore: bump version 2023-10-06 22:04:57 +05:30
Joel Jacob Stephen
6c63a8dc28 refactor: updated i18n implementation in the admin dashboard (#3395)
* feat: introduced new unplugin i18n and removed the old vite i18n package

* refactor: updated vite config to support the new plugin

* refactor: removed irrelevant logic from the i18n module
2023-10-06 17:36:19 +05:30
Rakibul Yeasin
17d6ae15a5 fix: Cannot set custom method #3406 (#3408)
* fix: #3406

* chore: remove console log

* fix: an unknown keyboard event issue

---------

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Anwarul Islam <anwaarulislaam@gmail.com>
2023-10-06 11:57:26 +05:30
Andrew Bastin
40f72278a9 fix: team collection resetting on unmount within app lifecycle (#3396)
* fix: team collection resetting on unmount within app lifecycle

* chore: linting

* refactor: eliminate redundancy

* chore: update comment about the watcher purpose

---------

Co-authored-by: jamesgeorge007 <jamesgeorge998001@gmail.com>
2023-10-06 11:34:44 +05:30
5idereal
f717704731 chore(i18n): update tw.json (#3409) 2023-10-06 11:27:24 +05:30
Joel Jacob Stephen
185c225297 feat: introduces ability to export single environment variables and allow CLI to accept the export format used by the app (#3380)
* feat: add ability to export a single environment

* refactor: export environment without id

* feat: introducing zod for checking json format for environment variables

* refactor: new zod specific type for HoppEnvPair

* feat: add ability to export single environment in team environment

* refactor: moved zod as a dependency to devDependency

* refactor: separated repeating logic to helper file

* refactor: removed unnecessary to string operation

* chore: rearranged smart item placement

* refactor: introduced error type when a bulk environment export is used in cli

* refactor: removed unnecssary type exports and updated logic and variable names across most files

* refactor: better logic for type shapes

* chore: bump hoppscotch-cli package version

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-10-06 11:21:54 +05:30
James George
2694731c36 chore: remove stale type definitions (#3368) 2023-10-05 14:49:04 +05:30
James George
ae89af9978 feat: alert the user on empty collection/environment exports (#3416) 2023-10-05 14:38:38 +05:30
James George
87d617012f fix: environment variables usage in meta tags (#3418) 2023-10-05 13:51:42 +05:30
Liyas Thomas
2420b3fa42 chore: move deps in the root of monorepo into devDependencies (#3375)
chore: move deps in the root of monorepo into devDependencies
2023-09-28 22:25:22 +05:30
Anwarul Islam
175a991ec4 fix: gql teamID not being passed (#3392)
* chore: bump dependencies for path.charCodeAt issue
* fix: gql teamID is not passed issue
2023-09-28 22:04:02 +05:30
SamJakob
0301649aff chore: make devcontainer copy .env.example (#3318) 2023-09-28 21:58:17 +05:30
Joel Jacob Stephen
544b045300 fix: authorisation headers not being sent along with subscriptions when using graphql (#3354)
* fix: send auth headers to the payload

* refactor: alert user that headers are sent to connection_init

* refactor: send headers only when headers are populated

* chore: cleanup code
2023-09-28 21:57:07 +05:30
Andrew Bastin
65884293be chore: introduce docker buildx for multi-platform build 2023-09-18 21:16:23 +05:30
Andrew Bastin
3cb4861bac chore: pin netlify-cli version on ui deploy script 2023-09-18 20:51:42 +05:30
Andrew Bastin
7beed30815 chore: update ci to build for arm64 as well 2023-09-18 20:43:22 +05:30
Andrew Bastin
bb380f3751 chore: bump version to 2023.8.1 2023-09-18 20:18:23 +05:30
Andrew Bastin
33a7580e46 fix: support modal popping up on typing shift based commands on input 2023-09-18 20:10:17 +05:30
Liyas Thomas
ffb2b5c30a chore: improve button border radius 2023-09-18 19:51:22 +05:30
James George
7c238fa854 chore(cli): update error message (#3363) 2023-09-18 19:19:51 +05:30
Andrew Bastin
185b575e5b refactor: minor performance improvements on teams related operations 2023-09-18 18:50:57 +05:30
Andrew Bastin
bcc1147f81 fix: clear regression and extension recovers response for error status codes 2023-09-18 18:26:17 +05:30
Anwarul Islam
f5b130024e fix: missing baseurl on import openapi (#3323)
* fix: missing baseurl on import openapi

* fix: url parser for openapi v3

* chore: revert to baseURL for cases where doc servers is present but url is null

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2023-09-18 14:42:04 +05:30
Liyas Thomas
bb5c333bae fix: remove scrollbar from smart env input component on firefox (#3362) 2023-09-18 13:20:53 +05:30
Nivedin
3684d25848 fix: sticky searchbar hidden in codemirror (#3351)
* fix: sticky search bar in codemirror

* chore: use tailwind classes

* chore: improve consistency across editor instances

---------

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-09-18 12:45:14 +05:30
Anwarul Islam
8b0ba3a45e feat: differentiation for successful invites and failed invites (#3325)
feat: invites result splitted
2023-09-18 11:48:38 +05:30
Liyas Thomas
e847fb7b77 chore: clean up i18n (#3350) 2023-09-18 11:26:31 +05:30
Nivedin
5c78ae4dee fix: dirty tab count incorrect when closing tabs (#3359)
* fix: dirty tab count incorrect when closing tabs

* refactor: make the calculation more expressive

---------

Co-authored-by: amk-dev <akash.k.mohan98@gmail.com>
2023-09-18 11:20:26 +05:30
Nivedin
53ec605963 fix: duplicate tab reference bug (#3356) 2023-09-18 11:15:18 +05:30
Yuri Grand
75193a7aa8 i18n: translate locales to russian (#3312)
chore: translate locales to russian
2023-09-13 12:53:10 +05:30
tyo
b269c239d9 chore(i18n): update translation for Indonesian (#3284) 2023-09-13 12:48:46 +05:30
Liyas Thomas
72b4a1fc4e fix: typo in "twitter link" and "invite to hoppscotch" action (#3346) 2023-09-13 11:55:58 +05:30
DNT
d2d1674d31 i18n: update vi.json (#3241) 2023-09-13 11:52:37 +05:30
Joel Jacob Stephen
a6b57777e3 refactor: remove font sizes from the app (#3341)
* refactor: remove font size from settings

* refactor: remove font size from themes

* refactor: remove font size from spotlight

* refactor: remove default font size

* chore: clean up

---------

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-09-13 11:45:38 +05:30
Joel Jacob Stephen
65ef4db86f refactor: remove zen mode from the app (#3337)
* refactor: remove zen mode from settings

* refactor: remove zen mode from footer and options
2023-09-12 14:10:38 +05:30
Nivedin
7201147b55 fix: context-menu position fixed while scrolling (#3340) 2023-09-12 12:43:10 +05:30
Anwarul Islam
dd143c95a9 fix: unusual behavior while scrolling through spotlight entries (#3324)
* fix: spotlight scroll issue

* fix: entry hidden issue

* chore: back to loop mode
2023-09-12 12:42:44 +05:30
James George
005581ee7d fix: broken link to REST API Testing docs (#3333)
fix: broken link to REST API Testing docs
2023-09-12 12:32:10 +05:30
557 changed files with 35901 additions and 10469 deletions

View File

@@ -5,5 +5,5 @@
"features": {
"ghcr.io/NicoVIII/devcontainer-features/pnpm:1": {}
},
"postCreateCommand": "mv .env.example .env && pnpm i"
"postCreateCommand": "cp .env.example .env && pnpm i"
}

View File

@@ -12,8 +12,8 @@ SESSION_SECRET='add some secret here'
# Hoppscotch App Domain Config
REDIRECT_URL="http://localhost:3000"
WHITELISTED_ORIGINS = "http://localhost:3170,http://localhost:3000,http://localhost:3100"
VITE_ALLOWED_AUTH_PROVIDERS = GOOGLE,GITHUB,MICROSOFT,EMAIL
WHITELISTED_ORIGINS="http://localhost:3170,http://localhost:3000,http://localhost:3100"
VITE_ALLOWED_AUTH_PROVIDERS=GOOGLE,GITHUB,MICROSOFT,EMAIL
# Google Auth Config
GOOGLE_CLIENT_ID="************************************************"
@@ -59,3 +59,6 @@ VITE_BACKEND_API_URL=http://localhost:3170/v1
# Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy
# Set to `true` for subpath based access
ENABLE_SUBPATH_BASED_ACCESS=false

View File

@@ -15,52 +15,70 @@ jobs:
- name: Setup environment
run: cp .env.example .env
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and push `${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}`
- name: Build and push the backend container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: backend
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_BACKEND_CONTAINER_NAME }}:${{ github.ref_name }}
- name: Build and push `${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}`
- name: Build and push the frontend container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: app
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_FRONTEND_CONTAINER_NAME }}:${{ github.ref_name }}
- name: Build and push `${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}`
- name: Build and push the admin dashboard container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: sh_admin
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_SH_ADMIN_CONTAINER_NAME }}:${{ github.ref_name }}
- name: Build and push `${{ secrets.DOCKER_AIO_CONTAINER_NAME }}`
- name: Build and push the AIO container
uses: docker/build-push-action@v4
with:
context: .
file: ./prod.Dockerfile
target: aio
push: true
platforms: |
linux/amd64
linux/arm64
tags: |
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:latest
${{ secrets.DOCKER_ORG_NAME }}/${{ secrets.DOCKER_AIO_CONTAINER_NAME }}:${{ github.ref_name }}

View File

@@ -36,7 +36,7 @@ jobs:
# Deploy the ui site with netlify-cli
- name: Deploy to Netlify (ui)
run: npx netlify-cli deploy --dir=packages/hoppscotch-ui/.histoire/dist --prod
run: npx netlify-cli@15.11.0 deploy --dir=packages/hoppscotch-ui/.histoire/dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_UI_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}

View File

@@ -1,14 +0,0 @@
{
"recommendations": [
"antfu.iconify",
"vue.volar",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"editorconfig.editorconfig",
"csstools.postcss",
"folke.vscode-monorepo-workspace"
],
"unwantedRecommendations": [
"octref.vetur"
]
}

View File

@@ -0,0 +1,19 @@
:3000 {
try_files {path} /
root * /site/selfhost-web
file_server
}
:3100 {
try_files {path} /
root * /site/sh-admin-multiport-setup
file_server
}
:3170 {
reverse_proxy localhost:8080
}
:80 {
respond 404
}

View File

@@ -0,0 +1,37 @@
:3000 {
respond 404
}
:3100 {
respond 404
}
:3170 {
reverse_proxy localhost:8080
}
:80 {
# Serve the `selfhost-web` SPA by default
root * /site/selfhost-web
file_server
handle_path /admin* {
root * /site/sh-admin-subpath-access
file_server
# Ensures any non-existent file in the server is routed to the SPA
try_files {path} /
}
# Handle requests under `/backend*` path
handle_path /backend* {
reverse_proxy localhost:8080
}
# Catch-all route for unknown paths, serves `selfhost-web` SPA
handle {
root * /site/selfhost-web
file_server
try_files {path} /
}
}

View File

@@ -1,11 +0,0 @@
:3000 {
try_files {path} /
root * /site/selfhost-web
file_server
}
:3100 {
try_files {path} /
root * /site/sh-admin
file_server
}

View File

@@ -49,7 +49,8 @@ execSync(`npx import-meta-env -x build.env -e build.env -p "/site/**/*"`)
fs.rmSync("build.env")
const caddyProcess = runChildProcessWithPrefix("caddy", ["run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"], "App/Admin Dashboard Caddy")
const caddyFileName = process.env.ENABLE_SUBPATH_BASED_ACCESS === 'true' ? 'aio-subpath-access.Caddyfile' : 'aio-multiport-setup.Caddyfile'
const caddyProcess = runChildProcessWithPrefix("caddy", ["run", "--config", `/etc/caddy/${caddyFileName}`, "--adapter", "caddyfile"], "App/Admin Dashboard Caddy")
const backendProcess = runChildProcessWithPrefix("pnpm", ["run", "start:prod"], "Backend Server")
caddyProcess.on("exit", (code) => {

View File

@@ -17,7 +17,7 @@ services:
environment:
# Edit the below line to match your PostgresDB URL if you have an outside DB (make sure to update the .env file as well)
- DATABASE_URL=postgresql://postgres:testpass@hoppscotch-db:5432/hoppscotch?connect_timeout=300
- PORT=3170
- PORT=8080
volumes:
# Uncomment the line below when modifying code. Only applicable when using the "dev" target.
# - ./packages/hoppscotch-backend/:/usr/src/app
@@ -26,6 +26,7 @@ services:
hoppscotch-db:
condition: service_healthy
ports:
- "3180:80"
- "3170:3170"
# The main hoppscotch app. This will be hosted at port 3000
@@ -42,7 +43,8 @@ services:
depends_on:
- hoppscotch-backend
ports:
- "3000:8080"
- "3080:80"
- "3000:3000"
# The Self Host dashboard for managing the app. This will be hosted at port 3100
# NOTE: To do TLS or play around with how the app is hosted, you can look into the Caddyfile for
@@ -58,7 +60,8 @@ services:
depends_on:
- hoppscotch-backend
ports:
- "3100:8080"
- "3280:80"
- "3100:3100"
# The service that spins up all 3 services at once in one container
hoppscotch-aio:
@@ -76,6 +79,7 @@ services:
- "3000:3000"
- "3100:3100"
- "3170:3170"
- "3080:80"
# The preset DB service, you can delete/comment the below lines if
# you are using an external postgres instance

View File

@@ -22,16 +22,14 @@
"workspaces": [
"./packages/*"
],
"dependencies": {
"husky": "^7.0.4",
"lint-staged": "^12.3.8"
},
"devDependencies": {
"@commitlint/cli": "^16.2.3",
"@commitlint/config-conventional": "^16.2.1",
"@types/node": "^17.0.24",
"@types/node": "17.0.27",
"cross-env": "^7.0.3",
"http-server": "^14.1.1"
"http-server": "^14.1.1",
"husky": "^7.0.4",
"lint-staged": "12.4.0"
},
"pnpm": {
"packageExtensions": {

View File

@@ -17,16 +17,16 @@
"types": "dist/index.d.ts",
"sideEffects": false,
"dependencies": {
"@codemirror/language": "^6.9.0",
"@lezer/highlight": "^1.1.6",
"@lezer/lr": "^1.3.10"
"@codemirror/language": "6.9.0",
"@lezer/highlight": "1.1.4",
"@lezer/lr": "^1.3.13"
},
"devDependencies": {
"@lezer/generator": "^1.5.0",
"@lezer/generator": "^1.5.1",
"mocha": "^9.2.2",
"rollup": "^2.70.2",
"rollup-plugin-dts": "^4.2.1",
"rollup-plugin-ts": "^2.0.7",
"typescript": "^4.6.3"
"rollup": "^3.29.3",
"rollup-plugin-dts": "^6.0.2",
"rollup-plugin-ts": "^3.4.5",
"typescript": "^5.2.2"
}
}

View File

@@ -0,0 +1,3 @@
:80 :3170 {
reverse_proxy localhost:8080
}

View File

@@ -1,6 +1,6 @@
{
"name": "hoppscotch-backend",
"version": "2023.8.0",
"version": "2023.8.4-1",
"description": "",
"author": "",
"private": true,
@@ -24,18 +24,17 @@
"do-test": "pnpm run test"
},
"dependencies": {
"@nestjs-modules/mailer": "^1.8.1",
"@nestjs/apollo": "^10.1.6",
"@nestjs/common": "^9.2.1",
"@nestjs/core": "^9.2.1",
"@nestjs/graphql": "^10.1.6",
"@nestjs/jwt": "^10.0.1",
"@nestjs/passport": "^9.0.0",
"@nestjs/platform-express": "^9.2.1",
"@nestjs/throttler": "^4.0.0",
"@apollo/server": "^4.9.4",
"@nestjs-modules/mailer": "^1.9.1",
"@nestjs/apollo": "^12.0.9",
"@nestjs/common": "^10.2.6",
"@nestjs/core": "^10.2.6",
"@nestjs/graphql": "^12.0.9",
"@nestjs/jwt": "^10.1.1",
"@nestjs/passport": "^10.0.2",
"@nestjs/platform-express": "^10.2.6",
"@nestjs/throttler": "^5.0.0",
"@prisma/client": "^4.16.2",
"apollo-server-express": "^3.11.1",
"apollo-server-plugin-base": "^3.7.1",
"argon2": "^0.30.3",
"bcrypt": "^5.1.0",
"cookie": "^0.5.0",
@@ -43,9 +42,9 @@
"express": "^4.17.1",
"express-session": "^1.17.3",
"fp-ts": "^2.13.1",
"graphql": "^15.5.0",
"graphql": "^16.8.1",
"graphql-query-complexity": "^0.12.0",
"graphql-redis-subscriptions": "^2.5.0",
"graphql-redis-subscriptions": "^2.6.0",
"graphql-subscriptions": "^2.0.0",
"handlebars": "^4.7.7",
"io-ts": "^2.2.16",
@@ -63,9 +62,9 @@
"rxjs": "^7.6.0"
},
"devDependencies": {
"@nestjs/cli": "^9.1.5",
"@nestjs/schematics": "^9.0.3",
"@nestjs/testing": "^9.2.1",
"@nestjs/cli": "^10.1.18",
"@nestjs/schematics": "^10.0.2",
"@nestjs/testing": "^10.2.6",
"@relmify/jest-fp-ts": "^2.0.2",
"@types/argon2": "^0.15.0",
"@types/bcrypt": "^5.0.0",

View File

@@ -0,0 +1,15 @@
/*
Warnings:
- A unique constraint covering the columns `[id]` on the table `Shortcode` will be added. If there are existing duplicate values, this will fail.
*/
-- AlterTable
ALTER TABLE "Shortcode" ADD COLUMN "embedProperties" JSONB,
ADD COLUMN "updatedOn" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP;
-- CreateIndex
CREATE UNIQUE INDEX "Shortcode_id_key" ON "Shortcode"("id");
-- AddForeignKey
ALTER TABLE "Shortcode" ADD CONSTRAINT "Shortcode_creatorUid_fkey" FOREIGN KEY ("creatorUid") REFERENCES "User"("uid") ON DELETE SET NULL ON UPDATE CASCADE;

View File

@@ -0,0 +1,5 @@
-- AlterTable
ALTER TABLE "TeamCollection" ADD COLUMN "data" JSONB;
-- AlterTable
ALTER TABLE "UserCollection" ADD COLUMN "data" JSONB;

View File

@@ -43,6 +43,7 @@ model TeamInvitation {
model TeamCollection {
id String @id @default(cuid())
parentID String?
data Json?
parent TeamCollection? @relation("TeamCollectionChildParent", fields: [parentID], references: [id])
children TeamCollection[] @relation("TeamCollectionChildParent")
requests TeamRequest[]
@@ -68,10 +69,13 @@ model TeamRequest {
}
model Shortcode {
id String @id
request Json
creatorUid String?
createdOn DateTime @default(now())
id String @id @unique
request Json
embedProperties Json?
creatorUid String?
User User? @relation(fields: [creatorUid], references: [uid])
createdOn DateTime @default(now())
updatedOn DateTime @default(now()) @updatedAt
@@unique(fields: [id, creatorUid], name: "creator_uid_shortcode_unique")
}
@@ -102,6 +106,7 @@ model User {
currentGQLSession Json?
createdOn DateTime @default(now()) @db.Timestamp(3)
invitedUsers InvitedUsers[]
shortcodes Shortcode[]
}
model Account {
@@ -192,6 +197,7 @@ model UserCollection {
userUid String
user User @relation(fields: [userUid], references: [uid], onDelete: Cascade)
title String
data Json?
orderIndex Int
type ReqType
createdOn DateTime @default(now()) @db.Timestamp(3)

View File

@@ -0,0 +1,66 @@
#!/usr/local/bin/node
// @ts-check
import { spawn } from 'child_process';
import process from 'process';
function runChildProcessWithPrefix(command, args, prefix) {
const childProcess = spawn(command, args);
childProcess.stdout.on('data', (data) => {
const output = data.toString().trim().split('\n');
output.forEach((line) => {
console.log(`${prefix} | ${line}`);
});
});
childProcess.stderr.on('data', (data) => {
const error = data.toString().trim().split('\n');
error.forEach((line) => {
console.error(`${prefix} | ${line}`);
});
});
childProcess.on('close', (code) => {
console.log(`${prefix} Child process exited with code ${code}`);
});
childProcess.on('error', (stuff) => {
console.error('error');
console.error(stuff);
});
return childProcess;
}
const caddyProcess = runChildProcessWithPrefix(
'caddy',
['run', '--config', '/etc/caddy/backend.Caddyfile', '--adapter', 'caddyfile'],
'App/Admin Dashboard Caddy',
);
const backendProcess = runChildProcessWithPrefix(
'pnpm',
['run', 'start:prod'],
'Backend Server',
);
caddyProcess.on('exit', (code) => {
console.log(`Exiting process because Caddy Server exited with code ${code}`);
process.exit(code);
});
backendProcess.on('exit', (code) => {
console.log(
`Exiting process because Backend Server exited with code ${code}`,
);
process.exit(code);
});
process.on('SIGINT', () => {
console.log('SIGINT received, exiting...');
caddyProcess.kill('SIGINT');
backendProcess.kill('SIGINT');
process.exit(0);
});

View File

@@ -1,4 +1,9 @@
import { ObjectType } from '@nestjs/graphql';
import { ObjectType, OmitType } from '@nestjs/graphql';
import { User } from 'src/user/user.model';
@ObjectType()
export class Admin {}
export class Admin extends OmitType(User, [
'isAdmin',
'currentRESTSession',
'currentGQLSession',
]) {}

View File

@@ -10,6 +10,8 @@ import { TeamInvitationModule } from '../team-invitation/team-invitation.module'
import { TeamEnvironmentsModule } from '../team-environments/team-environments.module';
import { TeamCollectionModule } from '../team-collection/team-collection.module';
import { TeamRequestModule } from '../team-request/team-request.module';
import { InfraResolver } from './infra.resolver';
import { ShortcodeModule } from 'src/shortcode/shortcode.module';
@Module({
imports: [
@@ -22,8 +24,9 @@ import { TeamRequestModule } from '../team-request/team-request.module';
TeamEnvironmentsModule,
TeamCollectionModule,
TeamRequestModule,
ShortcodeModule,
],
providers: [AdminResolver, AdminService],
providers: [InfraResolver, AdminResolver, AdminService],
exports: [AdminService],
})
export class AdminModule {}

View File

@@ -21,15 +21,15 @@ import { InvitedUser } from './invited-user.model';
import { GqlUser } from '../decorators/gql-user.decorator';
import { PubSubService } from '../pubsub/pubsub.service';
import { Team, TeamMember } from '../team/team.model';
import { User } from '../user/user.model';
import { TeamInvitation } from '../team-invitation/team-invitation.model';
import { PaginationArgs } from '../types/input-types.args';
import {
AddUserToTeamArgs,
ChangeUserRoleInTeamArgs,
} from './input-types.args';
import { GqlThrottlerGuard } from 'src/guards/gql-throttler.guard';
import { SkipThrottle } from '@nestjs/throttler';
import { User } from 'src/user/user.model';
import { PaginationArgs } from 'src/types/input-types.args';
import { TeamInvitation } from 'src/team-invitation/team-invitation.model';
@UseGuards(GqlThrottlerGuard)
@Resolver(() => Admin)
@@ -51,6 +51,7 @@ export class AdminResolver {
@ResolveField(() => [User], {
description: 'Returns a list of all admin users in infra',
deprecationReason: 'Use `infra` query instead',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async admins() {
@@ -59,6 +60,7 @@ export class AdminResolver {
}
@ResolveField(() => User, {
description: 'Returns a user info by UID',
deprecationReason: 'Use `infra` query instead',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async userInfo(
@@ -76,6 +78,7 @@ export class AdminResolver {
@ResolveField(() => [User], {
description: 'Returns a list of all the users in infra',
deprecationReason: 'Use `infra` query instead',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async allUsers(
@@ -88,6 +91,7 @@ export class AdminResolver {
@ResolveField(() => [InvitedUser], {
description: 'Returns a list of all the invited users',
deprecationReason: 'Use `infra` query instead',
})
async invitedUsers(@Parent() admin: Admin): Promise<InvitedUser[]> {
const users = await this.adminService.fetchInvitedUsers();
@@ -96,6 +100,7 @@ export class AdminResolver {
@ResolveField(() => [Team], {
description: 'Returns a list of all the teams in the infra',
deprecationReason: 'Use `infra` query instead',
})
async allTeams(
@Parent() admin: Admin,
@@ -106,6 +111,7 @@ export class AdminResolver {
}
@ResolveField(() => Team, {
description: 'Returns a team info by ID when requested by Admin',
deprecationReason: 'Use `infra` query instead',
})
async teamInfo(
@Parent() admin: Admin,
@@ -123,6 +129,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return count of all the members in a team',
deprecationReason: 'Use `infra` query instead',
})
async membersCountInTeam(
@Parent() admin: Admin,
@@ -140,6 +147,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return count of all the stored collections in a team',
deprecationReason: 'Use `infra` query instead',
})
async collectionCountInTeam(
@Parent() admin: Admin,
@@ -155,6 +163,7 @@ export class AdminResolver {
}
@ResolveField(() => Number, {
description: 'Return count of all the stored requests in a team',
deprecationReason: 'Use `infra` query instead',
})
async requestCountInTeam(
@Parent() admin: Admin,
@@ -171,6 +180,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return count of all the stored environments in a team',
deprecationReason: 'Use `infra` query instead',
})
async environmentCountInTeam(
@Parent() admin: Admin,
@@ -187,6 +197,7 @@ export class AdminResolver {
@ResolveField(() => [TeamInvitation], {
description: 'Return all the pending invitations in a team',
deprecationReason: 'Use `infra` query instead',
})
async pendingInvitationCountInTeam(
@Parent() admin: Admin,
@@ -205,6 +216,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return total number of Users in organization',
deprecationReason: 'Use `infra` query instead',
})
async usersCount() {
return this.adminService.getUsersCount();
@@ -212,6 +224,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return total number of Teams in organization',
deprecationReason: 'Use `infra` query instead',
})
async teamsCount() {
return this.adminService.getTeamsCount();
@@ -219,6 +232,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return total number of Team Collections in organization',
deprecationReason: 'Use `infra` query instead',
})
async teamCollectionsCount() {
return this.adminService.getTeamCollectionsCount();
@@ -226,6 +240,7 @@ export class AdminResolver {
@ResolveField(() => Number, {
description: 'Return total number of Team Requests in organization',
deprecationReason: 'Use `infra` query instead',
})
async teamRequestsCount() {
return this.adminService.getTeamRequestsCount();
@@ -428,6 +443,23 @@ export class AdminResolver {
return true;
}
@Mutation(() => Boolean, {
description: 'Revoke Shortcode by ID',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async revokeShortcodeByAdmin(
@Args({
name: 'code',
description: 'The shortcode to delete',
type: () => ID,
})
code: string,
): Promise<boolean> {
const res = await this.adminService.deleteShortcode(code);
if (E.isLeft(res)) throwErr(res.left);
return true;
}
/* Subscriptions */
@Subscription(() => InvitedUser, {

View File

@@ -15,6 +15,7 @@ import {
INVALID_EMAIL,
USER_ALREADY_INVITED,
} from '../errors';
import { ShortcodeService } from 'src/shortcode/shortcode.service';
const mockPrisma = mockDeep<PrismaService>();
const mockPubSub = mockDeep<PubSubService>();
@@ -25,6 +26,7 @@ const mockTeamRequestService = mockDeep<TeamRequestService>();
const mockTeamInvitationService = mockDeep<TeamInvitationService>();
const mockTeamCollectionService = mockDeep<TeamCollectionService>();
const mockMailerService = mockDeep<MailerService>();
const mockShortcodeService = mockDeep<ShortcodeService>();
const adminService = new AdminService(
mockUserService,
@@ -36,6 +38,7 @@ const adminService = new AdminService(
mockPubSub as any,
mockPrisma as any,
mockMailerService,
mockShortcodeService,
);
const invitedUsers: InvitedUsers[] = [

View File

@@ -24,6 +24,7 @@ import { TeamRequestService } from '../team-request/team-request.service';
import { TeamEnvironmentsService } from '../team-environments/team-environments.service';
import { TeamInvitationService } from '../team-invitation/team-invitation.service';
import { TeamMemberRole } from '../team/team.model';
import { ShortcodeService } from 'src/shortcode/shortcode.service';
@Injectable()
export class AdminService {
@@ -37,6 +38,7 @@ export class AdminService {
private readonly pubsub: PubSubService,
private readonly prisma: PrismaService,
private readonly mailerService: MailerService,
private readonly shortcodeService: ShortcodeService,
) {}
/**
@@ -74,7 +76,7 @@ export class AdminService {
try {
await this.mailerService.sendUserInvitationEmail(inviteeEmail, {
template: 'code-your-own',
template: 'user-invitation',
variables: {
inviteeEmail: inviteeEmail,
magicLink: `${process.env.VITE_BASE_URL}`,
@@ -432,4 +434,35 @@ export class AdminService {
return E.right(teamInvite.right);
}
/**
* Fetch all created ShortCodes
*
* @param args Pagination arguments
* @param userEmail User email
* @returns ShortcodeWithUserEmail
*/
async fetchAllShortcodes(
cursorID: string,
take: number,
userEmail: string = null,
) {
return this.shortcodeService.fetchAllShortcodes(
{ cursor: cursorID, take },
userEmail,
);
}
/**
* Delete a Shortcode
*
* @param shortcodeID ID of Shortcode being deleted
* @returns Boolean on successful deletion
*/
async deleteShortcode(shortcodeID: string) {
const result = await this.shortcodeService.deleteShortcode(shortcodeID);
if (E.isLeft(result)) return E.left(result.left);
return E.right(result.right);
}
}

View File

@@ -0,0 +1,10 @@
import { Field, ObjectType } from '@nestjs/graphql';
import { Admin } from './admin.model';
@ObjectType()
export class Infra {
@Field(() => Admin, {
description: 'Admin who executed the action',
})
executedBy: Admin;
}

View File

@@ -0,0 +1,225 @@
import { UseGuards } from '@nestjs/common';
import { Args, ID, Query, ResolveField, Resolver } from '@nestjs/graphql';
import { GqlThrottlerGuard } from 'src/guards/gql-throttler.guard';
import { Infra } from './infra.model';
import { AdminService } from './admin.service';
import { GqlAuthGuard } from 'src/guards/gql-auth.guard';
import { GqlAdminGuard } from './guards/gql-admin.guard';
import { User } from 'src/user/user.model';
import { AuthUser } from 'src/types/AuthUser';
import { throwErr } from 'src/utils';
import * as E from 'fp-ts/Either';
import { Admin } from './admin.model';
import { PaginationArgs } from 'src/types/input-types.args';
import { InvitedUser } from './invited-user.model';
import { Team } from 'src/team/team.model';
import { TeamInvitation } from 'src/team-invitation/team-invitation.model';
import { GqlAdmin } from './decorators/gql-admin.decorator';
import { ShortcodeWithUserEmail } from 'src/shortcode/shortcode.model';
@UseGuards(GqlThrottlerGuard)
@Resolver(() => Infra)
export class InfraResolver {
constructor(private adminService: AdminService) {}
@Query(() => Infra, {
description: 'Fetch details of the Infrastructure',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
infra(@GqlAdmin() admin: Admin) {
const infra: Infra = { executedBy: admin };
return infra;
}
@ResolveField(() => [User], {
description: 'Returns a list of all admin users in infra',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async admins() {
const admins = await this.adminService.fetchAdmins();
return admins;
}
@ResolveField(() => User, {
description: 'Returns a user info by UID',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async userInfo(
@Args({
name: 'userUid',
type: () => ID,
description: 'The user UID',
})
userUid: string,
): Promise<AuthUser> {
const user = await this.adminService.fetchUserInfo(userUid);
if (E.isLeft(user)) throwErr(user.left);
return user.right;
}
@ResolveField(() => [User], {
description: 'Returns a list of all the users in infra',
})
@UseGuards(GqlAuthGuard, GqlAdminGuard)
async allUsers(@Args() args: PaginationArgs): Promise<AuthUser[]> {
const users = await this.adminService.fetchUsers(args.cursor, args.take);
return users;
}
@ResolveField(() => [InvitedUser], {
description: 'Returns a list of all the invited users',
})
async invitedUsers(): Promise<InvitedUser[]> {
const users = await this.adminService.fetchInvitedUsers();
return users;
}
@ResolveField(() => [Team], {
description: 'Returns a list of all the teams in the infra',
})
async allTeams(@Args() args: PaginationArgs): Promise<Team[]> {
const teams = await this.adminService.fetchAllTeams(args.cursor, args.take);
return teams;
}
@ResolveField(() => Team, {
description: 'Returns a team info by ID when requested by Admin',
})
async teamInfo(
@Args({
name: 'teamID',
type: () => ID,
description: 'Team ID for which info to fetch',
})
teamID: string,
): Promise<Team> {
const team = await this.adminService.getTeamInfo(teamID);
if (E.isLeft(team)) throwErr(team.left);
return team.right;
}
@ResolveField(() => Number, {
description: 'Return count of all the members in a team',
})
async membersCountInTeam(
@Args({
name: 'teamID',
type: () => ID,
description: 'Team ID for which team members to fetch',
nullable: false,
})
teamID: string,
): Promise<number> {
const teamMembersCount = await this.adminService.membersCountInTeam(teamID);
return teamMembersCount;
}
@ResolveField(() => Number, {
description: 'Return count of all the stored collections in a team',
})
async collectionCountInTeam(
@Args({
name: 'teamID',
type: () => ID,
description: 'Team ID for which team members to fetch',
})
teamID: string,
): Promise<number> {
const teamCollCount = await this.adminService.collectionCountInTeam(teamID);
return teamCollCount;
}
@ResolveField(() => Number, {
description: 'Return count of all the stored requests in a team',
})
async requestCountInTeam(
@Args({
name: 'teamID',
type: () => ID,
description: 'Team ID for which team members to fetch',
})
teamID: string,
): Promise<number> {
const teamReqCount = await this.adminService.requestCountInTeam(teamID);
return teamReqCount;
}
@ResolveField(() => Number, {
description: 'Return count of all the stored environments in a team',
})
async environmentCountInTeam(
@Args({
name: 'teamID',
type: () => ID,
description: 'Team ID for which team members to fetch',
})
teamID: string,
): Promise<number> {
const envsCount = await this.adminService.environmentCountInTeam(teamID);
return envsCount;
}
@ResolveField(() => [TeamInvitation], {
description: 'Return all the pending invitations in a team',
})
async pendingInvitationCountInTeam(
@Args({
name: 'teamID',
type: () => ID,
description: 'Team ID for which team members to fetch',
})
teamID: string,
) {
const invitations = await this.adminService.pendingInvitationCountInTeam(
teamID,
);
return invitations;
}
@ResolveField(() => Number, {
description: 'Return total number of Users in organization',
})
async usersCount() {
return this.adminService.getUsersCount();
}
@ResolveField(() => Number, {
description: 'Return total number of Teams in organization',
})
async teamsCount() {
return this.adminService.getTeamsCount();
}
@ResolveField(() => Number, {
description: 'Return total number of Team Collections in organization',
})
async teamCollectionsCount() {
return this.adminService.getTeamCollectionsCount();
}
@ResolveField(() => Number, {
description: 'Return total number of Team Requests in organization',
})
async teamRequestsCount() {
return this.adminService.getTeamRequestsCount();
}
@ResolveField(() => [ShortcodeWithUserEmail], {
description: 'Returns a list of all the shortcodes in the infra',
})
async allShortcodes(
@Args() args: PaginationArgs,
@Args({
name: 'userEmail',
nullable: true,
description: 'Users email to filter shortcodes by',
})
userEmail: string,
) {
return await this.adminService.fetchAllShortcodes(
args.cursor,
args.take,
userEmail,
);
}
}

View File

@@ -27,12 +27,7 @@ import { AppController } from './app.controller';
buildSchemaOptions: {
numberScalarMode: 'integer',
},
cors: {
origin: process.env.WHITELISTED_ORIGINS.split(','),
credentials: true,
},
playground: process.env.PRODUCTION !== 'true',
debug: process.env.PRODUCTION !== 'true',
autoSchemaFile: true,
installSubscriptionHandlers: true,
subscriptions: {
@@ -62,10 +57,12 @@ import { AppController } from './app.controller';
}),
driver: ApolloDriver,
}),
ThrottlerModule.forRoot({
ttl: +process.env.RATE_LIMIT_TTL,
limit: +process.env.RATE_LIMIT_MAX,
}),
ThrottlerModule.forRoot([
{
ttl: +process.env.RATE_LIMIT_TTL,
limit: +process.env.RATE_LIMIT_MAX,
},
]),
UserModule,
AuthModule,
AdminModule,

View File

@@ -229,7 +229,7 @@ export class AuthService {
}
await this.mailerService.sendEmail(email, {
template: 'code-your-own',
template: 'user-invitation',
variables: {
inviteeEmail: email,
magicLink: `${url}/enter?token=${generatedTokens.token}`,

View File

@@ -254,6 +254,13 @@ export const TEAM_COLL_INVALID_JSON = 'team_coll/invalid_json';
*/
export const TEAM_NOT_OWNER = 'team_coll/team_not_owner' as const;
/**
* The Team Collection data is not valid
* (TeamCollectionService)
*/
export const TEAM_COLL_DATA_INVALID =
'team_coll/team_coll_data_invalid' as const;
/**
* Tried to perform an action on a request that doesn't accept their member role level
* (GqlRequestTeamMemberGuard)
@@ -318,18 +325,6 @@ export const TEAM_INVITATION_NOT_FOUND =
*/
export const SHORTCODE_NOT_FOUND = 'shortcode/not_found' as const;
/**
* Invalid ShortCode format
* (ShortcodeService)
*/
export const SHORTCODE_INVALID_JSON = 'shortcode/invalid_json' as const;
/**
* ShortCode already exists in DB
* (ShortcodeService)
*/
export const SHORTCODE_ALREADY_EXISTS = 'shortcode/already_exists' as const;
/**
* Invalid or non-existent TEAM ENVIRONMENT ID
* (TeamEnvironmentsService)
@@ -597,6 +592,13 @@ export const USER_COLL_REORDERING_FAILED =
export const USER_COLL_SAME_NEXT_COLL =
'user_coll/user_collection_and_next_user_collection_are_same' as const;
/**
* The User Collection data is not valid
* (UserCollectionService)
*/
export const USER_COLL_DATA_INVALID =
'user_coll/user_coll_data_invalid' as const;
/**
* The User Collection does not belong to the logged-in user
* (UserCollectionService)
@@ -621,3 +623,24 @@ export const MAILER_SMTP_URL_UNDEFINED = 'mailer/smtp_url_undefined' as const;
*/
export const MAILER_FROM_ADDRESS_UNDEFINED =
'mailer/from_address_undefined' as const;
/**
* SharedRequest invalid request JSON format
* (ShortcodeService)
*/
export const SHORTCODE_INVALID_REQUEST_JSON =
'shortcode/request_invalid_format' as const;
/**
* SharedRequest invalid properties JSON format
* (ShortcodeService)
*/
export const SHORTCODE_INVALID_PROPERTIES_JSON =
'shortcode/properties_invalid_format' as const;
/**
* SharedRequest invalid properties not found
* (ShortcodeService)
*/
export const SHORTCODE_PROPERTIES_NOT_FOUND =
'shortcode/properties_not_found' as const;

View File

@@ -27,6 +27,7 @@ import { UserRequestUserCollectionResolver } from './user-request/resolvers/user
import { UserEnvsUserResolver } from './user-environment/user.resolver';
import { UserHistoryUserResolver } from './user-history/user.resolver';
import { UserSettingsUserResolver } from './user-settings/user.resolver';
import { InfraResolver } from './admin/infra.resolver';
/**
* All the resolvers present in the application.
@@ -34,6 +35,7 @@ import { UserSettingsUserResolver } from './user-settings/user.resolver';
* NOTE: This needs to be KEPT UP-TO-DATE to keep the schema accurate
*/
const RESOLVERS = [
InfraResolver,
AdminResolver,
ShortcodeResolver,
TeamResolver,
@@ -93,9 +95,7 @@ export async function emitGQLSchemaFile() {
numberScalarMode: 'integer',
});
const schemaString = printSchema(schema, {
commentDescriptions: true,
});
const schemaString = printSchema(schema);
logger.log(`Writing schema to GQL_SCHEMA_EMIT_LOCATION (${destination})`);

View File

@@ -3,8 +3,7 @@ import { Injectable } from '@nestjs/common';
@Injectable()
export class ThrottlerBehindProxyGuard extends ThrottlerGuard {
protected getTracker(req: Record<string, any>): string {
protected async getTracker(req: Record<string, any>): Promise<string> {
return req.ips.length ? req.ips[0] : req.ip; // individualize IP extraction to meet your own needs
// learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For#directives
}
}

View File

@@ -8,7 +8,7 @@ export type MailDescription = {
};
export type UserMagicLinkMailDescription = {
template: 'code-your-own';
template: 'user-invitation';
variables: {
inviteeEmail: string;
magicLink: string;
@@ -16,7 +16,7 @@ export type UserMagicLinkMailDescription = {
};
export type AdminUserInvitationMailDescription = {
template: 'code-your-own';
template: 'user-invitation';
variables: {
inviteeEmail: string;
magicLink: string;

View File

@@ -27,7 +27,7 @@ export class MailerService {
case 'team-invitation':
return `${mailDesc.variables.invitee} invited you to join ${mailDesc.variables.invite_team_name} in Hoppscotch`;
case 'code-your-own':
case 'user-invitation':
return 'Sign in to Hoppscotch';
}
}

View File

@@ -14,7 +14,7 @@
-->
<style type="text/css" rel="stylesheet" media="all">
/* Base ------------------------------ */
@import url("https://fonts.googleapis.com/css?family=Nunito+Sans:400,700&display=swap");
body {
width: 100% !important;
@@ -22,19 +22,19 @@
margin: 0;
-webkit-text-size-adjust: none;
}
a {
color: #3869D4;
}
a img {
border: none;
}
td {
word-break: break-word;
}
.preheader {
display: none !important;
visibility: hidden;
@@ -47,13 +47,13 @@
overflow: hidden;
}
/* Type ------------------------------ */
body,
td,
th {
font-family: "Nunito Sans", Helvetica, Arial, sans-serif;
}
h1 {
margin-top: 0;
color: #333333;
@@ -61,7 +61,7 @@
font-weight: bold;
text-align: left;
}
h2 {
margin-top: 0;
color: #333333;
@@ -69,7 +69,7 @@
font-weight: bold;
text-align: left;
}
h3 {
margin-top: 0;
color: #333333;
@@ -77,12 +77,12 @@
font-weight: bold;
text-align: left;
}
td,
th {
font-size: 16px;
}
p,
ul,
ol,
@@ -91,25 +91,25 @@
font-size: 16px;
line-height: 1.625;
}
p.sub {
font-size: 13px;
}
/* Utilities ------------------------------ */
.align-right {
text-align: right;
}
.align-left {
text-align: left;
}
.align-center {
text-align: center;
}
/* Buttons ------------------------------ */
.button {
background-color: #3869D4;
border-top: 10px solid #3869D4;
@@ -124,7 +124,7 @@
-webkit-text-size-adjust: none;
box-sizing: border-box;
}
.button--green {
background-color: #22BC66;
border-top: 10px solid #22BC66;
@@ -132,7 +132,7 @@
border-bottom: 10px solid #22BC66;
border-left: 18px solid #22BC66;
}
.button--red {
background-color: #FF6136;
border-top: 10px solid #FF6136;
@@ -140,7 +140,7 @@
border-bottom: 10px solid #FF6136;
border-left: 18px solid #FF6136;
}
@media only screen and (max-width: 500px) {
.button {
width: 100% !important;
@@ -148,21 +148,21 @@
}
}
/* Attribute list ------------------------------ */
.attributes {
margin: 0 0 21px;
}
.attributes_content {
background-color: #F4F4F7;
padding: 16px;
}
.attributes_item {
padding: 0;
}
/* Related Items ------------------------------ */
.related {
width: 100%;
margin: 0;
@@ -171,31 +171,31 @@
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
}
.related_item {
padding: 10px 0;
color: #CBCCCF;
font-size: 15px;
line-height: 18px;
}
.related_item-title {
display: block;
margin: .5em 0 0;
}
.related_item-thumb {
display: block;
padding-bottom: 10px;
}
.related_heading {
border-top: 1px solid #CBCCCF;
text-align: center;
padding: 25px 0 10px;
}
/* Discount Code ------------------------------ */
.discount {
width: 100%;
margin: 0;
@@ -206,33 +206,33 @@
background-color: #F4F4F7;
border: 2px dashed #CBCCCF;
}
.discount_heading {
text-align: center;
}
.discount_body {
text-align: center;
font-size: 15px;
}
/* Social Icons ------------------------------ */
.social {
width: auto;
}
.social td {
padding: 0;
width: auto;
}
.social_icon {
height: 20px;
margin: 0 8px 10px 8px;
padding: 0;
}
/* Data table ------------------------------ */
.purchase {
width: 100%;
margin: 0;
@@ -241,7 +241,7 @@
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
}
.purchase_content {
width: 100%;
margin: 0;
@@ -250,50 +250,50 @@
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
}
.purchase_item {
padding: 10px 0;
color: #51545E;
font-size: 15px;
line-height: 18px;
}
.purchase_heading {
padding-bottom: 8px;
border-bottom: 1px solid #EAEAEC;
}
.purchase_heading p {
margin: 0;
color: #85878E;
font-size: 12px;
}
.purchase_footer {
padding-top: 15px;
border-top: 1px solid #EAEAEC;
}
.purchase_total {
margin: 0;
text-align: right;
font-weight: bold;
color: #333333;
}
.purchase_total--label {
padding: 0 15px 0 0;
}
body {
background-color: #F2F4F6;
color: #51545E;
}
p {
color: #51545E;
}
.email-wrapper {
width: 100%;
margin: 0;
@@ -303,7 +303,7 @@
-premailer-cellspacing: 0;
background-color: #F2F4F6;
}
.email-content {
width: 100%;
margin: 0;
@@ -313,16 +313,16 @@
-premailer-cellspacing: 0;
}
/* Masthead ----------------------- */
.email-masthead {
padding: 25px 0;
text-align: center;
}
.email-masthead_logo {
width: 94px;
}
.email-masthead_name {
font-size: 16px;
font-weight: bold;
@@ -331,7 +331,7 @@
text-shadow: 0 1px 0 white;
}
/* Body ------------------------------ */
.email-body {
width: 100%;
margin: 0;
@@ -340,7 +340,7 @@
-premailer-cellpadding: 0;
-premailer-cellspacing: 0;
}
.email-body_inner {
width: 570px;
margin: 0 auto;
@@ -350,7 +350,7 @@
-premailer-cellspacing: 0;
background-color: #FFFFFF;
}
.email-footer {
width: 570px;
margin: 0 auto;
@@ -360,11 +360,11 @@
-premailer-cellspacing: 0;
text-align: center;
}
.email-footer p {
color: #A8AAAF;
}
.body-action {
width: 100%;
margin: 30px auto;
@@ -374,25 +374,25 @@
-premailer-cellspacing: 0;
text-align: center;
}
.body-sub {
margin-top: 25px;
padding-top: 25px;
border-top: 1px solid #EAEAEC;
}
.content-cell {
padding: 45px;
}
/*Media Queries ------------------------------ */
@media only screen and (max-width: 600px) {
.email-body_inner,
.email-footer {
width: 100% !important;
}
}
@media (prefers-color-scheme: dark) {
body,
.email-body,

View File

@@ -1,8 +1,9 @@
import { GraphQLSchemaHost } from '@nestjs/graphql';
import {
ApolloServerPlugin,
BaseContext,
GraphQLRequestListener,
} from 'apollo-server-plugin-base';
} from '@apollo/server';
import { Plugin } from '@nestjs/apollo';
import { GraphQLError } from 'graphql';
import {
@@ -17,7 +18,7 @@ const COMPLEXITY_LIMIT = 50;
export class GQLComplexityPlugin implements ApolloServerPlugin {
constructor(private gqlSchemaHost: GraphQLSchemaHost) {}
async requestDidStart(): Promise<GraphQLRequestListener> {
async requestDidStart(): Promise<GraphQLRequestListener<BaseContext>> {
const { schema } = this.gqlSchemaHost;
return {

View File

@@ -21,8 +21,8 @@ import {
} from 'src/team-request/team-request.model';
import { TeamInvitation } from 'src/team-invitation/team-invitation.model';
import { InvitedUser } from '../admin/invited-user.model';
import { UserCollection } from '@prisma/client';
import {
UserCollection,
UserCollectionRemovedData,
UserCollectionReorderData,
} from 'src/user-collection/user-collections.model';
@@ -69,5 +69,7 @@ export type TopicDef = {
[topic: `team_req/${string}/req_deleted`]: string;
[topic: `team/${string}/invite_added`]: TeamInvitation;
[topic: `team/${string}/invite_removed`]: string;
[topic: `shortcode/${string}/${'created' | 'revoked'}`]: Shortcode;
[
topic: `shortcode/${string}/${'created' | 'revoked' | 'updated'}`
]: Shortcode;
};

View File

@@ -1,9 +1,10 @@
import { Field, ID, ObjectType } from '@nestjs/graphql';
import { User } from 'src/user/user.model';
@ObjectType()
export class Shortcode {
@Field(() => ID, {
description: 'The shortcode. 12 digit alphanumeric.',
description: 'The 12 digit alphanumeric code',
})
id: string;
@@ -12,8 +13,57 @@ export class Shortcode {
})
request: string;
@Field({
description: 'JSON string representing the properties for an embed',
nullable: true,
})
properties: string;
@Field({
description: 'Timestamp of when the Shortcode was created',
})
createdOn: Date;
}
@ObjectType()
export class ShortcodeCreator {
@Field({
description: 'Uid of user who created the shortcode',
})
uid: string;
@Field({
description: 'Email of user who created the shortcode',
})
email: string;
}
@ObjectType()
export class ShortcodeWithUserEmail {
@Field(() => ID, {
description: 'The 12 digit alphanumeric code',
})
id: string;
@Field({
description: 'JSON string representing the request data',
})
request: string;
@Field({
description: 'JSON string representing the properties for an embed',
nullable: true,
})
properties: string;
@Field({
description: 'Timestamp of when the Shortcode was created',
})
createdOn: Date;
@Field({
description: 'Details of user who created the shortcode',
nullable: true,
})
creator: ShortcodeCreator;
}

View File

@@ -1,5 +1,4 @@
import { Module } from '@nestjs/common';
import { JwtModule } from '@nestjs/jwt';
import { PrismaModule } from 'src/prisma/prisma.module';
import { PubSubModule } from 'src/pubsub/pubsub.module';
import { UserModule } from 'src/user/user.module';
@@ -7,14 +6,7 @@ import { ShortcodeResolver } from './shortcode.resolver';
import { ShortcodeService } from './shortcode.service';
@Module({
imports: [
PrismaModule,
UserModule,
PubSubModule,
JwtModule.register({
secret: process.env.JWT_SECRET,
}),
],
imports: [PrismaModule, UserModule, PubSubModule],
providers: [ShortcodeService, ShortcodeResolver],
exports: [ShortcodeService],
})

View File

@@ -1,6 +1,5 @@
import {
Args,
Context,
ID,
Mutation,
Query,
@@ -9,28 +8,25 @@ import {
} from '@nestjs/graphql';
import * as E from 'fp-ts/Either';
import { UseGuards } from '@nestjs/common';
import { Shortcode } from './shortcode.model';
import { Shortcode, ShortcodeWithUserEmail } from './shortcode.model';
import { ShortcodeService } from './shortcode.service';
import { UserService } from 'src/user/user.service';
import { throwErr } from 'src/utils';
import { GqlUser } from 'src/decorators/gql-user.decorator';
import { GqlAuthGuard } from 'src/guards/gql-auth.guard';
import { User } from 'src/user/user.model';
import { PubSubService } from 'src/pubsub/pubsub.service';
import { AuthUser } from '../types/AuthUser';
import { JwtService } from '@nestjs/jwt';
import { PaginationArgs } from 'src/types/input-types.args';
import { GqlThrottlerGuard } from 'src/guards/gql-throttler.guard';
import { SkipThrottle } from '@nestjs/throttler';
import { GqlAdminGuard } from 'src/admin/guards/gql-admin.guard';
@UseGuards(GqlThrottlerGuard)
@Resolver(() => Shortcode)
export class ShortcodeResolver {
constructor(
private readonly shortcodeService: ShortcodeService,
private readonly userService: UserService,
private readonly pubsub: PubSubService,
private jwtService: JwtService,
) {}
/* Queries */
@@ -64,20 +60,53 @@ export class ShortcodeResolver {
@Mutation(() => Shortcode, {
description: 'Create a shortcode for the given request.',
})
@UseGuards(GqlAuthGuard)
async createShortcode(
@GqlUser() user: AuthUser,
@Args({
name: 'request',
description: 'JSON string of the request object',
})
request: string,
@Context() ctx: any,
@Args({
name: 'properties',
description: 'JSON string of the properties of the embed',
nullable: true,
})
properties: string,
) {
const decodedAccessToken = this.jwtService.verify(
ctx.req.cookies['access_token'],
);
const result = await this.shortcodeService.createShortcode(
request,
decodedAccessToken?.sub,
properties,
user,
);
if (E.isLeft(result)) throwErr(result.left);
return result.right;
}
@Mutation(() => Shortcode, {
description: 'Update a user generated Shortcode',
})
@UseGuards(GqlAuthGuard)
async updateEmbedProperties(
@GqlUser() user: AuthUser,
@Args({
name: 'code',
type: () => ID,
description: 'The Shortcode to update',
})
code: string,
@Args({
name: 'properties',
description: 'JSON string of the properties of the embed',
})
properties: string,
) {
const result = await this.shortcodeService.updateEmbedProperties(
code,
user.uid,
properties,
);
if (E.isLeft(result)) throwErr(result.left);
@@ -93,7 +122,7 @@ export class ShortcodeResolver {
@Args({
name: 'code',
type: () => ID,
description: 'The shortcode to resolve',
description: 'The shortcode to remove',
})
code: string,
) {
@@ -114,6 +143,16 @@ export class ShortcodeResolver {
return this.pubsub.asyncIterator(`shortcode/${user.uid}/created`);
}
@Subscription(() => Shortcode, {
description: 'Listen for Shortcode updates',
resolve: (value) => value,
})
@SkipThrottle()
@UseGuards(GqlAuthGuard)
myShortcodesUpdated(@GqlUser() user: AuthUser) {
return this.pubsub.asyncIterator(`shortcode/${user.uid}/updated`);
}
@Subscription(() => Shortcode, {
description: 'Listen for shortcode deletion',
resolve: (value) => value,

View File

@@ -1,13 +1,16 @@
import { mockDeep, mockReset } from 'jest-mock-extended';
import { PrismaService } from '../prisma/prisma.service';
import {
SHORTCODE_ALREADY_EXISTS,
SHORTCODE_INVALID_JSON,
INVALID_EMAIL,
SHORTCODE_INVALID_PROPERTIES_JSON,
SHORTCODE_INVALID_REQUEST_JSON,
SHORTCODE_NOT_FOUND,
SHORTCODE_PROPERTIES_NOT_FOUND,
} from 'src/errors';
import { Shortcode } from './shortcode.model';
import { Shortcode, ShortcodeWithUserEmail } from './shortcode.model';
import { ShortcodeService } from './shortcode.service';
import { UserService } from 'src/user/user.service';
import { AuthUser } from 'src/types/AuthUser';
const mockPrisma = mockDeep<PrismaService>();
@@ -22,7 +25,7 @@ const mockFB = {
doc: mockDocFunc,
},
};
const mockUserService = new UserService(mockFB as any, mockPubSub as any);
const mockUserService = new UserService(mockPrisma as any, mockPubSub as any);
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
@@ -38,18 +41,34 @@ beforeEach(() => {
});
const createdOn = new Date();
const shortCodeWithOutUser = {
id: '123',
request: '{}',
const user: AuthUser = {
uid: '123344',
email: 'dwight@dundermifflin.com',
displayName: 'Dwight Schrute',
photoURL: 'https://en.wikipedia.org/wiki/Dwight_Schrute',
isAdmin: false,
refreshToken: 'hbfvdkhjbvkdvdfjvbnkhjb',
createdOn: createdOn,
creatorUid: null,
currentGQLSession: {},
currentRESTSession: {},
};
const shortCodeWithUser = {
const mockEmbed = {
id: '123',
request: '{}',
embedProperties: '{}',
createdOn: createdOn,
creatorUid: 'user_uid_1',
creatorUid: user.uid,
updatedOn: createdOn,
};
const mockShortcode = {
id: '123',
request: '{}',
embedProperties: null,
createdOn: createdOn,
creatorUid: user.uid,
updatedOn: createdOn,
};
const shortcodes = [
@@ -58,33 +77,67 @@ const shortcodes = [
request: {
hello: 'there',
},
creatorUid: 'testuser',
embedProperties: {
foo: 'bar',
},
creatorUid: user.uid,
createdOn: new Date(),
updatedOn: createdOn,
},
{
id: 'blablabla1',
request: {
hello: 'there',
},
creatorUid: 'testuser',
embedProperties: {
foo: 'bar',
},
creatorUid: user.uid,
createdOn: new Date(),
updatedOn: createdOn,
},
];
const shortcodesWithUserEmail = [
{
id: 'blablabla',
request: {
hello: 'there',
},
embedProperties: {
foo: 'bar',
},
creatorUid: user.uid,
createdOn: new Date(),
updatedOn: createdOn,
User: user,
},
{
id: 'blablabla1',
request: {
hello: 'there',
},
embedProperties: {
foo: 'bar',
},
creatorUid: user.uid,
createdOn: new Date(),
updatedOn: createdOn,
User: user,
},
];
describe('ShortcodeService', () => {
describe('getShortCode', () => {
test('should return a valid shortcode with valid shortcode ID', async () => {
mockPrisma.shortcode.findFirstOrThrow.mockResolvedValueOnce(
shortCodeWithOutUser,
);
test('should return a valid Shortcode with valid Shortcode ID', async () => {
mockPrisma.shortcode.findFirstOrThrow.mockResolvedValueOnce(mockEmbed);
const result = await shortcodeService.getShortCode(
shortCodeWithOutUser.id,
);
const result = await shortcodeService.getShortCode(mockEmbed.id);
expect(result).toEqualRight(<Shortcode>{
id: shortCodeWithOutUser.id,
createdOn: shortCodeWithOutUser.createdOn,
request: JSON.stringify(shortCodeWithOutUser.request),
id: mockEmbed.id,
createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.embedProperties),
});
});
@@ -99,10 +152,10 @@ describe('ShortcodeService', () => {
});
describe('fetchUserShortCodes', () => {
test('should return list of shortcodes with valid inputs and no cursor', async () => {
test('should return list of Shortcode with valid inputs and no cursor', async () => {
mockPrisma.shortcode.findMany.mockResolvedValueOnce(shortcodes);
const result = await shortcodeService.fetchUserShortCodes('testuser', {
const result = await shortcodeService.fetchUserShortCodes(user.uid, {
cursor: null,
take: 10,
});
@@ -110,20 +163,22 @@ describe('ShortcodeService', () => {
{
id: shortcodes[0].id,
request: JSON.stringify(shortcodes[0].request),
properties: JSON.stringify(shortcodes[0].embedProperties),
createdOn: shortcodes[0].createdOn,
},
{
id: shortcodes[1].id,
request: JSON.stringify(shortcodes[1].request),
properties: JSON.stringify(shortcodes[1].embedProperties),
createdOn: shortcodes[1].createdOn,
},
]);
});
test('should return list of shortcodes with valid inputs and cursor', async () => {
test('should return list of Shortcode with valid inputs and cursor', async () => {
mockPrisma.shortcode.findMany.mockResolvedValue([shortcodes[1]]);
const result = await shortcodeService.fetchUserShortCodes('testuser', {
const result = await shortcodeService.fetchUserShortCodes(user.uid, {
cursor: 'blablabla',
take: 10,
});
@@ -131,6 +186,7 @@ describe('ShortcodeService', () => {
{
id: shortcodes[1].id,
request: JSON.stringify(shortcodes[1].request),
properties: JSON.stringify(shortcodes[1].embedProperties),
createdOn: shortcodes[1].createdOn,
},
]);
@@ -139,7 +195,7 @@ describe('ShortcodeService', () => {
test('should return an empty array for an invalid cursor', async () => {
mockPrisma.shortcode.findMany.mockResolvedValue([]);
const result = await shortcodeService.fetchUserShortCodes('testuser', {
const result = await shortcodeService.fetchUserShortCodes(user.uid, {
cursor: 'invalidcursor',
take: 10,
});
@@ -171,77 +227,111 @@ describe('ShortcodeService', () => {
});
describe('createShortcode', () => {
test('should throw SHORTCODE_INVALID_JSON error if incoming request data is invalid', async () => {
test('should throw SHORTCODE_INVALID_REQUEST_JSON error if incoming request data is invalid', async () => {
const result = await shortcodeService.createShortcode(
'invalidRequest',
'user_uid_1',
null,
user,
);
expect(result).toEqualLeft(SHORTCODE_INVALID_JSON);
expect(result).toEqualLeft(SHORTCODE_INVALID_REQUEST_JSON);
});
test('should successfully create a new shortcode with valid user uid', async () => {
// generateUniqueShortCodeID --> getShortCode
test('should throw SHORTCODE_INVALID_PROPERTIES_JSON error if incoming properties data is invalid', async () => {
const result = await shortcodeService.createShortcode(
'{}',
'invalid_data',
user,
);
expect(result).toEqualLeft(SHORTCODE_INVALID_PROPERTIES_JSON);
});
test('should successfully create a new Embed with valid user uid', async () => {
// generateUniqueShortCodeID --> getShortcode
mockPrisma.shortcode.findFirstOrThrow.mockRejectedValueOnce(
'NotFoundError',
);
mockPrisma.shortcode.create.mockResolvedValueOnce(shortCodeWithUser);
mockPrisma.shortcode.create.mockResolvedValueOnce(mockEmbed);
const result = await shortcodeService.createShortcode('{}', 'user_uid_1');
expect(result).toEqualRight({
id: shortCodeWithUser.id,
createdOn: shortCodeWithUser.createdOn,
request: JSON.stringify(shortCodeWithUser.request),
const result = await shortcodeService.createShortcode('{}', '{}', user);
expect(result).toEqualRight(<Shortcode>{
id: mockEmbed.id,
createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.embedProperties),
});
});
test('should successfully create a new shortcode with null user uid', async () => {
// generateUniqueShortCodeID --> getShortCode
test('should successfully create a new ShortCode with valid user uid', async () => {
// generateUniqueShortCodeID --> getShortcode
mockPrisma.shortcode.findFirstOrThrow.mockRejectedValueOnce(
'NotFoundError',
);
mockPrisma.shortcode.create.mockResolvedValueOnce(shortCodeWithUser);
mockPrisma.shortcode.create.mockResolvedValueOnce(mockShortcode);
const result = await shortcodeService.createShortcode('{}', null);
expect(result).toEqualRight({
id: shortCodeWithUser.id,
createdOn: shortCodeWithUser.createdOn,
request: JSON.stringify(shortCodeWithOutUser.request),
const result = await shortcodeService.createShortcode('{}', null, user);
expect(result).toEqualRight(<Shortcode>{
id: mockShortcode.id,
createdOn: mockShortcode.createdOn,
request: JSON.stringify(mockShortcode.request),
properties: mockShortcode.embedProperties,
});
});
test('should send pubsub message to `shortcode/{uid}/created` on successful creation of shortcode', async () => {
// generateUniqueShortCodeID --> getShortCode
test('should send pubsub message to `shortcode/{uid}/created` on successful creation of a Shortcode', async () => {
// generateUniqueShortCodeID --> getShortcode
mockPrisma.shortcode.findFirstOrThrow.mockRejectedValueOnce(
'NotFoundError',
);
mockPrisma.shortcode.create.mockResolvedValueOnce(shortCodeWithUser);
mockPrisma.shortcode.create.mockResolvedValueOnce(mockShortcode);
const result = await shortcodeService.createShortcode('{}', null, user);
const result = await shortcodeService.createShortcode('{}', 'user_uid_1');
expect(mockPubSub.publish).toHaveBeenCalledWith(
`shortcode/${shortCodeWithUser.creatorUid}/created`,
{
id: shortCodeWithUser.id,
createdOn: shortCodeWithUser.createdOn,
request: JSON.stringify(shortCodeWithUser.request),
`shortcode/${mockShortcode.creatorUid}/created`,
<Shortcode>{
id: mockShortcode.id,
createdOn: mockShortcode.createdOn,
request: JSON.stringify(mockShortcode.request),
properties: mockShortcode.embedProperties,
},
);
});
test('should send pubsub message to `shortcode/{uid}/created` on successful creation of an Embed', async () => {
// generateUniqueShortCodeID --> getShortcode
mockPrisma.shortcode.findFirstOrThrow.mockRejectedValueOnce(
'NotFoundError',
);
mockPrisma.shortcode.create.mockResolvedValueOnce(mockEmbed);
const result = await shortcodeService.createShortcode('{}', '{}', user);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`shortcode/${mockEmbed.creatorUid}/created`,
<Shortcode>{
id: mockEmbed.id,
createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.embedProperties),
},
);
});
});
describe('revokeShortCode', () => {
test('should return true on successful deletion of shortcode with valid inputs', async () => {
mockPrisma.shortcode.delete.mockResolvedValueOnce(shortCodeWithUser);
test('should return true on successful deletion of Shortcode with valid inputs', async () => {
mockPrisma.shortcode.delete.mockResolvedValueOnce(mockEmbed);
const result = await shortcodeService.revokeShortCode(
shortCodeWithUser.id,
shortCodeWithUser.creatorUid,
mockEmbed.id,
mockEmbed.creatorUid,
);
expect(mockPrisma.shortcode.delete).toHaveBeenCalledWith({
where: {
creator_uid_shortcode_unique: {
creatorUid: shortCodeWithUser.creatorUid,
id: shortCodeWithUser.id,
creatorUid: mockEmbed.creatorUid,
id: mockEmbed.id,
},
},
});
@@ -249,52 +339,53 @@ describe('ShortcodeService', () => {
expect(result).toEqualRight(true);
});
test('should return SHORTCODE_NOT_FOUND error when shortcode is invalid and user uid is valid', async () => {
test('should return SHORTCODE_NOT_FOUND error when Shortcode is invalid and user uid is valid', async () => {
mockPrisma.shortcode.delete.mockRejectedValue('RecordNotFound');
expect(
shortcodeService.revokeShortCode('invalid', 'testuser'),
).resolves.toEqualLeft(SHORTCODE_NOT_FOUND);
});
test('should return SHORTCODE_NOT_FOUND error when shortcode is valid and user uid is invalid', async () => {
test('should return SHORTCODE_NOT_FOUND error when Shortcode is valid and user uid is invalid', async () => {
mockPrisma.shortcode.delete.mockRejectedValue('RecordNotFound');
expect(
shortcodeService.revokeShortCode('blablablabla', 'invalidUser'),
).resolves.toEqualLeft(SHORTCODE_NOT_FOUND);
});
test('should return SHORTCODE_NOT_FOUND error when both shortcode and user uid are invalid', async () => {
test('should return SHORTCODE_NOT_FOUND error when both Shortcode and user uid are invalid', async () => {
mockPrisma.shortcode.delete.mockRejectedValue('RecordNotFound');
expect(
shortcodeService.revokeShortCode('invalid', 'invalid'),
).resolves.toEqualLeft(SHORTCODE_NOT_FOUND);
});
test('should send pubsub message to `shortcode/{uid}/revoked` on successful deletion of shortcode', async () => {
mockPrisma.shortcode.delete.mockResolvedValueOnce(shortCodeWithUser);
test('should send pubsub message to `shortcode/{uid}/revoked` on successful deletion of Shortcode', async () => {
mockPrisma.shortcode.delete.mockResolvedValueOnce(mockEmbed);
const result = await shortcodeService.revokeShortCode(
shortCodeWithUser.id,
shortCodeWithUser.creatorUid,
mockEmbed.id,
mockEmbed.creatorUid,
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`shortcode/${shortCodeWithUser.creatorUid}/revoked`,
`shortcode/${mockEmbed.creatorUid}/revoked`,
{
id: shortCodeWithUser.id,
createdOn: shortCodeWithUser.createdOn,
request: JSON.stringify(shortCodeWithUser.request),
id: mockEmbed.id,
createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify(mockEmbed.embedProperties),
},
);
});
});
describe('deleteUserShortCodes', () => {
test('should successfully delete all users shortcodes with valid user uid', async () => {
test('should successfully delete all users Shortcodes with valid user uid', async () => {
mockPrisma.shortcode.deleteMany.mockResolvedValueOnce({ count: 1 });
const result = await shortcodeService.deleteUserShortCodes(
shortCodeWithUser.creatorUid,
mockEmbed.creatorUid,
);
expect(result).toEqual(1);
});
@@ -303,9 +394,176 @@ describe('ShortcodeService', () => {
mockPrisma.shortcode.deleteMany.mockResolvedValueOnce({ count: 0 });
const result = await shortcodeService.deleteUserShortCodes(
shortCodeWithUser.creatorUid,
mockEmbed.creatorUid,
);
expect(result).toEqual(0);
});
});
describe('updateShortcode', () => {
test('should return SHORTCODE_PROPERTIES_NOT_FOUND error when updatedProps in invalid', async () => {
const result = await shortcodeService.updateEmbedProperties(
mockEmbed.id,
user.uid,
'',
);
expect(result).toEqualLeft(SHORTCODE_PROPERTIES_NOT_FOUND);
});
test('should return SHORTCODE_PROPERTIES_NOT_FOUND error when updatedProps in invalid JSON format', async () => {
const result = await shortcodeService.updateEmbedProperties(
mockEmbed.id,
user.uid,
'{kk',
);
expect(result).toEqualLeft(SHORTCODE_INVALID_PROPERTIES_JSON);
});
test('should return SHORTCODE_NOT_FOUND error when Shortcode ID is invalid', async () => {
mockPrisma.shortcode.update.mockRejectedValue('RecordNotFound');
const result = await shortcodeService.updateEmbedProperties(
'invalidID',
user.uid,
'{}',
);
expect(result).toEqualLeft(SHORTCODE_NOT_FOUND);
});
test('should successfully update a Shortcodes with valid inputs', async () => {
mockPrisma.shortcode.update.mockResolvedValueOnce({
...mockEmbed,
embedProperties: '{"foo":"bar"}',
});
const result = await shortcodeService.updateEmbedProperties(
mockEmbed.id,
user.uid,
'{"foo":"bar"}',
);
expect(result).toEqualRight({
id: mockEmbed.id,
createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify('{"foo":"bar"}'),
});
});
test('should send pubsub message to `shortcode/{uid}/updated` on successful Update of Shortcode', async () => {
mockPrisma.shortcode.update.mockResolvedValueOnce({
...mockEmbed,
embedProperties: '{"foo":"bar"}',
});
const result = await shortcodeService.updateEmbedProperties(
mockEmbed.id,
user.uid,
'{"foo":"bar"}',
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`shortcode/${mockEmbed.creatorUid}/updated`,
{
id: mockEmbed.id,
createdOn: mockEmbed.createdOn,
request: JSON.stringify(mockEmbed.request),
properties: JSON.stringify('{"foo":"bar"}'),
},
);
});
});
describe('deleteShortcode', () => {
test('should return true on successful deletion of Shortcode with valid inputs', async () => {
mockPrisma.shortcode.delete.mockResolvedValueOnce(mockEmbed);
const result = await shortcodeService.deleteShortcode(mockEmbed.id);
expect(result).toEqualRight(true);
});
test('should return SHORTCODE_NOT_FOUND error when Shortcode is invalid', async () => {
mockPrisma.shortcode.delete.mockRejectedValue('RecordNotFound');
expect(shortcodeService.deleteShortcode('invalid')).resolves.toEqualLeft(
SHORTCODE_NOT_FOUND,
);
});
});
describe('fetchAllShortcodes', () => {
test('should return list of Shortcodes with valid inputs and no cursor', async () => {
mockPrisma.shortcode.findMany.mockResolvedValueOnce(
shortcodesWithUserEmail,
);
const result = await shortcodeService.fetchAllShortcodes(
{
cursor: null,
take: 10,
},
user.email,
);
expect(result).toEqual(<ShortcodeWithUserEmail[]>[
{
id: shortcodes[0].id,
request: JSON.stringify(shortcodes[0].request),
properties: JSON.stringify(shortcodes[0].embedProperties),
createdOn: shortcodes[0].createdOn,
creator: {
uid: user.uid,
email: user.email,
},
},
{
id: shortcodes[1].id,
request: JSON.stringify(shortcodes[1].request),
properties: JSON.stringify(shortcodes[1].embedProperties),
createdOn: shortcodes[1].createdOn,
creator: {
uid: user.uid,
email: user.email,
},
},
]);
});
test('should return list of Shortcode with valid inputs and cursor', async () => {
mockPrisma.shortcode.findMany.mockResolvedValue([
shortcodesWithUserEmail[1],
]);
const result = await shortcodeService.fetchAllShortcodes(
{
cursor: 'blablabla',
take: 10,
},
user.email,
);
expect(result).toEqual(<ShortcodeWithUserEmail[]>[
{
id: shortcodes[1].id,
request: JSON.stringify(shortcodes[1].request),
properties: JSON.stringify(shortcodes[1].embedProperties),
createdOn: shortcodes[1].createdOn,
creator: {
uid: user.uid,
email: user.email,
},
},
]);
});
test('should return an empty array for an invalid cursor', async () => {
mockPrisma.shortcode.findMany.mockResolvedValue([]);
const result = await shortcodeService.fetchAllShortcodes(
{
cursor: 'invalidcursor',
take: 10,
},
user.email,
);
expect(result).toHaveLength(0);
});
});
});

View File

@@ -1,12 +1,16 @@
import { Injectable, OnModuleInit } from '@nestjs/common';
import * as T from 'fp-ts/Task';
import * as O from 'fp-ts/Option';
import * as TO from 'fp-ts/TaskOption';
import * as E from 'fp-ts/Either';
import { PrismaService } from 'src/prisma/prisma.service';
import { SHORTCODE_INVALID_JSON, SHORTCODE_NOT_FOUND } from 'src/errors';
import {
SHORTCODE_INVALID_PROPERTIES_JSON,
SHORTCODE_INVALID_REQUEST_JSON,
SHORTCODE_NOT_FOUND,
SHORTCODE_PROPERTIES_NOT_FOUND,
} from 'src/errors';
import { UserDataHandler } from 'src/user/user.data.handler';
import { Shortcode } from './shortcode.model';
import { Shortcode, ShortcodeWithUserEmail } from './shortcode.model';
import { Shortcode as DBShortCode } from '@prisma/client';
import { PubSubService } from 'src/pubsub/pubsub.service';
import { UserService } from 'src/user/user.service';
@@ -46,10 +50,14 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
* @param shortcodeInfo Prisma Shortcode type
* @returns GQL Shortcode
*/
private returnShortCode(shortcodeInfo: DBShortCode): Shortcode {
private cast(shortcodeInfo: DBShortCode): Shortcode {
return <Shortcode>{
id: shortcodeInfo.id,
request: JSON.stringify(shortcodeInfo.request),
properties:
shortcodeInfo.embedProperties != null
? JSON.stringify(shortcodeInfo.embedProperties)
: null,
createdOn: shortcodeInfo.createdOn,
};
}
@@ -94,7 +102,7 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
const shortcodeInfo = await this.prisma.shortcode.findFirstOrThrow({
where: { id: shortcode },
});
return E.right(this.returnShortCode(shortcodeInfo));
return E.right(this.cast(shortcodeInfo));
} catch (error) {
return E.left(SHORTCODE_NOT_FOUND);
}
@@ -104,14 +112,22 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
* Create a new ShortCode
*
* @param request JSON string of request details
* @param userUID user UID, if present
* @param userInfo user UI
* @param properties JSON string of embed properties, if present
* @returns Either of ShortCode or error
*/
async createShortcode(request: string, userUID: string | null) {
const shortcodeData = stringToJson(request);
if (E.isLeft(shortcodeData)) return E.left(SHORTCODE_INVALID_JSON);
async createShortcode(
request: string,
properties: string | null = null,
userInfo: AuthUser,
) {
const requestData = stringToJson(request);
if (E.isLeft(requestData) || !requestData.right)
return E.left(SHORTCODE_INVALID_REQUEST_JSON);
const user = await this.userService.findUserById(userUID);
const parsedProperties = stringToJson(properties);
if (E.isLeft(parsedProperties))
return E.left(SHORTCODE_INVALID_PROPERTIES_JSON);
const generatedShortCode = await this.generateUniqueShortCodeID();
if (E.isLeft(generatedShortCode)) return E.left(generatedShortCode.left);
@@ -119,8 +135,9 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
const createdShortCode = await this.prisma.shortcode.create({
data: {
id: generatedShortCode.right,
request: shortcodeData.right,
creatorUid: O.isNone(user) ? null : user.value.uid,
request: requestData.right,
embedProperties: parsedProperties.right ?? undefined,
creatorUid: userInfo.uid,
},
});
@@ -128,11 +145,11 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
if (createdShortCode.creatorUid) {
this.pubsub.publish(
`shortcode/${createdShortCode.creatorUid}/created`,
this.returnShortCode(createdShortCode),
this.cast(createdShortCode),
);
}
return E.right(this.returnShortCode(createdShortCode));
return E.right(this.cast(createdShortCode));
}
/**
@@ -156,14 +173,14 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
});
const fetchedShortCodes: Shortcode[] = shortCodes.map((code) =>
this.returnShortCode(code),
this.cast(code),
);
return fetchedShortCodes;
}
/**
* Delete a ShortCode
* Delete a ShortCode created by User of uid
*
* @param shortcode ShortCode
* @param uid User Uid
@@ -182,7 +199,7 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
this.pubsub.publish(
`shortcode/${deletedShortCodes.creatorUid}/revoked`,
this.returnShortCode(deletedShortCodes),
this.cast(deletedShortCodes),
);
return E.right(true);
@@ -205,4 +222,118 @@ export class ShortcodeService implements UserDataHandler, OnModuleInit {
return deletedShortCodes.count;
}
/**
* Delete a Shortcode
*
* @param shortcodeID ID of Shortcode being deleted
* @returns Boolean on successful deletion
*/
async deleteShortcode(shortcodeID: string) {
try {
await this.prisma.shortcode.delete({
where: {
id: shortcodeID,
},
});
return E.right(true);
} catch (error) {
return E.left(SHORTCODE_NOT_FOUND);
}
}
/**
* Update a created Shortcode
* @param shortcodeID Shortcode ID
* @param uid User Uid
* @returns Updated Shortcode
*/
async updateEmbedProperties(
shortcodeID: string,
uid: string,
updatedProps: string,
) {
if (!updatedProps) return E.left(SHORTCODE_PROPERTIES_NOT_FOUND);
const parsedProperties = stringToJson(updatedProps);
if (E.isLeft(parsedProperties) || !parsedProperties.right)
return E.left(SHORTCODE_INVALID_PROPERTIES_JSON);
try {
const updatedShortcode = await this.prisma.shortcode.update({
where: {
creator_uid_shortcode_unique: {
creatorUid: uid,
id: shortcodeID,
},
},
data: {
embedProperties: parsedProperties.right,
},
});
this.pubsub.publish(
`shortcode/${updatedShortcode.creatorUid}/updated`,
this.cast(updatedShortcode),
);
return E.right(this.cast(updatedShortcode));
} catch (error) {
return E.left(SHORTCODE_NOT_FOUND);
}
}
/**
* Fetch all created ShortCodes
*
* @param args Pagination arguments
* @param userEmail User email
* @returns ShortcodeWithUserEmail
*/
async fetchAllShortcodes(
args: PaginationArgs,
userEmail: string | null = null,
) {
const shortCodes = await this.prisma.shortcode.findMany({
where: userEmail
? {
User: {
email: userEmail,
},
}
: undefined,
orderBy: {
createdOn: 'desc',
},
skip: args.cursor ? 1 : 0,
take: args.take,
cursor: args.cursor ? { id: args.cursor } : undefined,
include: {
User: true,
},
});
const fetchedShortCodes: ShortcodeWithUserEmail[] = shortCodes.map(
(code) => {
return <ShortcodeWithUserEmail>{
id: code.id,
request: JSON.stringify(code.request),
properties:
code.embedProperties != null
? JSON.stringify(code.embedProperties)
: null,
createdOn: code.createdOn,
creator: code.User
? {
uid: code.User.uid,
email: code.User.email,
}
: null,
};
},
);
return fetchedShortCodes;
}
}

View File

@@ -14,6 +14,13 @@ export class CreateRootTeamCollectionArgs {
@Field({ name: 'title', description: 'Title of the new collection' })
title: string;
@Field({
name: 'data',
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
}
@ArgsType()
@@ -26,6 +33,13 @@ export class CreateChildTeamCollectionArgs {
@Field({ name: 'childTitle', description: 'Title of the new collection' })
childTitle: string;
@Field({
name: 'data',
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
}
@ArgsType()
@@ -33,12 +47,14 @@ export class RenameTeamCollectionArgs {
@Field(() => ID, {
name: 'collectionID',
description: 'ID of the collection',
deprecationReason: 'Switch to updateTeamCollection mutation instead',
})
collectionID: string;
@Field({
name: 'newTitle',
description: 'The updated title of the collection',
deprecationReason: 'Switch to updateTeamCollection mutation instead',
})
newTitle: string;
}
@@ -98,3 +114,26 @@ export class ReplaceTeamCollectionArgs {
})
parentCollectionID?: string;
}
@ArgsType()
export class UpdateTeamCollectionArgs {
@Field(() => ID, {
name: 'collectionID',
description: 'ID of the collection',
})
collectionID: string;
@Field({
name: 'newTitle',
description: 'The updated title of the collection',
nullable: true,
})
newTitle: string;
@Field({
name: 'data',
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
}

View File

@@ -12,12 +12,17 @@ export class TeamCollection {
})
title: string;
@Field({
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
@Field(() => ID, {
description: 'ID of the collection',
nullable: true,
})
parentID: string;
teamID: string;
}
@ObjectType()

View File

@@ -25,6 +25,7 @@ import {
MoveTeamCollectionArgs,
RenameTeamCollectionArgs,
ReplaceTeamCollectionArgs,
UpdateTeamCollectionArgs,
UpdateTeamCollectionOrderArgs,
} from './input-type.args';
import * as E from 'fp-ts/Either';
@@ -141,7 +142,14 @@ export class TeamCollectionResolver {
);
if (E.isLeft(teamCollections)) throwErr(teamCollections.left);
return teamCollections.right;
return <TeamCollection>{
id: teamCollections.right.id,
title: teamCollections.right.title,
parentID: teamCollections.right.parentID,
data: !teamCollections.right.data
? null
: JSON.stringify(teamCollections.right.data),
};
}
// Mutations
@@ -155,6 +163,7 @@ export class TeamCollectionResolver {
const teamCollection = await this.teamCollectionService.createCollection(
args.teamID,
args.title,
args.data,
null,
);
@@ -230,6 +239,7 @@ export class TeamCollectionResolver {
const teamCollection = await this.teamCollectionService.createCollection(
team.right.id,
args.childTitle,
args.data,
args.collectionID,
);
@@ -239,6 +249,7 @@ export class TeamCollectionResolver {
@Mutation(() => TeamCollection, {
description: 'Rename a collection',
deprecationReason: 'Switch to updateTeamCollection mutation instead',
})
@UseGuards(GqlAuthGuard, GqlCollectionTeamMemberGuard)
@RequiresTeamRole(TeamMemberRole.OWNER, TeamMemberRole.EDITOR)
@@ -303,6 +314,23 @@ export class TeamCollectionResolver {
return request.right;
}
@Mutation(() => TeamCollection, {
description: 'Update Team Collection details',
})
@UseGuards(GqlAuthGuard, GqlCollectionTeamMemberGuard)
@RequiresTeamRole(TeamMemberRole.OWNER, TeamMemberRole.EDITOR)
async updateTeamCollection(@Args() args: UpdateTeamCollectionArgs) {
const updatedTeamCollection =
await this.teamCollectionService.updateTeamCollection(
args.collectionID,
args.data,
args.newTitle,
);
if (E.isLeft(updatedTeamCollection)) throwErr(updatedTeamCollection.left);
return updatedTeamCollection.right;
}
// Subscriptions
@Subscription(() => TeamCollection, {

View File

@@ -1,6 +1,7 @@
import { Team, TeamCollection as DBTeamCollection } from '@prisma/client';
import { mock, mockDeep, mockReset } from 'jest-mock-extended';
import { mockDeep, mockReset } from 'jest-mock-extended';
import {
TEAM_COLL_DATA_INVALID,
TEAM_COLL_DEST_SAME,
TEAM_COLL_INVALID_JSON,
TEAM_COLL_IS_PARENT_COLL,
@@ -18,8 +19,6 @@ import { PubSubService } from 'src/pubsub/pubsub.service';
import { AuthUser } from 'src/types/AuthUser';
import { TeamCollectionService } from './team-collection.service';
import { TeamCollection } from './team-collection.model';
import { TeamCollectionModule } from './team-collection.module';
import * as E from 'fp-ts/Either';
const mockPrisma = mockDeep<PrismaService>();
const mockPubSub = mockDeep<PubSubService>();
@@ -54,35 +53,60 @@ const rootTeamCollection: DBTeamCollection = {
id: '123',
orderIndex: 1,
parentID: null,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
};
const rootTeamCollectionsCasted: TeamCollection = {
id: rootTeamCollection.id,
title: rootTeamCollection.title,
parentID: rootTeamCollection.parentID,
data: JSON.stringify(rootTeamCollection.data),
};
const rootTeamCollection_2: DBTeamCollection = {
id: 'erv',
orderIndex: 2,
parentID: null,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
};
const rootTeamCollection_2Casted: TeamCollection = {
id: 'erv',
parentID: null,
data: JSON.stringify(rootTeamCollection_2.data),
title: 'Root Collection 1',
};
const childTeamCollection: DBTeamCollection = {
id: 'rfe',
orderIndex: 1,
parentID: rootTeamCollection.id,
data: {},
title: 'Child Collection 1',
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
};
const childTeamCollectionCasted: TeamCollection = {
id: 'rfe',
parentID: rootTeamCollection.id,
data: JSON.stringify(childTeamCollection.data),
title: 'Child Collection 1',
};
const childTeamCollection_2: DBTeamCollection = {
id: 'bgdz',
orderIndex: 1,
data: {},
parentID: rootTeamCollection_2.id,
title: 'Child Collection 1',
teamID: team.id,
@@ -90,11 +114,20 @@ const childTeamCollection_2: DBTeamCollection = {
updatedOn: currentTime,
};
const childTeamCollection_2Casted: TeamCollection = {
id: 'bgdz',
data: JSON.stringify(childTeamCollection_2.data),
parentID: rootTeamCollection_2.id,
title: 'Child Collection 1',
};
const rootTeamCollectionList: DBTeamCollection[] = [
{
id: 'fdv',
orderIndex: 1,
parentID: null,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -105,6 +138,8 @@ const rootTeamCollectionList: DBTeamCollection[] = [
orderIndex: 2,
parentID: null,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -114,6 +149,8 @@ const rootTeamCollectionList: DBTeamCollection[] = [
orderIndex: 3,
parentID: null,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -122,6 +159,8 @@ const rootTeamCollectionList: DBTeamCollection[] = [
id: 'bre3',
orderIndex: 4,
parentID: null,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -132,6 +171,8 @@ const rootTeamCollectionList: DBTeamCollection[] = [
orderIndex: 5,
parentID: null,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -142,6 +183,8 @@ const rootTeamCollectionList: DBTeamCollection[] = [
parentID: null,
title: 'Root Collection 1',
teamID: team.id,
data: {},
createdOn: currentTime,
updatedOn: currentTime,
},
@@ -151,6 +194,8 @@ const rootTeamCollectionList: DBTeamCollection[] = [
parentID: null,
title: 'Root Collection 1',
teamID: team.id,
data: {},
createdOn: currentTime,
updatedOn: currentTime,
},
@@ -159,6 +204,7 @@ const rootTeamCollectionList: DBTeamCollection[] = [
orderIndex: 8,
parentID: null,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -168,6 +214,7 @@ const rootTeamCollectionList: DBTeamCollection[] = [
orderIndex: 9,
parentID: null,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -178,17 +225,83 @@ const rootTeamCollectionList: DBTeamCollection[] = [
parentID: null,
title: 'Root Collection 1',
teamID: team.id,
data: {},
createdOn: currentTime,
updatedOn: currentTime,
},
];
const rootTeamCollectionListCasted: TeamCollection[] = [
{
id: 'fdv',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: 'fbbg',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: 'fgbfg',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: 'bre3',
parentID: null,
data: JSON.stringify(rootTeamCollection.data),
title: 'Root Collection 1',
},
{
id: 'hghgf',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: '123',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: '54tyh',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: '234re',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: '34rtg',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
{
id: '45tgh',
parentID: null,
title: 'Root Collection 1',
data: JSON.stringify(rootTeamCollection.data),
},
];
const childTeamCollectionList: DBTeamCollection[] = [
{
id: '123',
orderIndex: 1,
parentID: rootTeamCollection.id,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -198,6 +311,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
orderIndex: 2,
parentID: rootTeamCollection.id,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -207,6 +322,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
orderIndex: 3,
parentID: rootTeamCollection.id,
title: 'Root Collection 1',
data: {},
teamID: team.id,
createdOn: currentTime,
updatedOn: currentTime,
@@ -215,6 +332,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '567',
orderIndex: 4,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -224,6 +343,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '123',
orderIndex: 5,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -233,6 +354,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '678',
orderIndex: 6,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -242,6 +365,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '789',
orderIndex: 7,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -251,6 +376,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '890',
orderIndex: 8,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -260,6 +387,7 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '012',
orderIndex: 9,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -269,6 +397,8 @@ const childTeamCollectionList: DBTeamCollection[] = [
id: '0bhu',
orderIndex: 10,
parentID: rootTeamCollection.id,
data: {},
title: 'Root Collection 1',
teamID: team.id,
createdOn: currentTime,
@@ -276,6 +406,75 @@ const childTeamCollectionList: DBTeamCollection[] = [
},
];
const childTeamCollectionListCasted: TeamCollection[] = [
{
id: '123',
parentID: rootTeamCollection.id,
title: 'Root Collection 1',
data: JSON.stringify({}),
},
{
id: '345',
parentID: rootTeamCollection.id,
title: 'Root Collection 1',
data: JSON.stringify({}),
},
{
id: '456',
parentID: rootTeamCollection.id,
title: 'Root Collection 1',
data: JSON.stringify({}),
},
{
id: '567',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
{
id: '123',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
{
id: '678',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
{
id: '789',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
{
id: '890',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
{
id: '012',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
{
id: '0bhu',
parentID: rootTeamCollection.id,
data: JSON.stringify({}),
title: 'Root Collection 1',
},
];
beforeEach(() => {
mockReset(mockPrisma);
mockPubSub.publish.mockClear();
@@ -314,7 +513,7 @@ describe('getParentOfCollection', () => {
const result = await teamCollectionService.getParentOfCollection(
childTeamCollection.id,
);
expect(result).toEqual(rootTeamCollection);
expect(result).toEqual(rootTeamCollectionsCasted);
});
test('should return null successfully for a root collection with valid collectionID', async () => {
@@ -350,7 +549,7 @@ describe('getChildrenOfCollection', () => {
null,
10,
);
expect(result).toEqual(childTeamCollectionList);
expect(result).toEqual(childTeamCollectionListCasted);
});
test('should return a list of 3 child collections successfully with cursor being equal to the 7th item in the list', async () => {
@@ -366,9 +565,9 @@ describe('getChildrenOfCollection', () => {
10,
);
expect(result).toEqual([
{ ...childTeamCollectionList[7] },
{ ...childTeamCollectionList[8] },
{ ...childTeamCollectionList[9] },
{ ...childTeamCollectionListCasted[7] },
{ ...childTeamCollectionListCasted[8] },
{ ...childTeamCollectionListCasted[9] },
]);
});
@@ -395,7 +594,7 @@ describe('getTeamRootCollections', () => {
null,
10,
);
expect(result).toEqual(rootTeamCollectionList);
expect(result).toEqual(rootTeamCollectionListCasted);
});
test('should return a list of 3 root collections successfully with cursor being equal to the 7th item in the list', async () => {
@@ -411,9 +610,9 @@ describe('getTeamRootCollections', () => {
10,
);
expect(result).toEqual([
{ ...rootTeamCollectionList[7] },
{ ...rootTeamCollectionList[8] },
{ ...rootTeamCollectionList[9] },
{ ...rootTeamCollectionListCasted[7] },
{ ...rootTeamCollectionListCasted[8] },
{ ...rootTeamCollectionListCasted[9] },
]);
});
@@ -467,6 +666,7 @@ describe('createCollection', () => {
const result = await teamCollectionService.createCollection(
rootTeamCollection.teamID,
'ab',
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.id,
);
expect(result).toEqualLeft(TEAM_COLL_SHORT_TITLE);
@@ -481,11 +681,27 @@ describe('createCollection', () => {
const result = await teamCollectionService.createCollection(
rootTeamCollection.teamID,
'abcd',
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.id,
);
expect(result).toEqualLeft(TEAM_NOT_OWNER);
});
test('should throw TEAM_COLL_DATA_INVALID when parent TeamCollection does not belong to the team', async () => {
// isOwnerCheck
mockPrisma.teamCollection.findFirstOrThrow.mockResolvedValueOnce(
rootTeamCollection,
);
const result = await teamCollectionService.createCollection(
rootTeamCollection.teamID,
'abcd',
'{',
rootTeamCollection.id,
);
expect(result).toEqualLeft(TEAM_COLL_DATA_INVALID);
});
test('should successfully create a new root TeamCollection with valid inputs', async () => {
// isOwnerCheck
mockPrisma.teamCollection.findFirstOrThrow.mockResolvedValueOnce(
@@ -499,9 +715,10 @@ describe('createCollection', () => {
const result = await teamCollectionService.createCollection(
rootTeamCollection.teamID,
'abcdefg',
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.id,
);
expect(result).toEqualRight(rootTeamCollection);
expect(result).toEqualRight(rootTeamCollectionsCasted);
});
test('should successfully create a new child TeamCollection with valid inputs', async () => {
@@ -517,9 +734,10 @@ describe('createCollection', () => {
const result = await teamCollectionService.createCollection(
childTeamCollection.teamID,
childTeamCollection.title,
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.id,
);
expect(result).toEqualRight(childTeamCollection);
expect(result).toEqualRight(childTeamCollectionCasted);
});
test('should send pubsub message to "team_coll/<teamID>/coll_added" if child TeamCollection is created successfully', async () => {
@@ -535,11 +753,13 @@ describe('createCollection', () => {
const result = await teamCollectionService.createCollection(
childTeamCollection.teamID,
childTeamCollection.title,
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.id,
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${childTeamCollection.teamID}/coll_added`,
childTeamCollection,
childTeamCollectionCasted,
);
});
@@ -556,11 +776,13 @@ describe('createCollection', () => {
const result = await teamCollectionService.createCollection(
rootTeamCollection.teamID,
'abcdefg',
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.id,
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${rootTeamCollection.teamID}/coll_added`,
rootTeamCollection,
rootTeamCollectionsCasted,
);
});
});
@@ -590,7 +812,7 @@ describe('renameCollection', () => {
'NewTitle',
);
expect(result).toEqualRight({
...rootTeamCollection,
...rootTeamCollectionsCasted,
title: 'NewTitle',
});
});
@@ -628,7 +850,7 @@ describe('renameCollection', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${rootTeamCollection.teamID}/coll_updated`,
{
...rootTeamCollection,
...rootTeamCollectionsCasted,
title: 'NewTitle',
},
);
@@ -835,9 +1057,8 @@ describe('moveCollection', () => {
null,
);
expect(result).toEqualRight({
...childTeamCollection,
...childTeamCollectionCasted,
parentID: null,
orderIndex: 2,
});
});
@@ -893,9 +1114,8 @@ describe('moveCollection', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${childTeamCollection.teamID}/coll_moved`,
{
...childTeamCollection,
...childTeamCollectionCasted,
parentID: null,
orderIndex: 2,
},
);
});
@@ -934,9 +1154,8 @@ describe('moveCollection', () => {
childTeamCollection_2.id,
);
expect(result).toEqualRight({
...rootTeamCollection,
parentID: childTeamCollection_2.id,
orderIndex: 1,
...rootTeamCollectionsCasted,
parentID: childTeamCollection_2Casted.id,
});
});
@@ -976,9 +1195,8 @@ describe('moveCollection', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${childTeamCollection_2.teamID}/coll_moved`,
{
...rootTeamCollection,
parentID: childTeamCollection_2.id,
orderIndex: 1,
...rootTeamCollectionsCasted,
parentID: childTeamCollection_2Casted.id,
},
);
});
@@ -1017,9 +1235,8 @@ describe('moveCollection', () => {
childTeamCollection_2.id,
);
expect(result).toEqualRight({
...childTeamCollection,
parentID: childTeamCollection_2.id,
orderIndex: 1,
...childTeamCollectionCasted,
parentID: childTeamCollection_2Casted.id,
});
});
@@ -1059,9 +1276,8 @@ describe('moveCollection', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${childTeamCollection.teamID}/coll_moved`,
{
...childTeamCollection,
parentID: childTeamCollection_2.id,
orderIndex: 1,
...childTeamCollectionCasted,
parentID: childTeamCollection_2Casted.id,
},
);
});
@@ -1157,7 +1373,7 @@ describe('updateCollectionOrder', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${childTeamCollectionList[4].teamID}/coll_order_updated`,
{
collection: rootTeamCollectionList[4],
collection: rootTeamCollectionListCasted[4],
nextCollection: null,
},
);
@@ -1238,8 +1454,8 @@ describe('updateCollectionOrder', () => {
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${childTeamCollectionList[2].teamID}/coll_order_updated`,
{
collection: childTeamCollectionList[4],
nextCollection: childTeamCollectionList[2],
collection: childTeamCollectionListCasted[4],
nextCollection: childTeamCollectionListCasted[2],
},
);
});
@@ -1305,7 +1521,7 @@ describe('importCollectionsFromJSON', () => {
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${rootTeamCollection.teamID}/coll_added`,
rootTeamCollection,
rootTeamCollectionsCasted,
);
});
});
@@ -1424,7 +1640,7 @@ describe('replaceCollectionsWithJSON', () => {
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${rootTeamCollection.teamID}/coll_added`,
rootTeamCollection,
rootTeamCollectionsCasted,
);
});
});
@@ -1461,4 +1677,64 @@ describe('totalCollectionsInTeam', () => {
});
});
describe('updateTeamCollection', () => {
test('should throw TEAM_COLL_SHORT_TITLE if title is invalid', async () => {
const result = await teamCollectionService.updateTeamCollection(
rootTeamCollection.id,
JSON.stringify(rootTeamCollection.data),
'de',
);
expect(result).toEqualLeft(TEAM_COLL_SHORT_TITLE);
});
test('should throw TEAM_COLL_DATA_INVALID is collection data is invalid', async () => {
const result = await teamCollectionService.updateTeamCollection(
rootTeamCollection.id,
'{',
rootTeamCollection.title,
);
expect(result).toEqualLeft(TEAM_COLL_DATA_INVALID);
});
test('should throw TEAM_COLL_NOT_FOUND is collectionID is invalid', async () => {
mockPrisma.teamCollection.update.mockRejectedValueOnce('RecordNotFound');
const result = await teamCollectionService.updateTeamCollection(
'invalid_id',
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.title,
);
expect(result).toEqualLeft(TEAM_COLL_NOT_FOUND);
});
test('should successfully update a collection', async () => {
mockPrisma.teamCollection.update.mockResolvedValueOnce(rootTeamCollection);
const result = await teamCollectionService.updateTeamCollection(
rootTeamCollection.id,
JSON.stringify({ foo: 'bar' }),
'new_title',
);
expect(result).toEqualRight({
data: JSON.stringify({ foo: 'bar' }),
title: 'new_title',
...rootTeamCollectionsCasted,
});
});
test('should send pubsub message to "team_coll/<teamID>/coll_updated" if TeamCollection is updated successfully', async () => {
mockPrisma.teamCollection.update.mockResolvedValueOnce(rootTeamCollection);
const result = await teamCollectionService.updateTeamCollection(
rootTeamCollection.id,
JSON.stringify(rootTeamCollection.data),
rootTeamCollection.title,
);
expect(mockPubSub.publish).toHaveBeenCalledWith(
`team_coll/${rootTeamCollection.teamID}/coll_updated`,
rootTeamCollectionsCasted,
);
});
});
//ToDo: write test cases for exportCollectionsToJSON

View File

@@ -13,6 +13,7 @@ import {
TEAM_COLL_IS_PARENT_COLL,
TEAM_COL_SAME_NEXT_COLL,
TEAM_COL_REORDERING_FAILED,
TEAM_COLL_DATA_INVALID,
} from '../errors';
import { PubSubService } from '../pubsub/pubsub.service';
import { isValidLength } from 'src/utils';
@@ -69,6 +70,7 @@ export class TeamCollectionService {
this.generatePrismaQueryObjForFBCollFolder(f, teamID, index + 1),
),
},
data: folder.data ?? undefined,
};
}
@@ -118,6 +120,7 @@ export class TeamCollectionService {
name: collection.right.title,
folders: childrenCollectionObjects,
requests: requests.map((x) => x.request),
data: JSON.stringify(collection.right.data),
};
return E.right(result);
@@ -198,8 +201,11 @@ export class TeamCollectionService {
),
);
teamCollections.forEach((x) =>
this.pubsub.publish(`team_coll/${destTeamID}/coll_added`, x),
teamCollections.forEach((collection) =>
this.pubsub.publish(
`team_coll/${destTeamID}/coll_added`,
this.cast(collection),
),
);
return E.right(true);
@@ -268,8 +274,11 @@ export class TeamCollectionService {
),
);
teamCollections.forEach((x) =>
this.pubsub.publish(`team_coll/${destTeamID}/coll_added`, x),
teamCollections.forEach((collections) =>
this.pubsub.publish(
`team_coll/${destTeamID}/coll_added`,
this.cast(collections),
),
);
return E.right(true);
@@ -277,11 +286,17 @@ export class TeamCollectionService {
/**
* Typecast a database TeamCollection to a TeamCollection model
*
* @param teamCollection database TeamCollection
* @returns TeamCollection model
*/
private cast(teamCollection: DBTeamCollection): TeamCollection {
return <TeamCollection>{ ...teamCollection };
return <TeamCollection>{
id: teamCollection.id,
title: teamCollection.title,
parentID: teamCollection.parentID,
data: !teamCollection.data ? null : JSON.stringify(teamCollection.data),
};
}
/**
@@ -324,7 +339,7 @@ export class TeamCollectionService {
});
if (!teamCollection) return null;
return teamCollection.parent;
return !teamCollection.parent ? null : this.cast(teamCollection.parent);
}
/**
@@ -335,12 +350,12 @@ export class TeamCollectionService {
* @param take Number of items we want returned
* @returns A list of child collections
*/
getChildrenOfCollection(
async getChildrenOfCollection(
collectionID: string,
cursor: string | null,
take: number,
) {
return this.prisma.teamCollection.findMany({
const res = await this.prisma.teamCollection.findMany({
where: {
parentID: collectionID,
},
@@ -351,6 +366,12 @@ export class TeamCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const childCollections = res.map((teamCollection) =>
this.cast(teamCollection),
);
return childCollections;
}
/**
@@ -366,7 +387,7 @@ export class TeamCollectionService {
cursor: string | null,
take: number,
) {
return this.prisma.teamCollection.findMany({
const res = await this.prisma.teamCollection.findMany({
where: {
teamID,
parentID: null,
@@ -378,6 +399,12 @@ export class TeamCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const teamCollections = res.map((teamCollection) =>
this.cast(teamCollection),
);
return teamCollections;
}
/**
@@ -470,6 +497,7 @@ export class TeamCollectionService {
async createCollection(
teamID: string,
title: string,
data: string | null = null,
parentTeamCollectionID: string | null,
) {
const isTitleValid = isValidLength(title, this.TITLE_LENGTH);
@@ -481,6 +509,13 @@ export class TeamCollectionService {
if (O.isNone(isOwner)) return E.left(TEAM_NOT_OWNER);
}
if (data === '') return E.left(TEAM_COLL_DATA_INVALID);
if (data) {
const jsonReq = stringToJson(data);
if (E.isLeft(jsonReq)) return E.left(TEAM_COLL_DATA_INVALID);
data = jsonReq.right;
}
const isParent = parentTeamCollectionID
? {
connect: {
@@ -498,18 +533,23 @@ export class TeamCollectionService {
},
},
parent: isParent,
data: data ?? undefined,
orderIndex: !parentTeamCollectionID
? (await this.getRootCollectionsCount(teamID)) + 1
: (await this.getChildCollectionsCount(parentTeamCollectionID)) + 1,
},
});
this.pubsub.publish(`team_coll/${teamID}/coll_added`, teamCollection);
this.pubsub.publish(
`team_coll/${teamID}/coll_added`,
this.cast(teamCollection),
);
return E.right(this.cast(teamCollection));
}
/**
* @deprecated Use updateTeamCollection method instead
* Update the title of a TeamCollection
*
* @param collectionID The Collection ID
@@ -532,10 +572,10 @@ export class TeamCollectionService {
this.pubsub.publish(
`team_coll/${updatedTeamCollection.teamID}/coll_updated`,
updatedTeamCollection,
this.cast(updatedTeamCollection),
);
return E.right(updatedTeamCollection);
return E.right(this.cast(updatedTeamCollection));
} catch (error) {
return E.left(TEAM_COLL_NOT_FOUND);
}
@@ -694,8 +734,8 @@ export class TeamCollectionService {
* @returns An Option of boolean, is parent or not
*/
private async isParent(
collection: TeamCollection,
destCollection: TeamCollection,
collection: DBTeamCollection,
destCollection: DBTeamCollection,
): Promise<O.Option<boolean>> {
//* Recursively check if collection is a parent by going up the tree of child-parent collections until we reach a root collection i.e parentID === null
//* Valid condition, isParent returns false
@@ -971,4 +1011,49 @@ export class TeamCollectionService {
const teamCollectionsCount = this.prisma.teamCollection.count();
return teamCollectionsCount;
}
/**
* Update Team Collection details
*
* @param collectionID Collection ID
* @param collectionData new header data in a JSONified string form
* @param newTitle New title of the collection
* @returns Updated TeamCollection
*/
async updateTeamCollection(
collectionID: string,
collectionData: string = null,
newTitle: string = null,
) {
try {
if (newTitle != null) {
const isTitleValid = isValidLength(newTitle, this.TITLE_LENGTH);
if (!isTitleValid) return E.left(TEAM_COLL_SHORT_TITLE);
}
if (collectionData === '') return E.left(TEAM_COLL_DATA_INVALID);
if (collectionData) {
const jsonReq = stringToJson(collectionData);
if (E.isLeft(jsonReq)) return E.left(TEAM_COLL_DATA_INVALID);
collectionData = jsonReq.right;
}
const updatedTeamCollection = await this.prisma.teamCollection.update({
where: { id: collectionID },
data: {
data: collectionData ?? undefined,
title: newTitle ?? undefined,
},
});
this.pubsub.publish(
`team_coll/${updatedTeamCollection.teamID}/coll_updated`,
this.cast(updatedTeamCollection),
);
return E.right(this.cast(updatedTeamCollection));
} catch (e) {
return E.left(TEAM_COLL_NOT_FOUND);
}
}
}

View File

@@ -301,7 +301,7 @@ describe('TeamEnvironmentsService', () => {
describe('createDuplicateEnvironment', () => {
test('should successfully duplicate an existing team environment', async () => {
mockPrisma.teamEnvironment.findFirst.mockResolvedValueOnce(
mockPrisma.teamEnvironment.findFirstOrThrow.mockResolvedValueOnce(
teamEnvironment,
);
@@ -322,7 +322,9 @@ describe('TeamEnvironmentsService', () => {
});
test('should throw TEAM_ENVIRONMMENT_NOT_FOUND if provided id is invalid', async () => {
mockPrisma.teamEnvironment.findFirst.mockRejectedValue('NotFoundError');
mockPrisma.teamEnvironment.findFirstOrThrow.mockRejectedValue(
'NotFoundError',
);
const result = await teamEnvironmentsService.createDuplicateEnvironment(
teamEnvironment.id,
@@ -332,7 +334,7 @@ describe('TeamEnvironmentsService', () => {
});
test('should send pubsub message to "team_environment/<teamID>/created" if team environment is updated successfully', async () => {
mockPrisma.teamEnvironment.findFirst.mockResolvedValueOnce(
mockPrisma.teamEnvironment.findFirstOrThrow.mockResolvedValueOnce(
teamEnvironment,
);

View File

@@ -183,11 +183,10 @@ export class TeamEnvironmentsService {
*/
async createDuplicateEnvironment(id: string) {
try {
const environment = await this.prisma.teamEnvironment.findFirst({
const environment = await this.prisma.teamEnvironment.findFirstOrThrow({
where: {
id: id,
},
rejectOnNotFound: true,
});
const result = await this.prisma.teamEnvironment.create({

View File

@@ -42,6 +42,7 @@ const teamCollection: DbTeamCollection = {
id: 'team-coll-1',
parentID: null,
teamID: team.id,
data: {},
title: 'Team Collection 1',
orderIndex: 1,
createdOn: new Date(),

View File

@@ -1,6 +1,8 @@
// This interface defines how data will be received from the app when we are importing Hoppscotch collections
export interface CollectionFolder {
id?: string;
folders: CollectionFolder[];
requests: any[];
name: string;
data?: string;
}

View File

@@ -6,6 +6,13 @@ import { PaginationArgs } from 'src/types/input-types.args';
export class CreateRootUserCollectionArgs {
@Field({ name: 'title', description: 'Title of the new user collection' })
title: string;
@Field({
name: 'data',
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
}
@ArgsType()
export class CreateChildUserCollectionArgs {
@@ -17,6 +24,13 @@ export class CreateChildUserCollectionArgs {
description: 'ID of the parent to the new user collection',
})
parentUserCollectionID: string;
@Field({
name: 'data',
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
}
@ArgsType()
@@ -95,3 +109,26 @@ export class ImportUserCollectionsFromJSONArgs {
})
parentCollectionID?: string;
}
@ArgsType()
export class UpdateUserCollectionsArgs {
@Field(() => ID, {
name: 'userCollectionID',
description: 'ID of the user collection',
})
userCollectionID: string;
@Field({
name: 'newTitle',
description: 'The updated title of the user collection',
nullable: true,
})
newTitle: string;
@Field({
name: 'data',
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
}

View File

@@ -30,6 +30,7 @@ import {
MoveUserCollectionArgs,
RenameUserCollectionsArgs,
UpdateUserCollectionArgs,
UpdateUserCollectionsArgs,
} from './input-type.args';
import { ReqType } from 'src/types/RequestTypes';
import * as E from 'fp-ts/Either';
@@ -142,7 +143,13 @@ export class UserCollectionResolver {
);
if (E.isLeft(userCollection)) throwErr(userCollection.left);
return userCollection.right;
return <UserCollection>{
...userCollection.right,
userID: userCollection.right.userUid,
data: !userCollection.right.data
? null
: JSON.stringify(userCollection.right.data),
};
}
@Query(() => UserCollectionExportJSONData, {
@@ -191,6 +198,7 @@ export class UserCollectionResolver {
await this.userCollectionService.createUserCollection(
user,
args.title,
args.data,
null,
ReqType.REST,
);
@@ -212,6 +220,7 @@ export class UserCollectionResolver {
await this.userCollectionService.createUserCollection(
user,
args.title,
args.data,
null,
ReqType.GQL,
);
@@ -232,6 +241,7 @@ export class UserCollectionResolver {
await this.userCollectionService.createUserCollection(
user,
args.title,
args.data,
args.parentUserCollectionID,
ReqType.GQL,
);
@@ -252,6 +262,7 @@ export class UserCollectionResolver {
await this.userCollectionService.createUserCollection(
user,
args.title,
args.data,
args.parentUserCollectionID,
ReqType.REST,
);
@@ -359,6 +370,26 @@ export class UserCollectionResolver {
return importedCollection.right;
}
@Mutation(() => UserCollection, {
description: 'Update a UserCollection',
})
@UseGuards(GqlAuthGuard)
async updateUserCollection(
@GqlUser() user: AuthUser,
@Args() args: UpdateUserCollectionsArgs,
) {
const updatedUserCollection =
await this.userCollectionService.updateUserCollection(
args.newTitle,
args.data,
args.userCollectionID,
user.uid,
);
if (E.isLeft(updatedUserCollection)) throwErr(updatedUserCollection.left);
return updatedUserCollection.right;
}
// Subscriptions
@Subscription(() => UserCollection, {
description: 'Listen for User Collection Creation',

View File

@@ -12,6 +12,7 @@ import {
USER_NOT_FOUND,
USER_NOT_OWNER,
USER_COLL_INVALID_JSON,
USER_COLL_DATA_INVALID,
} from 'src/errors';
import { PrismaService } from 'src/prisma/prisma.service';
import { AuthUser } from 'src/types/AuthUser';
@@ -43,8 +44,12 @@ export class UserCollectionService {
*/
private cast(collection: UserCollection) {
return <UserCollectionModel>{
...collection,
id: collection.id,
title: collection.title,
type: collection.type,
parentID: collection.parentID,
userID: collection.userUid,
data: !collection.data ? null : JSON.stringify(collection.data),
};
}
@@ -146,7 +151,7 @@ export class UserCollectionService {
},
});
return parent;
return !parent ? null : this.cast(parent);
}
/**
@@ -164,7 +169,7 @@ export class UserCollectionService {
take: number,
type: ReqType,
) {
return this.prisma.userCollection.findMany({
const res = await this.prisma.userCollection.findMany({
where: {
parentID: collectionID,
type: type,
@@ -176,6 +181,12 @@ export class UserCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const childCollections = res.map((childCollection) =>
this.cast(childCollection),
);
return childCollections;
}
/**
@@ -211,12 +222,20 @@ export class UserCollectionService {
async createUserCollection(
user: AuthUser,
title: string,
data: string | null = null,
parentUserCollectionID: string | null,
type: ReqType,
) {
const isTitleValid = isValidLength(title, this.TITLE_LENGTH);
if (!isTitleValid) return E.left(USER_COLL_SHORT_TITLE);
if (data === '') return E.left(USER_COLL_DATA_INVALID);
if (data) {
const jsonReq = stringToJson(data);
if (E.isLeft(jsonReq)) return E.left(USER_COLL_DATA_INVALID);
data = jsonReq.right;
}
// If creating a child collection
if (parentUserCollectionID !== null) {
const parentCollection = await this.getUserCollection(
@@ -251,15 +270,19 @@ export class UserCollectionService {
},
},
parent: isParent,
data: data ?? undefined,
orderIndex: !parentUserCollectionID
? (await this.getRootCollectionsCount(user.uid)) + 1
: (await this.getChildCollectionsCount(parentUserCollectionID)) + 1,
},
});
await this.pubsub.publish(`user_coll/${user.uid}/created`, userCollection);
await this.pubsub.publish(
`user_coll/${user.uid}/created`,
this.cast(userCollection),
);
return E.right(userCollection);
return E.right(this.cast(userCollection));
}
/**
@@ -276,7 +299,7 @@ export class UserCollectionService {
take: number,
type: ReqType,
) {
return this.prisma.userCollection.findMany({
const res = await this.prisma.userCollection.findMany({
where: {
userUid: user.uid,
parentID: null,
@@ -289,6 +312,12 @@ export class UserCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const userCollections = res.map((childCollection) =>
this.cast(childCollection),
);
return userCollections;
}
/**
@@ -307,7 +336,7 @@ export class UserCollectionService {
take: number,
type: ReqType,
) {
return this.prisma.userCollection.findMany({
const res = await this.prisma.userCollection.findMany({
where: {
userUid: user.uid,
parentID: userCollectionID,
@@ -317,9 +346,16 @@ export class UserCollectionService {
skip: cursor ? 1 : 0,
cursor: cursor ? { id: cursor } : undefined,
});
const childCollections = res.map((childCollection) =>
this.cast(childCollection),
);
return childCollections;
}
/**
* @deprecated Use updateUserCollection method instead
* Update the title of a UserCollection
*
* @param newTitle The new title of collection
@@ -351,10 +387,10 @@ export class UserCollectionService {
this.pubsub.publish(
`user_coll/${updatedUserCollection.userUid}/updated`,
updatedUserCollection,
this.cast(updatedUserCollection),
);
return E.right(updatedUserCollection);
return E.right(this.cast(updatedUserCollection));
} catch (error) {
return E.left(USER_COLL_NOT_FOUND);
}
@@ -591,10 +627,10 @@ export class UserCollectionService {
this.pubsub.publish(
`user_coll/${collection.right.userUid}/moved`,
updatedCollection.right,
this.cast(updatedCollection.right),
);
return E.right(updatedCollection.right);
return E.right(this.cast(updatedCollection.right));
}
// destCollectionID != null i.e move into another collection
@@ -642,10 +678,10 @@ export class UserCollectionService {
this.pubsub.publish(
`user_coll/${collection.right.userUid}/moved`,
updatedCollection.right,
this.cast(updatedCollection.right),
);
return E.right(updatedCollection.right);
return E.right(this.cast(updatedCollection.right));
}
/**
@@ -846,6 +882,7 @@ export class UserCollectionService {
...(x.request as Record<string, unknown>), // type casting x.request of type Prisma.JSONValue to an object to enable spread
};
}),
data: JSON.stringify(collection.right.data),
};
return E.right(result);
@@ -918,6 +955,7 @@ export class UserCollectionService {
...(x.request as Record<string, unknown>), // type casting x.request of type Prisma.JSONValue to an object to enable spread
};
}),
data: JSON.stringify(parentCollection.right.data),
}),
collectionType: parentCollection.right.type,
});
@@ -971,6 +1009,7 @@ export class UserCollectionService {
this.generatePrismaQueryObj(f, userID, index + 1, reqType),
),
},
data: folder.data ?? undefined,
};
}
@@ -1040,10 +1079,63 @@ export class UserCollectionService {
),
);
userCollections.forEach((x) =>
this.pubsub.publish(`user_coll/${userID}/created`, x),
userCollections.forEach((collection) =>
this.pubsub.publish(`user_coll/${userID}/created`, this.cast(collection)),
);
return E.right(true);
}
/**
* Update a UserCollection
*
* @param newTitle The new title of collection
* @param userCollectionID The Collection Id
* @param userID The User UID
* @returns An Either of the updated UserCollection
*/
async updateUserCollection(
newTitle: string = null,
collectionData: string | null = null,
userCollectionID: string,
userID: string,
) {
if (collectionData === '') return E.left(USER_COLL_DATA_INVALID);
if (collectionData) {
const jsonReq = stringToJson(collectionData);
if (E.isLeft(jsonReq)) return E.left(USER_COLL_DATA_INVALID);
collectionData = jsonReq.right;
}
if (newTitle != null) {
const isTitleValid = isValidLength(newTitle, this.TITLE_LENGTH);
if (!isTitleValid) return E.left(USER_COLL_SHORT_TITLE);
}
// Check to see is the collection belongs to the user
const isOwner = await this.isOwnerCheck(userCollectionID, userID);
if (O.isNone(isOwner)) return E.left(USER_NOT_OWNER);
try {
const updatedUserCollection = await this.prisma.userCollection.update({
where: {
id: userCollectionID,
},
data: {
data: collectionData ?? undefined,
title: newTitle ?? undefined,
},
});
this.pubsub.publish(
`user_coll/${updatedUserCollection.userUid}/updated`,
this.cast(updatedUserCollection),
);
return E.right(this.cast(updatedUserCollection));
} catch (error) {
return E.left(USER_COLL_NOT_FOUND);
}
}
}

View File

@@ -13,6 +13,12 @@ export class UserCollection {
})
title: string;
@Field({
description: 'JSON string representing the collection data',
nullable: true,
})
data: string;
@Field(() => ReqType, {
description: 'Type of the user collection',
})

View File

@@ -142,13 +142,15 @@ describe('UserHistoryService', () => {
});
describe('createUserHistory', () => {
test('Should resolve right and create a REST request to users history and return a `UserHistory` object', async () => {
const executedOn = new Date();
mockPrisma.userHistory.create.mockResolvedValueOnce({
userUid: 'abc',
id: '1',
request: [{}],
responseMetadata: [{}],
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: false,
});
@@ -158,7 +160,7 @@ describe('UserHistoryService', () => {
request: JSON.stringify([{}]),
responseMetadata: JSON.stringify([{}]),
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: false,
};
@@ -172,13 +174,15 @@ describe('UserHistoryService', () => {
).toEqualRight(userHistory);
});
test('Should resolve right and create a GQL request to users history and return a `UserHistory` object', async () => {
const executedOn = new Date();
mockPrisma.userHistory.create.mockResolvedValueOnce({
userUid: 'abc',
id: '1',
request: [{}],
responseMetadata: [{}],
reqType: ReqType.GQL,
executedOn: new Date(),
executedOn,
isStarred: false,
});
@@ -188,7 +192,7 @@ describe('UserHistoryService', () => {
request: JSON.stringify([{}]),
responseMetadata: JSON.stringify([{}]),
reqType: ReqType.GQL,
executedOn: new Date(),
executedOn,
isStarred: false,
};
@@ -212,13 +216,15 @@ describe('UserHistoryService', () => {
).toEqualLeft(USER_HISTORY_INVALID_REQ_TYPE);
});
test('Should create a GQL request to users history and publish a created subscription', async () => {
const executedOn = new Date();
mockPrisma.userHistory.create.mockResolvedValueOnce({
userUid: 'abc',
id: '1',
request: [{}],
responseMetadata: [{}],
reqType: ReqType.GQL,
executedOn: new Date(),
executedOn,
isStarred: false,
});
@@ -228,7 +234,7 @@ describe('UserHistoryService', () => {
request: JSON.stringify([{}]),
responseMetadata: JSON.stringify([{}]),
reqType: ReqType.GQL,
executedOn: new Date(),
executedOn,
isStarred: false,
};
@@ -245,13 +251,15 @@ describe('UserHistoryService', () => {
);
});
test('Should create a REST request to users history and publish a created subscription', async () => {
const executedOn = new Date();
mockPrisma.userHistory.create.mockResolvedValueOnce({
userUid: 'abc',
id: '1',
request: [{}],
responseMetadata: [{}],
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: false,
});
@@ -261,7 +269,7 @@ describe('UserHistoryService', () => {
request: JSON.stringify([{}]),
responseMetadata: JSON.stringify([{}]),
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: false,
};
@@ -323,13 +331,15 @@ describe('UserHistoryService', () => {
).toEqualLeft(USER_HISTORY_NOT_FOUND);
});
test('Should star/unstar a request in the history and publish a updated subscription', async () => {
const executedOn = new Date();
mockPrisma.userHistory.findFirst.mockResolvedValueOnce({
userUid: 'abc',
id: '1',
request: [{}],
responseMetadata: [{}],
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: false,
});
@@ -339,7 +349,7 @@ describe('UserHistoryService', () => {
request: [{}],
responseMetadata: [{}],
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: true,
});
@@ -349,7 +359,7 @@ describe('UserHistoryService', () => {
request: JSON.stringify([{}]),
responseMetadata: JSON.stringify([{}]),
reqType: ReqType.REST,
executedOn: new Date(),
executedOn,
isStarred: true,
};

View File

@@ -1,6 +1,6 @@
{
"name": "@hoppscotch/cli",
"version": "0.3.1",
"version": "0.4.0",
"description": "A CLI to run Hoppscotch test scripts in CI environments.",
"homepage": "https://hoppscotch.io",
"main": "dist/index.js",
@@ -10,6 +10,9 @@
"publishConfig": {
"access": "public"
},
"engines": {
"node": ">=18"
},
"scripts": {
"build": "pnpm exec tsup",
"dev": "pnpm exec tsup --watch",
@@ -38,26 +41,24 @@
"devDependencies": {
"@hoppscotch/data": "workspace:^",
"@hoppscotch/js-sandbox": "workspace:^",
"@relmify/jest-fp-ts": "^2.0.2",
"@swc/core": "^1.2.181",
"@types/axios": "^0.14.0",
"@types/chalk": "^2.2.0",
"@types/commander": "^2.12.2",
"@types/jest": "^27.4.1",
"@types/lodash": "^4.14.181",
"@types/qs": "^6.9.7",
"@relmify/jest-fp-ts": "^2.1.1",
"@swc/core": "^1.3.92",
"@types/jest": "^29.5.5",
"@types/lodash": "^4.14.199",
"@types/qs": "^6.9.8",
"axios": "^0.21.4",
"chalk": "^4.1.1",
"commander": "^8.0.0",
"chalk": "^4.1.2",
"commander": "^11.0.0",
"esm": "^3.2.25",
"fp-ts": "^2.12.1",
"io-ts": "^2.2.16",
"jest": "^27.5.1",
"fp-ts": "^2.16.1",
"io-ts": "^2.2.20",
"jest": "^29.7.0",
"lodash": "^4.17.21",
"prettier": "^2.8.4",
"qs": "^6.10.3",
"ts-jest": "^27.1.4",
"tsup": "^5.12.7",
"typescript": "^4.6.4"
"prettier": "^3.0.3",
"qs": "^6.11.2",
"ts-jest": "^29.1.1",
"tsup": "^7.2.0",
"typescript": "^5.2.2",
"zod": "^3.22.4"
}
}

View File

@@ -42,12 +42,17 @@ export const handleError = <T extends HoppErrorCode>(error: HoppError<T>) => {
switch (error.code) {
case "FILE_NOT_FOUND":
ERROR_MSG = `File doesn't exists: ${error.path}`;
ERROR_MSG = `File doesn't exist: ${error.path}`;
break;
case "UNKNOWN_COMMAND":
ERROR_MSG = `Unavailable command: ${error.command}`;
break;
case "MALFORMED_ENV_FILE":
ERROR_MSG = `The environment file is not of the correct format.`;
break;
case "BULK_ENV_FILE":
ERROR_MSG = `CLI doesn't support bulk environments export.`;
break;
case "MALFORMED_COLLECTION":
ERROR_MSG = `${error.path}\n${parseErrorData(error.data)}`;
break;
@@ -82,4 +87,4 @@ export const handleError = <T extends HoppErrorCode>(error: HoppError<T>) => {
if (!S.isEmpty(ERROR_MSG)) {
console.error(ERROR_CODE, ERROR_MSG);
}
};
};

View File

@@ -1,27 +1,45 @@
import { error } from "../../types/errors";
import { HoppEnvs, HoppEnvPair } from "../../types/request";
import {
HoppEnvs,
HoppEnvPair,
HoppEnvKeyPairObject,
HoppEnvExportObject,
HoppBulkEnvExportObject,
} from "../../types/request";
import { readJsonFile } from "../../utils/mutators";
/**
* Parses env json file for given path and validates the parsed env json object.
* @param path Path of env.json file to be parsed.
* @returns For successful parsing we get HoppEnvs object.
*/
export async function parseEnvsData(path: string) {
const contents = await readJsonFile(path)
const contents = await readJsonFile(path);
const envPairs: Array<HoppEnvPair> = [];
const HoppEnvKeyPairResult = HoppEnvKeyPairObject.safeParse(contents);
const HoppEnvExportObjectResult = HoppEnvExportObject.safeParse(contents);
const HoppBulkEnvExportObjectResult =
HoppBulkEnvExportObject.safeParse(contents);
if(!(contents && typeof contents === "object" && !Array.isArray(contents))) {
throw error({ code: "MALFORMED_ENV_FILE", path, data: null })
// CLI doesnt support bulk environments export.
// Hence we check for this case and throw an error if it matches the format.
if (HoppBulkEnvExportObjectResult.success) {
throw error({ code: "BULK_ENV_FILE", path, data: error });
}
const envPairs: Array<HoppEnvPair> = []
// Checks if the environment file is of the correct format.
// If it doesnt match either of them, we throw an error.
if (!(HoppEnvKeyPairResult.success || HoppEnvExportObjectResult.success)) {
throw error({ code: "MALFORMED_ENV_FILE", path, data: error });
}
for( const [key,value] of Object.entries(contents)) {
if(typeof value !== "string") {
throw error({ code: "MALFORMED_ENV_FILE", path, data: {value: value} })
if (HoppEnvKeyPairResult.success) {
for (const [key, value] of Object.entries(HoppEnvKeyPairResult.data)) {
envPairs.push({ key, value });
}
envPairs.push({key, value})
} else if (HoppEnvExportObjectResult.success) {
const { key, value } = HoppEnvExportObjectResult.data.variables[0];
envPairs.push({ key, value });
}
return <HoppEnvs>{ global: [], selected: envPairs }
return <HoppEnvs>{ global: [], selected: envPairs };
}

View File

@@ -24,6 +24,7 @@ type HoppErrors = {
REQUEST_ERROR: HoppErrorData;
INVALID_ARGUMENT: HoppErrorData;
MALFORMED_ENV_FILE: HoppErrorPath & HoppErrorData;
BULK_ENV_FILE: HoppErrorPath & HoppErrorData;
INVALID_FILE_TYPE: HoppErrorData;
};

View File

@@ -1,6 +1,7 @@
import { HoppCollection, HoppRESTRequest } from "@hoppscotch/data";
import { TestReport } from "../interfaces/response";
import { HoppCLIError } from "./errors";
import { z } from "zod";
export type FormDataEntry = {
key: string;
@@ -9,6 +10,22 @@ export type FormDataEntry = {
export type HoppEnvPair = { key: string; value: string };
export const HoppEnvKeyPairObject = z.record(z.string(), z.string());
// Shape of the single environment export object that is exported from the app.
export const HoppEnvExportObject = z.object({
name: z.string(),
variables: z.array(
z.object({
key: z.string(),
value: z.string(),
})
),
});
// Shape of the bulk environment export object that is exported from the app.
export const HoppBulkEnvExportObject = z.array(HoppEnvExportObject);
export type HoppEnvs = {
global: HoppEnvPair[];
selected: HoppEnvPair[];

View File

@@ -57,7 +57,7 @@ module.exports = {
{
name: "localStorage",
message:
"Do not use 'localStorage' directly. Please use localpersistence.ts functions or stores",
"Do not use 'localStorage' directly. Please use the PersistenceService",
},
],
// window.localStorage block
@@ -66,7 +66,7 @@ module.exports = {
{
selector: "CallExpression[callee.object.property.name='localStorage']",
message:
"Do not use 'localStorage' directly. Please use localpersistence.ts functions or stores",
"Do not use 'localStorage' directly. Please use the PersistenceService",
},
],
},

View File

@@ -4,5 +4,6 @@ module.exports = {
singleQuote: false,
printWidth: 80,
useTabs: false,
tabWidth: 2
tabWidth: 2,
plugins: ["prettier-plugin-tailwindcss"],
}

View File

@@ -1,7 +1,25 @@
/*
* Write hoppscotch-common related custom styles in this file.
* If styles are sharable across all package then write into hoppscotch-ui/assets/scss/styles.scss file.
*/
* {
@apply backface-hidden;
@apply before:backface-hidden;
@apply after:backface-hidden;
backface-visibility: hidden;
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
&::before {
backface-visibility: hidden;
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
&::after {
backface-visibility: hidden;
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
@apply selection:bg-accentDark;
@apply selection:text-accentContrast;
@apply overscroll-none;
@@ -11,17 +29,25 @@
@apply antialiased;
accent-color: var(--accent-color);
font-variant-ligatures: common-ligatures;
// Colors
--info-color: #ec4899;
--success-color: #10b981;
--blue-color: #3b82f6;
--warning-color: #f59e0b;
--cl-error-color: #ef4444;
--sv-error-color: #dc2626;
}
::-webkit-scrollbar-track {
@apply bg-transparent;
@apply border-solid border-l border-dividerLight border-t-0 border-b-0 border-r-0;
@apply border-b-0 border-l border-r-0 border-t-0 border-solid border-dividerLight;
}
::-webkit-scrollbar-thumb {
@apply bg-divider bg-clip-content;
@apply rounded-full;
@apply border-solid border-transparent border-4;
@apply border-4 border-solid border-transparent;
@apply hover:bg-dividerDark;
@apply hover:bg-clip-content;
}
@@ -31,6 +57,10 @@
@apply h-0;
}
.no-scrollbar {
scrollbar-width: none;
}
input::placeholder,
textarea::placeholder,
.cm-placeholder {
@@ -50,7 +80,7 @@ html {
body {
@apply bg-primary;
@apply text-secondary text-body;
@apply text-body text-secondary;
@apply font-medium;
@apply select-none;
@apply overflow-x-hidden;
@@ -120,8 +150,8 @@ a {
&.link {
@apply items-center;
@apply py-0.5 px-1;
@apply -my-0.5 -mx-1;
@apply px-1 py-0.5;
@apply -mx-1 -my-0.5;
@apply text-accent;
@apply rounded;
@apply hover:text-accentDark;
@@ -133,7 +163,7 @@ a {
.cm-tooltip {
.tippy-box {
@apply shadow-none;
@apply shadow-none #{!important};
@apply fixed;
@apply inline-flex;
@apply -mt-8;
@@ -150,7 +180,7 @@ a {
@apply flex;
@apply text-tiny text-primary;
@apply font-semibold;
@apply py-1 px-2;
@apply px-2 py-1;
@apply truncate;
@apply leading-normal;
@apply items-center;
@@ -158,7 +188,7 @@ a {
kbd {
@apply hidden;
@apply font-sans;
@apply bg-gray-500/45;
background-color: rgba(107, 114, 128, 0.45);
@apply text-primaryLight;
@apply rounded-sm;
@apply px-1;
@@ -166,6 +196,12 @@ a {
@apply truncate;
@apply sm:inline-flex;
}
.env-icon {
@apply transition;
@apply inline-flex;
@apply items-center;
}
}
.tippy-svg-arrow {
@@ -191,7 +227,7 @@ a {
@apply max-h-[45vh];
@apply items-stretch;
@apply overflow-y-auto;
@apply text-secondary text-body;
@apply text-body text-secondary;
@apply p-2;
@apply leading-normal;
@apply focus:outline-none;
@@ -230,7 +266,7 @@ hr {
.heading {
@apply font-bold;
@apply text-secondaryDark text-lg;
@apply text-lg text-secondaryDark;
@apply tracking-tight;
}
@@ -239,7 +275,7 @@ hr {
.textarea {
@apply flex;
@apply w-full;
@apply py-2 px-4;
@apply px-4 py-2;
@apply bg-transparent;
@apply rounded;
@apply text-secondaryDark;
@@ -280,7 +316,7 @@ button {
@apply transform;
@apply origin-top-left;
@apply scale-75;
@apply translate-x-1 -translate-y-4;
@apply -translate-y-4 translate-x-1;
}
.floating-input:focus-within ~ label {
@@ -289,7 +325,7 @@ button {
.floating-input ~ .end-actions {
@apply absolute;
@apply right-0.2;
@apply right-[.05rem];
@apply inset-y-0;
@apply flex;
@apply items-center;
@@ -331,23 +367,23 @@ pre.ace_editor {
}
.info-response {
@apply text-pink-500;
color: var(--info-color);
}
.success-response {
@apply text-green-500;
color: var(--success-color);
}
.redir-response {
@apply text-yellow-500;
color: var(--warning-color);
}
.cl-error-response {
@apply text-red-500;
color: var(--cl-error-color);
}
.sv-error-response {
@apply text-red-600;
color: var(--sv-error-color);
}
.missing-data-response {
@@ -362,7 +398,7 @@ pre.ace_editor {
@apply px-4 py-2;
@apply bg-tooltip;
@apply border-secondaryDark;
@apply text-primary text-body;
@apply text-body text-primary;
@apply justify-between;
@apply shadow-lg;
@apply font-semibold;
@@ -390,7 +426,7 @@ pre.ace_editor {
@apply before:opacity-10;
@apply before:inset-0;
@apply before:transition;
@apply before:content-DEFAULT;
@apply before:content-[''];
@apply hover:no-underline;
@apply hover:before:opacity-20;
}
@@ -424,7 +460,7 @@ pre.ace_editor {
@apply before:opacity-0;
@apply before:z-20;
@apply before:transition;
@apply before:content-DEFAULT;
@apply before:content-[''];
@apply hover:before:opacity-100;
}

View File

@@ -0,0 +1,3 @@
@tailwind base;
@tailwind components;
@tailwind utilities;

View File

@@ -1,319 +0,0 @@
@mixin base-theme {
--font-sans: "Inter Variable", sans-serif;
--font-icon: "Material Symbols Rounded Variable";
--font-mono: "Roboto Mono Variable", monospace;
--font-size-tiny: calc(var(--font-size-body) - 0.062rem);
}
@mixin dark-theme {
--primary-color: theme("colors.dark.800");
--primary-light-color: theme("colors.dark.600");
--primary-dark-color: theme("colors.neutral.800");
--primary-contrast-color: theme("colors.neutral.900");
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.50");
--divider-color: theme("colors.neutral.800");
--divider-light-color: theme("colors.dark.500");
--divider-dark-color: theme("colors.dark.300");
--error-color: theme("colors.stone.800");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.dark.700");
--editor-theme: "merbivore_soft";
}
@mixin light-theme {
--primary-color: theme("colors.white");
--primary-light-color: theme("colors.gray.50");
--primary-dark-color: theme("colors.gray.100");
--primary-contrast-color: theme("colors.light.50");
--secondary-color: theme("colors.gray.500");
--secondary-light-color: theme("colors.gray.400");
--secondary-dark-color: theme("colors.gray.900");
--divider-color: theme("colors.gray.100");
--divider-light-color: theme("colors.gray.100");
--divider-dark-color: theme("colors.gray.300");
--error-color: theme("colors.yellow.100");
--tooltip-color: theme("colors.neutral.800");
--popover-color: theme("colors.white");
--editor-theme: "textmate";
}
@mixin black-theme {
--primary-color: theme("colors.dark.900");
--primary-light-color: theme("colors.neutral.900");
--primary-dark-color: theme("colors.dark.800");
--primary-contrast-color: theme("colors.dark.900");
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.100");
--divider-color: theme("colors.dark.600");
--divider-light-color: theme("colors.dark.800");
--divider-dark-color: theme("colors.dark.200");
--error-color: theme("colors.stone.900");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.dark.900");
--editor-theme: "twilight";
}
@mixin dark-editor-theme {
--editor-type-color: theme("colors.purple.400");
--editor-name-color: theme("colors.blue.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.green.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.fuchsia.400");
--editor-constant-color: theme("colors.violet.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin light-editor-theme {
--editor-type-color: theme("colors.purple.600");
--editor-name-color: theme("colors.red.600");
--editor-operator-color: theme("colors.indigo.600");
--editor-invalid-color: theme("colors.red.600");
--editor-separator-color: theme("colors.gray.600");
--editor-meta-color: theme("colors.gray.600");
--editor-variable-color: theme("colors.green.600");
--editor-link-color: theme("colors.cyan.600");
--editor-process-color: theme("colors.blue.600");
--editor-constant-color: theme("colors.fuchsia.600");
--editor-keyword-color: theme("colors.pink.600");
}
@mixin black-editor-theme {
--editor-type-color: theme("colors.purple.400");
--editor-name-color: theme("colors.fuchsia.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.green.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.violet.400");
--editor-constant-color: theme("colors.blue.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin green-theme {
--accent-color: theme("colors.green.500");
--accent-light-color: theme("colors.green.400");
--accent-dark-color: theme("colors.green.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.green.200");
--gradient-via-color: theme("colors.green.400");
--gradient-to-color: theme("colors.green.600");
}
@mixin teal-theme {
--accent-color: theme("colors.teal.500");
--accent-light-color: theme("colors.teal.400");
--accent-dark-color: theme("colors.teal.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.teal.200");
--gradient-via-color: theme("colors.teal.400");
--gradient-to-color: theme("colors.teal.600");
}
@mixin blue-theme {
--accent-color: theme("colors.blue.500");
--accent-light-color: theme("colors.blue.400");
--accent-dark-color: theme("colors.blue.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.blue.200");
--gradient-via-color: theme("colors.blue.400");
--gradient-to-color: theme("colors.blue.600");
}
@mixin indigo-theme {
--accent-color: theme("colors.indigo.500");
--accent-light-color: theme("colors.indigo.400");
--accent-dark-color: theme("colors.indigo.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.indigo.200");
--gradient-via-color: theme("colors.indigo.400");
--gradient-to-color: theme("colors.indigo.600");
}
@mixin purple-theme {
--accent-color: theme("colors.purple.500");
--accent-light-color: theme("colors.purple.400");
--accent-dark-color: theme("colors.purple.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.purple.200");
--gradient-via-color: theme("colors.purple.400");
--gradient-to-color: theme("colors.purple.600");
}
@mixin yellow-theme {
--accent-color: theme("colors.yellow.500");
--accent-light-color: theme("colors.yellow.400");
--accent-dark-color: theme("colors.yellow.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.yellow.200");
--gradient-via-color: theme("colors.yellow.400");
--gradient-to-color: theme("colors.yellow.600");
}
@mixin orange-theme {
--accent-color: theme("colors.orange.500");
--accent-light-color: theme("colors.orange.400");
--accent-dark-color: theme("colors.orange.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.orange.200");
--gradient-via-color: theme("colors.orange.400");
--gradient-to-color: theme("colors.orange.600");
}
@mixin red-theme {
--accent-color: theme("colors.red.500");
--accent-light-color: theme("colors.red.400");
--accent-dark-color: theme("colors.red.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.red.200");
--gradient-via-color: theme("colors.red.400");
--gradient-to-color: theme("colors.red.600");
}
@mixin pink-theme {
--accent-color: theme("colors.pink.500");
--accent-light-color: theme("colors.pink.400");
--accent-dark-color: theme("colors.pink.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.pink.200");
--gradient-via-color: theme("colors.pink.400");
--gradient-to-color: theme("colors.pink.600");
}
:root {
@include base-theme;
@include dark-theme;
@include green-theme;
@include dark-editor-theme;
}
:root.light {
@include light-theme;
@include light-editor-theme;
color-scheme: light;
}
:root.dark {
@include dark-theme;
@include dark-editor-theme;
color-scheme: dark;
}
:root.black {
@include black-theme;
@include black-editor-theme;
color-scheme: dark;
}
:root[data-accent="blue"] {
@include blue-theme;
}
:root[data-accent="green"] {
@include green-theme;
}
:root[data-accent="teal"] {
@include teal-theme;
}
:root[data-accent="indigo"] {
@include indigo-theme;
}
:root[data-accent="purple"] {
@include purple-theme;
}
:root[data-accent="orange"] {
@include orange-theme;
}
:root[data-accent="pink"] {
@include pink-theme;
}
:root[data-accent="red"] {
@include red-theme;
}
:root[data-accent="yellow"] {
@include yellow-theme;
}
@mixin font-small {
--font-size-body: 0.75rem;
--line-height-body: 1rem;
--upper-primary-sticky-fold: 4.125rem;
--upper-secondary-sticky-fold: 6.188rem;
--upper-tertiary-sticky-fold: 8.25rem;
--upper-mobile-primary-sticky-fold: 6.625rem;
--upper-mobile-secondary-sticky-fold: 8.688rem;
--upper-mobile-sticky-fold: 10.75rem;
--upper-mobile-tertiary-sticky-fold: 8.25rem;
--lower-primary-sticky-fold: 3rem;
--lower-secondary-sticky-fold: 5.063rem;
--lower-tertiary-sticky-fold: 7.125rem;
--sidebar-primary-sticky-fold: 2rem;
}
@mixin font-medium {
--font-size-body: 0.875rem;
--line-height-body: 1.25rem;
--upper-primary-sticky-fold: 4.375rem;
--upper-secondary-sticky-fold: 6.688rem;
--upper-tertiary-sticky-fold: 9rem;
--upper-mobile-primary-sticky-fold: 7.125rem;
--upper-mobile-secondary-sticky-fold: 9.438rem;
--upper-mobile-sticky-fold: 11.75rem;
--upper-mobile-tertiary-sticky-fold: 9rem;
--lower-primary-sticky-fold: 3.25rem;
--lower-secondary-sticky-fold: 5.563rem;
--lower-tertiary-sticky-fold: 7.875rem;
--sidebar-primary-sticky-fold: 2.25rem;
}
@mixin font-large {
--font-size-body: 1rem;
--line-height-body: 1.5rem;
--upper-primary-sticky-fold: 4.625rem;
--upper-secondary-sticky-fold: 7.188rem;
--upper-tertiary-sticky-fold: 9.75rem;
--upper-mobile-primary-sticky-fold: 7.625rem;
--upper-mobile-secondary-sticky-fold: 10.188rem;
--upper-mobile-sticky-fold: 12.75rem;
--upper-mobile-tertiary-sticky-fold: 9.75rem;
--lower-primary-sticky-fold: 3.5rem;
--lower-secondary-sticky-fold: 6.063rem;
--lower-tertiary-sticky-fold: 8.625rem;
--sidebar-primary-sticky-fold: 2.5rem;
}
:root[data-font-size="small"] {
@include font-small;
}
:root[data-font-size="medium"] {
@include font-medium;
}
:root[data-font-size="large"] {
@include font-large;
}

View File

@@ -0,0 +1,89 @@
@mixin green-theme {
--accent-color: #10b981;
--accent-light-color: #34d399;
--accent-dark-color: #059669;
--accent-contrast-color: #fff;
--gradient-from-color: #a7f3d0;
--gradient-via-color: #34d399;
--gradient-to-color: #059669;
}
@mixin teal-theme {
--accent-color: #14b8a6;
--accent-light-color: #2dd4bf;
--accent-dark-color: #0d9488;
--accent-contrast-color: #fff;
--gradient-from-color: #99f6e4;
--gradient-via-color: #2dd4bf;
--gradient-to-color: #0d9488;
}
@mixin blue-theme {
--accent-color: #3b82f6;
--accent-light-color: #60a5fa;
--accent-dark-color: #2563eb;
--accent-contrast-color: #fff;
--gradient-from-color: #bfdbfe;
--gradient-via-color: #60a5fa;
--gradient-to-color: #2563eb;
}
@mixin indigo-theme {
--accent-color: #6366f1;
--accent-light-color: #818cf8;
--accent-dark-color: #4f46e5;
--accent-contrast-color: #fff;
--gradient-from-color: #c7d2fe;
--gradient-via-color: #818cf8;
--gradient-to-color: #4f46e5;
}
@mixin purple-theme {
--accent-color: #8b5cf6;
--accent-light-color: #a78bfa;
--accent-dark-color: #7c3aed;
--accent-contrast-color: #fff;
--gradient-from-color: #ddd6fe;
--gradient-via-color: #a78bfa;
--gradient-to-color: #7c3aed;
}
@mixin yellow-theme {
--accent-color: #f59e0b;
--accent-light-color: #fbbf24;
--accent-dark-color: #d97706;
--accent-contrast-color: #fff;
--gradient-from-color: #fde68a;
--gradient-via-color: #fbbf24;
--gradient-to-color: #d97706;
}
@mixin orange-theme {
--accent-color: #f97316;
--accent-light-color: #fb923c;
--accent-dark-color: #ea580c;
--accent-contrast-color: #fff;
--gradient-from-color: #fed7aa;
--gradient-via-color: #fb923c;
--gradient-to-color: #ea580c;
}
@mixin red-theme {
--accent-color: #ef4444;
--accent-light-color: #f87171;
--accent-dark-color: #dc2626;
--accent-contrast-color: #fff;
--gradient-from-color: #fecaca;
--gradient-via-color: #f87171;
--gradient-to-color: #dc2626;
}
@mixin pink-theme {
--accent-color: #ec4899;
--accent-light-color: #f472b6;
--accent-dark-color: #db2777;
--accent-contrast-color: #fff;
--gradient-from-color: #fbcfe8;
--gradient-via-color: #f472b6;
--gradient-to-color: #db2777;
}

View File

@@ -0,0 +1,81 @@
@mixin base-theme {
--font-sans: "Inter Variable", sans-serif;
--font-icon: "Material Symbols Rounded Variable";
--font-mono: "Roboto Mono Variable", monospace;
--font-size-body: 0.75rem;
--font-size-tiny: 0.688rem;
--line-height-body: 1rem;
--upper-primary-sticky-fold: 4.125rem;
--upper-secondary-sticky-fold: 6.188rem;
--upper-tertiary-sticky-fold: 8.25rem;
--upper-fourth-sticky-fold: 10.2rem;
--upper-mobile-primary-sticky-fold: 6.625rem;
--upper-mobile-secondary-sticky-fold: 8.688rem;
--upper-mobile-sticky-fold: 10.75rem;
--upper-mobile-tertiary-sticky-fold: 8.25rem;
--lower-primary-sticky-fold: 3rem;
--lower-secondary-sticky-fold: 5.063rem;
--lower-tertiary-sticky-fold: 7.125rem;
--lower-fourth-sticky-fold: 9.188rem;
--sidebar-primary-sticky-fold: 2rem;
}
@mixin dark-theme {
--primary-color: #181818;
--primary-light-color: #1c1c1e;
--primary-dark-color: #262626;
--primary-contrast-color: #171717;
--secondary-color: #a3a3a3;
--secondary-light-color: #737373;
--secondary-dark-color: #fafafa;
--divider-color: #262626;
--divider-light-color: #1f1f1f;
--divider-dark-color: #2d2d2d;
--error-color: #292524;
--tooltip-color: #f5f5f5;
--popover-color: #1b1b1b;
--editor-theme: "merbivore_soft";
}
@mixin light-theme {
--primary-color: #ffffff;
--primary-light-color: #f9fafb;
--primary-dark-color: #f3f4f6;
--primary-contrast-color: #fdfdfd;
--secondary-color: #6b7280;
--secondary-light-color: #9ca3af;
--secondary-dark-color: #111827;
--divider-color: #f3f4f6;
--divider-light-color: #f3f4f6;
--divider-dark-color: #d1d5db;
--error-color: #fef3c7;
--tooltip-color: #262626;
--popover-color: #ffffff;
--editor-theme: "textmate";
}
@mixin black-theme {
--primary-color: #0f0f0f;
--primary-light-color: #171717;
--primary-dark-color: #181818;
--primary-contrast-color: #0f0f0f;
--secondary-color: #a3a3a3;
--secondary-light-color: #737373;
--secondary-dark-color: #f5f5f5;
--divider-color: #1c1c1e;
--divider-light-color: #181818;
--divider-dark-color: #323232;
--error-color: #1c1917;
--tooltip-color: #f5f5f5;
--popover-color: #0f0f0f;
--editor-theme: "twilight";
}

View File

@@ -0,0 +1,41 @@
@mixin dark-editor-theme {
--editor-type-color: #a78bfa;
--editor-name-color: #60a5fa;
--editor-operator-color: #818cf8;
--editor-invalid-color: #f87171;
--editor-separator-color: #9ca3af;
--editor-meta-color: #9ca3af;
--editor-variable-color: #34d399;
--editor-link-color: #22d3ee;
--editor-process-color: #e879f9;
--editor-constant-color: #a78bfa;
--editor-keyword-color: #f472b6;
}
@mixin light-editor-theme {
--editor-type-color: #7c3aed;
--editor-name-color: #dc2626;
--editor-operator-color: #4f46e5;
--editor-invalid-color: #dc2626;
--editor-separator-color: #4b5563;
--editor-meta-color: #4b5563;
--editor-variable-color: #059669;
--editor-link-color: #0891b2;
--editor-process-color: #2563eb;
--editor-constant-color: #c026d3;
--editor-keyword-color: #db2777;
}
@mixin black-editor-theme {
--editor-type-color: #a78bfa;
--editor-name-color: #e879f9;
--editor-operator-color: #818cf8;
--editor-invalid-color: #f87171;
--editor-separator-color: #9ca3af;
--editor-meta-color: #9ca3af;
--editor-variable-color: #34d399;
--editor-link-color: #22d3ee;
--editor-process-color: #a78bfa;
--editor-constant-color: #60a5fa;
--editor-keyword-color: #f472b6;
}

View File

@@ -0,0 +1,64 @@
@import "./base-themes.scss";
@import "./editor-themes.scss";
@import "./accent-themes.scss";
:root {
@include base-theme;
@include dark-theme;
@include green-theme;
@include dark-editor-theme;
}
:root.light {
@include light-theme;
@include light-editor-theme;
color-scheme: light;
}
:root.dark {
@include dark-theme;
@include dark-editor-theme;
color-scheme: dark;
}
:root.black {
@include black-theme;
@include black-editor-theme;
color-scheme: dark;
}
:root[data-accent="blue"] {
@include blue-theme;
}
:root[data-accent="green"] {
@include green-theme;
}
:root[data-accent="teal"] {
@include teal-theme;
}
:root[data-accent="indigo"] {
@include indigo-theme;
}
:root[data-accent="purple"] {
@include purple-theme;
}
:root[data-accent="orange"] {
@include orange-theme;
}
:root[data-accent="pink"] {
@include pink-theme;
}
:root[data-accent="red"] {
@include red-theme;
}
:root[data-accent="yellow"] {
@include yellow-theme;
}

View File

@@ -5,6 +5,7 @@
"choose_file": "Kies 'n lêer",
"clear": "Duidelik",
"clear_all": "Maak alles skoon",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Koppel",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Prettify",
"remove": "Verwyder",
"rename": "Rename",
"restore": "Herstel",
"save": "Stoor",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Soek",
"share": "Deel",
"shortcuts": "Kortpaaie",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Kollig",
"status": "Status",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Versameling hernoem",
"request_in_use": "Request in use",
"save_as": "Stoor as",
"save_to_collection": "Save to Collection",
"select": "Kies 'n versameling",
"select_location": "Kies ligging",
"select_team": "Kies 'n span",
"team_collections": "Spanversamelings"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Weet u seker dat u wil afmeld?",
"remove_collection": "Weet u seker dat u hierdie versameling permanent wil uitvee?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Is u seker dat u hierdie werkruimte wil sinkroniseer?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Koptekst {count}",
"message": "Boodskap {count}",
@@ -192,17 +204,31 @@
"create_new": "Skep nuwe omgewing",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Bewerk omgewing",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Gee 'n geldige naam vir die omgewing",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nuwe omgewing",
"no_active_environment": "No active environment",
"no_environment": "Geen omgewing nie",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Kies omgewing",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Omgewings",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Veranderlike lys"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Geen duur nie",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Kon nie voorafversoekskrip uitvoer nie",
"something_went_wrong": "Iets het verkeerd geloop",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Vouer hernoem"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutasies",
"schema": "Skema",
"subscriptions": "Inskrywings"
"subscriptions": "Inskrywings",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Invoer"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen -modus"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Nuttingslading",
"query": "Navraag",
"raw_body": "Rou versoeksliggaam",
"rename": "Rename Request",
"renamed": "Versoek hernoem",
"run": "Hardloop",
"save": "Stoor",
@@ -425,6 +480,7 @@
"saved": "Versoek gestoor",
"share": "Deel",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Versoek",
"type": "Soort versoek",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Dit is u vertoonnaam.",
"background": "Agtergrond",
"black_mode": "Swart",
"change_font_size": "Verander lettergrootte",
"choose_language": "Kies taal",
"dark_mode": "Donker",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Uitbreidings",
"extensions_use_toggle": "Gebruik die blaaieruitbreiding om versoeke te stuur (indien teenwoordig)",
"follow": "Follow Us",
"font_size": "Skrifgrootte",
"font_size_large": "Groot",
"font_size_medium": "Medium",
"font_size_small": "Klein",
"interceptor": "Onderskepper",
"interceptor_description": "Middelware tussen toepassing en API's.",
"language": "Taal",
@@ -540,19 +591,27 @@
"settings": "Gaan na die instellingsbladsy",
"title": "Navigasie"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopieer versoekskakel",
"delete_method": "Kies DELETE metode",
"get_method": "Kies GET -metode",
"head_method": "Kies HOOF metode",
"import_curl": "Import cURL",
"method": "Metode",
"next_method": "Kies Volgende metode",
"post_method": "Kies POST -metode",
"previous_method": "Kies Vorige metode",
"put_method": "Kies PUT -metode",
"rename": "Rename Request",
"reset_request": "Herstel versoek",
"save_request": "Save Request",
"save_to_collections": "Stoor in versamelings",
"send_request": "Stuur versoek",
"show_code": "Generate code snippet",
"title": "Versoek"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Meld",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Soort gebeurtenis",
"log": "Meld",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Magtiging",
"body": "Liggaam",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Versamelings",
"documentation": "Dokumentasie",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Opskrifte",
"history": "Geskiedenis",

View File

@@ -5,6 +5,7 @@
"choose_file": "اختيار ملف",
"clear": "امسح",
"clear_all": "امسح الكل",
"clear_history": "Clear all History",
"close": "Close",
"connect": "الاتصال",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "لصق",
"prettify": "جمال",
"remove": "ازالة",
"rename": "Rename",
"restore": "اعادة",
"save": "حفظ",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "بحث",
"share": "يشارك",
"shortcuts": "الاختصارات",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "أضواء كاشفة",
"status": "حالة",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "تمت إعادة تسمية المجموعة",
"request_in_use": "Request in use",
"save_as": "حفظ باسم",
"save_to_collection": "Save to Collection",
"select": "حدد مجموعة",
"select_location": "اختر موقعا",
"select_team": "اختر فريقًا",
"team_collections": "مجموعات الفريق"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "هل أنت متأكد أنك تريد مغادرة هذا الفريق؟",
"logout": "هل أنت متأكد أنك تريد تسجيل الخروج؟",
"remove_collection": "هل أنت متأكد أنك تريد حذف هذه المجموعة نهائيًا؟",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "هل أنت متأكد أنك تريد مزامنة مساحة العمل هذه؟"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "رأس {count}",
"message": "الرسالة {count}",
@@ -192,17 +204,31 @@
"create_new": "انشاء بيئة جديدة",
"created": "Environment created",
"deleted": "حذف بيئة العمل",
"duplicated": "Environment duplicated",
"edit": "تحرير البيئة",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "الرجاء تقديم اسم صالح للبيئة",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "بيئة جديدة",
"no_active_environment": "No active environment",
"no_environment": "لا بيئة",
"no_environment_description": "لم يتم اختيار أي بيئة عمل. اختر ما تريد فعله بالمتغيرات التالية.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "حدد البيئة",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "البيئات",
"updated": "تحديث بيئة العمل",
"value": "Value",
"variable": "Variable",
"variable_list": "قائمة متغيرة"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "لا مدة",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "تعذر تنفيذ نص الطلب المسبق",
"something_went_wrong": "هناك خطأ ما",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "تمت إعادة تسمية المجلد"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "الطفرات",
"schema": "مخطط",
"subscriptions": "الاشتراكات"
"subscriptions": "الاشتراكات",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "استيراد مجموعة من ملفHoppscotch Collections JSON file",
"title": "يستورد"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "تصيم عمودي",
"name": "Layout",
"row": "تصميم افقي",
"zen_mode": "وضع Zen"
"row": "تصميم افقي"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "الحمولة",
"query": "استفسار",
"raw_body": "نص طلب خام",
"rename": "Rename Request",
"renamed": "تمت إعادة تسمية الطلب",
"run": "يركض",
"save": "يحفظ",
@@ -425,6 +480,7 @@
"saved": "تم حفظ الطلب",
"share": "يشارك",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "طلب",
"type": "نوع الطلب",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "هذا هو اسم العرض الخاص بك.",
"background": "خلفية",
"black_mode": "أسود",
"change_font_size": "تغيير حجم الخط",
"choose_language": "اختر اللغة",
"dark_mode": "داكن",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "ملحقات",
"extensions_use_toggle": "استخدم امتداد المتصفح لإرسال الطلبات (إن وجدت)",
"follow": "Follow Us",
"font_size": "حجم الخط",
"font_size_large": "كبير",
"font_size_medium": "متوسط",
"font_size_small": "صغير",
"interceptor": "المعترض",
"interceptor_description": "البرامج الوسيطة بين التطبيق وواجهات برمجة التطبيقات.",
"language": "لغة",
@@ -540,19 +591,27 @@
"settings": "انتقل إلى صفحة الإعدادات",
"title": "التنقل"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "نسخ ارتباط الطلب",
"delete_method": "حدد طريقة الحذف",
"get_method": "حدد طريقة GET",
"head_method": "حدد طريقة HEAD",
"import_curl": "Import cURL",
"method": "طريقة",
"next_method": "حدد الطريقة التالية",
"post_method": "حدد طريقة POST",
"previous_method": "حدد الطريقة السابقة",
"put_method": "حدد طريقة PUT",
"rename": "Rename Request",
"reset_request": "طلب إعادة التعيين",
"save_request": "Save Request",
"save_to_collections": "حفظ في المجموعات",
"send_request": "ارسل طلب",
"show_code": "Generate code snippet",
"title": "طلب"
},
"response": {
@@ -582,6 +641,85 @@
"log": "سجل",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "نوع الحدث",
"log": "سجل",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "تفويض",
"body": "الجسم",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "المجموعات",
"documentation": "توثيق",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "الرؤوس",
"history": "تاريخ",

View File

@@ -5,6 +5,7 @@
"choose_file": "Triar un fitxer",
"clear": "Netejar",
"clear_all": "Neteja-ho tot",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Connectar",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Enganxar",
"prettify": "Fes-ho bonic",
"remove": "Eliminar",
"rename": "Rename",
"restore": "Restaurar",
"save": "Guardar",
"scroll_to_bottom": "Desplaceu-vos cap avall",
@@ -77,6 +79,8 @@
"search": "Cercar",
"share": "Compartir",
"shortcuts": "Dreceres",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Destacar",
"status": "Estat",
"status_description": "Comproveu l'estat de la web",
@@ -131,12 +135,15 @@
"renamed": "S'ha canviat el nom de la col·lecció",
"request_in_use": "Request in use",
"save_as": "Guardar com",
"save_to_collection": "Save to Collection",
"select": "Seleccionar una col·lecció",
"select_location": "Seleccionar la ubicació",
"select_team": "Seleccionar un equip",
"team_collections": "Col·leccions per equips"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Està segur que vol deixar aquest equip?",
"logout": "Està segur que vol tancar la sessió?",
"remove_collection": "Està segur que vol suprimir permanentment aquesta col·lecció?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Està segur que vol sincronitzar aquest espai de treball?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Capçalera {count}",
"message": "Missatges {count}",
@@ -192,17 +204,31 @@
"create_new": "Crea un entorn nou",
"created": "Etorn creat",
"deleted": "Entorn eliminat",
"duplicated": "Environment duplicated",
"edit": "Editar l'entorn",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Proporcioneu un nom vàlid per a l'entorn",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "Les variables d'entorn niuades estan limitades a 10 nivells",
"new": "Nou entorn",
"no_active_environment": "No active environment",
"no_environment": "Sense entorn",
"no_environment_description": "No s'ha seleccionat cap entorn. Trieu què voleu fer amb les variables següents.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Seleccioneu un entorn",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Entorns",
"updated": "Entorn actualitzat",
"value": "Value",
"variable": "Variable",
"variable_list": "Llista de variables"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Sense durada",
"no_results_found": "No s'ha trobat cap coincidència",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "No s'ha pogut executar l'script de sol·licitud prèvia",
"something_went_wrong": "Alguna cosa ha anat malament",
"test_script_fail": "No s'ha pogut executar l'script posterior a la sol·licitud"
@@ -251,9 +278,13 @@
"renamed": "S'ha canviat el nom de la carpeta"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutacions",
"schema": "Esquema",
"subscriptions": "Subscripcions"
"subscriptions": "Subscripcions",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Importar col·leccions des d'un fitxer JSON de col·leccions Hoppscotch",
"title": "Importació"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Amagar o Ampliar Col·leccions",
"collapse_sidebar": "Amagar o Ampliar la barra lateral",
"column": "Distribució vertical",
"name": "Distribució",
"row": "Distribució horitzontal",
"zen_mode": "Mode Zen"
"row": "Distribució horitzontal"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Payload",
"query": "Consulta",
"raw_body": "Cos de sol·licitud sense processar",
"rename": "Rename Request",
"renamed": "S'ha canviat el nom de la sol·licitud",
"run": "Executar",
"save": "Guardar",
@@ -425,6 +480,7 @@
"saved": "S'ha desat la sol·licitud",
"share": "Compartir",
"share_description": "Comparteix Hoppscotch amb els teus amics",
"stop": "Stop",
"title": "Sol·licitud",
"type": "Tipus de sol·licitud",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Aquest és el vostre nom d'exposició",
"background": "Fons",
"black_mode": "Negre",
"change_font_size": "Canvia la mida de la lletra",
"choose_language": "Tria l'idioma",
"dark_mode": "Fosc",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Extensions",
"extensions_use_toggle": "Utilitzeu l'extensió del navegador per enviar sol·licituds (si n'hi ha)",
"follow": "Segueix-nos",
"font_size": "Mida de la font",
"font_size_large": "Gran",
"font_size_medium": "Mitjà",
"font_size_small": "Petit",
"interceptor": "Interceptor",
"interceptor_description": "Middleware entre aplicació i APIs.",
"language": "Llenguatge",
@@ -540,19 +591,27 @@
"settings": "Anar a la pàgina de Configuració",
"title": "Navegació"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copiar l'enllaç de la sol·licitud",
"delete_method": "Seleccionar el mètode DELETE",
"get_method": "Seleccionar el mètode GET",
"head_method": "Seleccionar el mètode HEAD",
"import_curl": "Import cURL",
"method": "Mètode",
"next_method": "Seleccionar mètode Següent",
"post_method": "Seleccionar mètode POST",
"previous_method": "Seleccionar mètode Anterior",
"put_method": "Seleccionar mètode PUT",
"rename": "Rename Request",
"reset_request": "Sol·licitud de restabliment",
"save_request": "Save Request",
"save_to_collections": "Guardar a les col·leccions",
"send_request": "Enviar sol.licitud",
"show_code": "Generate code snippet",
"title": "Sol·licitud"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Registre",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tipus d'esdeveniment",
"log": "Registre",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorització",
"body": "Cos",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Col·leccions",
"documentation": "Documentació",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Capçaleres",
"history": "Historial",

View File

@@ -5,6 +5,7 @@
"choose_file": "选择文件",
"clear": "清除",
"clear_all": "全部清除",
"clear_history": "Clear all History",
"close": "关闭",
"connect": "连接",
"connecting": "连接中",
@@ -31,6 +32,7 @@
"paste": "粘贴",
"prettify": "美化",
"remove": "移除",
"rename": "Rename",
"restore": "恢复",
"save": "保存",
"scroll_to_bottom": "滚动至底部",
@@ -77,6 +79,8 @@
"search": "搜索",
"share": "分享",
"shortcuts": "快捷方式",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "聚光灯",
"status": "状态",
"status_description": "检查网站状态",
@@ -131,12 +135,15 @@
"renamed": "集合已更名",
"request_in_use": "请求正在使用中",
"save_as": "另存为",
"save_to_collection": "Save to Collection",
"select": "选择一个集合",
"select_location": "选择位置",
"select_team": "选择一个团队",
"team_collections": "团队集合"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "你确定要离开此团队吗?",
"logout": "你确定要登出吗?",
"remove_collection": "你确定要永久删除该集合吗?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "你想保存在此标签页中所作的修改吗?",
"sync": "您确定要同步该工作区吗?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "请求头 {count}",
"message": "消息 {count}",
@@ -192,17 +204,31 @@
"create_new": "创建新环境",
"created": "环境已创建",
"deleted": "环境已删除",
"duplicated": "Environment duplicated",
"edit": "编辑环境",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "请提供有效的环境名称",
"list": "Environment variables",
"my_environments": "我的环境",
"name": "Name",
"nested_overflow": "环境嵌套深度超过限制10层",
"new": "新建环境",
"no_active_environment": "No active environment",
"no_environment": "无环境",
"no_environment_description": "没有选择环境。选择如何处理以下变量。",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "选择环境",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "团队环境",
"title": "环境",
"updated": "环境已更新",
"value": "Value",
"variable": "Variable",
"variable_list": "变量列表"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "无持续时间",
"no_results_found": "找不到结果",
"page_not_found": "找不到此頁面",
"proxy_error": "Proxy error",
"script_fail": "无法执行预请求脚本",
"something_went_wrong": "发生了一些错误",
"test_script_fail": "无法执行请求脚本"
@@ -251,9 +278,13 @@
"renamed": "文件夹已更名"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "变更",
"schema": "模式",
"subscriptions": "订阅"
"subscriptions": "订阅",
"switch_connection": "Switch connection"
},
"group": {
"time": "时间",
@@ -307,13 +338,36 @@
"json_description": "从 Hoppscotch 的集合文件导入JSON",
"title": "导入"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "折叠/展开集合",
"collapse_sidebar": "折叠/展开边栏",
"column": "垂直布局",
"name": "布局",
"row": "水平布局",
"zen_mode": "ZEN 模式"
"row": "水平布局"
},
"modal": {
"close_unsaved_tab": "有未保存的变更",
@@ -418,6 +472,7 @@
"payload": "负载",
"query": "查询",
"raw_body": "原始请求体",
"rename": "Rename Request",
"renamed": "请求重命名",
"run": "运行",
"save": "保存",
@@ -425,6 +480,7 @@
"saved": "请求已保存",
"share": "分享",
"share_description": "分享 Hoppscotch 给你的朋友",
"stop": "Stop",
"title": "请求",
"type": "请求类型",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "这是您的显示名称。",
"background": "背景",
"black_mode": "黑色",
"change_font_size": "更改字体大小",
"choose_language": "选择语言",
"dark_mode": "暗色",
"delete_account": "刪除账号",
@@ -472,10 +527,6 @@
"extensions": "扩展",
"extensions_use_toggle": "使用浏览器扩展发送请求(如果存在)",
"follow": "关注我们",
"font_size": "字体大小",
"font_size_large": "大",
"font_size_medium": "中",
"font_size_small": "小",
"interceptor": "拦截器",
"interceptor_description": "应用程序和 API 之间的中间件。",
"language": "语言",
@@ -540,19 +591,27 @@
"settings": "前往设置页面",
"title": "导航"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "复制请求链接",
"delete_method": "选择 DELETE 方法",
"get_method": "选择 GET 方法",
"head_method": "选择 HEAD 方法",
"import_curl": "Import cURL",
"method": "方法",
"next_method": "选择下一个方法",
"post_method": "选择 POST 方法",
"previous_method": "选择上一个方法",
"put_method": "选择 PUT 方法",
"rename": "Rename Request",
"reset_request": "重置请求",
"save_request": "Save Request",
"save_to_collections": "保存到集合",
"send_request": "发送请求",
"show_code": "Generate code snippet",
"title": "请求"
},
"response": {
@@ -582,6 +641,85 @@
"log": "日志",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "事件类型",
"log": "日志",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "授权",
"body": "请求体",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "集合",
"documentation": "帮助文档",
"duplicate": "Duplicate Tab",
"environments": "环境",
"headers": "请求头",
"history": "历史记录",

View File

@@ -5,6 +5,7 @@
"choose_file": "Vyberte soubor",
"clear": "Průhledná",
"clear_all": "Vymazat vše",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Připojit",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Prettify",
"remove": "Odstranit",
"rename": "Rename",
"restore": "Obnovit",
"save": "Uložit",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Vyhledávání",
"share": "Podíl",
"shortcuts": "Klávesové zkratky",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Reflektor",
"status": "Postavení",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Sbírka přejmenována",
"request_in_use": "Request in use",
"save_as": "Uložit jako",
"save_to_collection": "Save to Collection",
"select": "Vyberte sbírku",
"select_location": "Vyberte umístění",
"select_team": "Vyberte tým",
"team_collections": "Týmové sbírky"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Opravdu se chcete odhlásit?",
"remove_collection": "Opravdu chcete tuto sbírku trvale smazat?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Opravdu chcete synchronizovat tento pracovní prostor?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Záhlaví {count}",
"message": "Zpráva {count}",
@@ -192,17 +204,31 @@
"create_new": "Vytvořit nové prostředí",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Upravit prostředí",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Zadejte platný název prostředí",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nové prostředí",
"no_active_environment": "No active environment",
"no_environment": "Žádné prostředí",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Vyberte prostředí",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Prostředí",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Seznam proměnných"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Žádné trvání",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Skript předběžného požadavku nelze spustit",
"something_went_wrong": "Něco se pokazilo",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Složka přejmenována"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutace",
"schema": "Schéma",
"subscriptions": "Předplatné"
"subscriptions": "Předplatné",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Import"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zenový režim"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Užitečné zatížení",
"query": "Dotaz",
"raw_body": "Raw Request Body",
"rename": "Rename Request",
"renamed": "Žádost přejmenována",
"run": "Běh",
"save": "Uložit",
@@ -425,6 +480,7 @@
"saved": "Žádost uložena",
"share": "Podíl",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Žádost",
"type": "Typ požadavku",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Toto je vaše zobrazované jméno.",
"background": "Pozadí",
"black_mode": "Černá",
"change_font_size": "Změnit velikost písma",
"choose_language": "Vyber jazyk",
"dark_mode": "Temný",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Rozšíření",
"extensions_use_toggle": "K odeslání požadavků použijte rozšíření prohlížeče (je -li k dispozici)",
"follow": "Follow Us",
"font_size": "Velikost písma",
"font_size_large": "Velký",
"font_size_medium": "Střední",
"font_size_small": "Malý",
"interceptor": "Interceptor",
"interceptor_description": "Middleware mezi aplikací a API.",
"language": "Jazyk",
@@ -540,19 +591,27 @@
"settings": "Přejděte na stránku Nastavení",
"title": "Navigace"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopírovat požadavek na odkaz",
"delete_method": "Vyberte metodu ODSTRANIT",
"get_method": "Vyberte metodu ZÍSKAT",
"head_method": "Vyberte metodu HEAD",
"import_curl": "Import cURL",
"method": "Metoda",
"next_method": "Vyberte Další metoda",
"post_method": "Vyberte metodu POST",
"previous_method": "Vyberte předchozí metodu",
"put_method": "Vyberte metodu PUT",
"rename": "Rename Request",
"reset_request": "Resetovat požadavek",
"save_request": "Save Request",
"save_to_collections": "Uložit do sbírek",
"send_request": "Poslat žádost",
"show_code": "Generate code snippet",
"title": "Žádost"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Záznam",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Typ události",
"log": "Záznam",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Povolení",
"body": "Tělo",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Sbírky",
"documentation": "Dokumentace",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Záhlaví",
"history": "Dějiny",

View File

@@ -5,6 +5,7 @@
"choose_file": "Vælg en fil",
"clear": "Klar",
"clear_all": "Slet alt",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Opret forbindelse",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Prettify",
"remove": "Fjerne",
"rename": "Rename",
"restore": "Gendan",
"save": "Gemme",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Søg",
"share": "Del",
"shortcuts": "Genveje",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Spotlight",
"status": "Status",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Samling omdøbt",
"request_in_use": "Request in use",
"save_as": "Gem som",
"save_to_collection": "Save to Collection",
"select": "Vælg en samling",
"select_location": "Vælg placering",
"select_team": "Vælg et hold",
"team_collections": "Teamsamlinger"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Er du sikker på, at du vil logge af?",
"remove_collection": "Er du sikker på, at du vil slette denne samling permanent?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Er du sikker på, at du vil synkronisere dette arbejdsområde?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Overskrift {count}",
"message": "Besked {count}",
@@ -192,17 +204,31 @@
"create_new": "Skab nyt miljø",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Rediger miljø",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Angiv et gyldigt navn på miljøet",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nyt miljø",
"no_active_environment": "No active environment",
"no_environment": "Intet miljø",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Vælg miljø",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Miljøer",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Variabel liste"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Ingen varighed",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Kunne ikke udføre pre-request script",
"something_went_wrong": "Noget gik galt",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Mappen omdøbt"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutationer",
"schema": "Skema",
"subscriptions": "Abonnementer"
"subscriptions": "Abonnementer",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Importere"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen -tilstand"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Nyttelast",
"query": "Forespørgsel",
"raw_body": "Raw Request Body",
"rename": "Rename Request",
"renamed": "Anmodning omdøbt",
"run": "Løb",
"save": "Gemme",
@@ -425,6 +480,7 @@
"saved": "Anmodning gemt",
"share": "Del",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Anmodning",
"type": "Anmodningstype",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Dette er dit visningsnavn.",
"background": "Baggrund",
"black_mode": "Sort",
"change_font_size": "Skift skriftstørrelse",
"choose_language": "Vælg sprog",
"dark_mode": "Mørk",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Udvidelser",
"extensions_use_toggle": "Brug browserudvidelsen til at sende anmodninger (hvis de findes)",
"follow": "Follow Us",
"font_size": "Skriftstørrelse",
"font_size_large": "Stor",
"font_size_medium": "Medium",
"font_size_small": "Lille",
"interceptor": "Aflytter",
"interceptor_description": "Middleware mellem applikation og API'er.",
"language": "Sprog",
@@ -540,19 +591,27 @@
"settings": "Gå til siden Indstillinger",
"title": "Navigation"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopiér anmodningslink",
"delete_method": "Vælg SLET metode",
"get_method": "Vælg GET -metode",
"head_method": "Vælg HEAD -metode",
"import_curl": "Import cURL",
"method": "Metode",
"next_method": "Vælg Næste metode",
"post_method": "Vælg POST -metode",
"previous_method": "Vælg Forrige metode",
"put_method": "Vælg PUT -metode",
"rename": "Rename Request",
"reset_request": "Nulstil anmodning",
"save_request": "Save Request",
"save_to_collections": "Gem i samlinger",
"send_request": "Send anmodning",
"show_code": "Generate code snippet",
"title": "Anmodning"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Log",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Begivenhedstype",
"log": "Log",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Bemyndigelse",
"body": "Legeme",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Samlinger",
"documentation": "Dokumentation",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Overskrifter",
"history": "Historie",

View File

@@ -5,6 +5,7 @@
"choose_file": "Datei auswählen",
"clear": "Zurücksetzen",
"clear_all": "Alles zurücksetzen",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Verbinden",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Einfügen",
"prettify": "Verschönern",
"remove": "Entfernen",
"rename": "Rename",
"restore": "Wiederherstellen",
"save": "Speichern",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Suche",
"share": "Teilen",
"shortcuts": "Verknüpfungen",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Scheinwerfer",
"status": "Status",
"status_description": "Überprüfe den Status der Webseite",
@@ -131,12 +135,15 @@
"renamed": "Sammlung umbenannt",
"request_in_use": "Anfrage wird ausgeführt",
"save_as": "Speichern als",
"save_to_collection": "Save to Collection",
"select": "Wähle eine Sammlung",
"select_location": "Ort auswählen",
"select_team": "Wähle ein Team",
"team_collections": "Teamsammlungen"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Möchtest Du dieses Team wirklich verlassen?",
"logout": "Möchtest Du Dich wirklich abmelden?",
"remove_collection": "Möchtest Du diese Sammlung wirklich endgültig löschen?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Möchtest Du diesen Arbeitsbereich wirklich synchronisieren?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Header {count}",
"message": "Nachricht {count}",
@@ -192,17 +204,31 @@
"create_new": "Neue Umgebung erstellen",
"created": "Umgebung erzeugt",
"deleted": "Umgebung löschen",
"duplicated": "Environment duplicated",
"edit": "Umgebung bearbeiten",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Bitte gib einen gültigen Namen für die Umgebung an",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "Verschachtelte Umgebungsvariablen sind limitert auf 10 Unterebenen",
"new": "Neue Umgebung",
"no_active_environment": "No active environment",
"no_environment": "Keine Umgebung",
"no_environment_description": "Es wurden keine Umgebungen ausgewählt. Wähle aus, was mit den untenstehenden Variablen geschehen soll.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Umgebung auswählen",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Umgebungen",
"updated": "Umgebung aktualisiert",
"value": "Value",
"variable": "Variable",
"variable_list": "Variablenliste"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Keine Dauer",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Pre-Request-Skripte konnte nicht ausgeführt werden",
"something_went_wrong": "Etwas ist schief gelaufen",
"test_script_fail": "Testskripts konnten nicht ausgeführt werden"
@@ -251,9 +278,13 @@
"renamed": "Ordner umbenannt"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutationen",
"schema": "Schema",
"subscriptions": "Abonnements"
"subscriptions": "Abonnements",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Hoppscotch Sammlungsdatei (JSON) importieren",
"title": "Importieren"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Sammlungen ein- oder ausklappen",
"collapse_sidebar": "Seitenleiste ein- oder ausklappen",
"column": "Vertikales Layout",
"name": "Layout",
"row": "Horizontales Layout",
"zen_mode": "Zen-Modus"
"row": "Horizontales Layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Nutzlast",
"query": "Anfrage",
"raw_body": "Roher Anfragetext",
"rename": "Rename Request",
"renamed": "Anfrage umbenannt",
"run": "Ausführen",
"save": "Speichern",
@@ -425,6 +480,7 @@
"saved": "Anfrage gespeichert",
"share": "Teilen",
"share_description": "Teile Hoppscotch mit Deinen Freunden",
"stop": "Stop",
"title": "Anfrage",
"type": "Anfragetyp",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Dies ist Dein Anzeigename.",
"background": "Hintergrund",
"black_mode": "Schwarz",
"change_font_size": "Schriftgröße ändern",
"choose_language": "Sprache wählen",
"dark_mode": "Dunkel",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Erweiterungen",
"extensions_use_toggle": "Verwende die Browsererweiterung, um Anfragen zu senden (falls vorhanden)",
"follow": "Folge uns",
"font_size": "Schriftgröße",
"font_size_large": "Groß",
"font_size_medium": "Mittel",
"font_size_small": "Klein",
"interceptor": "Interceptor",
"interceptor_description": "Middleware zwischen Anwendung und APIs.",
"language": "Sprache",
@@ -540,19 +591,27 @@
"settings": "Einstellungen öffnen",
"title": "Navigation"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Anfragelink kopieren",
"delete_method": "DELETE-Methode auswählen",
"get_method": "GET-Methode auswählen",
"head_method": "HEAD-Methode auswählen",
"import_curl": "Import cURL",
"method": "Methode",
"next_method": "Nächste Methode auswählen",
"post_method": "POST-Methode auswählen",
"previous_method": "Vorherige Methode auswählen",
"put_method": "PUT-Methode auswählen",
"rename": "Rename Request",
"reset_request": "Anfrage zurücksetzen",
"save_request": "Save Request",
"save_to_collections": "In Sammlungen speichern",
"send_request": "Anfrage senden",
"show_code": "Generate code snippet",
"title": "Anfrage"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Protokoll",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Ereignistyp",
"log": "Protokoll",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorisierung",
"body": "Anfragekörper",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Sammlungen",
"documentation": "Dokumentation",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Header",
"history": "Verlauf",

View File

@@ -5,6 +5,7 @@
"choose_file": "Επιλέξτε ένα αρχείο",
"clear": "Σαφή",
"clear_all": "Τα καθαρίζω όλα",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Συνδέω-συωδεομαι",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Ωραιοποιώ",
"remove": "Αφαιρώ",
"rename": "Rename",
"restore": "Επαναφέρω",
"save": "Αποθηκεύσετε",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Αναζήτηση",
"share": "Μερίδιο",
"shortcuts": "Συντομεύσεις",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Προβολέας θέατρου",
"status": "Κατάσταση",
"status_description": "Ελέγξτε το status της Ιστοσελίδας",
@@ -131,12 +135,15 @@
"renamed": "Η συλλογή μετονομάστηκε",
"request_in_use": "Request in use",
"save_as": "Αποθήκευση ως",
"save_to_collection": "Save to Collection",
"select": "Επιλέξτε μια Συλλογή",
"select_location": "Επιλέξτε τοποθεσία",
"select_team": "Επιλέξτε μια ομάδα",
"team_collections": "Συλλογές ομάδων"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Είστε βέβαιοι ότι θέλετε να αποσυνδεθείτε?",
"remove_collection": "Είστε βέβαιοι ότι θέλετε να διαγράψετε οριστικά αυτήν τη συλλογή;",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Είστε βέβαιοι ότι θέλετε να συγχρονίσετε αυτόν τον χώρο εργασίας;"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Κεφαλίδα {count}",
"message": "Μήνυμα {count}",
@@ -192,17 +204,31 @@
"create_new": "Δημιουργήστε νέο περιβάλλον",
"created": "Το Περιβάλλον δημιουργήθηκε",
"deleted": "Διαγραφή Περιβάλλοντος",
"duplicated": "Environment duplicated",
"edit": "Επεξεργασία Περιβάλλοντος",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Καταχωρίστε ένα έγκυρο όνομα για το περιβάλλον",
"list": "Environment variables",
"my_environments": "Τα Περιβάλλοντα μου",
"name": "Name",
"nested_overflow": "Οι 'φωλιασμένες' μεταβλητές περιβάλλοντος είναι περιορισμένες σε 10 επίπεδα",
"new": "Νέο Περιβάλλον",
"no_active_environment": "No active environment",
"no_environment": "Χωρίς περιβάλλον",
"no_environment_description": "Δέν επιλέχθηκε κάποιο περιβάλλον. Διαλέξτε τι θέλετε να κάνετε με τις παρακάτω μεταβλητές.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Επιλέξτε περιβάλλον",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Περιβάλλοντα Ομάδας",
"title": "Περιβάλλοντα",
"updated": "Αναβάθμιση Περιβάλλοντος",
"value": "Value",
"variable": "Variable",
"variable_list": "Λίστα μεταβλητών"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Χωρίς διάρκεια",
"no_results_found": "Δεν βρέθηκαν αντιστοιχίες",
"page_not_found": "Αυτή η σελίδα δεν βρέθηκε",
"proxy_error": "Proxy error",
"script_fail": "Δεν ήταν δυνατή η εκτέλεση του σεναρίου πριν από το αίτημα",
"something_went_wrong": "Κάτι πήγε στραβά",
"test_script_fail": "Δεν μπορεσε να εκτελεστεί το post-request script"
@@ -251,9 +278,13 @@
"renamed": "Ο φάκελος μετονομάστηκε"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Μεταλλάξεις",
"schema": "Σχήμα",
"subscriptions": "Συνδρομές"
"subscriptions": "Συνδρομές",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Εισαγωγή συλλογών αρχείο JSON Hoppscotch Collections",
"title": "Εισαγωγή"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Σύμπτυξη ή επέκταση Συλλογών",
"collapse_sidebar": "Σύμπτυξη ή επέκταση του sidebar",
"column": "Κατακόρυφη Διάταξη",
"name": "Διάταξη",
"row": "Οριζόντια Διάταξη",
"zen_mode": "Λειτουργία Zen"
"row": "Οριζόντια Διάταξη"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Φορτίο επί πληρωμή",
"query": "Ερώτηση",
"raw_body": "Σώμα Ακατέργαστου Αιτήματος",
"rename": "Rename Request",
"renamed": "Το αίτημα μετονομάστηκε",
"run": "Τρέξιμο",
"save": "Σώσει",
@@ -425,6 +480,7 @@
"saved": "Το αίτημα αποθηκεύτηκε",
"share": "Μερίδιο",
"share_description": "Κοινοποίηση Hoppscotch στους φίλους σου",
"stop": "Stop",
"title": "Αίτηση",
"type": "Τύπος αιτήματος",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Αυτό είναι το εμφανιζόμενο όνομά σας.",
"background": "Ιστορικό",
"black_mode": "Μαύρος",
"change_font_size": "Αλλαγή μεγέθους γραμματοσειράς",
"choose_language": "Διάλεξε γλώσσα",
"dark_mode": "Σκοτάδι",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Επεκτάσεις",
"extensions_use_toggle": "Χρησιμοποιήστε την επέκταση του προγράμματος περιήγησης για να στείλετε αιτήματα (εάν υπάρχουν)",
"follow": "Ακολούθησε Μας",
"font_size": "Μέγεθος γραμματοσειράς",
"font_size_large": "Μεγάλο",
"font_size_medium": "Μεσαίο",
"font_size_small": "Μικρό",
"interceptor": "Αναχαιτιστής",
"interceptor_description": "Middleware μεταξύ εφαρμογής και API.",
"language": "Γλώσσα",
@@ -540,19 +591,27 @@
"settings": "Μεταβείτε στη σελίδα Ρυθμίσεις",
"title": "Πλοήγηση"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Αντιγραφή συνδέσμου αιτήματος",
"delete_method": "Επιλέξτε ΔΙΑΓΡΑΦΗ μεθόδου",
"get_method": "Επιλέξτε μέθοδο GET",
"head_method": "Επιλέξτε μέθοδο HEAD",
"import_curl": "Import cURL",
"method": "Μέθοδος",
"next_method": "Επιλέξτε Επόμενη μέθοδος",
"post_method": "Επιλέξτε μέθοδο POST",
"previous_method": "Επιλέξτε Προηγούμενη μέθοδος",
"put_method": "Επιλέξτε μέθοδο PUT",
"rename": "Rename Request",
"reset_request": "Επαναφορά αιτήματος",
"save_request": "Save Request",
"save_to_collections": "Αποθήκευση στις Συλλογές",
"send_request": "Στείλε αίτημα",
"show_code": "Generate code snippet",
"title": "Αίτηση"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Logs",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Τύπος συμβάντος",
"log": "Logs",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Εξουσιοδότηση",
"body": "Σώμα",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Συλλογές",
"documentation": "Τεκμηρίωση",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Κεφαλίδες",
"history": "Ιστορία",

View File

@@ -1,11 +1,12 @@
{
"action": {
"add": "Add",
"autoscroll": "Autoscroll",
"cancel": "Cancel",
"choose_file": "Choose a file",
"clear": "Clear",
"clear_history": "Clear All History",
"clear_all": "Clear all",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Connect",
"connecting": "Connecting",
@@ -31,8 +32,8 @@
"open_workspace": "Open workspace",
"paste": "Paste",
"prettify": "Prettify",
"rename": "Rename",
"remove": "Remove",
"rename": "Rename",
"restore": "Restore",
"save": "Save",
"scroll_to_bottom": "Scroll to bottom",
@@ -54,9 +55,28 @@
"new": "Add new",
"star": "Add star"
},
"cookies": {
"modal": {
"new_domain_name": "New domain name",
"set": "Set a cookie",
"cookie_string": "Cookie string",
"enter_cookie_string": "Enter cookie string",
"cookie_name": "Name",
"cookie_value": "Value",
"cookie_path": "Path",
"cookie_expires": "Expires",
"managed_tab": "Managed",
"raw_tab": "Raw",
"interceptor_no_support": "Your currently selected interceptor does not support cookies. Select a different Interceptor and try again.",
"empty_domains": "Domain list is empty",
"empty_domain": "Domain is empty",
"no_cookies_in_domain": "No cookies set for this domain"
}
},
"app": {
"chat_with_us": "Chat with us",
"contact_us": "Contact us",
"cookies": "Cookies",
"copy": "Copy",
"copy_user_id": "Copy User Auth Token",
"developer_option": "Developer options",
@@ -69,8 +89,6 @@
"invite": "Invite",
"invite_description": "Hoppscotch is an open source API development ecosystem. We designed a simple and intuitive interface for creating and managing your APIs. Hoppscotch is a tool that helps you build, test, document and share your APIs.",
"invite_your_friends": "Invite your friends",
"social_links": "Social links",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"join_discord_community": "Join our Discord community",
"keyboard_shortcuts": "Keyboard shortcuts",
"name": "Hoppscotch",
@@ -81,6 +99,8 @@
"search": "Search",
"share": "Share",
"shortcuts": "Shortcuts",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Spotlight",
"status": "Status",
"status_description": "Check the status of the website",
@@ -112,18 +132,34 @@
},
"authorization": {
"generate_token": "Generate Token",
"graphql_headers": "Authorization Headers are sent as part of the payload to connection_init",
"include_in_url": "Include in URL",
"learn": "Learn how",
"pass_key_by": "Pass by",
"password": "Password",
"token": "Token",
"type": "Authorization Type",
"username": "Username"
"username": "Username",
"oauth": {
"token_generation_oidc_discovery_failed": "Failure on token generation: OpenID Connect Discovery Failed",
"something_went_wrong_on_token_generation": "Something went wrong on token generation",
"redirect_auth_server_returned_error": "Auth Server returned an error state",
"redirect_no_auth_code": "No Authorization Code present in the redirect",
"redirect_invalid_state": "Invalid State value present in the redirect",
"redirect_no_token_endpoint": "No Token Endpoint Defined",
"redirect_no_client_id": "No Client ID defined",
"redirect_no_client_secret": "No Client Secret Defined",
"redirect_no_code_verifier": "No Code Verifier Defined",
"redirect_auth_token_request_failed": "Request to get the auth token failed",
"redirect_auth_token_request_invalid_response": "Invalid Response from the Token Endpoint when requesting for an auth token",
"something_went_wrong_on_oauth_redirect": "Something went wrong during OAuth Redirect"
}
},
"collection": {
"created": "Collection created",
"different_parent": "Cannot reorder collection with different parent",
"edit": "Edit Collection",
"import_or_create": "Import or create a collection",
"invalid_name": "Please provide a name for the collection",
"invalid_root_move": "Collection already in the root",
"moved": "Moved Successfully",
@@ -142,6 +178,8 @@
"team_collections": "Team Collections"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Are you sure you want to logout?",
"remove_collection": "Are you sure you want to permanently delete this collection?",
@@ -153,14 +191,12 @@
"remove_telemetry": "Are you sure you want to opt-out of Telemetry?",
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"sync": "Would you like to restore your workspace from cloud? This will discard your local progress."
},
"context_menu": {
"set_environment_variable": "Set as variable",
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab"
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Header {count}",
@@ -206,9 +242,10 @@
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Edit Environment",
"global": "Global",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"import_or_create": "Import or create a environment",
"invalid_name": "Please provide a name for the environment",
"list": "Environment variables",
"my_environments": "My Environments",
@@ -234,6 +271,7 @@
"error": {
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
"check_console_details": "Check console log for details.",
"check_how_to_add_origin": "Check how you can add an origin",
"curl_invalid_format": "cURL is not formatted properly",
"danger_zone": "Danger zone",
"delete_account": "Your account is currently an owner in these teams:",
@@ -249,9 +287,12 @@
"json_prettify_invalid_body": "Couldn't prettify an invalid body, solve json syntax errors and try again",
"network_error": "There seems to be a network error. Please try again.",
"network_fail": "Could not send request",
"no_collections_to_export": "No collections to export. Please create a collection to get started.",
"no_duration": "No duration",
"no_environments_to_export": "No environments to export. Please create an environment to get started.",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"please_install_extension": "Please install the extension and add origin to the extension.",
"proxy_error": "Proxy error",
"script_fail": "Could not execute pre-request script",
"something_went_wrong": "Something went wrong",
@@ -278,13 +319,13 @@
"renamed": "Folder renamed"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutations",
"schema": "Schema",
"switch_connection": "Switch connection",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"subscriptions": "Subscriptions"
"subscriptions": "Subscriptions",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -313,30 +354,6 @@
"preview": "Hide Preview",
"sidebar": "Collapse sidebar"
},
"inspections": {
"title": "Inspector",
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"network_error": "Please check your network connection.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request."
},
"url": {
"extension_not_installed": "Extension not installed.",
"extention_not_enabled": "Extension not enabled.",
"extention_enable_action": "Enable Browser Extension",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list."
}
},
"import": {
"collections": "Import collections",
"curl": "Import cURL",
@@ -362,13 +379,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Import"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen mode"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -457,6 +497,8 @@
"enter_curl": "Enter cURL command",
"generate_code": "Generate code",
"generated_code": "Generated code",
"go_to_authorization_tab": "Go to Authorization tab",
"go_to_body_tab": "Go to Body tab",
"header_list": "Header List",
"invalid_name": "Please provide a name for the request",
"method": "Method",
@@ -476,12 +518,12 @@
"rename": "Rename Request",
"renamed": "Request renamed",
"run": "Run",
"stop": "Stop",
"save": "Save",
"save_as": "Save as",
"saved": "Request saved",
"share": "Share",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Request",
"type": "Request type",
"url": "URL",
@@ -516,9 +558,8 @@
"account_name_description": "This is your display name.",
"background": "Background",
"black_mode": "Black",
"dark_mode": "Dark",
"change_font_size": "Change font size",
"choose_language": "Choose language",
"dark_mode": "Dark",
"delete_account": "Delete account",
"delete_account_description": "Once you delete your account, all your data will be permanently deleted. This action cannot be undone.",
"expand_navigation": "Expand navigation",
@@ -529,10 +570,6 @@
"extensions": "Browser extension",
"extensions_use_toggle": "Use the browser extension to send requests (if present)",
"follow": "Follow us",
"font_size": "Font size",
"font_size_large": "Large",
"font_size_medium": "Medium",
"font_size_small": "Small",
"interceptor": "Interceptor",
"interceptor_description": "Middleware between application and APIs.",
"language": "Language",
@@ -563,6 +600,7 @@
"use_experimental_url_bar": "Use experimental URL bar with environment highlighting",
"user": "User",
"verified_email": "Verified email",
"additional": "Additional Settings",
"verify_email": "Verify email"
},
"shortcodes": {
@@ -582,10 +620,6 @@
"show_all": "Keyboard shortcuts",
"title": "General"
},
"others": {
"title": "Others",
"prettify": "Prettify Editor's Content"
},
"miscellaneous": {
"invite": "Invite people to Hoppscotch",
"title": "Miscellaneous"
@@ -601,23 +635,27 @@
"settings": "Go to Settings page",
"title": "Navigation"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copy Request Link",
"delete_method": "Select DELETE method",
"get_method": "Select GET method",
"head_method": "Select HEAD method",
"rename": "Rename Request",
"import_curl": "Import cURL",
"show_code": "Generate code snippet",
"method": "Method",
"next_method": "Select Next method",
"post_method": "Select POST method",
"previous_method": "Select Previous method",
"put_method": "Select PUT method",
"rename": "Rename Request",
"reset_request": "Reset Request",
"save_request": "Save Request",
"save_to_collections": "Save to Collections",
"send_request": "Send Request",
"save_request": "Save Request",
"show_code": "Generate code snippet",
"title": "Request"
},
"response": {
@@ -648,87 +686,82 @@
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"help_menu": "Help and support",
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_keybindings": "Keyboard shortcuts",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"switch_to": "Switch to",
"select_method": "Select method",
"save_as_new": "Save as new request",
"tab_parameters": "Parameters tab",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_authorization": "Authorization tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_tests": "Tests tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"environments": {
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"edit": "Edit current environment",
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"edit_global": "Edit global environment",
"duplicate_global": "Duplicate global environment",
"title": "Environments"
},
"workspace": {
"new": "Create new team",
"edit": "Edit current team",
"delete": "Delete current team",
"invite": "Invite people to team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
},
"tab": {
"duplicate": "Duplicate current tab",
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"section": {
"user": "User",
"theme": "Theme",
"interceptor": "Interceptor",
"interface": "Interface",
"interceptor": "Interceptor"
"theme": "Theme",
"user": "User"
},
"change_language": "Change Language",
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
},
"font": {
"size_sm": "Small",
"size_md": "Medium",
"size_lg": "Large"
},
"change_interceptor": "Change Interceptor",
"change_language": "Change Language"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
@@ -754,9 +787,11 @@
"disconnected_from": "Disconnected from {name}",
"docs_generated": "Documentation generated",
"download_started": "Download started",
"download_failed": "Download failed",
"enabled": "Enabled",
"file_imported": "File imported",
"finished_in": "Finished in {duration} ms",
"hide": "Hide",
"history_deleted": "History deleted",
"linewrap": "Wrap lines",
"loading": "Loading...",
@@ -767,6 +802,7 @@
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
"published_message": "Published message: {message} to topic: {topic}",
"reconnection_error": "Failed to reconnect",
"show": "Show",
"subscribed_failed": "Failed to subscribe to topic: {topic}",
"subscribed_success": "Successfully subscribed to topic: {topic}",
"unsubscribed_failed": "Failed to unsubscribe from topic: {topic}",
@@ -776,7 +812,7 @@
"support": {
"changelog": "Read more about latest releases",
"chat": "Questions? Chat with us!",
"community": "Ask questions and help others",
"community": "Ask questions and help others",
"documentation": "Read more about Hoppscotch",
"forum": "Ask questions and get answers",
"github": "Follow us on Github",
@@ -848,12 +884,14 @@
"new": "New Team",
"new_created": "New team created",
"new_name": "My New Team",
"no_access": "You do not have edit access to these collections",
"no_access": "You do not have edit access to this team",
"no_invite_found": "Invitation not found. Contact your team owner.",
"no_request_found": "Request not found.",
"not_found": "Team not found. Contact your team owner.",
"not_valid_viewer": "You are not a valid viewer. Contact your team owner.",
"parent_coll_move": "Cannot move collection to a child collection",
"success_invites": "Success invites",
"failed_invites": "Failed invites",
"pending_invites": "Pending invites",
"permissions": "Permissions",
"same_target_destination": "Same target and destination",

View File

@@ -5,6 +5,7 @@
"choose_file": "Seleccionar archivo",
"clear": "Limpiar",
"clear_all": "Limpiar todo",
"clear_history": "Clear all History",
"close": "Cerrar",
"connect": "Conectar",
"connecting": "Conectando",
@@ -31,6 +32,7 @@
"paste": "Pegar",
"prettify": "Embellecer",
"remove": "Eliminar",
"rename": "Rename",
"restore": "Restaurar",
"save": "Guardar",
"scroll_to_bottom": "Desplazar hacia abajo",
@@ -77,6 +79,8 @@
"search": "Buscar",
"share": "Compartir",
"shortcuts": "Atajos",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Destacar",
"status": "Estado",
"status_description": "Comprobar el estado del sitio web",
@@ -131,12 +135,15 @@
"renamed": "Colección renombrada",
"request_in_use": "Solicitud en uso",
"save_as": "Guardar como",
"save_to_collection": "Save to Collection",
"select": "Seleccionar colección",
"select_location": "Seleccionar ubicación",
"select_team": "Seleccionar equipo",
"team_collections": "Colecciones de equipos"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "¿Estás seguro de que quieres dejar este equipo?",
"logout": "¿Estás seguro de que deseas cerrar la sesión?",
"remove_collection": "¿Estás seguro de que deseas eliminar esta colección de forma permanente?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "¿Deseas guardar los cambios realizados en esta pestaña?",
"sync": "¿Estás seguro de que deseas sincronizar este espacio de trabajo?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Encabezado {count}",
"message": "Mensaje {count}",
@@ -192,17 +204,31 @@
"create_new": "Crear un nuevo entorno",
"created": "Environment created",
"deleted": "Eliminar el entorno",
"duplicated": "Environment duplicated",
"edit": "Editar entorno",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Proporciona un nombre válido para el entorno.",
"list": "Environment variables",
"my_environments": "Mis entornos",
"name": "Name",
"nested_overflow": "las variables de entorno anidadas están limitadas a 10 niveles",
"new": "Nuevo entorno",
"no_active_environment": "No active environment",
"no_environment": "Sin entorno",
"no_environment_description": "No se ha seleccionado ningún entorno. Elije qué hacer con las siguientes variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Seleccionar entorno",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Entornos de trabajo en equipo",
"title": "Entornos",
"updated": "Entorno actualizado",
"value": "Value",
"variable": "Variable",
"variable_list": "Lista de variables"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Sin duración",
"no_results_found": "No se han encontrado coincidencias",
"page_not_found": "No se ha podido encontrar esta página",
"proxy_error": "Proxy error",
"script_fail": "No se pudo ejecutar el script de solicitud previa",
"something_went_wrong": "Algo salió mal",
"test_script_fail": "No se ha podido ejecutar la secuencia de comandos posterior a la solicitud"
@@ -251,9 +278,13 @@
"renamed": "Carpeta renombrada"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutaciones",
"schema": "Esquema",
"subscriptions": "Suscripciones"
"subscriptions": "Suscripciones",
"switch_connection": "Switch connection"
},
"group": {
"time": "Tiempo",
@@ -307,13 +338,36 @@
"json_description": "Importar colecciones desde un archivo JSON de colecciones de Hoppscotch",
"title": "Importar"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Contraer o expandir colecciones",
"collapse_sidebar": "Contraer o expandir la barra lateral",
"column": "Disposición vertical",
"name": "Diseño",
"row": "Disposición horizontal",
"zen_mode": "Modo zen"
"row": "Disposición horizontal"
},
"modal": {
"close_unsaved_tab": "Tienes cambios sin guardar",
@@ -418,6 +472,7 @@
"payload": "Carga útil",
"query": "Consulta",
"raw_body": "Cuerpo de solicitud sin procesar",
"rename": "Rename Request",
"renamed": "Solicitud renombrada",
"run": "Ejecutar",
"save": "Guardar",
@@ -425,6 +480,7 @@
"saved": "Solicitud guardada",
"share": "Compartir",
"share_description": "Comparte Hoppscotch con tus amigos",
"stop": "Stop",
"title": "Solicitud",
"type": "Tipo de solicitud",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Este es tu nombre para mostrar.",
"background": "Fondo",
"black_mode": "Negro",
"change_font_size": "Cambiar tamaño de fuente",
"choose_language": "Elegir idioma",
"dark_mode": "Oscuro",
"delete_account": "Eliminar cuenta",
@@ -472,10 +527,6 @@
"extensions": "Extensiones",
"extensions_use_toggle": "Utilizar la extensión del navegador para enviar peticiones (si está presente)",
"follow": "Síguenos",
"font_size": "Tamaño de fuente",
"font_size_large": "Grande",
"font_size_medium": "Mediano",
"font_size_small": "Pequeño",
"interceptor": "Interceptador",
"interceptor_description": "Middleware entre la aplicación y las APIs.",
"language": "Idioma",
@@ -540,19 +591,27 @@
"settings": "Ir a la página de configuración",
"title": "Navegación"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copiar enlace de solicitud",
"delete_method": "Seleccionar método DELETE",
"get_method": "Seleccionar método GET",
"head_method": "Seleccionar método HEAD",
"import_curl": "Import cURL",
"method": "Método",
"next_method": "Seleccionar método siguiente",
"post_method": "Seleccionar método POST",
"previous_method": "Seleccionar método anterior",
"put_method": "Seleccionar método PUT",
"rename": "Rename Request",
"reset_request": "Solicitud de reinicio",
"save_request": "Save Request",
"save_to_collections": "Guardar en colecciones",
"send_request": "Enviar solicitud",
"show_code": "Generate code snippet",
"title": "Solicitud"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Registro",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tipo de evento",
"log": "Registro",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorización",
"body": "Cuerpo",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Colecciones",
"documentation": "Documentación",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Encabezados",
"history": "Historial",

View File

@@ -5,6 +5,7 @@
"choose_file": "Valitse tiedosto",
"clear": "Asia selvä",
"clear_all": "Tyhjennä",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Kytkeä",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Koristella",
"remove": "Poista",
"rename": "Rename",
"restore": "Palauttaa",
"save": "Tallentaa",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Hae",
"share": "Jaa",
"shortcuts": "Pikanäppäimet",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Valokeila",
"status": "Tila",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Kokoelma nimetty uudelleen",
"request_in_use": "Request in use",
"save_as": "Tallenna nimellä",
"save_to_collection": "Save to Collection",
"select": "Valitse kokoelma",
"select_location": "Valitse sijainti",
"select_team": "Valitse joukkue",
"team_collections": "Joukkuekokoelmat"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Haluatko varmasti kirjautua ulos?",
"remove_collection": "Haluatko varmasti poistaa tämän kokoelman pysyvästi?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Haluatko varmasti synkronoida tämän työtilan?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Otsikko {count}",
"message": "Viesti {count}",
@@ -192,17 +204,31 @@
"create_new": "Luo uusi ympäristö",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Muokkaa ympäristöä",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Anna ympäristölle kelvollinen nimi",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Uusi ympäristö",
"no_active_environment": "No active environment",
"no_environment": "Ei ympäristöä",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Valitse ympäristö",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Ympäristöt",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Muuttujien luettelo"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Ei kestoa",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Ennakkopyyntöskriptiä ei voitu suorittaa",
"something_went_wrong": "Jotain meni pieleen",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Kansio nimettiin uudelleen"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutaatiot",
"schema": "Kaavio",
"subscriptions": "Tilaukset"
"subscriptions": "Tilaukset",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Tuonti"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen -tila"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Hyötykuorma",
"query": "Kysely",
"raw_body": "Raaka pyynnön runko",
"rename": "Rename Request",
"renamed": "Pyyntö nimettiin uudelleen",
"run": "Juosta",
"save": "Tallentaa",
@@ -425,6 +480,7 @@
"saved": "Pyyntö tallennettu",
"share": "Jaa",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Pyyntö",
"type": "Pyynnön tyyppi",
"url": "URL -osoite",
@@ -459,7 +515,6 @@
"account_name_description": "Tämä on näyttönimesi.",
"background": "Tausta",
"black_mode": "Musta",
"change_font_size": "Vaihda fontin kokoa",
"choose_language": "Valitse kieli",
"dark_mode": "Tumma",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Laajennukset",
"extensions_use_toggle": "Käytä pyyntöjen lähettämiseen selainlaajennusta (jos sellainen on)",
"follow": "Follow Us",
"font_size": "Fonttikoko",
"font_size_large": "Suuri",
"font_size_medium": "Keskikokoinen",
"font_size_small": "Pieni",
"interceptor": "Torjuntahävittäjä",
"interceptor_description": "Sovellusliittymien ja sovellusliittymien välinen väliohjelmisto.",
"language": "Kieli",
@@ -540,19 +591,27 @@
"settings": "Siirry Asetukset -sivulle",
"title": "Navigointi"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopioi pyyntölinkki",
"delete_method": "Valitse POISTA menetelmä",
"get_method": "Valitse GET -menetelmä",
"head_method": "Valitse HEAD -menetelmä",
"import_curl": "Import cURL",
"method": "Menetelmä",
"next_method": "Valitse Seuraava menetelmä",
"post_method": "Valitse POST -menetelmä",
"previous_method": "Valitse Edellinen menetelmä",
"put_method": "Valitse PUT -menetelmä",
"rename": "Rename Request",
"reset_request": "Nollaa pyyntö",
"save_request": "Save Request",
"save_to_collections": "Tallenna kokoelmiin",
"send_request": "Lähetä pyyntö",
"show_code": "Generate code snippet",
"title": "Pyyntö"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Hirsi",
"url": "URL -osoite"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tapahtumatyyppi",
"log": "Hirsi",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Valtuutus",
"body": "Runko",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Kokoelmat",
"documentation": "Dokumentointi",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Otsikot",
"history": "Historia",

View File

@@ -5,6 +5,7 @@
"choose_file": "Choisir un fichier",
"clear": "Effacer",
"clear_all": "Tout effacer",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Connecter",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Coller",
"prettify": "Formater",
"remove": "Supprimer",
"rename": "Rename",
"restore": "Restaurer",
"save": "Sauvegarder",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Chercher",
"share": "Partager",
"shortcuts": "Raccourcis",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Projecteur",
"status": "Statut",
"status_description": "Vérifier l'état du site web",
@@ -131,12 +135,15 @@
"renamed": "Collection renommée",
"request_in_use": "Demande en cours d'utilisation",
"save_as": "Enregistrer sous",
"save_to_collection": "Save to Collection",
"select": "Sélectionnez une collection",
"select_location": "Sélectionnez l'emplacement",
"select_team": "Sélectionnez une équipe",
"team_collections": "Collections de l'équipe"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Êtes-vous sûr de vouloir vous déconnecter?",
"remove_collection": "Voulez-vous vraiment supprimer définitivement cette collection ?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Voulez-vous vraiment synchroniser cet espace de travail ?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "En-tête {count}",
"message": "Message {compte}",
@@ -192,17 +204,31 @@
"create_new": "Créer un nouvel environnement",
"created": "Environnement créé",
"deleted": "Environnement supprimé",
"duplicated": "Environment duplicated",
"edit": "Modifier l'environnement",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Veuillez fournir un nom valide pour l'environnement",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "les variables d'environnement imbriquées sont limitées à 10 niveaux",
"new": "Nouvel environnement",
"no_active_environment": "No active environment",
"no_environment": "Pas d'environnement",
"no_environment_description": "Aucun environnement n'a été sélectionné. Choisissez ce qu'il faut faire avec les variables suivantes.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Sélectionnez l'environnement",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Environnements",
"updated": "Mise à jour de l'environnement",
"value": "Value",
"variable": "Variable",
"variable_list": "Liste des variables"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Pas de durée",
"no_results_found": "Aucune correspondance trouvée",
"page_not_found": "Cette page n'a pas pu être trouvée",
"proxy_error": "Proxy error",
"script_fail": "Impossible d'exécuter le script de pré-requête",
"something_went_wrong": "Quelque chose s'est mal passé",
"test_script_fail": "Impossible d'exécuter le script post-requête"
@@ -251,9 +278,13 @@
"renamed": "Dossier renommé"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutations",
"schema": "Schéma",
"subscriptions": "Abonnements"
"subscriptions": "Abonnements",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Importer des collections depuis un fichier JSON Hoppscotch",
"title": "Importer"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Réduire ou développer les collections",
"collapse_sidebar": "Réduire ou développer la barre latérale",
"column": "Disposition verticale",
"name": "Disposition",
"row": "Disposition horizontale",
"zen_mode": "Mode Zen"
"row": "Disposition horizontale"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Charge utile",
"query": "Requête",
"raw_body": "Corps de requête brut",
"rename": "Rename Request",
"renamed": "Requête renommée",
"run": "Lancer",
"save": "Sauvegarder",
@@ -425,6 +480,7 @@
"saved": "Requête enregistrée",
"share": "Partager",
"share_description": "Partagez Hoppscotch avec vos amis",
"stop": "Stop",
"title": "Requête",
"type": "Type de requête",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Ceci est votre nom d'affichage.",
"background": "Fond",
"black_mode": "Noir",
"change_font_size": "Changer la taille de la police",
"choose_language": "Choisissez la langue",
"dark_mode": "Sombre",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Extensions",
"extensions_use_toggle": "Utilisez l'extension de navigateur pour envoyer des requêtes (le cas échéant)",
"follow": "Follow Us",
"font_size": "Taille de police",
"font_size_large": "Grande",
"font_size_medium": "Moyenne",
"font_size_small": "Petite",
"interceptor": "Intercepteur",
"interceptor_description": "Middleware entre l'application et les API.",
"language": "Langue",
@@ -540,19 +591,27 @@
"settings": "Aller à la page Paramètres",
"title": "Navigation"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copier le lien de requête",
"delete_method": "Sélectionnez la méthode DELETE",
"get_method": "Sélectionnez la méthode GET",
"head_method": "Sélectionnez la méthode HEAD",
"import_curl": "Import cURL",
"method": "Méthode",
"next_method": "Sélectionnez la méthode suivante",
"post_method": "Sélectionnez la méthode POST",
"previous_method": "Sélectionnez la méthode précédente",
"put_method": "Sélectionnez la méthode PUT",
"rename": "Rename Request",
"reset_request": "Réinitialiser la requête",
"save_request": "Save Request",
"save_to_collections": "Enregistrer dans les collections",
"send_request": "Envoyer la requête",
"show_code": "Generate code snippet",
"title": "Requête"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Infos",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Type d'événement",
"log": "Infos",
@@ -589,7 +727,7 @@
},
"state": {
"bulk_mode": "Modification groupée",
"bulk_mode_placeholder": "Les entrées sont séparées par une nouvelle ligne\nLes clés et les valeurs sont séparées par :\nAjoutez # à n'importe quelle ligne que vous souhaitez ajouter mais garder désactivée",
"bulk_mode_placeholder": "Les entrées sont séparées par une nouvelle ligne\nLes clés et les valeurs sont séparées par :\nAjoutez # à n'importe quelle ligne que vous souhaitez ajouter mais garder désactivée",
"cleared": "Effacé",
"connected": "Connecté",
"connected_to": "Connecté à {nom}",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorisation",
"body": "Corps",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Collections",
"documentation": "Documentation",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "En-têtes",
"history": "Histoire",
@@ -691,7 +832,7 @@
"member_role_updated": "Rôles des utilisateurs mis à jour",
"members": "Membres",
"more_members": "+{count} more",
"name_length_insufficient": "Le nom de l'équipe doit comporter au moins 6 caractères",
"name_length_insufficient": "Le nom de l'équipe doit comporter au moins 6 caractères",
"name_updated": "Nom de l'équipe mis à jour",
"new": "Nouvelle équipe",
"new_created": "Nouvelle équipe créée",

View File

@@ -5,6 +5,7 @@
"choose_file": "בחר קובץ",
"clear": "ברור",
"clear_all": "נקה הכל",
"clear_history": "Clear all History",
"close": "Close",
"connect": "לְחַבֵּר",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "לְיַפּוֹת",
"remove": "לְהַסִיר",
"rename": "Rename",
"restore": "לשחזר",
"save": "להציל",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "לחפש",
"share": "לַחֲלוֹק",
"shortcuts": "קיצורי דרך",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "זַרקוֹר",
"status": "סטָטוּס",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "שם האוסף שונה",
"request_in_use": "Request in use",
"save_as": "שמור כ",
"save_to_collection": "Save to Collection",
"select": "בחר אוסף",
"select_location": "תבחר מיקום",
"select_team": "בחר צוות",
"team_collections": "אוספי צוות"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "האם אתה בטוח שאתה רוצה להתנתק?",
"remove_collection": "האם אתה בטוח שברצונך למחוק את האוסף הזה לצמיתות?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "האם אתה בטוח שברצונך לסנכרן את סביבת העבודה הזו?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "כותרת {count}",
"message": "הודעה {count}",
@@ -192,17 +204,31 @@
"create_new": "צור סביבה חדשה",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "ערוך את הסביבה",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "אנא ספק שם חוקי לסביבה",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "סביבה חדשה",
"no_active_environment": "No active environment",
"no_environment": "אין סביבה",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "בחר סביבה",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "סביבות",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "רשימת משתנים"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "אין משך זמן",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "לא ניתן להפעיל סקריפט של בקשה מראש",
"something_went_wrong": "משהו השתבש",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "שם התיקייה שונה"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "מוטציות",
"schema": "סכֵימָה",
"subscriptions": "מנויים"
"subscriptions": "מנויים",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "יְבוּא"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "מצב זן"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "מטען",
"query": "שאילתא",
"raw_body": "גוף בקשה גולמית",
"rename": "Rename Request",
"renamed": "שם הבקשה שונה",
"run": "לָרוּץ",
"save": "להציל",
@@ -425,6 +480,7 @@
"saved": "הבקשה נשמרה",
"share": "לַחֲלוֹק",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "בַּקָשָׁה",
"type": "סוג בקשה",
"url": "כתובת URL",
@@ -459,7 +515,6 @@
"account_name_description": "זהו שם התצוגה שלך.",
"background": "רקע כללי",
"black_mode": "שָׁחוֹר",
"change_font_size": "שנה גודל פונט",
"choose_language": "בחר שפה",
"dark_mode": "אפל",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "הרחבות",
"extensions_use_toggle": "השתמש בתוסף הדפדפן כדי לשלוח בקשות (אם קיימות)",
"follow": "Follow Us",
"font_size": "גודל גופן",
"font_size_large": "גָדוֹל",
"font_size_medium": "בינוני",
"font_size_small": "קָטָן",
"interceptor": "מיירט",
"interceptor_description": "תוכנת ביניים בין יישום לממשקי API.",
"language": "שפה",
@@ -540,19 +591,27 @@
"settings": "עבור אל דף ההגדרות",
"title": "ניווט"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "העתק קישור לבקשה",
"delete_method": "בחר שיטת DELETE",
"get_method": "בחר שיטת GET",
"head_method": "בחר שיטת HEAD",
"import_curl": "Import cURL",
"method": "שיטה",
"next_method": "בחר בשיטה הבאה",
"post_method": "בחר שיטת POST",
"previous_method": "בחר שיטה קודמת",
"put_method": "בחר שיטת PUT",
"rename": "Rename Request",
"reset_request": "איפוס הבקשה",
"save_request": "Save Request",
"save_to_collections": "שמור באוספים",
"send_request": "שלח בקשה",
"show_code": "Generate code snippet",
"title": "בַּקָשָׁה"
},
"response": {
@@ -582,6 +641,85 @@
"log": "עֵץ",
"url": "כתובת URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "סוג אירוע",
"log": "עֵץ",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "הרשאה",
"body": "גוּף",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "אוספים",
"documentation": "תיעוד",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "כותרות",
"history": "הִיסטוֹרִיָה",

View File

@@ -5,6 +5,7 @@
"choose_file": "फ़ाइल चुनें",
"clear": "साफ़",
"clear_all": "सभी साफ करें",
"clear_history": "Clear all History",
"close": "बंद करे",
"connect": "कनेक्ट करें",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "पेस्ट",
"prettify": "सुंदर करे",
"remove": "हटाओ",
"rename": "Rename",
"restore": "पुनर्स्थापित करें",
"save": "बचाएं",
"scroll_to_bottom": "नीचे स्क्रॉल करें",
@@ -77,6 +79,8 @@
"search": "खोज",
"share": "बाँट",
"shortcuts": "शॉर्टकट",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "स्पॉटलाइट",
"status": "स्थिति",
"status_description": "वेबसाइट की स्थिति जांचें",
@@ -131,12 +135,15 @@
"renamed": "संग्रह का नाम बदला गया",
"request_in_use": "रिक्वेस्ट इन यूज़",
"save_as": "इस रूप में सेव करें",
"save_to_collection": "Save to Collection",
"select": "एक संग्रह का चयन करें",
"select_location": "स्थान चुनें",
"select_team": "एक टीम चुनें",
"team_collections": "टीम संग्रह"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "क्या आप वाकई इस टीम को छोड़ना चाहते हैं?",
"logout": "क्या आप वाकई लॉगआउट करना चाहते हैं?",
"remove_collection": "क्या आप वाकई इस संग्रह को स्थायी रूप से हटाना चाहते हैं?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "क्या आप अपने कार्यक्षेत्र को क्लाउड से पुनर्स्थापित करना चाहेंगे? यह आपकी स्थानीय प्रगति को त्याग देगा।"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "हेडर {count}",
"message": "मैसेज {count}",
@@ -192,17 +204,31 @@
"create_new": " नया वातावरण बनाएं",
"created": " पर्यावरण बनाया",
"deleted": " पर्यावरण विलोपन",
"duplicated": "Environment duplicated",
"edit": " पर्यावरण संपादित करें",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": " कृपया पर्यावरण के लिए एक नाम प्रदान करें",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": " नेस्टेड पर्यावरण चर 10 स्तरों तक सीमित हैं",
"new": " नया वातावरण",
"no_active_environment": "No active environment",
"no_environment": " कोई वातावरण नहीं",
"no_environment_description": " कोई परिवेश नहीं चुना गया था. चुनें कि निम्नलिखित चर के साथ क्या करना है।",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": " पर्यावरण का चयन करें",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": " वातावरण",
"updated": " पर्यावरण अद्यतन",
"value": "Value",
"variable": "Variable",
"variable_list": " परिवर्तनीय सूची"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": " कोई अवधि नहीं",
"no_results_found": " कोई मेल नहीं मिले",
"page_not_found": " यह पृष्ठ नहीं मिल सका",
"proxy_error": "Proxy error",
"script_fail": " पूर्व-अनुरोध स्क्रिप्ट निष्पादित नहीं कर सका",
"something_went_wrong": " कुछ गलत हो गया",
"test_script_fail": " अनुरोध के बाद स्क्रिप्ट निष्पादित नहीं कर सका"
@@ -251,9 +278,13 @@
"renamed": " फ़ोल्डर का नाम बदला"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": " उत्परिवर्तन",
"schema": " योजना",
"subscriptions": " सदस्यता"
"subscriptions": " सदस्यता",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -274,8 +305,7 @@
"pre_request_script": " पूर्व-अनुरोध स्क्रिप्ट जावास्क्रिप्ट में लिखी जाती हैं, और अनुरोध भेजे जाने से पहले चलाई जाती हैं।",
"script_fail": " ऐसा लगता है कि प्री-रिक्वेस्ट स्क्रिप्ट में गड़बड़ है। नीचे दी गई त्रुटि की जाँच करें और उसके अनुसार स्क्रिप्ट को ठीक करें।",
"test_script_fail": " ऐसा लगता है कि परीक्षण स्क्रिप्ट में कोई त्रुटि है। कृपया त्रुटियों को ठीक करें और फिर से परीक्षण चलाएं",
"tests": "Write a test script to automate debugging.",
"test": "डिबगिंग को स्वचालित करने के लिए एक परीक्षण स्क्रिप्ट लिखें"
"tests": "Write a test script to automate debugging."
},
"hide": {
"collection": "संग्रह पैनल संक्षिप्त करें",
@@ -308,13 +338,36 @@
"json_description": "Hoppscotch Collections JSON फ़ाइल से संग्रह आयात करें",
"title": "आयात करें"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "संग्रह को संक्षिप्त या विस्तृत करें",
"collapse_sidebar": "साइडबार को संक्षिप्त या विस्तृत करें",
"column": "लंबवत लेआउट",
"name": "लेआउट",
"row": "क्षैतिज लेआउट",
"zen_mode": "ज़ेन मोड"
"row": "क्षैतिज लेआउट"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -419,6 +472,7 @@
"payload": "पेलोड",
"query": "सवाल",
"raw_body": "कच्चे अनुरोध निकाय",
"rename": "Rename Request",
"renamed": "अनुरोध नाम दिया गया",
"run": "दौड़ना",
"save": "बचाना",
@@ -426,6 +480,7 @@
"saved": "अनुरोध सहेजा गया",
"share": "शेयर करना",
"share_description": "अपने दोस्तों के साथ hoppscotch साझा करें",
"stop": "Stop",
"title": "प्रार्थना",
"type": "अनुरोध का प्रकार",
"url": "यूआरएल",
@@ -460,7 +515,6 @@
"account_name_description": "यह आपका प्रदर्शन नाम है।",
"background": "पार्श्वभूमि",
"black_mode": "काला",
"change_font_size": "फॉण्ट आकार बदलें",
"choose_language": "भाषा चुनें",
"dark_mode": "अँधेरा",
"delete_account": "Delete account",
@@ -473,10 +527,6 @@
"extensions": "ब्राउज़र विस्तार",
"extensions_use_toggle": "अनुरोध भेजने के लिए ब्राउज़र एक्सटेंशन का उपयोग करें (यदि मौजूद है)",
"follow": "हमारे पर का पालन करें",
"font_size": "फ़ॉन्ट आकार",
"font_size_large": "विशाल",
"font_size_medium": "मध्यम",
"font_size_small": "छोटा",
"interceptor": "इंटरसेप्टर",
"interceptor_description": "एप्लिकेशन और एपीआई के बीच मिडलवेयर।",
"language": "भाषा",
@@ -541,19 +591,27 @@
"settings": "सेटिंग्स पृष्ठ पर जाएं",
"title": "मार्गदर्शन"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "कॉपी अनुरोध लिंक",
"delete_method": "हटाएं विधि का चयन करें",
"get_method": "गेट विधि का चयन करें",
"head_method": "हेड विधि का चयन करें",
"import_curl": "Import cURL",
"method": "तरीका",
"next_method": "अगली विधि का चयन करें",
"post_method": "पोस्ट विधि का चयन करें",
"previous_method": "पिछली विधि का चयन करें",
"put_method": "पुट विधि का चयन करें",
"rename": "Rename Request",
"reset_request": "रीसेट अनुरोध",
"save_request": "Save Request",
"save_to_collections": "संग्रह के लिए सहेजें",
"send_request": "अनुरोध भेजा",
"show_code": "Generate code snippet",
"title": "प्रार्थना"
},
"response": {
@@ -583,6 +641,85 @@
"log": "लकड़ी का लट्ठा",
"url": "यूआरएल"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "घटना प्रकार",
"log": "लकड़ी का लट्ठा",
@@ -640,8 +777,11 @@
"tab": {
"authorization": "प्राधिकार",
"body": "शरीर",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "संग्रह",
"documentation": "प्रलेखन",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "हेडर",
"history": "इतिहास",

View File

@@ -5,6 +5,7 @@
"choose_file": "Válasszon egy fájlt",
"clear": "Törlés",
"clear_all": "Összes törlése",
"clear_history": "Clear all History",
"close": "Bezárás",
"connect": "Kapcsolódás",
"connecting": "Kapcsolódás",
@@ -31,6 +32,7 @@
"paste": "Beillesztés",
"prettify": "Csinosítás",
"remove": "Eltávolítás",
"rename": "Rename",
"restore": "Visszaállítás",
"save": "Mentés",
"scroll_to_bottom": "Görgetés az aljára",
@@ -77,6 +79,8 @@
"search": "Keresés",
"share": "Megosztás",
"shortcuts": "Gyorsbillentyűk",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Reflektorfény",
"status": "Állapot",
"status_description": "A weboldal állapotának ellenőrzése",
@@ -131,12 +135,15 @@
"renamed": "Gyűjtemény átnevezve",
"request_in_use": "A kérés használatban",
"save_as": "Mentés másként",
"save_to_collection": "Save to Collection",
"select": "Gyűjtemény kiválasztása",
"select_location": "Hely kiválasztása",
"select_team": "Csapat kiválasztása",
"team_collections": "Csapat gyűjteményei"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Biztosan el szeretné hagyni ezt a csapatot?",
"logout": "Biztosan ki szeretne jelentkezni?",
"remove_collection": "Biztosan véglegesen törölni szeretné ezt a gyűjteményt?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Szeretné menteni az ezen a lapon elvégzett változtatásokat?",
"sync": "Szeretné visszaállítani a munkaterületét a felhőből? Ez el fogja vetni a helyi folyamatát."
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "{count}. fejléc",
"message": "{count}. üzenet",
@@ -192,17 +204,31 @@
"create_new": "Új környezet létrehozása",
"created": "Környezet létrehozva",
"deleted": "Környezet törlése",
"duplicated": "Environment duplicated",
"edit": "Környezet szerkesztése",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Adjon nevet a környezetnek",
"list": "Environment variables",
"my_environments": "Saját környezetek",
"name": "Name",
"nested_overflow": "az egymásba ágyazott környezeti változók 10 szintre vannak korlátozva",
"new": "Új környezet",
"no_active_environment": "No active environment",
"no_environment": "Nincs környezet",
"no_environment_description": "Nem lettek környezetek kiválasztva. Válassza ki, hogy mit kell tenni a következő változókkal.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Környezet kiválasztása",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Csapatkörnyezetek",
"title": "Környezetek",
"updated": "Környezet frissítve",
"value": "Value",
"variable": "Variable",
"variable_list": "Változólista"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Nincs időtartam",
"no_results_found": "Nincs találat",
"page_not_found": "Ez az oldal nem található",
"proxy_error": "Proxy error",
"script_fail": "Nem sikerült végrehajtani a kérés előtti parancsfájlt",
"something_went_wrong": "Valami elromlott",
"test_script_fail": "Nem sikerült végrehajtani a kérés utáni parancsfájlt"
@@ -251,9 +278,13 @@
"renamed": "Mappa átnevezve"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutációk",
"schema": "Séma",
"subscriptions": "Feliratkozások"
"subscriptions": "Feliratkozások",
"switch_connection": "Switch connection"
},
"group": {
"time": "Idő",
@@ -307,13 +338,36 @@
"json_description": "Gyűjtemények importálása Hoppscotch-gyűjtemények JSON-fájlból",
"title": "Importálás"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Gyűjtemények összecsukása vagy kinyitása",
"collapse_sidebar": "Az oldalsáv összecsukása vagy kinyitása",
"column": "Függőleges elrendezés",
"name": "Elrendezés",
"row": "Vízszintes elrendezés",
"zen_mode": "Zen mód"
"row": "Vízszintes elrendezés"
},
"modal": {
"close_unsaved_tab": "Elmentetlen változtatásai vannak",
@@ -418,6 +472,7 @@
"payload": "Hasznos teher",
"query": "Lekérdezés",
"raw_body": "Nyers kéréstörzs",
"rename": "Rename Request",
"renamed": "Kérés átnevezve",
"run": "Futtatás",
"save": "Mentés",
@@ -425,6 +480,7 @@
"saved": "Kérés elmentve",
"share": "Megosztás",
"share_description": "A Hoppscotch megosztása az ismerőseivel",
"stop": "Stop",
"title": "Kérés",
"type": "Kérés típusa",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Ez a megjelenített neve.",
"background": "Háttér",
"black_mode": "Fekete",
"change_font_size": "Betűméret megváltoztatása",
"choose_language": "Nyelv kiválasztása",
"dark_mode": "Sötét",
"delete_account": "Fiók törlése",
@@ -472,10 +527,6 @@
"extensions": "Böngészőkiterjesztés",
"extensions_use_toggle": "A böngészőkiterjesztés használata a kérések küldéséhez (ha jelen van)",
"follow": "Kövessen minket",
"font_size": "Betűméret",
"font_size_large": "Nagy",
"font_size_medium": "Közepes",
"font_size_small": "Kicsi",
"interceptor": "Elfogó",
"interceptor_description": "Középprogram az alkalmazás és az API-k között.",
"language": "Nyelv",
@@ -540,19 +591,27 @@
"settings": "Ugrás a beállítások oldalra",
"title": "Navigáció"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kérés hivatkozásának másolása",
"delete_method": "DELETE módszer kiválasztása",
"get_method": "GET módszer kiválasztása",
"head_method": "HEAD módszer kiválasztása",
"import_curl": "Import cURL",
"method": "Módszer",
"next_method": "Következő módszer kiválasztása",
"post_method": "POST módszer kiválasztása",
"previous_method": "Előző módszer kiválasztása",
"put_method": "PUT módszer kiválasztása",
"rename": "Rename Request",
"reset_request": "Kérés visszaállítása",
"save_request": "Save Request",
"save_to_collections": "Mentés a gyűjteményekbe",
"send_request": "Kérés elküldése",
"show_code": "Generate code snippet",
"title": "Kérés"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Napló",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Esemény típusa",
"log": "Napló",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Felhatalmazás",
"body": "Törzs",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Gyűjtemények",
"documentation": "Dokumentáció",
"duplicate": "Duplicate Tab",
"environments": "Környezetek",
"headers": "Fejlécek",
"history": "Előzmények",

View File

@@ -5,6 +5,7 @@
"choose_file": "Pilih file",
"clear": "Bersihkan",
"clear_all": "Bersihkan semua",
"clear_history": "Clear all History",
"close": "Tutup",
"connect": "Sambungkan",
"connecting": "Menyambungkan",
@@ -31,6 +32,7 @@
"paste": "Tempel",
"prettify": "Prettify",
"remove": "Hapus",
"rename": "Rename",
"restore": "Pulihkan",
"save": "Simpan",
"scroll_to_bottom": "Gulir ke bawah",
@@ -77,6 +79,8 @@
"search": "Mencari",
"share": "Membagikan",
"shortcuts": "Jalan pintas",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Menyoroti",
"status": "Status",
"status_description": "Periksa status situs web",
@@ -118,25 +122,28 @@
},
"collection": {
"created": "Koleksi dibuat",
"different_parent": "Cannot reorder collection with different parent",
"different_parent": "Tidak dapat mengubah urutan koleksi dengan induk yang berbeda",
"edit": "Mengubah Koleksi",
"invalid_name": "Berikan nama untuk Koleksi",
"invalid_root_move": "Collection already in the root",
"moved": "Moved Successfully",
"invalid_root_move": "Koleksi sudah berada di akar direktori",
"moved": "Berhasil Dipindahkan",
"my_collections": "Koleksi Saya",
"name": "Koleksi Baru Saya",
"name_length_insufficient": "Nama koleksi harus minimal 3 karakter",
"new": "Koleksi baru",
"order_changed": "Collection Order Updated",
"order_changed": "Pembaruan Urutan Koleksi",
"renamed": "Koleksi berganti nama",
"request_in_use": "Permintaan sedang digunakan",
"save_as": "Simpan Sebagai",
"save_to_collection": "Save to Collection",
"select": "Pilih Koleksi",
"select_location": "Pilih lokasi",
"select_team": "Pilih team",
"select_team": "Pilih tim",
"team_collections": "Koleksi Tim"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Apakah Anda yakin ingin keluar dari tim ini?",
"logout": "Apakah Anda yakin ingin keluar?",
"remove_collection": "Apakah Anda yakin ingin menghapus koleksi ini secara permanen?",
@@ -147,9 +154,14 @@
"remove_team": "Apakah Anda yakin ingin menghapus tim ini?",
"remove_telemetry": "Apakah Anda yakin ingin menyisih dari Telemetri?",
"request_change": "Apakah Anda yakin ingin membuang permintaan saat ini, perubahan yang belum disimpan akan hilang.",
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"save_unsaved_tab": "Apakah Anda ingin menyimpan perubahan yang dibuat di tab ini?",
"sync": "Apakah Anda ingin memulihkan ruang kerja Anda dari cloud? Ini akan membuang kemajuan lokal Anda."
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Header {count}",
"message": "Pesan {count}",
@@ -180,8 +192,8 @@
"profile": "Masuk untuk melihat profil Anda",
"protocols": "Protokol kosong",
"schema": "Hubungkan ke endpoint GraphQL untuk melihat skema",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"shortcodes": "Shortcodes kosong",
"subscription": "Langganan kosong",
"team_name": "Nama team kosong",
"teams": "Kamu bukan di team manapun",
"tests": "Tidak ada tes untuk permintaan ini"
@@ -189,20 +201,34 @@
"environment": {
"add_to_global": "Tambahkan ke Global",
"added": "Tambahan Environment",
"create_new": "Membuat baru environment",
"create_new": "Membuat environment baru",
"created": "Environment dibuat",
"deleted": "Environment dihapus",
"duplicated": "Environment duplicated",
"edit": "Sunting Environment",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Tolong beri nama untuk environment",
"my_environments": "My Environments",
"nested_overflow": "variabel environment bersarang dibatasi hingga 10 level",
"list": "Environment variables",
"my_environments": "Environment Saya",
"name": "Name",
"nested_overflow": "Variabel environment bersarang dibatasi hingga 10 level",
"new": "Environment Baru",
"no_active_environment": "No active environment",
"no_environment": "No environment",
"no_environment_description": "Tidak ada environment yang dipilih. Pilih apa yang harus dilakukan dengan variabel berikut.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Pilih environment",
"team_environments": "Team Environments",
"title": "Environments",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Environment Tim",
"title": "Environment",
"updated": "Environment diperbarui",
"value": "Value",
"variable": "Variable",
"variable_list": "Daftar Variable"
},
"error": {
@@ -210,8 +236,8 @@
"check_console_details": "Periksa console log untuk detailnya.",
"curl_invalid_format": "cURL tidak diformat dengan benar",
"danger_zone": "Danger zone",
"delete_account": "Your account is currently an owner in these teams:",
"delete_account_description": "You must either remove yourself, transfer ownership, or delete these teams before you can delete your account.",
"delete_account": "Akun Anda saat ini merupakan pemilik dalam tim-tim ini:",
"delete_account_description": "Anda harus menghapus diri Anda dari tim-tim ini, mentransfer kepemilikan, atau menghapus tim-tim ini sebelum Anda dapat menghapus akun Anda.",
"empty_req_name": "Nama Permintaan Kosong",
"f12_details": "(F12 untuk detailnya)",
"gql_prettify_invalid_query": "Tidak dapat prettify kueri yang tidak valid, menyelesaikan kesalahan sintaksis kueri, dan coba lagi",
@@ -226,6 +252,7 @@
"no_duration": "Tidak ada durasi",
"no_results_found": "Tidak ada kecocokan yang ditemukan",
"page_not_found": "Halaman ini tidak dapat ditemukan",
"proxy_error": "Proxy error",
"script_fail": "Tidak dapat menjalankan pre-request script",
"something_went_wrong": "Ada yang salah",
"test_script_fail": "Tidak dapat mengeksekusi post-request script"
@@ -251,9 +278,13 @@
"renamed": "Folder berganti nama"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutations",
"schema": "Schema",
"subscriptions": "Subscriptions"
"subscriptions": "Subscriptions",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -294,7 +325,7 @@
"from_json_description": "Impor dari Hoppscotch berkas koleksi",
"from_my_collections": "Impor dari Koleksi Saya",
"from_my_collections_description": "Impor dari Berkas Koleksi Saya",
"from_openapi": "Import dari OpenAPI",
"from_openapi": "Impor dari OpenAPI",
"from_openapi_description": "Impor dari OpenAPI syarat berkas (YML/JSON)",
"from_postman": "Impor dari Postman",
"from_postman_description": "Impor dari Koleksi Postman",
@@ -307,32 +338,55 @@
"json_description": "Impor Koleksi dari berkas JSON Koleksi Hoppscotch",
"title": "Impor"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Ciutkan atau Perluas Collections",
"collapse_sidebar": "Ciutkan atau Perluas sidebar",
"column": "Vertikal layout",
"name": "Layout",
"row": "Horisontal layout",
"zen_mode": "Zen mode"
"row": "Horisontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
"close_unsaved_tab": "Anda memiliki perubahan yang belum disimpan",
"collections": "Koleksi",
"confirm": "Mengonfirmasi",
"edit_request": "Edit Request",
"import_export": "Impor / Ekspor"
},
"mqtt": {
"already_subscribed": "You are already subscribed to this topic.",
"clean_session": "Clean Session",
"clear_input": "Clear input",
"clear_input_on_send": "Clear input on send",
"already_subscribed": "Anda sudah berlangganan topik ini.",
"clean_session": "Sesi Bersih",
"clear_input": "Hapus input",
"clear_input_on_send": "Hapus input saat mengirim",
"client_id": "Client ID",
"color": "Pick a color",
"color": "Pilih warna",
"communication": "Komunikasi",
"connection_config": "Connection Config",
"connection_not_authorized": "This MQTT connection does not use any authentication.",
"invalid_topic": "Please provide a topic for the subscription",
"connection_config": "Konfigurasi Koneksi",
"connection_not_authorized": "Koneksi MQTT ini tidak menggunakan otentikasi",
"invalid_topic": "Harap berikan topik untuk langganan",
"keep_alive": "Keep Alive",
"log": "Log",
"lw_message": "Last-Will Message",
@@ -340,8 +394,8 @@
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Pesan",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"new": "Langganan Baru",
"not_connected": "Mulai koneksi MQTT terlebih dahulu",
"publish": "Menerbitkan",
"qos": "QoS",
"ssl": "SSL",
@@ -396,19 +450,19 @@
"text": "Text"
},
"copy_link": "Salin tautan",
"different_collection": "Cannot reorder requests from different collections",
"different_collection": "Tidak dapat mengubah urutan permintaan dari koleksi yang berbeda",
"duplicated": "Request duplicated",
"duration": "Durasi",
"enter_curl": "Masukkan cURL",
"generate_code": "Generate code",
"generated_code": "Generated code",
"generate_code": "Hasilkan kode",
"generated_code": "Hasilkan kode",
"header_list": "Daftar Header",
"invalid_name": "Harap berikan nama untuk request",
"method": "Method",
"moved": "Request moved",
"name": "Request nama",
"new": "Request baru",
"order_changed": "Request Order Updated",
"order_changed": "Urutan Request Diperbarui",
"override": "Membatalkan",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"overriden": "Diganti",
@@ -418,6 +472,7 @@
"payload": "Payload",
"query": "Query",
"raw_body": "Raw Request Body",
"rename": "Rename Request",
"renamed": "Request berganti nama",
"run": "Jalankan",
"save": "Menyimpan",
@@ -425,6 +480,7 @@
"saved": "Request disimpan",
"share": "Membagikan",
"share_description": "Bagikan Hoppscotch dengan teman-teman Anda",
"stop": "Stop",
"title": "Request",
"type": "Tipe Request",
"url": "URL",
@@ -453,13 +509,12 @@
"settings": {
"accent_color": "Accent color",
"account": "Akun",
"account_deleted": "Your account has been deleted",
"account_deleted": "Akun Anda telah dihapus",
"account_description": "Sesuaikan pengaturan akun Anda.",
"account_email_description": "Alamat surel utama Anda.",
"account_name_description": "Ini adalah nama tampilan Anda.",
"background": "Latar belakang",
"black_mode": "Hitam",
"change_font_size": "Ubah ukuran font",
"choose_language": "Pilih bahasa",
"dark_mode": "Gelap",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Ekstensi Peramban",
"extensions_use_toggle": "Gunakan ekstensi peramban untuk mengirim permintaan (jika ada)",
"follow": "Ikuti kami",
"font_size": "Ukuran huruf",
"font_size_large": "Besar",
"font_size_medium": "Sedang",
"font_size_small": "Kecil",
"interceptor": "Pencegat",
"interceptor_description": "Middleware antara aplikasi dan API.",
"language": "Bahasa",
@@ -540,19 +591,27 @@
"settings": "Pergi ke halaman Pengaturan",
"title": "Navigasi"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Salin Tautan Permintaan",
"delete_method": "Pilih metode DELETE",
"get_method": "Pilih metode GET",
"head_method": "Pilih metode HEAD",
"import_curl": "Import cURL",
"method": "metode",
"next_method": "Pilih metode Next",
"post_method": "Pilih metode POST",
"previous_method": "Pilih metode Previous",
"put_method": "Pilih metode PUT",
"rename": "Rename Request",
"reset_request": "Mengatur ulang Request",
"save_request": "Save Request",
"save_to_collections": "Menyimpan ke Collections",
"send_request": "Kirim Request",
"show_code": "Generate code snippet",
"title": "Request"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Log",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tipe Event",
"log": "Log",
@@ -609,7 +747,7 @@
"file_imported": "File diimpor",
"finished_in": "Selesai dalam {duration} ms",
"history_deleted": "Riwayat dihapus",
"linewrap": "Wrap lines",
"linewrap": "Bungkus baris",
"loading": "Memuat...",
"message_received": "Pesan: {message} tiba di topik: {topic}",
"mqtt_subscription_failed": "Terjadi masalah saat berlangganan topik: {topic}",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Authorization",
"body": "Body",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Collections",
"documentation": "Dokumentasi",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Headers",
"history": "Riwayat",
@@ -666,7 +807,7 @@
"email_do_not_match": "Surel tidak cocok dengan detail akun Anda. Hubungi pemilik tim Anda.",
"exit": "Keluar dari Tim",
"exit_disabled": "Hanya pemilik yang tidak dapat keluar dari tim",
"invalid_coll_id": "Invalid collection ID",
"invalid_coll_id": "ID koleksi tidak valid",
"invalid_email_format": "Format surel tidak valid",
"invalid_id": "ID tim tidak valid. Hubungi pemilik tim Anda.",
"invalid_invite_link": "Tautan undangan tidak valid",
@@ -690,7 +831,7 @@
"member_removed": "Pengguna dihapus",
"member_role_updated": "Peran pengguna diperbarui",
"members": "Anggota",
"more_members": "+{count} more",
"more_members": "+{count} lebih",
"name_length_insufficient": "Nama tim harus setidaknya 6 karakter",
"name_updated": "Nama tim diperbarui",
"new": "Tim Baru",
@@ -698,13 +839,13 @@
"new_name": "Tim baru saya",
"no_access": "Anda tidak memiliki akses edit ke collections ini",
"no_invite_found": "Undangan tidak ditemukan. Hubungi pemilik tim Anda.",
"no_request_found": "Request not found.",
"no_request_found": "Request tidak ditemukan.",
"not_found": "Tim tidak ditemukan. Hubungi pemilik tim Anda.",
"not_valid_viewer": "Anda bukan penonton yang valid. Hubungi pemilik tim Anda.",
"parent_coll_move": "Cannot move collection to a child collection",
"parent_coll_move": "Tidak dapat memindahkan koleksi ke dalam koleksi anak",
"pending_invites": "Undangan tertunda",
"permissions": "Izin",
"same_target_destination": "Same target and destination",
"same_target_destination": "Sama tujuan dan destinasi",
"saved": "Tim disimpan",
"select_a_team": "Pilih tim",
"title": "tim",
@@ -712,9 +853,9 @@
"we_sent_invite_link_description": "Minta semua undangan untuk memeriksa kotak masuk mereka. Klik tautan untuk bergabung dengan tim."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
"deleted": "Environment dihapus",
"duplicate": "Environment diduplikasi",
"not_found": "Environment tidak ditemukan."
},
"test": {
"failed": "Tes gagal",
@@ -734,9 +875,9 @@
"url": "URL"
},
"workspace": {
"change": "Change workspace",
"personal": "My Workspace",
"team": "Team Workspace",
"change": "Beralih workspace",
"personal": "Workspace Saya",
"team": "Workspace Tim",
"title": "Workspaces"
}
}

View File

@@ -5,6 +5,7 @@
"choose_file": "Scegli un file",
"clear": "Cancella",
"clear_all": "Cancella tutto",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Connetti",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Abbellisci",
"remove": "Rimuovi",
"rename": "Rename",
"restore": "Ripristina",
"save": "Salva",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Cerca",
"share": "Condividi",
"shortcuts": "Scorciatoie",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Riflettore",
"status": "Stato",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Raccolta rinominata",
"request_in_use": "Request in use",
"save_as": "Salva come",
"save_to_collection": "Save to Collection",
"select": "Seleziona una raccolta",
"select_location": "Seleziona la posizione",
"select_team": "Seleziona un team",
"team_collections": "Raccolte di team"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Sei sicuro di voler uscire?",
"remove_collection": "Sei sicuro di voler eliminare definitivamente questa raccolta?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Vuoi ripristinare il tuo spazio di lavoro con quello del cloud? Questo annullerà le tue modifiche fatte in locale."
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Intestazione {count}",
"message": "Messaggio {count}",
@@ -192,17 +204,31 @@
"create_new": "Crea un nuovo ambiente",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Modifica ambiente",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Si prega di fornire un nome valido per l'ambiente",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nuovo ambiente",
"no_active_environment": "No active environment",
"no_environment": "Nessun ambiente",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Seleziona ambiente",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Ambienti",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Elenco variabili"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Nessuna durata",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Impossibile eseguire lo script di pre-richiesta",
"something_went_wrong": "Qualcosa è andato storto",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Cartella rinominata"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutazioni",
"schema": "Schema",
"subscriptions": "Sottoscrizioni"
"subscriptions": "Sottoscrizioni",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Importa"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Disposizione verticale",
"name": "Layout",
"row": "Disposizione orizzontale",
"zen_mode": "Modalità zen"
"row": "Disposizione orizzontale"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Contenuto (Payload)",
"query": "Query",
"raw_body": "Corpo della richiesta non formattato",
"rename": "Rename Request",
"renamed": "Richiesta rinominata",
"run": "Esegui",
"save": "Salva",
@@ -425,6 +480,7 @@
"saved": "Richiesta salvata",
"share": "Condividi",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Richiesta",
"type": "Tipo di richiesta",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Questo è il tuo nome mostrato.",
"background": "Sfondo",
"black_mode": "Nero",
"change_font_size": "Cambia la dimensione dei caratteri",
"choose_language": "Scegli la lingua",
"dark_mode": "Scuro",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Estensioni",
"extensions_use_toggle": "Utilizza l'estensione del browser per inviare richieste (se presente)",
"follow": "Follow Us",
"font_size": "Dimensione dei caratteri",
"font_size_large": "Grande",
"font_size_medium": "Medio",
"font_size_small": "Piccolo",
"interceptor": "Interceptor",
"interceptor_description": "Middleware tra applicazione e API.",
"language": "Lingua",
@@ -540,19 +591,27 @@
"settings": "Vai alla pagina Impostazioni",
"title": "Navigazione"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copia il link alla richiesta",
"delete_method": "Seleziona il metodo DELETE",
"get_method": "Seleziona il metodo GET",
"head_method": "Seleziona il metodo HEAD",
"import_curl": "Import cURL",
"method": "Metodo",
"next_method": "Seleziona il metodo successivo",
"post_method": "Seleziona il metodo POST",
"previous_method": "Seleziona il metodo precedente",
"put_method": "Seleziona il metodo PUT",
"rename": "Rename Request",
"reset_request": "Resetta la richiesta",
"save_request": "Save Request",
"save_to_collections": "Salva nelle raccolte",
"send_request": "Invia richiesta",
"show_code": "Generate code snippet",
"title": "Richiesta"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Log",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tipo di evento",
"log": "Log",
@@ -627,7 +765,7 @@
"support": {
"changelog": "Maggiori informazioni sulle ultime versioni",
"chat": "Domande? Chatta con noi!",
"community": "Fai domande e aiuta gli altri",
"community": "Fai domande e aiuta gli altri",
"documentation": "Maggiori informazioni su Hoppscotch",
"forum": "Fai domande e ottieni risposte",
"github": "Follow us on Github",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorizzazione",
"body": "Corpo",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Raccolte",
"documentation": "Documentazione",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Intestazioni",
"history": "Cronologia",

View File

@@ -5,6 +5,7 @@
"choose_file": "ファイルを選択してください",
"clear": "クリア",
"clear_all": "すべてクリア",
"clear_history": "Clear all History",
"close": "閉じる",
"connect": "接続",
"connecting": "接続中",
@@ -31,6 +32,7 @@
"paste": "貼り付け",
"prettify": "自動整形",
"remove": "削除",
"rename": "Rename",
"restore": "戻す",
"save": "保存",
"scroll_to_bottom": "下にスクロール",
@@ -77,6 +79,8 @@
"search": "検索",
"share": "共有",
"shortcuts": "ショートカット",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "スポットライト",
"status": "状態",
"status_description": "ウェブサイトの状態を確認",
@@ -131,12 +135,15 @@
"renamed": "コレクション名が変更されました",
"request_in_use": "使用中のリクエスト",
"save_as": "名前を付けて保存",
"save_to_collection": "Save to Collection",
"select": "コレクションを選択",
"select_location": "場所を選択",
"select_team": "チームを選択",
"team_collections": "チームコレクション"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "本当にこのチームから退出しますか?",
"logout": "ログアウトしてもよろしいですか?",
"remove_collection": "このコレクションを完全に削除してもよろしいですか?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "クラウドからワークスペースを復元しますか?この場合、ローカルの進行状況は破棄されます。"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "ヘッダー {count}",
"message": "メッセージ {count}",
@@ -192,17 +204,31 @@
"create_new": "新しい環境変数を作成",
"created": "環境変数を作成しました",
"deleted": "環境変数を削除しました",
"duplicated": "Environment duplicated",
"edit": "環境変数の編集",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "環境変数名を入力してください",
"list": "Environment variables",
"my_environments": "個人の環境変数",
"name": "Name",
"nested_overflow": "環境変数の入れ子は10段階までです",
"new": "新しい環境変数",
"no_active_environment": "No active environment",
"no_environment": "環境変数が存在しません",
"no_environment_description": "環境変数が選択されていません。次の環境変数から選択してください。",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "環境変数を選択",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "チームの環境変数",
"title": "環境変数",
"updated": "環境変数を更新しました",
"value": "Value",
"variable": "Variable",
"variable_list": "環境変数リスト"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "期間なし",
"no_results_found": "該当するものがありませんでした",
"page_not_found": "このページは見つかりませんでした",
"proxy_error": "Proxy error",
"script_fail": "リクエスト前のスクリプトを実行できませんでした",
"something_went_wrong": "不明なエラーです",
"test_script_fail": "リクエスト後のスクリプトを実行できませんでした"
@@ -251,9 +278,13 @@
"renamed": "フォルダ名が変更されました"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "ミューテーション",
"schema": "スキーマ",
"subscriptions": "サブスクリプション"
"subscriptions": "サブスクリプション",
"switch_connection": "Switch connection"
},
"group": {
"time": "時間",
@@ -307,13 +338,36 @@
"json_description": "Hoppscotchのコレクション (JSONファイル) からインポート",
"title": "インポート"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "コレクションを表示・非表示",
"collapse_sidebar": "サイドバーを表示・非表示",
"column": "縦型レイアウト",
"name": "レイアウト",
"row": "横型レイアウト",
"zen_mode": "禅モード"
"row": "横型レイアウト"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "ペイロード",
"query": "クエリ",
"raw_body": "生のリクエストボディ",
"rename": "Rename Request",
"renamed": "リクエストの名前を変更",
"run": "実行",
"save": "保存",
@@ -425,6 +480,7 @@
"saved": "保存されたリクエスト",
"share": "共有",
"share_description": "Hoppscotchを友人に共有",
"stop": "Stop",
"title": "リクエスト",
"type": "リクエストの種類",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "あなたの表示名",
"background": "背景",
"black_mode": "ブラック",
"change_font_size": "フォントの大きさを変更",
"choose_language": "言語を選択",
"dark_mode": "ダーク",
"delete_account": "アカウントの削除",
@@ -472,10 +527,6 @@
"extensions": "拡張機能",
"extensions_use_toggle": "ブラウザ拡張機能を使用してリクエストを送信する(利用可能な場合)",
"follow": "フォローする",
"font_size": "フォントサイズ",
"font_size_large": "大きめ",
"font_size_medium": "普通",
"font_size_small": "小さめ",
"interceptor": "インターセプタ",
"interceptor_description": "アプリケーションとAPIをつなぐミドルウェア",
"language": "言語",
@@ -540,19 +591,27 @@
"settings": "設定ページに移動",
"title": "ナビゲーション"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "コピーリクエストリンク",
"delete_method": "DELETEメソッドを選択",
"get_method": "GETメソッドを選択",
"head_method": "HEADメソッドを選択",
"import_curl": "Import cURL",
"method": "メソッド",
"next_method": "次のメソッドを選択",
"post_method": "POSTメソッドを選択",
"previous_method": "前のメソッドを選択",
"put_method": "PUTメソッドを選択",
"rename": "Rename Request",
"reset_request": "リセットリクエスト",
"save_request": "Save Request",
"save_to_collections": "コレクションに保存",
"send_request": "リクエストを送信",
"show_code": "Generate code snippet",
"title": "リクエスト"
},
"response": {
@@ -582,6 +641,85 @@
"log": "ログ",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "イベントの種類",
"log": "ログ",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "認証",
"body": "ボディ",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "コレクション",
"documentation": "ドキュメント",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "ヘッダー",
"history": "履歴",

View File

@@ -5,6 +5,7 @@
"choose_file": "파일 선택",
"clear": "지우기",
"clear_all": "모두 지우기",
"clear_history": "Clear all History",
"close": "닫기",
"connect": "연결",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "붙여넣기",
"prettify": "구문 강조",
"remove": "제거",
"rename": "Rename",
"restore": "복원",
"save": "저장",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "찾기",
"share": "공유하기",
"shortcuts": "바로가기",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "스포트라이트",
"status": "상태",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "모음집 이름이 변경됨",
"request_in_use": "사용 중인 요청",
"save_as": "다른 이름으로 저장",
"save_to_collection": "Save to Collection",
"select": "모음집 선택",
"select_location": "위치 선택",
"select_team": "팀 선택",
"team_collections": "팀 모음집"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "이 팀을 떠나겠습니까?",
"logout": "로그아웃하겠습니까?",
"remove_collection": "이 모음집을 영구적으로 삭제하겠습니까?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "이 작업 공간을 동기화하겠습니까?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "헤더 {count}",
"message": "메시지 {count}",
@@ -192,17 +204,31 @@
"create_new": "새 환경 만들기",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "환경 편집",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "환경 이름을 바르게 입력하세요.",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "환경 변수는 열 단계까지만 중첩될 수 있습니다.",
"new": "새 환경",
"no_active_environment": "No active environment",
"no_environment": "환경 없음",
"no_environment_description": "선택한 환경이 없습니다. 선택해주세요.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "환경 선택",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "환경",
"updated": "환경 수정됨",
"value": "Value",
"variable": "Variable",
"variable_list": "변수 목록"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "소요 시간 없음",
"no_results_found": "No matches found",
"page_not_found": "해당 페이지를 찾을 수 없습니다.",
"proxy_error": "Proxy error",
"script_fail": "사전 요청 스크립트를 실행할 수 없습니다.",
"something_went_wrong": "문제가 발생했습니다.",
"test_script_fail": "테스트 스크립트를 실행할 수 없습니다."
@@ -251,9 +278,13 @@
"renamed": "폴더 이름이 변경됨"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "뮤테이션",
"schema": "스키마",
"subscriptions": "섭스크립션"
"subscriptions": "섭스크립션",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "호프스카치 모음집 JSON 파일을 가져옵니다.",
"title": "가져오기"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "가로형 레이아웃",
"name": "Layout",
"row": "세로형 레이아웃",
"zen_mode": "전체화면"
"row": "세로형 레이아웃"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "페이로드",
"query": "쿼리",
"raw_body": "원시 요청 본문",
"rename": "Rename Request",
"renamed": "요청 이름이 변경됨",
"run": "실행",
"save": "저장",
@@ -425,6 +480,7 @@
"saved": "요청이 저장됨",
"share": "공유하기",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "제목",
"type": "요청 유형",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "디스플레이 이름입니다.",
"background": "배경",
"black_mode": "검은 테마",
"change_font_size": "글자 크기 변경",
"choose_language": "언어 선택",
"dark_mode": "어두운 테마",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "익스텐션",
"extensions_use_toggle": "브라우저 익스텐션을 사용하여 요청 보내기(있는 경우)",
"follow": "Follow Us",
"font_size": "글꼴 크기",
"font_size_large": "크게",
"font_size_medium": "중간",
"font_size_small": "작게",
"interceptor": "인터셉터",
"interceptor_description": "애플리케이션과 API 간의 미들웨어.",
"language": "언어",
@@ -540,19 +591,27 @@
"settings": "설정 페이지로 이동",
"title": "내비게이션"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "요청 링크 복사",
"delete_method": "DELETE 메서드 선택",
"get_method": "GET 메서드 선택",
"head_method": "HEAD 메서드 선택",
"import_curl": "Import cURL",
"method": "메서드",
"next_method": "다음 메서드 선택",
"post_method": "POST 메서드 선택",
"previous_method": "이전 메서드 선택",
"put_method": "PUT 메서드 선택",
"rename": "Rename Request",
"reset_request": "요청 초기화",
"save_request": "Save Request",
"save_to_collections": "모음집에 저장",
"send_request": "요청 보내기",
"show_code": "Generate code snippet",
"title": "요청"
},
"response": {
@@ -582,6 +641,85 @@
"log": "로그",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "이벤트 유형",
"log": "로그",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "인증",
"body": "본문",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "모음집",
"documentation": "문서",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "헤더",
"history": "이력",

View File

@@ -5,6 +5,7 @@
"choose_file": "Kies een bestand",
"clear": "Wis",
"clear_all": "Wis alles",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Verbinden",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Netter opmaken",
"remove": "Verwijderen",
"rename": "Rename",
"restore": "Herstellen",
"save": "Opslaan",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Zoeken",
"share": "Deel",
"shortcuts": "Sneltoetsen",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Spotlight",
"status": "Toestand",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Collectie hernoemd",
"request_in_use": "Request in use",
"save_as": "Opslaan als",
"save_to_collection": "Save to Collection",
"select": "Selecteer een collectie",
"select_location": "Selecteer een locatie",
"select_team": "Selecteer een team",
"team_collections": "Teamcollecties"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Weet u zeker dat u wilt uitloggen?",
"remove_collection": "Weet je zeker dat je deze collectie definitief wilt verwijderen?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Weet u zeker dat u deze werkruimte wilt synchroniseren?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Kop {count}",
"message": "Bericht {count}",
@@ -192,17 +204,31 @@
"create_new": "Nieuwe omgeving maken",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Omgeving bewerken",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Geef een geldige naam op voor de omgeving",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nieuwe omgeving",
"no_active_environment": "No active environment",
"no_environment": "Geen omgeving",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Selecteer omgeving",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "omgevingen",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Variabele lijst"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Geen duur",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Kon pre-aanvraagscript niet uitvoeren",
"something_went_wrong": "Er is iets fout gegaan",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Map hernoemd"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutaties",
"schema": "Schema",
"subscriptions": "Abonnementen"
"subscriptions": "Abonnementen",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Importeren"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen-modus"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Payload",
"query": "Vraag",
"raw_body": "Ruwe body",
"rename": "Rename Request",
"renamed": "Verzoek hernoemd",
"run": "Uitvoeren",
"save": "Opslaan",
@@ -425,6 +480,7 @@
"saved": "Verzoek opgeslagen",
"share": "Deel",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Verzoek",
"type": "Aanvraag type",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Dit is uw weergavenaam.",
"background": "Achtergrond",
"black_mode": "zwart",
"change_font_size": "Verander lettergrootte",
"choose_language": "Kies een taal",
"dark_mode": "Donker",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Extensies",
"extensions_use_toggle": "Gebruik de browserextensie om verzoeken te versturen (indien aanwezig)",
"follow": "Follow Us",
"font_size": "Lettergrootte",
"font_size_large": "Groot",
"font_size_medium": "Medium",
"font_size_small": "Klein",
"interceptor": "Interceptor",
"interceptor_description": "Middleware tussen applicatie en API's.",
"language": "Taal",
@@ -540,19 +591,27 @@
"settings": "Ga naar de pagina Instellingen",
"title": "Navigatie"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopieer aanvraaglink",
"delete_method": "Selecteer DELETE-methode",
"get_method": "Selecteer GET-methode",
"head_method": "Selecteer HEAD-methode:",
"import_curl": "Import cURL",
"method": "Methode",
"next_method": "Selecteer volgende methode",
"post_method": "Selecteer POST-methode",
"previous_method": "Selecteer vorige methode",
"put_method": "Selecteer PUT-methode",
"rename": "Rename Request",
"reset_request": "Verzoek resetten",
"save_request": "Save Request",
"save_to_collections": "Opslaan in collecties",
"send_request": "Verstuur verzoek",
"show_code": "Generate code snippet",
"title": "Verzoek"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Logboek",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Evenementtype",
"log": "Logboek",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorisatie",
"body": "Inhoud",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Collecties",
"documentation": "Documentatie",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Headers",
"history": "Geschiedenis",

View File

@@ -5,6 +5,7 @@
"choose_file": "Velg en fil",
"clear": "Tøm",
"clear_all": "Tøm alt",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Koble",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Forskjønn",
"remove": "Ta bort",
"rename": "Rename",
"restore": "Gjenopprett",
"save": "Lagre",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Søk",
"share": "Dele",
"shortcuts": "Snarveier",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Spotlight",
"status": "Status",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Samlingen ble omdøpt",
"request_in_use": "Request in use",
"save_as": "Lagre som",
"save_to_collection": "Save to Collection",
"select": "Velg en samling",
"select_location": "Velg plassering",
"select_team": "Velg et lag",
"team_collections": "Lagsamlinger"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Er du sikker på at du vil logge deg av?",
"remove_collection": "Er du sikker på at du vil slette denne samlingen permanent?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Er du sikker på at du vil synkronisere dette arbeidsområdet?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Overskrift {count}",
"message": "Melding {count}",
@@ -192,17 +204,31 @@
"create_new": "Skap nytt miljø",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Rediger miljø",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Oppgi et gyldig navn på miljøet",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nytt miljø",
"no_active_environment": "No active environment",
"no_environment": "Ingen miljø",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Velg miljø",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Miljøer",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Variabel liste"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Ingen varighet",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Kunne ikke kjøre forhåndsforespørselsskript",
"something_went_wrong": "Noe gikk galt",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Mappen ble gitt nytt navn"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutasjoner",
"schema": "Skjema",
"subscriptions": "Abonnementer"
"subscriptions": "Abonnementer",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Import"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen-modus"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Nyttelast",
"query": "Spørsmål",
"raw_body": "Raw Request Body",
"rename": "Rename Request",
"renamed": "Forespørsel omdøpt",
"run": "Løpe",
"save": "Lagre",
@@ -425,6 +480,7 @@
"saved": "Forespørselen er lagret",
"share": "Dele",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Be om",
"type": "Type forespørsel",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Dette er visningsnavnet ditt.",
"background": "Bakgrunn",
"black_mode": "Svart",
"change_font_size": "Endre skriftstørrelse",
"choose_language": "Velg språk",
"dark_mode": "Mørk",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Utvidelser",
"extensions_use_toggle": "Bruk nettleserutvidelsen til å sende forespørsler (hvis de er tilstede)",
"follow": "Follow Us",
"font_size": "Skriftstørrelse",
"font_size_large": "Stor",
"font_size_medium": "Medium",
"font_size_small": "Liten",
"interceptor": "Interceptor",
"interceptor_description": "Mellomvare mellom applikasjon og API-er.",
"language": "Språk",
@@ -540,19 +591,27 @@
"settings": "Gå til Innstillinger-siden",
"title": "Navigasjon"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopier forespørselskobling",
"delete_method": "Velg SLETT metoden",
"get_method": "Velg GET-metode",
"head_method": "Velg HEAD-metode",
"import_curl": "Import cURL",
"method": "Metode",
"next_method": "Velg Neste metode",
"post_method": "Velg POST-metode",
"previous_method": "Velg Forrige metode",
"put_method": "Velg PUT-metode",
"rename": "Rename Request",
"reset_request": "Tilbakestill forespørsel",
"save_request": "Save Request",
"save_to_collections": "Lagre i samlinger",
"send_request": "Send forespørsel",
"show_code": "Generate code snippet",
"title": "Be om"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Logg",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Hendelsestype",
"log": "Logg",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorisasjon",
"body": "Kropp",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Samlinger",
"documentation": "Dokumentasjon",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Overskrifter",
"history": "Historie",

View File

@@ -5,6 +5,7 @@
"choose_file": "Wybierz plik",
"clear": "Wyczyść",
"clear_all": "Wyczyść wszystko",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Połącz",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Popraw czytelność",
"remove": "Usuń",
"rename": "Rename",
"restore": "Przywróć",
"save": "Zapisz",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Szukaj",
"share": "Udostępnij",
"shortcuts": "Skróty",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Reflektor",
"status": "Status",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Zmieniono nazwę kolekcji",
"request_in_use": "Request in use",
"save_as": "Zapisz jako",
"save_to_collection": "Save to Collection",
"select": "Wybierz kolekcję",
"select_location": "Wybierz lokalizację",
"select_team": "Wybierz zespół",
"team_collections": "Kolekcje zespołowe"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Czy na pewno chcesz się wylogować?",
"remove_collection": "Czy na pewno chcesz trwale usunąć tę kolekcję?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Czy na pewno chcesz zsynchronizować ten obszar roboczy?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Nagłówek {count}",
"message": "Wiadomość {count}",
@@ -192,17 +204,31 @@
"create_new": "Stwórz nowe środowisko",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Edytuj środowisko",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Podaj prawidłową nazwę środowiska",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nowe środowisko",
"no_active_environment": "No active environment",
"no_environment": "Brak środowiska",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Wybierz środowisko",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Środowiska",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Lista zmiennych"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Brak czasu trwania",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Nie można wykonać skryptu żądania wstępnego",
"something_went_wrong": "Coś poszło nie tak",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Zmieniono nazwę folderu"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutacje",
"schema": "Schemat",
"subscriptions": "Subskrypcje"
"subscriptions": "Subskrypcje",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Import"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Pionowy układ",
"name": "Layout",
"row": "Poziomy układ",
"zen_mode": "Tryb Zen"
"row": "Poziomy układ"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Dane żądania",
"query": "Zapytanie",
"raw_body": "Surowa treść żądania",
"rename": "Rename Request",
"renamed": "Zmieniono nazwę żądania",
"run": "Uruchom",
"save": "Zapisz",
@@ -425,6 +480,7 @@
"saved": "Żądanie zostało zapisane",
"share": "Udostępnij",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Żądanie",
"type": "Typ żądania",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "To jest Twoja nazwa wyświetlana.",
"background": "Tło",
"black_mode": "Czarny",
"change_font_size": "Zmień rozmiar czczionki",
"choose_language": "Wybierz język",
"dark_mode": "Ciemny",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Rozszerzenia",
"extensions_use_toggle": "Użyj rozszerzenia przeglądarki do wysyłania żądań (jeśli istnieje)",
"follow": "Follow Us",
"font_size": "Rozmiar czcionki",
"font_size_large": "Wielki",
"font_size_medium": "Średni",
"font_size_small": "Mały",
"interceptor": "Interceptor",
"interceptor_description": "Oprogramowanie pośredniczące między aplikacją a interfejsami API.",
"language": "Język",
@@ -540,19 +591,27 @@
"settings": "Przejdź do strony Ustawienia",
"title": "Nawigacja"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopiuj łącze żądania",
"delete_method": "Wybierz metodę DELETE",
"get_method": "Wybierz metodę GET",
"head_method": "Wybierz metodę HEAD",
"import_curl": "Import cURL",
"method": "metoda",
"next_method": "Wybierz następną metodę",
"post_method": "Wybierz metodę POST",
"previous_method": "Wybierz poprzednią metodę",
"put_method": "Wybierz metodę PUT",
"rename": "Rename Request",
"reset_request": "Zresetuj żądanie",
"save_request": "Save Request",
"save_to_collections": "Zapisz w kolekcjach",
"send_request": "Wyślij żądanie",
"show_code": "Generate code snippet",
"title": "Żądania"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Logi",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Typ wydarzenia",
"log": "Logi",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autoryzacja",
"body": "Ciało",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Kolekcje",
"documentation": "Dokumentacja",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Nagłówki",
"history": "Historia",

View File

@@ -5,6 +5,7 @@
"choose_file": "Escolha um arquivo",
"clear": "Limpar",
"clear_all": "Limpar tudo",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Conectar",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Colar",
"prettify": "Embelezar",
"remove": "Remover",
"rename": "Rename",
"restore": "Restaurar",
"save": "Salvar",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Procurar",
"share": "Compartilhado",
"shortcuts": "Atalhos",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Holofote",
"status": "Estado",
"status_description": "Cheque o estado do website.",
@@ -131,12 +135,15 @@
"renamed": "Coleção renomeada",
"request_in_use": "Requisição em uso",
"save_as": "Salvar como",
"save_to_collection": "Save to Collection",
"select": "Selecione uma coleção",
"select_location": "Selecione a localização",
"select_team": "Selecione uma equipe",
"team_collections": "Coleções da equipe"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Tem certeza que deseja sair desta equipe?",
"logout": "Tem certeza que deseja sair?",
"remove_collection": "Tem certeza de que deseja excluir esta coleção permanentemente?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Tem certeza de que deseja sincronizar este espaço de trabalho?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Cabeçalho {count}",
"message": "Mensagem {count}",
@@ -192,17 +204,31 @@
"create_new": "Crie um novo ambiente",
"created": "Ambiente criado",
"deleted": "Deleção de ambiente",
"duplicated": "Environment duplicated",
"edit": "Editar Ambiente",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Forneça um nome válido para o ambiente",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "Variáveis de ambiente aninhadas são limitadas a 10 níveis",
"new": "Novo ambiente",
"no_active_environment": "No active environment",
"no_environment": "Sem ambiente",
"no_environment_description": "Nenhum ambiente foi selecionado. Escolha o que fazer com as seguintes variáveis.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Selecione o ambiente",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Ambientes",
"updated": "Atualizacao de ambientes",
"value": "Value",
"variable": "Variable",
"variable_list": "Lista de Variáveis"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Sem duração",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Não foi possível executar o script pré-requisição",
"something_went_wrong": "Algo deu errado",
"test_script_fail": "Não foi possível executar o script pós-requisição"
@@ -251,9 +278,13 @@
"renamed": "Pasta renomeada"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutações",
"schema": "Esquema",
"subscriptions": "Assinaturas"
"subscriptions": "Assinaturas",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Importa coleções de um arquivo JSON de Coleções Hoppscotch",
"title": "Importar"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Encolher ou expandir coleções",
"collapse_sidebar": "Encolher ou Expandir a barra lateral",
"column": "Layout vertical",
"name": "Layout",
"row": "Layout horizontal",
"zen_mode": "Modo zen"
"row": "Layout horizontal"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Payload",
"query": "Enviar",
"raw_body": "Corpo de Requisição Bruta",
"rename": "Rename Request",
"renamed": "Requisição renomeada",
"run": "Executar",
"save": "Salvar",
@@ -425,6 +480,7 @@
"saved": "Requisição salva",
"share": "Compartilhadar",
"share_description": "Compartilhe o Hoppscotch com seus amigos",
"stop": "Stop",
"title": "Solicitar",
"type": "Tipo de requisição",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Este é o seu nome de exibição.",
"background": "Fundo",
"black_mode": "Preto",
"change_font_size": "Mudar TAMANHO DA FONTE",
"choose_language": "Escolha o seu idioma",
"dark_mode": "Escuro",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Extensões",
"extensions_use_toggle": "Use a extensão do navegador para enviar solicitações (se houver)",
"follow": "Nos siga",
"font_size": "Tamanho da fonte",
"font_size_large": "Grande",
"font_size_medium": "Médio",
"font_size_small": "Pequeno",
"interceptor": "Interceptor",
"interceptor_description": "Middleware entre aplicativo e APIs.",
"language": "Língua",
@@ -540,19 +591,27 @@
"settings": "Vá para a página de configurações",
"title": "Navegação"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copiar link de requisição",
"delete_method": "Selecione o método DELETE",
"get_method": "Selecione o método GET",
"head_method": "Selecione o método HEAD",
"import_curl": "Import cURL",
"method": "Método",
"next_method": "Selecione o próximo método",
"post_method": "Selecione o método POST",
"previous_method": "Selecione o método anterior",
"put_method": "Selecione o método PUT",
"rename": "Rename Request",
"reset_request": "Pedido de reinicialização",
"save_request": "Save Request",
"save_to_collections": "Salvar em coleções",
"send_request": "Enviar requisição",
"show_code": "Generate code snippet",
"title": "Solicitar"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Registro",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tipo de evento",
"log": "Registro",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorização",
"body": "Corpo",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Coleções",
"documentation": "Documentação",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Cabeçalhos",
"history": "História",

View File

@@ -5,6 +5,7 @@
"choose_file": "Escolha um arquivo",
"clear": "Claro",
"clear_all": "Limpar tudo",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Conectar",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Embelezar",
"remove": "Remover",
"rename": "Rename",
"restore": "Restaurar",
"save": "Salvar",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Procurar",
"share": "Compartilhado",
"shortcuts": "Atalhos",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Holofote",
"status": "Status",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Coleção renomeada",
"request_in_use": "Request in use",
"save_as": "Salvar como",
"save_to_collection": "Save to Collection",
"select": "Selecione uma coleção",
"select_location": "Selecione a localização",
"select_team": "Selecione uma equipe",
"team_collections": "Coleções da equipe"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Tem certeza que deseja sair?",
"remove_collection": "Tem certeza de que deseja excluir esta coleção permanentemente?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Tem certeza de que deseja sincronizar este espaço de trabalho?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Cabeçalho {count}",
"message": "Mensagem {count}",
@@ -192,17 +204,31 @@
"create_new": "Crie um novo ambiente",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Editar Ambiente",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Forneça um nome válido para o ambiente",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Novo ambiente",
"no_active_environment": "No active environment",
"no_environment": "Sem ambiente",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Selecione o ambiente",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Ambientes",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Lista de Variáveis"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Sem duração",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Não foi possível executar o script de pré-solicitação",
"something_went_wrong": "Algo deu errado",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Pasta renomeada"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutações",
"schema": "Esquema",
"subscriptions": "Assinaturas"
"subscriptions": "Assinaturas",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Importar"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Modo zen"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Carga útil",
"query": "Consulta",
"raw_body": "Corpo de Solicitação Bruta",
"rename": "Rename Request",
"renamed": "Pedido renomeado",
"run": "Corre",
"save": "Salvar",
@@ -425,6 +480,7 @@
"saved": "Pedido salvo",
"share": "Compartilhado",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Solicitar",
"type": "Tipo de solicitação",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Este é o seu nome de exibição.",
"background": "Fundo",
"black_mode": "Preto",
"change_font_size": "Mudar TAMANHO DA FONTE",
"choose_language": "Escolha o seu idioma",
"dark_mode": "Escuro",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Extensões",
"extensions_use_toggle": "Use a extensão do navegador para enviar solicitações (se houver)",
"follow": "Follow Us",
"font_size": "Tamanho da fonte",
"font_size_large": "Grande",
"font_size_medium": "Médio",
"font_size_small": "Pequeno",
"interceptor": "Interceptor",
"interceptor_description": "Middleware entre aplicativo e APIs.",
"language": "Língua",
@@ -540,19 +591,27 @@
"settings": "Vá para a página de configurações",
"title": "Navegação"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copiar link de solicitação",
"delete_method": "Selecione o método DELETE",
"get_method": "Selecione o método GET",
"head_method": "Selecione o método HEAD",
"import_curl": "Import cURL",
"method": "Método",
"next_method": "Selecione o próximo método",
"post_method": "Selecione o método POST",
"previous_method": "Selecione o método anterior",
"put_method": "Selecione o método PUT",
"rename": "Rename Request",
"reset_request": "Pedido de reinicialização",
"save_request": "Save Request",
"save_to_collections": "Salvar em coleções",
"send_request": "Enviar pedido",
"show_code": "Generate code snippet",
"title": "Solicitar"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Registro",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tipo de evento",
"log": "Registro",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorização",
"body": "Corpo",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Coleções",
"documentation": "Documentação",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Cabeçalhos",
"history": "História",

View File

@@ -5,6 +5,7 @@
"choose_file": "Alegeți un fișier",
"clear": "Curăță",
"clear_all": "Curăță tot",
"clear_history": "Clear all History",
"close": "Închide",
"connect": "Conectare",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Lipește",
"prettify": "Formatează",
"remove": "Elimină",
"rename": "Rename",
"restore": "Restabilește",
"save": "Salvează",
"scroll_to_bottom": "Derulare la sfârșit",
@@ -77,6 +79,8 @@
"search": "Căutare",
"share": "Distribuie",
"shortcuts": "Comenzi rapide",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "În centrul atenției",
"status": "Stare",
"status_description": "Verifică statusul paginii web",
@@ -131,12 +135,15 @@
"renamed": "Colecția redenumită",
"request_in_use": "Cerere în executare",
"save_as": "Salvează ca",
"save_to_collection": "Save to Collection",
"select": "Selectați o colecție",
"select_location": "Selectați locația",
"select_team": "Selectați o echipă",
"team_collections": "Colecții de echipă"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Sigur doriți sa părăsiți echipa curentă?",
"logout": "Sigur doriți să vă deconectați?",
"remove_collection": "Sigur doriți să ștergeți definitiv această colecție?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Sigur doriți să sincronizați acest spațiu de lucru?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Antet {count}",
"message": "Număr de mesaje",
@@ -192,17 +204,31 @@
"create_new": "Creați un mediu nou",
"created": "Mediu creat",
"deleted": "Mediu șters",
"duplicated": "Environment duplicated",
"edit": "Editați mediul",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Vă rugăm să furnizați un nume valid pentru mediu",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "Variabilele de mediu impricate sunt limitate la 10 nivele",
"new": "Mediu nou",
"no_active_environment": "No active environment",
"no_environment": "Fără mediu",
"no_environment_description": "Niciun mediu nu a fost selectat. Alegeți acțiuni pentru următoarele variabile.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Selectați mediul",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Medii",
"updated": "Mediu actualizat",
"value": "Value",
"variable": "Variable",
"variable_list": "Lista variabilelor"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Fără durată",
"no_results_found": "Nu au fost găsite potriviri",
"page_not_found": "Pagina nu a putut fi găsită",
"proxy_error": "Proxy error",
"script_fail": "Nu s-a putut executa scriptul",
"something_went_wrong": "Ceva nu a mers bine",
"test_script_fail": "Nu s-a putut executa scriptul"
@@ -251,9 +278,13 @@
"renamed": "Dosar redenumit"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutații",
"schema": "Schemă",
"subscriptions": "Abonamente"
"subscriptions": "Abonamente",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Importați colecții dintr-un fisier de collectii JSON Hoppscotch",
"title": "Import"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Ascunde sau expandează colecțiile",
"collapse_sidebar": "Ascunde sau expandează bara laterală",
"column": "Aspect vertical (coloană)",
"name": "Aspect",
"row": "Aspect orizontal (rând)",
"zen_mode": "Modul Zen"
"row": "Aspect orizontal (rând)"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Încărcătură",
"query": "Interogare",
"raw_body": "Corpul cererii",
"rename": "Rename Request",
"renamed": "Cerere redenumită",
"run": "Execută",
"save": "Salvează",
@@ -425,6 +480,7 @@
"saved": "Cererea a fost salvată",
"share": "Distribuie",
"share_description": "Distribuie Hoppscotch către prietenii tăi",
"stop": "Stop",
"title": "Cerere",
"type": "Tip de cerere",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Acesta este numele dvs. afișat.",
"background": "Fundal",
"black_mode": "Negru",
"change_font_size": "Schimbă marimea fontului",
"choose_language": "Alege limba",
"dark_mode": "Întunecat",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Extensii",
"extensions_use_toggle": "Utilizați extensia browserului pentru a trimite cereri (dacă există)",
"follow": "Urmărește-ne",
"font_size": "Mărimea fontului",
"font_size_large": "Mare",
"font_size_medium": "Mediu",
"font_size_small": "Mic",
"interceptor": "Interceptor",
"interceptor_description": "Middleware între aplicație și API-uri.",
"language": "Limbă",
@@ -540,19 +591,27 @@
"settings": "Accesați pagina Setări",
"title": "Navigare"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Copiați legătura de solicitare",
"delete_method": "Selectați metoda DELETE",
"get_method": "Selectați metoda GET",
"head_method": "Selectați metoda HEAD",
"import_curl": "Import cURL",
"method": "Metodă",
"next_method": "Selectați metoda următoare",
"post_method": "Selectați metoda POST",
"previous_method": "Selectați metoda anterioară",
"put_method": "Selectați metoda PUT",
"rename": "Rename Request",
"reset_request": "Cerere de resetare",
"save_request": "Save Request",
"save_to_collections": "Salvați în colecții",
"send_request": "Trimite cerere",
"show_code": "Generate code snippet",
"title": "Cerere"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Log",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Tip de eveniment",
"log": "Log",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Autorizare",
"body": "Corp",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Colecții",
"documentation": "Documentație",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Anteturi",
"history": "Istorie",

View File

@@ -1,48 +1,50 @@
{
"action": {
"autoscroll": "Autoscroll",
"autoscroll": "Автоскрол",
"cancel": "Отменить",
"choose_file": "Выберите файл",
"clear": "Очистить",
"clear_all": "Очистить все",
"close": "Close",
"clear_history": "Очистить всю историю",
"close": "Закрыть",
"connect": "Подключиться",
"connecting": "Connecting",
"connecting": "Соединение...",
"copy": "Скопировать",
"delete": "Удалить",
"disconnect": "Отключиться",
"dismiss": "Скрыть",
"dont_save": "Don't save",
"dont_save": "Не сохранять",
"download_file": "Скачать файл",
"drag_to_reorder": "Drag to reorder",
"drag_to_reorder": "Перетягивайте для сортировки",
"duplicate": "Дублировать",
"edit": "Редактировать",
"filter": "Filter",
"filter": "Фильтр",
"go_back": "Вернуться",
"go_forward": "Go forward",
"group_by": "Group by",
"go_forward": "Вперёд",
"group_by": "Сгруппировать по",
"label": "Название",
"learn_more": "Узнать больше",
"less": "Less",
"less": "Меньше",
"more": "Больше",
"new": "Создать новый",
"no": "Нет",
"open_workspace": "Open workspace",
"paste": "Paste",
"open_workspace": "Открыть пространство",
"paste": "Вставить",
"prettify": "Форматировать",
"remove": "Удалить",
"rename": "Переименовать",
"restore": "Восстановить",
"save": "Сохранить",
"scroll_to_bottom": "Scroll to bottom",
"scroll_to_top": "Scroll to top",
"scroll_to_bottom": "Вниз",
"scroll_to_top": "Вверх",
"search": "Поиск",
"send": "Отправить",
"start": "Начать",
"starting": "Starting",
"starting": "Запускаю",
"stop": "Стоп",
"to_close": "to close",
"to_navigate": "to navigate",
"to_select": "to select",
"to_close": "что бы закрыть",
"to_navigate": "для навигации",
"to_select": "выборать",
"turn_off": "Выключить",
"turn_on": "Включить",
"undo": "Отменить",
@@ -56,9 +58,9 @@
"chat_with_us": "Связаться с нами",
"contact_us": "Свяжитесь с нами",
"copy": "Копировать",
"copy_user_id": "Copy User Auth Token",
"developer_option": "Developer options",
"developer_option_description": "Developer tools which helps in development and maintenance of Hoppscotch.",
"copy_user_id": "Копировать токен пользователя",
"developer_option": "Настройки разработчика",
"developer_option_description": "Инструмент разработчика помогает обслуживить и развивить Hoppscotch",
"discord": "Discord",
"documentation": "Документация",
"github": "GitHub",
@@ -71,15 +73,17 @@
"keyboard_shortcuts": "Горячие клавиши",
"name": "Hoppscotch",
"new_version_found": "Найдена новая версия. Перезагрузите для обновления.",
"options": "Options",
"options": "Настройки",
"proxy_privacy_policy": "Политика конфиденциальности прокси",
"reload": "Перезагрузить",
"search": "Поиск",
"share": "Поделиться",
"shortcuts": "Ярлыки",
"social_description": "Подписывайся на наши соц. сети и оставайся всегда в курсе последних новостей, обновлений и релизов.",
"social_links": "Социальные сети",
"spotlight": "Прожектор",
"status": "Статус",
"status_description": "Check the status of the website",
"status_description": "Проверить состояние сайта",
"terms_and_privacy": "Условия и конфиденциальность",
"twitter": "Twitter",
"type_a_command_search": "Введите команду или выполните поиск…",
@@ -93,7 +97,7 @@
"continue_with_email": "Продолжить с электронной почтой",
"continue_with_github": "Продолжить с GitHub",
"continue_with_google": "Продолжить с Google",
"continue_with_microsoft": "Continue with Microsoft",
"continue_with_microsoft": "Продолжить с Microsoft",
"email": "Электронное письмо",
"logged_out": "Вышли из",
"login": "Авторизоваться",
@@ -118,25 +122,28 @@
},
"collection": {
"created": "Коллекция создана",
"different_parent": "Cannot reorder collection with different parent",
"different_parent": "Нельзя сортировать коллекцию с разной родительской коллекцией",
"edit": "Редактировать коллекцию",
"invalid_name": "Укажите допустимое название коллекции",
"invalid_root_move": "Collection already in the root",
"moved": "Moved Successfully",
"invalid_root_move": "Коллекция уже в корне",
"moved": "Перемещено успешно",
"my_collections": "Мои коллекции",
"name": "Новая коллекция",
"name_length_insufficient": "Collection name should be at least 3 characters long",
"name_length_insufficient": "Имя коллекции должно иметь 3 или более символов",
"new": "Создать коллекцию",
"order_changed": "Collection Order Updated",
"order_changed": "Порядок коллекции обновлён",
"renamed": "Коллекция переименована",
"request_in_use": "Запрос обрабатывается",
"save_as": "Сохранить как",
"save_to_collection": "Сохранить в коллекцию",
"select": "Выбрать коллекцию",
"select_location": "Выберите местоположение",
"select_team": "Выберите команду",
"team_collections": "Коллекции команд"
},
"confirm": {
"close_unsaved_tab": "Вы уверены что хотите закрыть эту вкладку?",
"close_unsaved_tabs": "ВЫ уверены что хотите закрыть все эти вкладки? Несохранённые данные {count} вкладок будут утеряны.",
"exit_team": "Вы точно хотите покинуть эту команду?",
"logout": "Вы действительно хотите выйти?",
"remove_collection": "Вы уверены, что хотите навсегда удалить эту коллекцию?",
@@ -146,10 +153,15 @@
"remove_request": "Вы уверены, что хотите навсегда удалить этот запрос?",
"remove_team": "Вы уверены, что хотите удалить эту команду?",
"remove_telemetry": "Вы действительно хотите отказаться от телеметрии?",
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"request_change": "Вы уверены что хотите сбросить текущий запрос, все не сохранённые данные будт утеряны?",
"save_unsaved_tab": "Вы хотите сохранить изменения в этой вкладке?",
"sync": "Вы уверены, что хотите синхронизировать это рабочее пространство?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Заголовок {count}",
"message": "Тело {count}",
@@ -180,83 +192,102 @@
"profile": "Войдите, чтобы просмотреть свой профиль",
"protocols": "Протоколы пустые",
"schema": "Подключиться к конечной точке GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"shortcodes": "Нет коротких ссылок",
"subscription": "Нет подписок",
"team_name": "Название команды пусто",
"teams": "Команды пустые",
"tests": "Для этого запроса нет тестов"
},
"environment": {
"add_to_global": "Add to Global",
"added": "Environment addition",
"create_new": "Создать новую среду",
"created": "Environment created",
"deleted": "Environment deletion",
"edit": "Редактировать среду",
"invalid_name": "Укажите допустимое имя для среды",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"add_to_global": "Добавить в глобальное окружение",
"added": "Окружение добавлено",
"create_new": "Создать новое окружение",
"created": "Окружение создано",
"deleted": "Окружение удалено",
"duplicated": "Environment duplicated",
"edit": "Редактировать окружение",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Укажите допустимое имя для окружения",
"list": "Environment variables",
"my_environments": "Мои окружения",
"name": "Name",
"nested_overflow": "максимальный уровень вложения переменных окружения - 10",
"new": "Новая среда",
"no_environment": "Нет окружающей среды",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"no_active_environment": "No active environment",
"no_environment": "Нет окружения",
"no_environment_description": "Не выбрано окружение, выберите что делать с переменными.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Выберите среду",
"team_environments": "Team Environments",
"title": "Среды",
"updated": "Environment updation",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Окружения команды",
"title": "Окружения",
"updated": "Окружение обновлено",
"value": "Value",
"variable": "Variable",
"variable_list": "Список переменных"
},
"error": {
"browser_support_sse": "Похоже, в этом браузере нет поддержки событий, отправленных сервером.",
"check_console_details": "Подробности смотрите в журнале консоли.",
"curl_invalid_format": "cURL неправильно отформатирован",
"danger_zone": "Danger zone",
"delete_account": "Your account is currently an owner in these teams:",
"delete_account_description": "You must either remove yourself, transfer ownership, or delete these teams before you can delete your account.",
"danger_zone": "Опасная зона",
"delete_account": "Вы являетесь владельцем этой команды:",
"delete_account_description": "Прежде чем удалить аккаунт вам необходимо либо назначить владельцом другого пользователя, либо удалить команды в которых вы являетесь владельцем.",
"empty_req_name": "Пустое имя запроса",
"f12_details": "(F12 для подробностей)",
"gql_prettify_invalid_query": "Не удалось определить недопустимый запрос, устранить синтаксические ошибки запроса и повторить попытку.",
"incomplete_config_urls": "Incomplete configuration URLs",
"incorrect_email": "Incorrect email",
"invalid_link": "Invalid link",
"incomplete_config_urls": "Не заполнены URL конфигурации",
"incorrect_email": "Не корректный Email",
"invalid_link": "Не корректная ссылка",
"invalid_link_description": "Ссылка, по которой вы перешли, - недействительна, либо срок ее действия истек.",
"json_parsing_failed": "Invalid JSON",
"json_parsing_failed": "Не корректный JSON",
"json_prettify_invalid_body": "Не удалось определить недопустимое тело, устранить синтаксические ошибки json и повторить попытку.",
"network_error": "Похоже, возникла проблема с соединением. Попробуйте еще раз.",
"network_fail": "Не удалось отправить запрос",
"no_duration": "Без продолжительности",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"no_results_found": "Совпадения не найдены",
"page_not_found": "Эта страница не найдена",
"proxy_error": "Proxy error",
"script_fail": "Не удалось выполнить сценарий предварительного запроса",
"something_went_wrong": "Что-то пошло не так",
"test_script_fail": "Could not execute post-request script"
"test_script_fail": "Не удалось выполнить тестирование запроса"
},
"export": {
"as_json": "Экспорт как JSON",
"create_secret_gist": "Создать секретный Gist",
"gist_created": "Gist создан",
"require_github": "Войдите через GitHub, чтобы создать секретную суть",
"title": "Export"
"title": "Экспорт"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
"all": "Все",
"none": "Не указано",
"starred": "Отмечено"
},
"folder": {
"created": "Папка создана",
"edit": "Редактировать папку",
"invalid_name": "Укажите имя для папки",
"name_length_insufficient": "Folder name should be at least 3 characters long",
"name_length_insufficient": "Имя папки должно содержать 3 или более символов",
"new": "Новая папка",
"renamed": "Папка переименована"
},
"graphql": {
"connection_switch_confirm": "Вы желаете соединиться с последним GraphQL сервером?",
"connection_switch_new_url": "Смена вкладки разорвёт текущее GraphQL соединение. Новый URL соединения будет",
"connection_switch_url": "Вы присоединились к GraphQL, URL соединения",
"mutations": "Мутации",
"schema": "Схема",
"subscriptions": "Подписки"
"subscriptions": "Подписки",
"switch_connection": "Изменить соединение"
},
"group": {
"time": "Time",
"time": "Время",
"url": "URL"
},
"header": {
@@ -273,11 +304,11 @@
"post_request_tests": "Сценарии тестирования написаны на JavaScript и запускаются после получения ответа.",
"pre_request_script": "Скрипты предварительного запроса написаны на JavaScript и запускаются перед отправкой запроса.",
"script_fail": "Похоже, в скрипте предварительного запроса есть сбой. Проверьте ошибку ниже и исправьте скрипт соответствующим образом.",
"test_script_fail": "There seems to be an error with test script. Please fix the errors and run tests again",
"test_script_fail": "Похоже, что скрипт тестирования содержит ошибку. Пожалуйста исправьте её и попробуйте снова",
"tests": "Напишите тестовый сценарий для автоматизации отладки."
},
"hide": {
"collection": "Collapse Collection Panel",
"collection": "Свернуть панель соединения",
"more": "Скрыть больше",
"preview": "Скрыть предварительный просмотр",
"sidebar": "Скрыть боковую панель"
@@ -287,61 +318,84 @@
"curl": "Импортировать cURL",
"failed": "Ошибка импорта",
"from_gist": "Импорт из Gist",
"from_gist_description": "Import from Gist URL",
"from_insomnia": "Import from Insomnia",
"from_insomnia_description": "Import from Insomnia collection",
"from_json": "Import from Hoppscotch",
"from_json_description": "Import from Hoppscotch collection file",
"from_gist_description": "Импортировать через Gist URL",
"from_insomnia": "Импортировать с Insomnia",
"from_insomnia_description": "Импортировать из коллекции Insomnia",
"from_json": "Импортировать из Hoppscotch",
"from_json_description": "Импортировать из файла коллекции Hoppscotch",
"from_my_collections": "Импортировать из моих коллекций",
"from_my_collections_description": "Import from My Collections file",
"from_openapi": "Import from OpenAPI",
"from_openapi_description": "Import from OpenAPI specification file (YML/JSON)",
"from_postman": "Import from Postman",
"from_postman_description": "Import from Postman collection",
"from_url": "Import from URL",
"from_my_collections_description": "Импортировать коллекции из моего файла",
"from_openapi": "Импортировать из OpenAPI",
"from_openapi_description": "Импортировать из OpenAPI файла описания API (YML/JSON)",
"from_postman": "Импортировать из Postman",
"from_postman_description": "Импортировать из коллекции Postman",
"from_url": "Импортировать из URL",
"gist_url": "Введите URL-адрес Gist",
"import_from_url_invalid_fetch": "Couldn't get data from the url",
"import_from_url_invalid_file_format": "Error while importing collections",
"import_from_url_invalid_type": "Unsupported type. accepted values are 'hoppscotch', 'openapi', 'postman', 'insomnia'",
"import_from_url_success": "Collections Imported",
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"import_from_url_invalid_fetch": "Не удалить получить данные по этому URL",
"import_from_url_invalid_file_format": "Ошибка при импорте коллекций",
"import_from_url_invalid_type": "Неподдерживаемый тип. Поддерживаемые типы: 'hoppscotch', 'openapi', 'postman', 'insomnia'",
"import_from_url_success": "Коллекция импортирована",
"json_description": "Импортировать из коллекции Hoppscotch",
"title": "Импортировать"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Вертикальное оформление",
"name": "Layout",
"row": "Горизонтальное оформление",
"zen_mode": "Спокойный режим"
"collapse_collection": "Свернуть или развернуть коллекции",
"collapse_sidebar": "Свернуть или развернуть боковую панель",
"column": "Вертикальная развёртка",
"name": "Развёртка",
"row": "Горизонтальная развертка"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
"close_unsaved_tab": "У вас есть не сохранённые изменения",
"collections": "Коллекции",
"confirm": "Подтверждать",
"edit_request": "Изменить запрос",
"import_export": "Импорт Экспорт"
},
"mqtt": {
"already_subscribed": "You are already subscribed to this topic.",
"clean_session": "Clean Session",
"clear_input": "Clear input",
"clear_input_on_send": "Clear input on send",
"already_subscribed": "Вы уже подписаны на этот топик",
"clean_session": "Очистить сессию",
"clear_input": "Очистить ввод",
"clear_input_on_send": "Очистить ввод перед отправкой",
"client_id": "Client ID",
"color": "Pick a color",
"color": "Выбрать цвет",
"communication": "Коммуникация",
"connection_config": "Connection Config",
"connection_not_authorized": "This MQTT connection does not use any authentication.",
"invalid_topic": "Please provide a topic for the subscription",
"keep_alive": "Keep Alive",
"connection_config": "Конфигурация соединения",
"connection_not_authorized": "Это соединение MQTT не использует какую-либо авторизацию.",
"invalid_topic": "Пожалуйста выберите topic для подписки",
"keep_alive": "Поддерживать соединение",
"log": "Лог",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Сообщение",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"new": "Новая подписка",
"not_connected": "Пожалуйста, сначала запустите MQTT соединение.",
"publish": "Публиковать",
"qos": "QoS",
"ssl": "SSL",
@@ -355,7 +409,7 @@
"navigation": {
"doc": "Документы",
"graphql": "GraphQL",
"profile": "Profile",
"profile": "Профиль",
"realtime": "В реальном времени",
"rest": "REST",
"settings": "Настройки"
@@ -363,12 +417,12 @@
"preRequest": {
"javascript_code": "Код JavaScript",
"learn": "Читать документацию",
"script": "Сценарий предварительного запроса",
"snippets": "Фрагменты"
"script": "Предворительный скрипт запроса",
"snippets": "Готовый код"
},
"profile": {
"app_settings": "Настройки приложения",
"default_hopp_displayname": "Unnamed User",
"default_hopp_displayname": "Безымянный",
"editor": "Редактор",
"editor_description": "Редакторы могут добавлять, редактировать, а так же удалять запросы.",
"email_verification_mail": "На вашу электронную почту отправлено письмо для подтверждения. Перейдите по ссылке из письма, чтобы подтвердить свой электронный адрес.",
@@ -391,13 +445,13 @@
"choose_language": "Выберите язык",
"content_type": "Тип содержимого",
"content_type_titles": {
"others": "Others",
"structured": "Structured",
"text": "Text"
"others": "Другие",
"structured": "Структурированный",
"text": "Текст"
},
"copy_link": "Копировать ссылку",
"different_collection": "Cannot reorder requests from different collections",
"duplicated": "Request duplicated",
"different_collection": "Нельзя изменять порядок запросов из разных коллекций",
"duplicated": "Запрос скопирован",
"duration": "Продолжительность",
"enter_curl": "Введите cURL",
"generate_code": "Сгенерировать код",
@@ -405,36 +459,38 @@
"header_list": "Список заголовков",
"invalid_name": "Укажите имя для запроса",
"method": "Методика",
"moved": "Request moved",
"moved": "Запрос перемещён",
"name": "Имя запроса",
"new": "New Request",
"order_changed": "Request Order Updated",
"override": "Override",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"overriden": "Overridden",
"new": "Новый запрос",
"order_changed": "Порядок запроса изменён",
"override": "Переопределить",
"override_help": "Установить <kbd>Content-Type</kbd> в Заголовках",
"overriden": "Переопределено",
"parameter_list": "Параметры запроса",
"parameters": "Параметры",
"path": "Путь",
"payload": "Полезная нагрузка",
"query": "Запрос",
"raw_body": "Необработанное тело запроса",
"rename": "Rename Request",
"renamed": "Запрос переименован",
"run": "Запустить",
"save": "Сохранить",
"save_as": "Сохранить как",
"saved": "Запрос сохранен",
"share": "Делиться",
"share_description": "Share Hoppscotch with your friends",
"share_description": "Поделиться Hoppscotch с друзьями",
"stop": "Stop",
"title": "Запрос",
"type": "Тип запроса",
"url": "URL",
"variables": "Переменные",
"view_my_links": "View my links"
"view_my_links": "Посмотреть мои ссылки"
},
"response": {
"audio": "Audio",
"audio": "Аудио",
"body": "Тело ответа",
"filter_response_body": "Filter JSON response body (uses JSONPath syntax)",
"filter_response_body": "Отфильтровать ответ в формате JSON (используется синтаксис JSONPath)",
"headers": "Заголовки",
"html": "HTML",
"image": "Изображение",
@@ -446,24 +502,23 @@
"status": "Статус",
"time": "Время",
"title": "Ответ",
"video": "Video",
"video": "Видео",
"waiting_for_connection": "Ожидание соединения",
"xml": "XML"
},
"settings": {
"accent_color": "Основной цвет",
"account": "Счет",
"account_deleted": "Your account has been deleted",
"account_deleted": "Ваш аккаунт был удалён",
"account_description": "Настройте параметры своей учетной записи.",
"account_email_description": "Ваш основной адрес электронной почты.",
"account_name_description": "Это ваше отображаемое имя.",
"background": "Задний фон",
"black_mode": "Темная тема",
"change_font_size": "Изменить размер шрифта",
"choose_language": "Выберите язык",
"dark_mode": "Темный",
"delete_account": "Delete account",
"delete_account_description": "Once you delete your account, all your data will be permanently deleted. This action cannot be undone.",
"delete_account": "Удалить аккаунт",
"delete_account_description": "Удаление аккаунта нельзя отменить",
"expand_navigation": "Раскрыть панель навигации",
"experiments": "Эксперименты",
"experiments_notice": "Это набор экспериментов, над которыми мы работаем, которые могут оказаться полезными, интересными, и тем, и другим, или ни тем, ни другим. Они не окончательные и могут быть нестабильными, поэтому, если произойдет что-то слишком странное, не паникуйте. Просто выключи эту чертову штуку. Шутки в сторону,",
@@ -472,10 +527,6 @@
"extensions": "Расширения",
"extensions_use_toggle": "Используйте расширение браузера для отправки запросов (если есть)",
"follow": "Follow Us",
"font_size": "Размер шрифта",
"font_size_large": "Большой",
"font_size_medium": "Середина",
"font_size_small": "Небольшой",
"interceptor": "Перехватчик",
"interceptor_description": "Промежуточное ПО между приложением и API.",
"language": "Язык",
@@ -490,8 +541,8 @@
"proxy_use_toggle": "Используйте промежуточное ПО прокси для отправки запросов",
"read_the": "Прочтите",
"reset_default": "Восстановление значений по умолчанию",
"short_codes": "Short codes",
"short_codes_description": "Short codes which were created by you.",
"short_codes": "Короткие ссылки",
"short_codes_description": "Короткие ссылки, созданные вами",
"sidebar_on_left": "Панель слева",
"sync": "Синхронизировать",
"sync_collections": "Коллекции",
@@ -505,16 +556,16 @@
"theme_description": "Настройте тему своего приложения.",
"use_experimental_url_bar": "Использовать экспериментальную строку URL с выделением среды",
"user": "Пользователь",
"verified_email": "Verified email",
"verify_email": "Подтвердить почту"
"verified_email": "Проверенный Email",
"verify_email": "Подтвердить Email"
},
"shortcodes": {
"actions": "Actions",
"created_on": "Created on",
"deleted": "Shortcode deleted",
"method": "Method",
"not_found": "Shortcode not found",
"short_code": "Short code",
"actions": "Действия",
"created_on": "Создано",
"deleted": "Удалёна",
"method": "Метод",
"not_found": "Короткая ссылка не найдена",
"short_code": "Короткая ссылка",
"url": "URL"
},
"shortcut": {
@@ -540,48 +591,135 @@
"settings": "Перейти на страницу настроек",
"title": "Навигация"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Копировать ссылку на запрос",
"delete_method": "Выберите метод DELETE",
"get_method": "Выберите метод GET",
"head_method": "Выберите метод HEAD",
"import_curl": "Import cURL",
"method": "Методика",
"next_method": "Выберите следующий метод",
"post_method": "Выберите метод POST",
"previous_method": "Выбрать предыдущий метод",
"put_method": "Выберите метод PUT",
"rename": "Rename Request",
"reset_request": "Сбросить запрос",
"save_request": "Сохарнить запрос",
"save_to_collections": "Сохранить в коллекции",
"send_request": "Послать запрос",
"show_code": "Generate code snippet",
"title": "Запрос"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
"copy": "Копировать запрос в буфер обмена",
"download": "Скачать запрос как файл",
"title": "Запрос"
},
"theme": {
"black": "Switch theme to black mode",
"dark": "Switch theme to dark mode",
"light": "Switch theme to light mode",
"system": "Switch theme to system mode",
"title": "Theme"
"black": "Черный режим",
"dark": "Тёмный режим",
"light": "Светлый режим",
"system": "Определяется системой",
"title": "Тема"
}
},
"show": {
"code": "Показать код",
"collection": "Expand Collection Panel",
"collection": "Развернуть панель коллекций",
"more": "Показать больше",
"sidebar": "Показать боковую панель"
},
"socketio": {
"communication": "Коммуникация",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"connection_not_authorized": "Это SocketIO соединение не использует какую-либо авторизацию.",
"event_name": "Название события",
"events": "События",
"log": "Лог",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Тип события",
"log": "Лог",
@@ -589,14 +727,14 @@
},
"state": {
"bulk_mode": "Множественное редактирование",
"bulk_mode_placeholder": "Entries are separated by newline\nKeys and values are separated by :\nPrepend # to any row you want to add but keep disabled",
"bulk_mode_placeholder": "Каждый параметр должен начинаться с новой строки\nКлючи и значения разедляются двоеточием\nИспользуйте # для комментария",
"cleared": "Очищено",
"connected": "Связаны",
"connected_to": "Подключено к {name}",
"connecting_to": "Подключение к {name} ...",
"connection_error": "Failed to connect",
"connection_failed": "Connection failed",
"connection_lost": "Connection lost",
"connection_error": "Ошибка подключения",
"connection_failed": "Не удалось установить соединение",
"connection_lost": "Соединение утеряно",
"copied_to_clipboard": "Скопировано в буфер обмена",
"deleted": "Удалено",
"deprecated": "УСТАРЕЛО",
@@ -611,17 +749,17 @@
"history_deleted": "История удалена",
"linewrap": "Обернуть линии",
"loading": "Загрузка...",
"message_received": "Message: {message} arrived on topic: {topic}",
"mqtt_subscription_failed": "Something went wrong while subscribing to topic: {topic}",
"message_received": "Сообщение: {message} получено по топику: {topic}",
"mqtt_subscription_failed": "Что-то пошло не так, при попытке подписаться на топик: {topic}",
"none": "Никто",
"nothing_found": "Ничего не найдено для",
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
"published_message": "Published message: {message} to topic: {topic}",
"reconnection_error": "Failed to reconnect",
"subscribed_failed": "Failed to subscribe to topic: {topic}",
"subscribed_success": "Successfully subscribed to topic: {topic}",
"unsubscribed_failed": "Failed to unsubscribe from topic: {topic}",
"unsubscribed_success": "Successfully unsubscribed from topic: {topic}",
"published_error": "Что-то пошло не так при попытке опубликовать сообщение в топик {topic}: {message}",
"published_message": "Опубликовано сообщение: {message} в топик: {topic}",
"reconnection_error": "Не удалось переподключиться",
"subscribed_failed": "Не удалось подписаться на топик: {topic}",
"subscribed_success": "Успешно подписался на топик: {topic}",
"unsubscribed_failed": "Не удалось отписаться от топика: {topic}",
"unsubscribed_success": "Успешно отписался от топика: {topic}",
"waiting_send_request": "Ожидание отправки запроса"
},
"support": {
@@ -630,7 +768,7 @@
"community": "Задавайте вопросы и помогайте другим",
"documentation": "Узнать больше о Hoppscotch",
"forum": "Задавайте вопросы и получайте ответы",
"github": "Follow us on Github",
"github": "Подпишитесь на нас на Github",
"shortcuts": "Просматривайте приложение быстрее",
"team": "Свяжитесь с командой",
"title": "Служба поддержки",
@@ -639,17 +777,20 @@
"tab": {
"authorization": "Авторизация",
"body": "Тело",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Коллекции",
"documentation": "Документация",
"environments": "Environments",
"duplicate": "Duplicate Tab",
"environments": "Окружения",
"headers": "Заголовки",
"history": "История",
"mqtt": "MQTT",
"parameters": "Параметры",
"pre_request_script": "Скрипт предварительного запроса",
"pre_request_script": "Пред-скрипт",
"queries": "Запросы",
"query": "Запрос",
"schema": "Schema",
"schema": "Схема",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "Тесты",
@@ -666,7 +807,7 @@
"email_do_not_match": "Электронная почта, которой Вы воспользовались не соответсвует указанной в данных Вашей учетной записи.",
"exit": "Выйти из команды",
"exit_disabled": "Только владелец не может выйти из команды",
"invalid_coll_id": "Invalid collection ID",
"invalid_coll_id": "Не верный идентификатор коллекции",
"invalid_email_format": "Формат электронной почты недействителен",
"invalid_id": "Некорректный ID команды. Свяжитесь с руководителем команды.",
"invalid_invite_link": "Ссылка недействительна",
@@ -690,7 +831,7 @@
"member_removed": "Пользователь удален",
"member_role_updated": "Роли пользователей обновлены",
"members": "Участники",
"more_members": "+{count} more",
"more_members": "+{count}",
"name_length_insufficient": "Название команды должно быть не менее 6 символов.",
"name_updated": "Название команды обновлено",
"new": "Новая команда",
@@ -698,13 +839,13 @@
"new_name": "Моя новая команда",
"no_access": "У вас нет прав на редактирование этих коллекций",
"no_invite_found": "Такое приглашение мы не смогли найти. Свяжитесь с руководителем команды.",
"no_request_found": "Request not found.",
"not_found": "Team not found. Contact your team owner.",
"no_request_found": "Запрос не найден",
"not_found": "Команда не найдена, свяжитесь с владельцем команды",
"not_valid_viewer": "У Вас нет прав просматривать это. Свяжитесь с руководителем команды.",
"parent_coll_move": "Cannot move collection to a child collection",
"parent_coll_move": "Не удалось переместить коллекцию в дочернюю",
"pending_invites": "Ожидающие приглашения",
"permissions": "Разрешения",
"same_target_destination": "Same target and destination",
"same_target_destination": "Таже цель и конечная точка",
"saved": "Команда сохранена",
"select_a_team": "Выбрать команду",
"title": "Команды",
@@ -712,9 +853,9 @@
"we_sent_invite_link_description": "Попросите тех, кого Вы пригласили, проверить их почтовые ящики. Им нужно перейди по ссылке, чтобы подтвердить вступление в эту команду."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
"deleted": "Окружение удалено",
"duplicate": "Окружение скопировано",
"not_found": "Окружение не найдено"
},
"test": {
"failed": "Тест не пройден",
@@ -734,9 +875,9 @@
"url": "URL"
},
"workspace": {
"change": "Change workspace",
"personal": "My Workspace",
"team": "Team Workspace",
"title": "Workspaces"
"change": "Изменить пространство",
"personal": "Моё пространство",
"team": "Пространство команды",
"title": "Рабочие пространства"
}
}

View File

@@ -5,6 +5,7 @@
"choose_file": "Одаберите датотеку",
"clear": "Јасно",
"clear_all": "Избриши све",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Цоннецт",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Преттифи",
"remove": "Уклони",
"rename": "Rename",
"restore": "Ресторе",
"save": "сачувати",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Претрага",
"share": "Објави",
"shortcuts": "Пречице",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Под лупом",
"status": "Статус",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Збирка је преименована",
"request_in_use": "Request in use",
"save_as": "Сачувај као",
"save_to_collection": "Save to Collection",
"select": "Изаберите колекцију",
"select_location": "Изаберите локацију",
"select_team": "Изаберите тим",
"team_collections": "Збирке тима"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Јесте ли сигурни да се желите одјавити?",
"remove_collection": "Јесте ли сигурни да желите трајно да избришете ову колекцију?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Јесте ли сигурни да желите да синхронизујете овај радни простор?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Заглавље {count}",
"message": "Порука {count}",
@@ -192,17 +204,31 @@
"create_new": "Креирајте ново окружење",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Едит Енвиронмент",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Наведите важећи назив за окружење",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Ново окружење",
"no_active_environment": "No active environment",
"no_environment": "Нема окружења",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Изаберите окружење",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Енвиронментс",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Листа променљивих"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Нема трајања",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Није могуће извршити скрипту пре захтева",
"something_went_wrong": "Нешто није у реду",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Фасцикла је преименована"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Мутације",
"schema": "Схема",
"subscriptions": "Претплате"
"subscriptions": "Претплате",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Увоз"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Зен режим"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Корисни терет",
"query": "Упит",
"raw_body": "Сирово тело захтева",
"rename": "Rename Request",
"renamed": "Захтев је преименован",
"run": "Трцати",
"save": "сачувати",
@@ -425,6 +480,7 @@
"saved": "Захтев је сачуван",
"share": "Објави",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Захтев",
"type": "Врста Захтева",
"url": "УРЛ",
@@ -459,7 +515,6 @@
"account_name_description": "Ово је ваше име за приказ.",
"background": "Позадина",
"black_mode": "Црн",
"change_font_size": "Промените величину фонта",
"choose_language": "Изабери језик",
"dark_mode": "Дарк",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Ектенсионс",
"extensions_use_toggle": "Користите проширење прегледача за слање захтева (ако постоје)",
"follow": "Follow Us",
"font_size": "Величина фонта",
"font_size_large": "Велики",
"font_size_medium": "Средње",
"font_size_small": "Мала",
"interceptor": "Пресретач",
"interceptor_description": "Средњи софтвер између апликација и АПИ -ја.",
"language": "Језик",
@@ -540,19 +591,27 @@
"settings": "Идите на страницу Подешавања",
"title": "Навигација"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Копирајте везу захтева",
"delete_method": "Изаберите ДЕЛЕТЕ метход",
"get_method": "Изаберите метод ГЕТ",
"head_method": "Изаберите метод ХЕАД",
"import_curl": "Import cURL",
"method": "Метод",
"next_method": "Изаберите Следећи метод",
"post_method": "Изаберите ПОСТ метод",
"previous_method": "Изаберите Претходни метод",
"put_method": "Изаберите ПУТ метод",
"rename": "Rename Request",
"reset_request": "Ресет Рекуест",
"save_request": "Save Request",
"save_to_collections": "Сачувај у збирке",
"send_request": "Пошаљите упит",
"show_code": "Generate code snippet",
"title": "Захтев"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Пријава",
"url": "УРЛ"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Тип догађаја",
"log": "Пријава",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Овлашћење",
"body": "Боди",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Збирке",
"documentation": "Документација",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Заглавља",
"history": "Историја",

View File

@@ -5,6 +5,7 @@
"choose_file": "Välj en fil",
"clear": "Klar",
"clear_all": "Rensa alla",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Ansluta",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Försköna",
"remove": "Avlägsna",
"rename": "Rename",
"restore": "Återställ",
"save": "Spara",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Sök",
"share": "Dela med sig",
"shortcuts": "Genvägar",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Strålkastare",
"status": "Status",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Samling bytt namn",
"request_in_use": "Request in use",
"save_as": "Spara som",
"save_to_collection": "Save to Collection",
"select": "Välj en samling",
"select_location": "Välj plats",
"select_team": "Välj ett lag",
"team_collections": "Lagsamlingar"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?",
"logout": "Är du säker på att du vill logga ut?",
"remove_collection": "Är du säker på att du vill radera denna samling permanent?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Do you want to save changes made in this tab?",
"sync": "Är du säker på att du vill synkronisera den här arbetsytan?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Rubrik {count}",
"message": "Meddelande {count}",
@@ -192,17 +204,31 @@
"create_new": "Skapa ny miljö",
"created": "Environment created",
"deleted": "Environment deletion",
"duplicated": "Environment duplicated",
"edit": "Redigera miljö",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Ange ett giltigt namn på miljön",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Ny miljö",
"no_active_environment": "No active environment",
"no_environment": "Ingen miljö",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Välj miljö",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Miljöer",
"updated": "Environment updation",
"value": "Value",
"variable": "Variable",
"variable_list": "Variabel lista"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Ingen varaktighet",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Det gick inte att köra skriptet för förhandsbegäran",
"something_went_wrong": "Något gick fel",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Mappen har bytt namn"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutationer",
"schema": "Schema",
"subscriptions": "Prenumerationer"
"subscriptions": "Prenumerationer",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Importera"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"zen_mode": "Zen -läge"
"row": "Horizontal layout"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Nyttolast",
"query": "Fråga",
"raw_body": "Raw Request Body",
"rename": "Rename Request",
"renamed": "Begäran bytt namn",
"run": "Springa",
"save": "Spara",
@@ -425,6 +480,7 @@
"saved": "Begäran sparad",
"share": "Dela med sig",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "Begäran",
"type": "Typ av förfrågan",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Detta är ditt visningsnamn.",
"background": "Bakgrund",
"black_mode": "Svart",
"change_font_size": "Ändra typsnittsstorlek",
"choose_language": "Välj språk",
"dark_mode": "Mörk",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Tillägg",
"extensions_use_toggle": "Använd webbläsartillägget för att skicka förfrågningar (om sådana finns)",
"follow": "Follow Us",
"font_size": "Textstorlek",
"font_size_large": "Stor",
"font_size_medium": "Medium",
"font_size_small": "Små",
"interceptor": "Jaktplan",
"interceptor_description": "Mellanprogram mellan applikation och API: er.",
"language": "Språk",
@@ -540,19 +591,27 @@
"settings": "Gå till sidan Inställningar",
"title": "Navigering"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "Kopiera begäran länk",
"delete_method": "Välj DELETE method",
"get_method": "Välj GET -metod",
"head_method": "Välj HEAD -metod",
"import_curl": "Import cURL",
"method": "Metod",
"next_method": "Välj Nästa metod",
"post_method": "Välj POST -metod",
"previous_method": "Välj föregående metod",
"put_method": "Välj PUT -metod",
"rename": "Rename Request",
"reset_request": "Återställ begäran",
"save_request": "Save Request",
"save_to_collections": "Spara i samlingar",
"send_request": "Skicka förfrågan",
"show_code": "Generate code snippet",
"title": "Begäran"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Logga",
"url": "URL"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Event typ",
"log": "Logga",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Tillstånd",
"body": "Kropp",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Samlingar",
"documentation": "Dokumentation",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Rubriker",
"history": "Historia",

View File

@@ -5,6 +5,7 @@
"choose_file": "Bir dosya seçin",
"clear": "Temizle",
"clear_all": "Hepsini temizle",
"clear_history": "Clear all History",
"close": "Close",
"connect": "Bağlan",
"connecting": "Connecting",
@@ -31,6 +32,7 @@
"paste": "Paste",
"prettify": "Güzelleştir",
"remove": "Kaldır",
"rename": "Rename",
"restore": "Onar",
"save": "Kaydet",
"scroll_to_bottom": "Scroll to bottom",
@@ -77,6 +79,8 @@
"search": "Arama",
"share": "Paylaş",
"shortcuts": "Kısayollar",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Spot ışığı",
"status": "Durum",
"status_description": "Check the status of the website",
@@ -131,12 +135,15 @@
"renamed": "Koleksiyon yeniden adlandırıldı",
"request_in_use": "Kullanımda istek",
"save_as": "Farklı kaydet",
"save_to_collection": "Save to Collection",
"select": "Bir koleksiyon Seçin",
"select_location": "Konum seçin",
"select_team": "Bir takım seçin",
"team_collections": "Takım koleksiyonları"
},
"confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Bu takımdan ayrılmak istediğine emin misiniz?",
"logout": "Oturumu kapatmak istediğinizden emin misiniz?",
"remove_collection": "Bu koleksiyonu kalıcı olarak silmek istediğinizden emin misiniz?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "Bu sekmede yapılan değişiklikleri kaydetmek istiyor musunuz?",
"sync": "Bu çalışma alanını senkronize etmek istediğinizden emin misiniz?"
},
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": {
"header": "Başlık {count}",
"message": "Mesaj {count}",
@@ -192,17 +204,31 @@
"create_new": "Yeni ortam oluştur",
"created": "Ortam oluşturuldu",
"deleted": "Ortam silindi",
"duplicated": "Environment duplicated",
"edit": "Ortamı düzenle",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Lütfen ortam için geçerli bir ad girin",
"list": "Environment variables",
"my_environments": "My Environments",
"name": "Name",
"nested_overflow": "İç içe ortam değişkenleri 10 düzeyle sınırlıdır",
"new": "Yeni ortam",
"no_active_environment": "No active environment",
"no_environment": "Ortam yok",
"no_environment_description": "Hiçbir ortam seçilmedi. Aşağıdaki değişkenlerle ne yapacağınızı seçin.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Ortam seçin",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Team Environments",
"title": "Ortamlar",
"updated": "Ortam güncellendi",
"value": "Value",
"variable": "Variable",
"variable_list": "Değişken listesi"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "Süre yok",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"proxy_error": "Proxy error",
"script_fail": "Ön istek komut dosyası çalıştırılamadı",
"something_went_wrong": "Bir şeyler yanlış gitti",
"test_script_fail": "Could not execute post-request script"
@@ -251,9 +278,13 @@
"renamed": "Klasör yeniden adlandırıldı"
},
"graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutasyonlar",
"schema": "Şema",
"subscriptions": "Abonelikler"
"subscriptions": "Abonelikler",
"switch_connection": "Switch connection"
},
"group": {
"time": "Time",
@@ -307,13 +338,36 @@
"json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "İçe aktar"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Dikey görünüm",
"name": "Layout",
"row": "Yatay görünüm",
"zen_mode": "Zen modu"
"row": "Yatay görünüm"
},
"modal": {
"close_unsaved_tab": "You have unsaved changes",
@@ -418,6 +472,7 @@
"payload": "Yük",
"query": "Sorgu",
"raw_body": "Ham istek gövdesi",
"rename": "Rename Request",
"renamed": "Yeniden adlandırılmış istek",
"run": "Çalıştır",
"save": "Kaydet",
@@ -425,6 +480,7 @@
"saved": "İstek kaydedildi",
"share": "Paylaş",
"share_description": "Share Hoppscotch with your friends",
"stop": "Stop",
"title": "İstek",
"type": "İstek türü",
"url": "URL",
@@ -459,7 +515,6 @@
"account_name_description": "Bu sizin görünen adınız.",
"background": "Arka fon",
"black_mode": "Siyah",
"change_font_size": "Yazı tipi boyutunu değiştir",
"choose_language": "Dil seçiniz",
"dark_mode": "Karanlık",
"delete_account": "Delete account",
@@ -472,10 +527,6 @@
"extensions": "Uzantılar",
"extensions_use_toggle": "İstek göndermek için tarayıcı uzantısını kullanın (varsa)",
"follow": "Follow Us",
"font_size": "Yazı boyutu",
"font_size_large": "Büyük",
"font_size_medium": "Orta",
"font_size_small": "Küçük",
"interceptor": "Önleyici",
"interceptor_description": "Uygulama ve API'ler arasındaki ara katman yazılımı.",
"language": "Dil",
@@ -540,19 +591,27 @@
"settings": "Ayarlar sayfasına git",
"title": "Navigasyon"
},
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": {
"copy_request_link": "İstek bağlantısını kopyala",
"delete_method": "DELETE yöntemini seçin",
"get_method": "GET yöntemini seçin",
"head_method": "HEAD yöntemini seçin",
"import_curl": "Import cURL",
"method": "Yöntem",
"next_method": "Sonraki yöntemi seçin",
"post_method": "POST yöntemini seçin",
"previous_method": "Önceki yöntemi seçin",
"put_method": "PUT yöntemini seçin",
"rename": "Rename Request",
"reset_request": "İsteği sıfırla",
"save_request": "Save Request",
"save_to_collections": "Koleksiyonlara kaydet",
"send_request": "İstek gönder",
"show_code": "Generate code snippet",
"title": "İstek"
},
"response": {
@@ -582,6 +641,85 @@
"log": "Kayıt",
"url": "Bağlantı"
},
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": {
"event_type": "Etkinlik tipi",
"log": "Kayıt",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "Yetki",
"body": "Gövde",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Koleksiyonlar",
"documentation": "Belgeler",
"duplicate": "Duplicate Tab",
"environments": "Environments",
"headers": "Başlıklar",
"history": "Geçmiş",

View File

@@ -5,6 +5,7 @@
"choose_file": "選擇一個檔案",
"clear": "清除",
"clear_all": "全部清除",
"clear_history": "清除所有歷史記錄",
"close": "關閉",
"connect": "連線",
"connecting": "正在連接",
@@ -31,6 +32,7 @@
"paste": "貼上",
"prettify": "美化",
"remove": "移除",
"rename": "Rename",
"restore": "還原",
"save": "儲存",
"scroll_to_bottom": "捲動至底部",
@@ -77,6 +79,8 @@
"search": "搜尋",
"share": "分享",
"shortcuts": "快捷方式",
"social_description": "在社交媒體上追蹤我們即可在第一時間得知新聞、更新、以及新版本的消息。",
"social_links": "社群連結",
"spotlight": "聚光燈",
"status": "狀態",
"status_description": "檢查網站狀態",
@@ -131,12 +135,15 @@
"renamed": "集合已重新命名",
"request_in_use": "請求正在使用中",
"save_as": "另存為",
"save_to_collection": "儲存到集合",
"select": "選擇一個集合",
"select_location": "選擇位置",
"select_team": "選擇一個團隊",
"team_collections": "團隊集合"
},
"confirm": {
"close_unsaved_tab": "您確定要關閉此分頁嗎?",
"close_unsaved_tabs": "您確定要關閉所有分頁嗎?{count} 個未儲存的分頁將會遺失。",
"exit_team": "您確定要離開此團隊嗎?",
"logout": "您確定要登出嗎?",
"remove_collection": "您確定要永久刪除該集合嗎?",
@@ -150,6 +157,11 @@
"save_unsaved_tab": "您要儲存在此分頁做出的改動嗎?",
"sync": "您想從雲端恢復您的工作區嗎?這將丟棄您的本地進度。"
},
"context_menu": {
"add_parameters": "新增至參數",
"open_request_in_new_tab": "在新分頁開啟請求",
"set_environment_variable": "設為變數"
},
"count": {
"header": "請求標頭 {count}",
"message": "訊息 {count}",
@@ -192,17 +204,31 @@
"create_new": "建立新環境",
"created": "已建立環境",
"deleted": "刪除環境",
"duplicated": "已複製環境",
"edit": "編輯環境",
"empty_variables": "無變數",
"global": "全域",
"global_variables": "全域變數",
"invalid_name": "請提供有效的環境名稱",
"list": "環境變數",
"my_environments": "我的環境",
"name": "名稱",
"nested_overflow": "巢狀環境變數不得大於 10 層",
"new": "建立環境",
"no_active_environment": "無使用中的環境",
"no_environment": "無環境",
"no_environment_description": "未選取任何環境。請選擇要對以下變數進行的動作。",
"quick_peek": "快速預覽環境",
"replace_with_variable": "以變數替代",
"scope": "範圍",
"select": "選擇環境",
"set": "設定環境",
"set_as_environment": "設為環境",
"team_environments": "團隊環境",
"title": "環境",
"updated": "更新環境",
"value": "數值",
"variable": "變數",
"variable_list": "變數列表"
},
"error": {
@@ -226,6 +252,7 @@
"no_duration": "無持續時間",
"no_results_found": "找不到結果",
"page_not_found": "找不到此頁面",
"proxy_error": "Proxy 錯誤",
"script_fail": "無法執行預請求指令碼",
"something_went_wrong": "發生了一些錯誤",
"test_script_fail": "無法執行測試指令碼"
@@ -251,9 +278,13 @@
"renamed": "資料夾已重新命名"
},
"graphql": {
"connection_switch_confirm": "您要使用最新的 GraphQL 端點連線嗎?",
"connection_switch_new_url": "切換至分頁將斷開使用中的 GraphQL 連線。新的連線網址為 ",
"connection_switch_url": "您已連接至 GraphQL 端點。連線網址為 ",
"mutations": "變體",
"schema": "綱要",
"subscriptions": "訂閱"
"subscriptions": "訂閱",
"switch_connection": "切換連線"
},
"group": {
"time": "時間",
@@ -307,13 +338,36 @@
"json_description": "從 Hoppscotch 集合 JSON 檔匯入集合",
"title": "匯入"
},
"inspections": {
"description": "檢查潛在錯誤",
"environment": {
"add_environment": "新增至環境",
"not_found": "找不到環境變數 “{environment}”。"
},
"header": {
"cookie": "瀏覽器不允許 Hoppscotch 設定 Cookie 標頭。在我們推出 Hoppscotch 桌面版前,請先使用 Authorization 標頭。"
},
"response": {
"401_error": "請檢查您的授權認證。",
"404_error": "請檢查您的請求網址和方式類型。",
"cors_error": "請檢查您的跨來源資源共用設定。",
"default_error": "請檢查您的請求。",
"network_error": "請檢查您的網路連線。"
},
"title": "檢查工具",
"url": {
"extension_not_installed": "未安裝擴充套件。",
"extension_unknown_origin": "請確認您是否已將 API 端點的來源加入 Hoppscotch 擴充套件的清單。",
"extention_enable_action": "啟用瀏覽器擴充套件",
"extention_not_enabled": "未啟用擴充套件。"
}
},
"layout": {
"collapse_collection": "隱藏或顯示集合",
"collapse_sidebar": "隱藏或顯示側邊欄",
"column": "垂直版面",
"name": "配置",
"row": "水平版面",
"zen_mode": "專注模式"
"row": "水平版面"
},
"modal": {
"close_unsaved_tab": "您有未儲存的改動",
@@ -418,6 +472,7 @@
"payload": "負載",
"query": "查詢",
"raw_body": "原始請求本體",
"rename": "重新命名請求",
"renamed": "請求已重新命名",
"run": "執行",
"save": "儲存",
@@ -425,6 +480,7 @@
"saved": "請求已儲存",
"share": "分享",
"share_description": "與您的朋友分享 Hoppscotch",
"stop": "Stop",
"title": "請求",
"type": "請求類型",
"url": "網址",
@@ -454,12 +510,11 @@
"accent_color": "強調色",
"account": "帳號",
"account_deleted": "已刪除您的帳號",
"account_description": "自定義您的帳號設定。",
"account_description": "自您的帳號設定。",
"account_email_description": "您的主要電子郵件地址。",
"account_name_description": "這是您的顯示名稱。",
"background": "背景",
"black_mode": "黑色",
"change_font_size": "更改字型大小",
"choose_language": "選擇語言",
"dark_mode": "暗色",
"delete_account": "刪除帳號",
@@ -472,10 +527,6 @@
"extensions": "擴充套件",
"extensions_use_toggle": "使用瀏覽器擴充套件傳送請求(如果存在)",
"follow": "關注我們",
"font_size": "字型大小",
"font_size_large": "大",
"font_size_medium": "中",
"font_size_small": "小",
"interceptor": "攔截器",
"interceptor_description": "應用程式和 API 之間的中介軟體。",
"language": "語言",
@@ -491,7 +542,7 @@
"read_the": "閱讀",
"reset_default": "重置為預設",
"short_codes": "快捷碼",
"short_codes_description": "我們為您打造的快捷碼。",
"short_codes_description": "您建立的快捷碼。",
"sidebar_on_left": "左側邊欄",
"sync": "同步",
"sync_collections": "集合",
@@ -500,9 +551,9 @@
"sync_history": "歷史",
"system_mode": "系統",
"telemetry": "遙測服務",
"telemetry_helps_us": "遙測服務幫助我們進行個化操作,為您提供最佳體驗。",
"telemetry_helps_us": "遙測服務能夠幫助我們進行個化操作,為您提供最佳體驗。",
"theme": "主題",
"theme_description": "自定義您的應用程式主題。",
"theme_description": "自您的應用程式主題。",
"use_experimental_url_bar": "使用帶有環境醒目標示的實驗性網址欄",
"user": "使用者",
"verified_email": "已確認電子郵件地址",
@@ -540,19 +591,27 @@
"settings": "前往設定頁面",
"title": "導航"
},
"others": {
"prettify": "美化編輯器的內容",
"title": "其他"
},
"request": {
"copy_request_link": "複製請求連結",
"delete_method": "選擇 DELETE 方法",
"get_method": "選擇 GET 方法",
"head_method": "選擇 HEAD 方法",
"import_curl": "匯入 cURL",
"method": "方法",
"next_method": "選擇下一個方法",
"post_method": "選擇 POST 方法",
"previous_method": "選擇上一個方法",
"put_method": "選擇 PUT 方法",
"rename": "重新命名請求",
"reset_request": "重置請求",
"save_request": "儲存請求",
"save_to_collections": "儲存到集合",
"send_request": "傳送請求",
"show_code": "產生程式碼片段",
"title": "請求"
},
"response": {
@@ -582,6 +641,85 @@
"log": "日誌",
"url": "網址"
},
"spotlight": {
"change_language": "變更語言",
"environments": {
"delete": "刪除目前環境",
"duplicate": "複製目前環境",
"duplicate_global": "複製全域環境",
"edit": "編輯目前環境",
"edit_global": "編輯全域環境",
"new": "建立新環境",
"new_variable": "建立新環境變數",
"title": "環境"
},
"general": {
"chat": "與客服對話",
"help_menu": "幫助與支援",
"open_docs": "閱讀說明文件",
"open_github": "開啟 GitHub 儲存庫",
"open_keybindings": "鍵盤快捷鍵",
"social": "社交",
"title": "一般"
},
"graphql": {
"connect": "連接至伺服器",
"disconnect": "斷開與伺服器的連線"
},
"miscellaneous": {
"invite": "邀請您的朋友使用 Hoppscotch",
"title": "雜項"
},
"request": {
"save_as_new": "儲存為新請求",
"select_method": "選擇方法",
"switch_to": "切換至",
"tab_authorization": "授權分頁",
"tab_body": "本體分頁",
"tab_headers": "標頭分頁",
"tab_parameters": "參數分頁",
"tab_pre_request_script": "預請求腳本分頁",
"tab_query": "查詢分頁",
"tab_tests": "測試分頁",
"tab_variables": "變數分頁"
},
"response": {
"copy": "複製回應",
"download": "下載回應",
"title": "回應"
},
"section": {
"interceptor": "攔截器",
"interface": "介面",
"theme": "主題",
"user": "使用者"
},
"settings": {
"change_interceptor": "變更攔截器",
"change_language": "變更語言",
"theme": {
"black": "黑色",
"dark": "暗色",
"light": "亮色",
"system": "跟隨系統"
}
},
"tab": {
"close_current": "關閉目前分頁",
"close_others": "關閉所有其他分頁",
"duplicate": "複製目前分頁",
"new_tab": "開啟新分頁",
"title": "分頁"
},
"workspace": {
"delete": "刪除目前團隊",
"edit": "編輯目前團隊",
"invite": "邀請他人加入團隊",
"new": "建立新團隊",
"switch_to_personal": "切換至您的個人工作區",
"title": "團隊"
}
},
"sse": {
"event_type": "事件類型",
"log": "日誌",
@@ -639,8 +777,11 @@
"tab": {
"authorization": "授權",
"body": "請求本體",
"close": "關閉分頁",
"close_others": "關閉其他分頁",
"collections": "集合",
"documentation": "幫助文件",
"duplicate": "複製分頁",
"environments": "環境",
"headers": "請求標頭",
"history": "歷史記錄",

Some files were not shown because too many files have changed in this diff Show More