Compare commits

..

100 Commits

Author SHA1 Message Date
Liyas Thomas
20c8973f5d chore: set X-Frame-Options to SAMEORIGIN 2023-02-01 23:46:15 +05:30
Liyas Thomas
461d67ce90 feat: deploy hoppscotch-ui 2023-02-01 23:15:50 +05:30
Liyas Thomas
492c3a0902 fix: open gist html_url after export 2023-02-01 20:59:12 +05:30
Akash K
d5d516ce18 chore: abstract auth from hoppscotch/commons to hoppscotch/web (#2899) 2023-02-01 20:47:22 +05:30
Nivedin
f676f94278 fix: graphql save request emit payload (#2913) 2023-02-01 15:20:13 +05:30
Liyas Thomas
cd6e40f01c chore: uniform ui in rest and graphql collections 2023-01-31 22:39:24 +05:30
Nivedin
59a8a22e8a fix: search on collections > empty state ui (#2912)
fix: collection search filter ui
2023-01-31 22:33:10 +05:30
Nivedin
2910164d5a feat : smart tree component (#2865)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-01-31 17:15:03 +05:30
Liyas Thomas
b95e2b365a fix: broken environment highlight color 2023-01-30 10:01:33 +05:30
Liyas Thomas
73e788b513 chore: fix broken RouterLink component 2023-01-28 09:49:14 +05:30
Petro S
15d135c11b chore: fixed i18n grammatical errors (#2908) 2023-01-28 08:44:31 +05:30
Anwarul Islam
0fcda0be1a refactor: hoppscotch ui (#2887)
* feat: hopp ui initialized

* feat: button components added

* feat: windi css integration

* chore: package removed from hopp ui

* feat: storybook added

* feat: move all smart components hoppscotch-ui

* fix: import issue from components/smart

* fix: env input component import

* feat: add hoppui to windicss config

* fix: remove storybook

* feat: move components from hoppscotch-ui

* feat: storybook added

* feat: storybook progress

* feat: themeing storybook

* feat: add stories

* chore: package updated

* chore: stories added

* feat: stories added

* feat: stories added

* feat: icons resolved

* feat: i18n composable resolved

* feat: histoire added

* chore: resolved prettier issue

* feat: radio story added

* feat: story added for all components

* feat: new components added to stories

* fix: resolved issues

* feat: readme.md added

* feat: context/provider added

* chore: removed app component registry

* chore: remove importing of all components in hopp-ui to allow code splitting

* chore: fix vite config errors

* chore: jsdoc added

* chore: any replaced with smart-item

* chore: i18n added to ui components

* chore: clean up - removed a duplicate button

---------

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2023-01-28 08:27:00 +05:30
Andrew Bastin
9d7052c626 chore: add CODEOWNERS 2023-01-13 21:53:37 -05:00
Masaki Tagawa
5841d2eb66 chore(i18n): update i18n translations 2023-01-09 20:53:12 +05:30
tzhangm
ee07a90b5e chore: update i18n translations 2023-01-05 13:27:17 +05:30
5idereal
70d2f1e3d9 chore: update i18n translations (#2892) 2023-01-03 12:51:33 +05:30
Liyas Thomas
acafc072db chore: minor ui improvements 2022-12-29 11:10:16 +05:30
Anwarul Islam
51e40581b0 fix: login modal not visible in small screen 2022-12-26 01:40:55 +06:00
Andrew Bastin
1e5dd1cc53 chore: introduce platform object for platform specific code 2022-12-21 19:21:52 -05:00
Liyas Thomas
3d7b057026 chore: updated i18n translation, minor ux improvements 2022-12-17 09:57:57 +05:30
Anwarul Islam
d36ab337d7 feat: ability to delete user account and data (#2863)
* feat: add gql mutation

* feat: added delete account section in profile page

* feat: separate shortcodes section to a component

* feat: delete user modal

* feat: delete user account

* feat: navigate to homepage after delete

* chore: improve ui

* fix: delete user mutation

* chore: minor ui improvements

* chore: correct grammar in certain i18n strings

* feat: delection section separated to component

* feat: separate user delete section into component

* feat: defer fetch my teams

* feat: disable delete account button on loading state

* Update Shortcodes.vue

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-12-17 09:31:39 +05:30
Liyas Thomas
012f9b5314 feat: prettify xml request body - fixed #2878 2022-12-15 17:06:18 +05:30
Liyas Thomas
ba6069324f chore: minor ui improvements 2022-12-14 19:29:04 +05:30
Liyas Thomas
0d26d4cdbd ci: updated workflow comments 2022-12-14 19:10:52 +05:30
Liyas Thomas
4b920feffa ci: maximize build space 2022-12-14 16:33:33 +05:30
Andrew Bastin
830373efb3 chore: reintroduce sitemap generation (#2874) 2022-12-10 21:10:45 -05:00
Akash K
c3f18671ec fix: cannot write to body when a request is loaded from history (#2873)
* fix: cannot write body when a request is loaded from history

* fix: import `toRaw()` from vue

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-12-09 20:39:36 +05:30
Liyas Thomas
0d33758ba4 ci: introduce staging deployment actions 2022-12-07 12:11:06 +05:30
Akash K
e7e8c397ef fix: circular watcher dependencies on invite.vue causing infinite loop (#2871) 2022-12-06 15:59:38 -05:00
Liyas Thomas
b04b12c7a0 fix: broken links 2022-12-06 12:09:20 +05:30
Liyas Thomas
a1d69b3210 chore: minor ui improvements 2022-12-03 13:01:47 +05:30
Liyas Thomas
dcbc2f1145 ci: use latest workflow versions 2022-12-03 00:51:49 +05:30
Andrew Bastin
36903b338a fix: broken Dockerfile and final start command 2022-12-02 13:34:46 -05:00
Andrew Bastin
9d8d6832af chore: fix broken ci 2022-12-02 11:01:53 -05:00
Andrew Bastin
3d004f2322 chore: split app to commons and web (squash commit) 2022-12-02 03:05:35 -05:00
Liyas Thomas
fb827e3586 Create deploy-preview-netlify.yml 2022-12-02 03:02:56 -05:00
Liyas Thomas
ccca183e08 chore: minor ui improvements 2022-12-01 17:47:39 +05:30
Liyas Thomas
237455ab21 chore: minor ui improvements 2022-11-29 13:50:58 +05:30
Liyas Thomas
6141073137 chore: minor ui improvements 2022-11-27 23:19:19 +05:30
Liyas Thomas
740691417f chore: updated translation 2022-11-27 03:52:15 +05:30
Anwarul Islam
2ed709796a MQTT Revamp (#2381)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-11-27 02:43:24 +05:30
Akash K
75c0350584 fix: delete not working properly on request body (#2861) 2022-11-24 22:00:43 -05:00
Liyas Thomas
17d72b9922 fix: typo 2022-11-17 09:58:52 +05:30
Liyas Thomas
1796fae3d1 chore: updated tech stack list 2022-11-16 09:45:55 +05:30
Akash K
1ecd22204d chore: remove unwanted debug info (#2851) 2022-11-09 17:37:05 -05:00
Akash K
356fe4591f fix: fix cursor going out of bounds when filtering response (#2850) 2022-11-09 17:23:28 -05:00
Andrew Bastin
0230942a3d chore: introduce devcontainer support 2022-11-08 15:51:26 -05:00
Andrew Bastin
325793eebc fix: onLoggedIn called when id token is not yet resolved for auth users 2022-11-07 22:36:12 -05:00
Nivedin
39d1256f68 refactor: move global environment selector to top (#2848)
* refactor: moved global env to top

* fix: change to my collection and env when logedout

* fix: merge fix

* refactor: change v-show to v-if

* chore: minor type change

* chore: pass variable name to edit

* chore: improve logic

Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>

* chore: minor ui improvements

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-11-03 10:13:06 +05:30
Andrew Bastin
fd2472d34b chore: add vue-tsc dep and introduce lint:ts script for prelim ts fixes 2022-11-02 13:08:25 -04:00
Andrew Bastin
5e8fbc6552 chore: fix some type errors in '/r' route 2022-11-02 11:03:08 -04:00
Liyas Thomas
3084a40729 fix: set focus to newly added environment key field 2022-11-02 18:11:13 +05:30
Francisco Emanuel de Sales Pereira
0069f51ea4 feat: added inline environment variable edit button (#2813)
* refactor: changes v-if render to v-show on Environments tabs

* feat: adds selectText prop to EnvInput

* feat: adds editing variable name to env Details modal

* feat: adds actions to invoke edit env modals

* feat: adds edit action to tooltip env

* refactor: adds destructuring assignment on action handlers for edit env modals

* refactor: fix comment on environment modals action

* chore: minor ui improvements

* refactor: change text selecion prop on EnvInput to something more meaningful

* refactor: removes comment on HoppEnvironment extension

* refactor: renames isTextSelected EnvInput prop to selectTextOnMount

* refactor: remove type definition of automatic inferrable variables

* refactor: edit environment call to only allow accepted types

* feat: introduce type safe action arguments

* fix: revert v-show to v-if

* chore: minor ui improvements

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-11-02 17:55:22 +05:30
Liyas Thomas
696c612489 fix: broken tippy focus event 2022-11-02 15:05:57 +05:30
Liyas Thomas
4a5a4077af chore: improvements to tooltips and popovers 2022-11-02 14:42:00 +05:30
Liyas Thomas
28bcb899e7 chore: improve ui consistency 2022-11-01 19:05:13 +05:30
Liyas Thomas
4062a7089a perf: temporarily disable dependabot 2022-11-01 09:40:14 +05:30
Akash K
ad86221c7d fix: linting erroring out on graphql queries (#2846) 2022-10-31 18:45:53 -04:00
Akash K
53938248de fix: errors on opening json outline (#2847) 2022-10-31 18:28:31 -04:00
Liyas Thomas
c018b639ad chore: minor ui improvements 2022-11-01 00:42:35 +05:30
Liyas Thomas
eb2145c7da fix: updated prop name 2022-10-30 17:50:17 +05:30
Liyas Thomas
2f4c39d310 feat: filter and group history entries 2022-10-30 17:05:32 +05:30
biondizzle
79ada82223 feat: use environment variable to specify proxyscotch access token (#2791) 2022-10-29 18:16:40 -04:00
Liyas Thomas
c67463fb3b chore: updated translations
commit 2adcfe9804ede1fea584db24e0a27dc1b5e034e3
Author: Archontis Kostis <arxontisk02@gmail.com>
Date:   Sat Oct 29 22:04:01 2022 +0300

    chore: updated translation (#2837)

commit 56b8a5cb38
Author: 5idereal <nelson22768384@gmail.com>
Date:   Sat Oct 29 11:58:25 2022 +0800

    chore: updated translation (#2835)
2022-10-30 00:45:37 +05:30
Akash K
d162471555 chore: add polyfill for replaceAll (#2836) 2022-10-28 20:29:07 -04:00
Nivedin
c99797bcef fix: import hopp collection (#2824) 2022-10-27 22:29:46 -04:00
Nivedin
9739cdbbaa fix: codemirror field overflow (#2827)
* fix: codemirror editor overflow

* chore: minor ui improvements

Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-10-27 08:12:23 +05:30
Akash K
7f6db561f5 fix: fix missing analytics (#2826)
fix: typo in environment variable name
2022-10-26 18:50:03 +05:30
Akash K
9eac00b303 fix: useCodemirror getting non strings as value (#2810) 2022-10-22 12:36:07 +05:30
Oliver Zhou (毓杰)
b61df04c1b fix: socket.io v3/v4 incomming message issue (#2811) 2022-10-22 12:31:31 +05:30
Liyas Thomas
b587e21c90 chore: updated translations
commit 1673c36cec5ac0e949bdf85c8e780f02ae25c06d
Author: Roberth González <63687573+rxb3rth@users.noreply.github.com>
Date:   Thu Oct 20 15:45:00 2022 +0200

    chore(i18n): updated translations (#2788)

commit af70ae2c43558cf7f658cf8bfcca35475e7786c7
Author: Fiqri Dwi <79080077+fiqridwi@users.noreply.github.com>
Date:   Thu Oct 20 18:41:53 2022 +0700

    chore: updated translations (#2805)
2022-10-20 19:47:57 +05:30
Liyas Thomas
02d66ee9fd chore: minor ui improvements 2022-10-20 19:47:17 +05:30
Akash K
a950e08ef1 chore: add temporary debug info for code mirror (#2806)
chore: temp debug info
2022-10-20 17:17:54 +05:30
Liyas Thomas
6e7d28db7b fix: overflow on log entries - closed #2738 2022-10-15 09:57:49 +05:30
Andrew Bastin
a0ea00d0a3 fix: form-data requests on proxy failing 2022-10-14 15:39:28 +05:30
Liyas Thomas
beb5606862 chore: updated translations
commit b8350ae25d85ec71be6a8ca2580fbeeebd73c5f6
Author: Andrii Bodnar <29282228+andrii-bodnar@users.noreply.github.com>
Date:   Fri Oct 14 06:47:18 2022 +0300

    chore: updated translations (#2781)

commit 04dd400871
Author: Daniel Krásný <53856821+DanielKrasny@users.noreply.github.com>
Date:   Wed Oct 12 14:26:02 2022 +0200

    chore: remove translations of brand names (#2777)
2022-10-14 09:21:20 +05:30
Anwarul Islam
44f11f93a4 fix: realtime connect/disconnect issue (#2768)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-10-13 17:33:46 +05:30
Hau Nguyen
7b61f267dd chore: migration vite import.meta.glob (#2778) 2022-10-12 15:14:43 +05:30
Akash K
971238cedb chore: serialize when logging errors (#2775) 2022-10-12 02:19:27 +05:30
Akash K
4d19b9249b fix: fix auth/graphql errors causing errors on logout (#2772) 2022-10-11 14:06:22 +05:30
Liyas Thomas
4046b91609 fix: resolved #2771 2022-10-11 10:35:14 +05:30
Nivedin
e6652109c5 fix: team environments import (#2770)
Co-authored-by: Liyas Thomas <liyascthomas@gmail.com>
2022-10-10 20:15:01 +05:30
Liyas Thomas
e9cfc066a5 fix: resolved #2758 2022-10-10 14:50:53 +05:30
Liyas Thomas
9ce078c1d3 chore: updated translations 2022-10-09 21:22:36 +05:30
Liyas Thomas
2bcc1675e8 chore: updated translations
commit 2756922cc0
Author: islamzeki <islamzeki@users.noreply.github.com>
Date:   Sun Oct 9 18:31:47 2022 +0300

    Update tr.json (#2750)

commit fb13fae385
Author: Cheese <seojeee@gmail.com>
Date:   Mon Oct 10 00:28:34 2022 +0900

    add and fix translations in ko.json (#2752)

commit c28ffd604d
Author: Akhmad Thoriq <51510460+itstor@users.noreply.github.com>
Date:   Sun Oct 9 22:27:15 2022 +0700

    fix wrong translation and typo in Indonesia language (#2757)

commit fe18aa1310
Author: Fiki Maulana <fikimaul@gmail.com>
Date:   Wed Oct 5 21:40:19 2022 +0700

    translate and fix some Indonesia language (#2739)

commit 9f8a2c0cd3
Author: Dhravya Shah <dhravyashah@gmail.com>
Date:   Tue Oct 4 12:19:12 2022 +0530

    i18n: add Hindi to locales (#2734)
2022-10-09 21:04:57 +05:30
Liyas Thomas
a87c2347c9 chore: minor ui improvements 2022-10-09 20:55:22 +05:30
Liyas Thomas
8f2810db30 ci: use latest workflow version - superseded #2754 2022-10-09 16:44:44 +05:30
Andrew Bastin
528d0b0429 fix: history component crashing on special characters (fixes #2743) 2022-10-07 23:00:32 +05:30
Andrew Bastin
f759014315 fix: broken pr evaluation scripts 2022-10-07 22:20:05 +05:30
Nivedin
a568610c28 feat: team environments (#2512)
Co-authored-by: amk-dev <akash.k.mohan98@gmail.com>
Co-authored-by: liyasthomas <liyascthomas@gmail.com>
Co-authored-by: islamzeki <islamzeki@users.noreply.github.com>
Co-authored-by: Jesvin Jose <aitchnyu@users.noreply.github.com>
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-07 22:05:39 +05:30
Damanpreet Singh
c35a85db12 fix: allow posting empty key files in multipart/form-data (#2664) 2022-10-07 02:29:15 +05:30
Andrew Bastin
fcd61436c8 chore: fix issues with broken ci scripts 2022-10-07 01:51:32 +05:30
Andrew Bastin
0798063213 chore: fix broken docker ci builds 2022-10-07 01:42:39 +05:30
jerbob92
80de63323d build: use GraphQL URL from env in gql-codegen (#2749)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-07 01:17:25 +05:30
jerbob92
7d0219b11d chore: allow configuration of shortcode base (#2748) 2022-10-07 00:50:48 +05:30
Akash K
d42434ddc0 feat: use email as fallback for display name (#2746)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-07 00:45:34 +05:30
Liyas Thomas
cbf6d23c24 chore: minor improvements 2022-10-06 21:21:24 +05:30
Akash K
568c05b4b0 fix: fix type error when generating profile picture initials (#2742)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-06 17:56:30 +05:30
Akash K
59ee4babeb fix: fix ref access when using v-for on Invite.vue (#2744)
Co-authored-by: Andrew Bastin <andrewbastin.k@gmail.com>
2022-10-06 16:06:14 +05:30
Liyas Thomas
604ef4d004 fix: resolved #2740 2022-10-05 21:24:15 +05:30
613 changed files with 18754 additions and 8531 deletions

View File

@@ -0,0 +1,9 @@
{
"name": "Hoppscotch",
"image": "mcr.microsoft.com/devcontainers/typescript-node:18",
"forwardPorts": [3000],
"features": {
"ghcr.io/NicoVIII/devcontainer-features/pnpm:1": {}
},
"postCreateCommand": "mv .env.example .env && pnpm i"
}

View File

@@ -14,8 +14,9 @@ VITE_MESSAGING_SENDER_ID=421993993223
VITE_APP_ID=1:421993993223:web:ec0baa8ee8c02ffa1fc6a2
VITE_MEASUREMENT_ID=G-BBJ3R80PJT
# Base URL
# Base URLs
VITE_BASE_URL=https://hoppscotch.io
VITE_SHORTCODE_BASE_URL=https://hopp.sh
# Backend URLs
VITE_BACKEND_GQL_URL=https://api.hoppscotch.io/graphql
@@ -25,3 +26,6 @@ VITE_BACKEND_WS_URL=wss://api.hoppscotch.io/graphql
# VITE_SENTRY_DSN: <Sentry DSN here>
# VITE_SENTRY_ENVIRONMENT: <Sentry environment value here>
# VITE_SENTRY_RELEASE_TAG: <Sentry release tag here (for release monitoring)>
# Proxyscotch Access Token (Optional)
# VITE_PROXYSCOTCH_ACCESS_TOKEN: <Token Set In Proxyscotch Server>

View File

@@ -5,6 +5,6 @@ updates:
schedule:
interval: weekly
time: '00:00'
open-pull-requests-limit: 10
open-pull-requests-limit: 0
reviewers:
- liyasthomas

View File

@@ -1,72 +1,63 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
name: "CodeQL analysis"
on:
push:
branches: [ main ]
branches: [main]
pull_request:
# The branches below must be a subset of the branches above
branches: [ main ]
branches: [main]
schedule:
- cron: '39 7 * * 2'
# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
# │ │ │ │ ┌───────────── day of the week (0 - 6 or SUN-SAT)
# │ │ │ │ │
# │ │ │ │ │
# │ │ │ │ │
# * * * * *
- cron: '30 1 * * 0'
jobs:
analyze:
name: Analyze
# CodeQL runs on ubuntu-latest, windows-latest, and macos-latest
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
# required for all workflows
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
# only required for workflows in private repositories
actions: read
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Checkout
uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
# Run extended queries including queries using machine learning
queries: security-extended
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v2
with:
# Run extended queries including queries using machine learning
queries: security-extended
languages: ${{ matrix.language }}
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java).
# If this step fails, then you should remove it and run the build manually (see below).
- name: Autobuild
uses: github/codeql-action/autobuild@v2
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
# ✏️ If the Autobuild fails above, remove it and uncomment the following
# three lines and modify them (or add more) to build your code if your
# project uses a compiled language
#- run: |
# make bootstrap
# make release
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v2

View File

@@ -1,16 +1,19 @@
name: Deploy to Live Channel
name: Deploy to Firebase (production)
on:
push:
branches:
- main
branches: [main]
jobs:
deploy_live_website:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: FirebaseExtended/action-hosting-deploy@v0
- name: Checkout
uses: actions/checkout@v3
- name: Deploy to Firebase (production)
uses: FirebaseExtended/action-hosting-deploy@v0
with:
repoToken: '${{ secrets.GITHUB_TOKEN }}'
firebaseServiceAccount: '${{ secrets.FIREBASE_SERVICE_ACCOUNT_POSTWOMAN_API }}'

View File

@@ -1,27 +1,33 @@
name: Deploy to Netlify
name: Deploy to Netlify (production)
on:
push:
branches: [main]
jobs:
build:
name: Push build files to Netlify
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
- name: Checkout
uses: actions/checkout@v3
- name: Setup and run pnpm install
uses: pnpm/action-setup@v2.2.2
- name: Setup environment
run: mv .env.example .env
- name: Setup pnpm
uses: pnpm/action-setup@v2.2.4
with:
version: 7
run_install: true
- name: Setup Environment
run: mv packages/hoppscotch-app/.env.example packages/hoppscotch-app/.env
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Build Site
- name: Build site
env:
VITE_SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
VITE_SENTRY_ENVIRONMENT: production
@@ -30,12 +36,12 @@ jobs:
# Deploy the production site with netlify-cli
- name: Deploy to Netlify (production)
run: npx netlify-cli deploy --dir=packages/hoppscotch-app/dist --prod
run: npx netlify-cli deploy --dir=packages/hoppscotch-web/dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_PRODUCTION_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- name: Create Sentry Release
- name: Create Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

View File

@@ -1,25 +1,34 @@
name: Deploy to Staging Netlify
name: Deploy to Netlify (staging)
on:
push:
# TODO: Migrate to staging branch only
branches: [main]
branches: [staging]
pull_request:
branches: [staging]
jobs:
build:
name: Push build files to Netlify
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
- name: Checkout
uses: actions/checkout@v3
- name: Setup and run pnpm install
uses: pnpm/action-setup@v2.2.2
- name: Setup pnpm
uses: pnpm/action-setup@v2.2.4
env:
VITE_BACKEND_GQL_URL: ${{ secrets.STAGING_BACKEND_GQL_URL }}
with:
version: 7
run_install: true
- name: Build Site
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Build site
env:
VITE_GA_ID: ${{ secrets.STAGING_GA_ID }}
VITE_GTM_ID: ${{ secrets.STAGING_GTM_ID }}
@@ -40,12 +49,12 @@ jobs:
# Deploy the staging site with netlify-cli
- name: Deploy to Netlify (staging)
run: npx netlify-cli deploy --dir=packages/hoppscotch-app/dist --prod
run: npx netlify-cli deploy --dir=packages/hoppscotch-web/dist --prod
env:
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_STAGING_SITE_ID }}
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- name: Create Sentry Release
- name: Create Sentry release
uses: getsentry/action-release@v1
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

41
.github/workflows/deploy-netlify-ui.yml vendored Normal file
View File

@@ -0,0 +1,41 @@
name: Deploy to Netlify (ui)
on:
push:
branches: [main]
# run this workflow only if an update is made to the ui package
paths:
- "packages/hoppscotch-ui/**"
jobs:
deploy:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup environment
run: mv .env.example .env
- name: Setup pnpm
uses: pnpm/action-setup@v2.2.4
with:
version: 7
run_install: true
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node }}
cache: pnpm
- name: Build site
run: pnpm run generate-ui
# Deploy the ui site with netlify-cli
- name: Deploy to Netlify (ui)
run: npx netlify-cli 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

@@ -7,11 +7,20 @@ on:
types: [published]
jobs:
push_to_registry:
name: Push Docker image to Docker Hub
publish:
name: Publish
runs-on: ubuntu-latest
steps:
- name: Check out the repo
- name: Maximize build space
uses: easimon/maximize-build-space@master
with:
root-reserve-mb: 8192
swap-size-mb: 18432
remove-dotnet: 'true'
remove-android: 'true'
remove-haskell: 'true'
- name: Checkout
uses: actions/checkout@v3
- name: Set up QEMU
@@ -41,6 +50,6 @@ jobs:
with:
context: .
push: true
platforms: linux/amd64,linux/arm64/v8,linux/arm/v7
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}

View File

@@ -2,12 +2,13 @@ name: Node.js CI
on:
push:
branches: [main]
branches: [main, staging]
pull_request:
branches: [main]
branches: [main, staging]
jobs:
build:
test:
name: Test
runs-on: ubuntu-latest
strategy:
@@ -15,17 +16,23 @@ jobs:
node-version: ["lts/*"]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- name: Setup and run pnpm install
uses: pnpm/action-setup@v2.2.2
- name: Checkout
uses: actions/checkout@v3
- name: Setup environment
run: mv .env.example .env
- name: Setup pnpm
uses: pnpm/action-setup@v2.2.4
with:
version: 7
run_install: true
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
- name: Setup node
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
node-version: ${{ matrix.node }}
cache: pnpm
- name: Run tests
run: pnpm test

3
.gitignore vendored
View File

@@ -168,3 +168,6 @@ tests/*/videos
# Local Netlify folder
.netlify
# PNPM
.pnpm-store

View File

@@ -6,6 +6,7 @@
"dbaeumer.vscode-eslint",
"editorconfig.editorconfig",
"csstools.postcss",
"folke.vscode-monorepo-workspace"
],
"unwantedRecommendations": [
"octref.vetur"

27
CODEOWNERS Normal file
View File

@@ -0,0 +1,27 @@
# CODEOWNERS is prioritized from bottom to top
# If none of the below matched
* @AndrewBastin @liyasthomas
# Packages
/packages/codemirror-lang-graphql/ @AndrewBastin
/packages/hoppscotch-cli/ @aitchnyu
/packages/hoppscotch-common/ @amk-dev @AndrewBastin
/packages/hoppscotch-data/ @AndrewBastin
/packages/hoppscotch-js-sandbox/ @aitchnyu
/packages/hoppscotch-ui/ @anwarulislam
/packages/hoppscotch-web/ @amk-dev @AndrewBastin
# Sections within Hoppscotch Common
/packages/hoppscotch-common/src/components @anwarulislam
/packages/hoppscotch-common/src/components/collections @nivedin @amk-dev
/packages/hoppscotch-common/src/components/environments @nivedin @amk-dev
/packages/hoppscotch-common/src/composables @amk-dev
/packages/hoppscotch-common/src/modules @AndrewBastin @amk-dev
/packages/hoppscotch-common/src/pages @AndrewBastin @amk-dev
/packages/hoppscotch-common/src/newstore @AndrewBastin @amk-dev
README.md @liyasthomas
# The lockfile has no owner
pnpm-lock.yaml

View File

@@ -17,13 +17,13 @@ COPY . .
RUN npm install -g pnpm
RUN mv .env.example .env
RUN pnpm i --unsafe-perm=true
ENV HOST 0.0.0.0
EXPOSE 3000
RUN mv packages/hoppscotch-app/.env.example packages/hoppscotch-app/.env
RUN pnpm run generate
CMD ["pnpm", "run", "start"]

View File

@@ -36,14 +36,14 @@
<p>
<a href="https://hoppscotch.io/#gh-light-mode-only" target="_blank">
<img
src="./packages/hoppscotch-app/public/images/banner-light.png"
src="./packages/hoppscotch-common/public/images/banner-light.png"
alt="Hoppscotch"
width="100%"
/>
</a>
<a href="https://hoppscotch.io/#gh-dark-mode-only" target="_blank">
<img
src="./packages/hoppscotch-app/public/images/banner-dark.png"
src="./packages/hoppscotch-common/public/images/banner-dark.png"
alt="Hoppscotch"
width="100%"
/>
@@ -275,11 +275,11 @@ _Add-ons are developed and maintained under **[Hoppscotch Organization](https://
- [JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript)
- [TypeScript](https://www.typescriptlang.org)
- [Vue](https://vuejs.org)
- [Nuxt](https://nuxtjs.org)
- [Vite](https://vitejs.dev)
## **Developing**
0. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/.env.example) file found in `packages/hoppscotch-app` with your own keys and rename it to `.env`.
0. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/.env.example) file found in the root of repository with your own keys and rename it to `.env`.
_Sample keys only work with the [production build](https://hoppscotch.io)._
@@ -315,9 +315,9 @@ docker run --rm --name hoppscotch -p 3000:3000 hoppscotch/hoppscotch:latest
1. [Clone this repo](https://help.github.com/en/articles/cloning-a-repository) with git.
2. Install pnpm using npm by running `npm install -g pnpm`.
3. Install dependencies by running `pnpm install` within the directory that you cloned (probably `hoppscotch`).
4. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/.env.example) file found in `packages/hoppscotch-app` with your own keys and rename it to `.env`.
4. Update [`.env.example`](https://github.com/hoppscotch/hoppscotch/blob/main/.env.example) file found in the root of repository with your own keys and rename it to `.env`.
5. Build the release files with `pnpm run generate`.
6. Find the built project in `packages/hoppscotch-app/dist`. Host these files on any [static hosting servers](https://www.pluralsight.com/blog/software-development/where-to-host-your-jamstack-site).
6. Find the built project in `packages/hoppscotch-web/dist`. Host these files on any [static hosting servers](https://www.pluralsight.com/blog/software-development/where-to-host-your-jamstack-site).
## **Contributing**

View File

@@ -11,10 +11,10 @@ if there is no existing translation, you can create a new one by following these
1. **[Fork the repository](https://github.com/hoppscotch/hoppscotch/fork).**
2. **Checkout the `i18n` branch for latest translations.**
3. **Create a new branch for your translation with base branch `i18n`.**
4. **Create target language file in the [`locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-app/locales) directory.**
5. **Copy the contents of the source file [`locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/locales/en.json) to the target language file.**
4. **Create target language file in the [`/packages/hoppscotch-common/locales`](https://github.com/hoppscotch/hoppscotch/tree/main/packages/hoppscotch-common/locales) directory.**
5. **Copy the contents of the source file [`/packages/hoppscotch-common/locales/en.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/locales/en.json) to the target language file.**
6. **Translate the strings in the target language file.**
7. **Add your language entry to [`languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-app/languages.json).**
7. **Add your language entry to [`/packages/hoppscotch-common/languages.json`](https://github.com/hoppscotch/hoppscotch/blob/main/packages/hoppscotch-common/languages.json).**
8. **Save & commit changes.**
9. **Send a pull request.**

View File

@@ -5,9 +5,9 @@
},
"hosting": {
"predeploy": [
"cd packages/hoppscotch-app && mv .env.example .env && cd ../.. && npm install -g pnpm && pnpm i && pnpm run generate"
"mv .env.example .env && npm install -g pnpm && pnpm i && pnpm run generate"
],
"public": "packages/hoppscotch-app/dist",
"public": "packages/hoppscotch-web/dist",
"ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
"rewrites": [
{

View File

@@ -4,13 +4,13 @@
[build]
base = "/"
publish = "packages/hoppscotch-app/dist"
publish = "packages/hoppscotch-web/dist"
command = "npx pnpm i --store=node_modules/.pnpm-store && npx pnpm run generate"
[[headers]]
for = "/*"
[headers.values]
X-Frame-Options = "DENY"
X-Frame-Options = "SAMEORIGIN"
X-XSS-Protection = "1; mode=block"
[[redirects]]

View File

@@ -10,12 +10,13 @@
"prepare": "husky install",
"dev": "pnpm -r do-dev",
"generate": "pnpm -r do-build-prod",
"start": "http-server packages/hoppscotch-app/dist -p 3000",
"start": "http-server packages/hoppscotch-web/dist -p 3000",
"lint": "pnpm -r do-lint",
"typecheck": "pnpm -r do-typecheck",
"lintfix": "pnpm -r do-lintfix",
"pre-commit": "pnpm -r do-lint && pnpm -r do-typecheck",
"test": "pnpm -r do-test"
"test": "pnpm -r do-test",
"generate-ui": "pnpm -r do-build-ui"
},
"workspaces": [
"./packages/*"

View File

@@ -1,16 +0,0 @@
# Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar)
## Type Support For `.vue` Imports in TS
Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates. However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using manual `h(...)` calls), you can enable Volar's Take Over mode by following these steps:
1. Run `Extensions: Show Built-in Extensions` from VS Code's command palette, look for `TypeScript and JavaScript Language Features`, then right click and select `Disable (Workspace)`. By default, Take Over mode will enable itself if the default TypeScript extension is disabled.
2. Reload the VS Code window by running `Developer: Reload Window` from the command palette.
You can learn more about Take Over mode [here](https://github.com/johnsoncodehk/volar/discussions/471).

View File

@@ -1,672 +0,0 @@
{
"action": {
"autoscroll": "Autoscroll",
"cancel": "Cancel",
"choose_file": "Choose a file",
"clear": "Clear",
"clear_all": "Clear all",
"close": "Close",
"connect": "Connect",
"copy": "Copy",
"delete": "Delete",
"disconnect": "Disconnect",
"dismiss": "Dismiss",
"dont_save": "Don't save",
"download_file": "Download file",
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Edit",
"filter_response": "Filter response",
"go_back": "Go back",
"label": "Label",
"learn_more": "Learn more",
"less": "Less",
"more": "More",
"new": "New",
"no": "No",
"open_workspace": "Open workspace",
"paste": "Paste",
"prettify": "Prettify",
"remove": "Remove",
"restore": "Restore",
"save": "Save",
"scroll_to_bottom": "Scroll to bottom",
"scroll_to_top": "Scroll to top",
"search": "Search",
"send": "Send",
"start": "Start",
"stop": "Stop",
"to_close": "to close",
"to_navigate": "to navigate",
"to_select": "to select",
"turn_off": "Turn off",
"turn_on": "Turn on",
"undo": "Undo",
"yes": "Yes"
},
"add": {
"new": "Add new",
"star": "Add star"
},
"app": {
"chat_with_us": "Chat with us",
"contact_us": "Contact us",
"copy": "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.",
"discord": "Discord",
"documentation": "Documentation",
"github": "GitHub",
"help": "Help & feedback",
"home": "Home",
"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",
"join_discord_community": "Join our Discord community",
"keyboard_shortcuts": "Keyboard shortcuts",
"name": "Hoppscotch",
"new_version_found": "New version found. Refresh to update.",
"options": "Options",
"proxy_privacy_policy": "Proxy privacy policy",
"reload": "Reload",
"search": "Search",
"share": "Share",
"shortcuts": "Shortcuts",
"spotlight": "Spotlight",
"status": "Status",
"status_description": "Check the status of the website",
"terms_and_privacy": "Terms and privacy",
"twitter": "Twitter",
"type_a_command_search": "Type a command or search…",
"we_use_cookies": "We use cookies",
"whats_new": "What's new?",
"wiki": "Wiki"
},
"auth": {
"account_exists": "Account exists with different credential - Login to link both accounts",
"all_sign_in_options": "All sign in options",
"continue_with_email": "Continue with Email",
"continue_with_github": "Continue with GitHub",
"continue_with_google": "Continue with Google",
"continue_with_microsoft": "Continue with Microsoft",
"email": "Email",
"logged_out": "Logged out",
"login": "Login",
"login_success": "Successfully logged in",
"login_to_hoppscotch": "Login to Hoppscotch",
"logout": "Logout",
"re_enter_email": "Re-enter email",
"send_magic_link": "Send a magic link",
"sync": "Sync",
"we_sent_magic_link": "We sent you a magic link!",
"we_sent_magic_link_description": "Check your inbox - we sent an email to {email}. It contains a magic link that will log you in."
},
"authorization": {
"generate_token": "Generate Token",
"include_in_url": "Include in URL",
"learn": "Learn how",
"pass_key_by": "Pass by",
"password": "Password",
"token": "Token",
"type": "Authorization Type",
"username": "Username"
},
"collection": {
"created": "Collection created",
"edit": "Edit Collection",
"invalid_name": "Please provide a name for the collection",
"my_collections": "My Collections",
"name": "My New Collection",
"name_length_insufficient": "Collection name should be at least 3 characters long",
"new": "New Collection",
"renamed": "Collection renamed",
"request_in_use": "Request in use",
"save_as": "Save as",
"select": "Select a Collection",
"select_location": "Select location",
"select_team": "Select a team",
"team_collections": "Team Collections"
},
"confirm": {
"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?",
"remove_environment": "Are you sure you want to permanently delete this environment?",
"remove_folder": "Are you sure you want to permanently delete this folder?",
"remove_history": "Are you sure you want to permanently delete all history?",
"remove_request": "Are you sure you want to permanently delete this request?",
"remove_team": "Are you sure you want to delete this team?",
"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.",
"sync": "Would you like to restore your workspace from cloud? This will discard your local progress."
},
"count": {
"header": "Header {count}",
"message": "Message {count}",
"parameter": "Parameter {count}",
"protocol": "Protocol {count}",
"value": "Value {count}",
"variable": "Variable {count}"
},
"documentation": {
"generate": "Generate documentation",
"generate_message": "Import any Hoppscotch collection to generate API documentation on-the-go."
},
"empty": {
"authorization": "This request does not use any authorization",
"body": "This request does not have a body",
"collection": "Collection is empty",
"collections": "Collections are empty",
"documentation": "Connect to a GraphQL endpoint to view documentation",
"endpoint": "Endpoint cannot be empty",
"environments": "Environments are empty",
"folder": "Folder is empty",
"headers": "This request does not have any headers",
"history": "History is empty",
"invites": "Invite list is empty",
"members": "Team is empty",
"parameters": "This request does not have any parameters",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"protocols": "Protocols are empty",
"schema": "Connect to a GraphQL endpoint to view schema",
"shortcodes": "Shortcodes are empty",
"team_name": "Team name empty",
"teams": "You don't belong to any teams",
"tests": "There are no tests for this request"
},
"environment": {
"add_to_global": "Add to Global",
"added": "Environment addition",
"create_new": "Create new environment",
"created": "Environment created",
"deleted": "Environment deletion",
"edit": "Edit Environment",
"invalid_name": "Please provide a name for the environment",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "New Environment",
"no_environment": "No environment",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Select environment",
"title": "Environments",
"updated": "Environment updated",
"variable_list": "Variable List"
},
"error": {
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
"check_console_details": "Check console log for details.",
"curl_invalid_format": "cURL is not formatted properly",
"empty_req_name": "Empty Request Name",
"f12_details": "(F12 for details)",
"gql_prettify_invalid_query": "Couldn't prettify an invalid query, solve query syntax errors and try again",
"incomplete_config_urls": "Incomplete configuration URLs",
"incorrect_email": "Incorrect email",
"invalid_link": "Invalid link",
"invalid_link_description": "The link you clicked is invalid or expired.",
"json_parsing_failed": "Invalid JSON",
"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_duration": "No duration",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"script_fail": "Could not execute pre-request script",
"something_went_wrong": "Something went wrong",
"test_script_fail": "Could not execute post-request script"
},
"export": {
"as_json": "Export as JSON",
"create_secret_gist": "Create secret Gist",
"gist_created": "Gist created",
"require_github": "Login with GitHub to create secret gist",
"title": "Export"
},
"folder": {
"created": "Folder created",
"edit": "Edit Folder",
"invalid_name": "Please provide a name for the folder",
"name_length_insufficient": "Folder name should be at least 3 characters long",
"new": "New Folder",
"renamed": "Folder renamed"
},
"graphql": {
"mutations": "Mutations",
"schema": "Schema",
"subscriptions": "Subscriptions"
},
"header": {
"install_pwa": "Install app",
"login": "Login",
"save_workspace": "Save My Workspace"
},
"helpers": {
"authorization": "The authorization header will be automatically generated when you send the request.",
"generate_documentation_first": "Generate documentation first",
"network_fail": "Unable to reach the API endpoint. Check your network connection or select a different Interceptor and try again.",
"offline": "You seem to be offline. Data in this workspace might not be up to date.",
"offline_short": "You seem to be offline.",
"post_request_tests": "Test scripts are written in JavaScript, and are run after the response is received.",
"pre_request_script": "Pre-request scripts are written in JavaScript, and are run before the request is sent.",
"script_fail": "It seems there is a glitch in the pre-request script. Check the error below and fix the script accordingly.",
"test_script_fail": "There seems to be an error with test script. Please fix the errors and run tests again",
"tests": "Write a test script to automate debugging."
},
"hide": {
"collection": "Collapse Collection Panel",
"more": "Hide more",
"preview": "Hide Preview",
"sidebar": "Collapse sidebar"
},
"import": {
"collections": "Import collections",
"curl": "Import cURL",
"failed": "Error while importing: format not recognized",
"from_gist": "Import from 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_my_collections": "Import 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",
"gist_url": "Enter Gist URL",
"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",
"title": "Import"
},
"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"
},
"modal": {
"collections": "Collections",
"confirm": "Confirm",
"edit_request": "Edit Request",
"import_export": "Import / Export"
},
"mqtt": {
"communication": "Communication",
"log": "Log",
"message": "Message",
"publish": "Publish",
"subscribe": "Subscribe",
"topic": "Topic",
"topic_name": "Topic Name",
"topic_title": "Publish / Subscribe topic",
"unsubscribe": "Unsubscribe",
"url": "URL"
},
"navigation": {
"doc": "Docs",
"graphql": "GraphQL",
"profile": "Profile",
"realtime": "Realtime",
"rest": "REST",
"settings": "Settings"
},
"preRequest": {
"javascript_code": "JavaScript Code",
"learn": "Read documentation",
"script": "Pre-Request Script",
"snippets": "Snippets"
},
"profile": {
"app_settings": "App Settings",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
"no_permission": "You do not have permission to perform this action.",
"owner": "Owner",
"owner_description": "Owners can add, edit, and delete requests, collections and team members.",
"roles": "Roles",
"roles_description": "Roles are used to control access to the shared collections.",
"updated": "Profile updated",
"viewer": "Viewer",
"viewer_description": "Viewers can only view and use requests."
},
"remove": {
"star": "Remove star"
},
"request": {
"added": "Request added",
"authorization": "Authorization",
"body": "Request Body",
"choose_language": "Choose language",
"content_type": "Content Type",
"content_type_titles": {
"others": "Others",
"structured": "Structured",
"text": "Text"
},
"copy_link": "Copy link",
"duration": "Duration",
"enter_curl": "Enter cURL",
"generate_code": "Generate code",
"generated_code": "Generated code",
"header_list": "Header List",
"invalid_name": "Please provide a name for the request",
"method": "Method",
"name": "Request name",
"new": "New Request",
"override": "Override",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"overriden": "Overridden",
"parameter_list": "Query Parameters",
"parameters": "Parameters",
"path": "Path",
"payload": "Payload",
"query": "Query",
"raw_body": "Raw Request Body",
"renamed": "Request renamed",
"run": "Run",
"save": "Save",
"save_as": "Save as",
"saved": "Request saved",
"share": "Share",
"share_description": "Share Hoppscotch with your friends",
"title": "Request",
"type": "Request type",
"url": "URL",
"variables": "Variables",
"view_my_links": "View my links"
},
"response": {
"body": "Response Body",
"filter_response_body": "Filter JSON response body (uses JSONPath syntax)",
"headers": "Headers",
"html": "HTML",
"image": "Image",
"json": "JSON",
"pdf": "PDF",
"preview_html": "Preview HTML",
"raw": "Raw",
"size": "Size",
"status": "Status",
"time": "Time",
"title": "Response",
"waiting_for_connection": "waiting for connection",
"xml": "XML"
},
"settings": {
"accent_color": "Accent color",
"account": "アカウント",
"account_description": "Customize your account settings.",
"account_email_description": "Your primary email address.",
"account_name_description": "This is your display name.",
"background": "Background",
"black_mode": "Black",
"change_font_size": "Change font size",
"choose_language": "Choose language",
"dark_mode": "Dark",
"expand_navigation": "Expand navigation",
"experiments": "Experiments",
"experiments_notice": "This is a collection of experiments we're working on that might turn out to be useful, fun, both, or neither. They're not final and may not be stable, so if something overly weird happens, don't panic. Just turn the dang thing off. Jokes aside, ",
"extension_ver_not_reported": "Not Reported",
"extension_version": "Extension Version",
"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",
"light_mode": "Light",
"official_proxy_hosting": "Official Proxy is hosted by Hoppscotch.",
"profile": "Profile",
"profile_description": "Update your profile details",
"profile_email": "Email address",
"profile_name": "Profile name",
"proxy": "Proxy",
"proxy_url": "Proxy URL",
"proxy_use_toggle": "Use the proxy middleware to send requests",
"read_the": "Read the",
"reset_default": "Reset to default",
"short_codes": "Short codes",
"short_codes_description": "Short codes which were created by you.",
"sidebar_on_left": "Sidebar on left",
"sync": "Synchronise",
"sync_collections": "Collections",
"sync_description": "These settings are synced to cloud.",
"sync_environments": "Environments",
"sync_history": "History",
"system_mode": "System",
"telemetry": "Telemetry",
"telemetry_helps_us": "Telemetry helps us to personalize our operations and deliver the best experience to you.",
"theme": "Theme",
"theme_description": "Customize your application theme.",
"use_experimental_url_bar": "Use experimental URL bar with environment highlighting",
"user": "User",
"verified_email": "Verified email",
"verify_email": "Verify email"
},
"shortcodes": {
"actions": "Actions",
"created_on": "Created on",
"deleted": "Shortcode deleted",
"method": "Method",
"not_found": "Shortcode not found",
"short_code": "Short code",
"url": "URL"
},
"shortcut": {
"general": {
"close_current_menu": "Close current menu",
"command_menu": "Search & command menu",
"help_menu": "Help menu",
"show_all": "Keyboard shortcuts",
"title": "General"
},
"miscellaneous": {
"invite": "Invite people to Hoppscotch",
"title": "Miscellaneous"
},
"navigation": {
"back": "Go back to previous page",
"documentation": "Go to Documentation page",
"forward": "Go forward to next page",
"graphql": "Go to GraphQL page",
"profile": "Go to Profile page",
"realtime": "Go to Realtime page",
"rest": "Go to REST page",
"settings": "Go to Settings page",
"title": "Navigation"
},
"request": {
"copy_request_link": "Copy Request Link",
"delete_method": "Select DELETE method",
"get_method": "Select GET method",
"head_method": "Select HEAD method",
"method": "Method",
"next_method": "Select Next method",
"post_method": "Select POST method",
"previous_method": "Select Previous method",
"put_method": "Select PUT method",
"reset_request": "Reset Request",
"save_to_collections": "Save to Collections",
"send_request": "Send Request",
"title": "Request"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
},
"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"
}
},
"show": {
"code": "Show code",
"collection": "Expand Collection Panel",
"more": "Show more",
"sidebar": "Expand sidebar"
},
"socketio": {
"communication": "Communication",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"event_name": "Event Name",
"events": "Events",
"log": "Log",
"url": "URL"
},
"sse": {
"event_type": "Event type",
"log": "Log",
"url": "URL"
},
"state": {
"bulk_mode": "Bulk edit",
"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",
"cleared": "Cleared",
"connected": "Connected",
"connected_to": "Connected to {name}",
"connecting_to": "Connecting to {name}...",
"connection_error": "Failed to connect",
"connection_failed": "Connection failed",
"connection_lost": "Connection lost",
"copied_to_clipboard": "Copied to clipboard",
"deleted": "Deleted",
"deprecated": "DEPRECATED",
"disabled": "Disabled",
"disconnected": "Disconnected",
"disconnected_from": "Disconnected from {name}",
"docs_generated": "Documentation generated",
"download_started": "Download started",
"enabled": "Enabled",
"file_imported": "File imported",
"finished_in": "Finished in {duration} ms",
"history_deleted": "History deleted",
"linewrap": "Wrap lines",
"loading": "Loading...",
"message_received": "Message: {message} arrived on topic: {topic}",
"mqtt_subscription_failed": "Something went wrong while subscribing to topic: {topic}",
"none": "None",
"nothing_found": "Nothing found for",
"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}",
"waiting_send_request": "Waiting to send request"
},
"support": {
"changelog": "Read more about latest releases",
"chat": "Questions? Chat with us!",
"community": "Ask questions and help others",
"documentation": "Read more about Hoppscotch",
"forum": "Ask questions and get answers",
"github": "Follow us on Github",
"shortcuts": "Browse app faster",
"team": "Get in touch with the team",
"title": "Support",
"twitter": "Follow us on Twitter"
},
"tab": {
"authorization": "Authorization",
"body": "Body",
"collections": "Collections",
"documentation": "Documentation",
"headers": "Headers",
"history": "History",
"mqtt": "MQTT",
"parameters": "Parameters",
"pre_request_script": "Pre-request Script",
"queries": "Queries",
"query": "Query",
"schema": "Schema",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "Tests",
"types": "Types",
"variables": "Variables",
"websocket": "WebSocket"
},
"team": {
"already_member": "You are already a member of this team. Contact your team owner.",
"create_new": "Create new team",
"deleted": "Team deleted",
"edit": "Edit Team",
"email": "E-mail",
"email_do_not_match": "Email doesn't match with your account details. Contact your team owner.",
"exit": "Exit Team",
"exit_disabled": "Only owner cannot exit the team",
"invalid_email_format": "Email format is invalid",
"invalid_id": "Invalid team ID. Contact your team owner.",
"invalid_invite_link": "Invalid invite link",
"invalid_invite_link_description": "The link you followed is invalid. Contact your team owner.",
"invalid_member_permission": "Please provide a valid permission to the team member",
"invite": "Invite",
"invite_more": "Invite more",
"invite_tooltip": "Invite people to this workspace",
"invited_to_team": "{owner} invited you to join {team}",
"join": "Invitation accepted",
"join_beta": "Join the beta program to access teams.",
"join_team": "Join {team}",
"joined_team": "You have joined {team}",
"joined_team_description": "You are now a member of this team",
"left": "You left the team",
"login_to_continue": "Login to continue",
"login_to_continue_description": "You need to be logged in to join a team.",
"logout_and_try_again": "Logout and sign in with another account",
"member_has_invite": "This email ID already has an invite. Contact your team owner.",
"member_not_found": "Member not found. Contact your team owner.",
"member_removed": "User removed",
"member_role_updated": "User roles updated",
"members": "Members",
"name_length_insufficient": "Team name should be at least 6 characters long",
"name_updated": "Team name updated",
"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_invite_found": "Invitation not found. Contact your team owner.",
"not_found": "Team not found. Contact your team owner.",
"not_valid_viewer": "You are not a valid viewer. Contact your team owner.",
"pending_invites": "Pending invites",
"permissions": "Permissions",
"saved": "Team saved",
"select_a_team": "Select a team",
"title": "Teams",
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript Code",
"learn": "Read documentation",
"passed": "test passed",
"report": "Test Report",
"results": "Test Results",
"script": "Script",
"snippets": "Snippets"
},
"websocket": {
"communication": "Communication",
"log": "Log",
"message": "Message",
"protocols": "Protocols",
"url": "URL"
}
}

View File

@@ -1,272 +0,0 @@
import AppAnnouncement from "./components/app/Announcement.vue";
import AppDeveloperOptions from "./components/app/DeveloperOptions.vue";
import AppFooter from "./components/app/Footer.vue";
import AppFuse from "./components/app/Fuse.vue";
import AppGitHubStarButton from "./components/app/GitHubStarButton.vue";
import AppHeader from "./components/app/Header.vue";
import AppInterceptor from "./components/app/Interceptor.vue";
import AppLogo from "./components/app/Logo.vue";
import AppOptions from "./components/app/Options.vue";
import AppPaneLayout from "./components/app/PaneLayout.vue";
import AppPowerSearch from "./components/app/PowerSearch.vue";
import AppPowerSearchEntry from "./components/app/PowerSearchEntry.vue";
import AppShare from "./components/app/Share.vue";
import AppShortcuts from "./components/app/Shortcuts.vue";
import AppShortcutsEntry from "./components/app/ShortcutsEntry.vue";
import AppSidenav from "./components/app/Sidenav.vue";
import AppSlideOver from "./components/app/SlideOver.vue";
import AppSupport from "./components/app/Support.vue";
import ButtonPrimary from "./components/button/Primary.vue";
import ButtonSecondary from "./components/button/Secondary.vue";
import CollectionsAdd from "./components/collections/Add.vue";
import CollectionsAddFolder from "./components/collections/AddFolder.vue";
import CollectionsAddRequest from "./components/collections/AddRequest.vue";
import CollectionsChooseType from "./components/collections/ChooseType.vue";
import CollectionsEdit from "./components/collections/Edit.vue";
import CollectionsEditFolder from "./components/collections/EditFolder.vue";
import CollectionsEditRequest from "./components/collections/EditRequest.vue";
import CollectionsImportExport from "./components/collections/ImportExport.vue";
import CollectionsSaveRequest from "./components/collections/SaveRequest.vue";
import CollectionsGraphqlAdd from "./components/collections/graphql/Add.vue";
import CollectionsGraphqlAddFolder from "./components/collections/graphql/AddFolder.vue";
import CollectionsGraphqlAddRequest from "./components/collections/graphql/AddRequest.vue";
import CollectionsGraphqlCollection from "./components/collections/graphql/Collection.vue";
import CollectionsGraphqlEdit from "./components/collections/graphql/Edit.vue";
import CollectionsGraphqlEditFolder from "./components/collections/graphql/EditFolder.vue";
import CollectionsGraphqlEditRequest from "./components/collections/graphql/EditRequest.vue";
import CollectionsGraphqlFolder from "./components/collections/graphql/Folder.vue";
import CollectionsGraphqlImportExport from "./components/collections/graphql/ImportExport.vue";
import CollectionsGraphqlRequest from "./components/collections/graphql/Request.vue";
import CollectionsGraphql from "./components/collections/graphql/index.vue";
import Collections from "./components/collections/index.vue";
import CollectionsMyCollection from "./components/collections/my/Collection.vue";
import CollectionsMyFolder from "./components/collections/my/Folder.vue";
import CollectionsMyRequest from "./components/collections/my/Request.vue";
import CollectionsTeamsCollection from "./components/collections/teams/Collection.vue";
import CollectionsTeamsFolder from "./components/collections/teams/Folder.vue";
import CollectionsTeamsRequest from "./components/collections/teams/Request.vue";
import DocsCollection from "./components/docs/Collection.vue";
import DocsFolder from "./components/docs/Folder.vue";
import DocsRequest from "./components/docs/Request.vue";
import EnvironmentsDetails from "./components/environments/Details.vue";
import EnvironmentsEnvironment from "./components/environments/Environment.vue";
import EnvironmentsImportExport from "./components/environments/ImportExport.vue";
import Environments from "./components/environments/index.vue";
import FirebaseLogin from "./components/firebase/Login.vue";
import FirebaseLogout from "./components/firebase/Logout.vue";
import GraphqlAuthorization from "./components/graphql/Authorization.vue";
import GraphqlField from "./components/graphql/Field.vue";
import GraphqlRequest from "./components/graphql/Request.vue";
import GraphqlRequestOptions from "./components/graphql/RequestOptions.vue";
import GraphqlResponse from "./components/graphql/Response.vue";
import GraphqlSidebar from "./components/graphql/Sidebar.vue";
import GraphqlType from "./components/graphql/Type.vue";
import GraphqlTypeLink from "./components/graphql/TypeLink.vue";
import HistoryGraphqlCard from "./components/history/graphql/Card.vue";
import History from "./components/history/index.vue";
import HistoryRestCard from "./components/history/rest/Card.vue";
import HttpAuthorization from "./components/http/Authorization.vue";
import HttpBody from "./components/http/Body.vue";
import HttpBodyParameters from "./components/http/BodyParameters.vue";
import HttpCodegenModal from "./components/http/CodegenModal.vue";
import HttpHeaders from "./components/http/Headers.vue";
import HttpImportCurl from "./components/http/ImportCurl.vue";
import HttpOAuth2Authorization from "./components/http/OAuth2Authorization.vue";
import HttpParameters from "./components/http/Parameters.vue";
import HttpPreRequestScript from "./components/http/PreRequestScript.vue";
import HttpRawBody from "./components/http/RawBody.vue";
import HttpReqChangeConfirmModal from "./components/http/ReqChangeConfirmModal.vue";
import HttpRequest from "./components/http/Request.vue";
import HttpRequestOptions from "./components/http/RequestOptions.vue";
import HttpResponse from "./components/http/Response.vue";
import HttpResponseMeta from "./components/http/ResponseMeta.vue";
import HttpSidebar from "./components/http/Sidebar.vue";
import HttpTestResult from "./components/http/TestResult.vue";
import HttpTestResultEntry from "./components/http/TestResultEntry.vue";
import HttpTestResultEnv from "./components/http/TestResultEnv.vue";
import HttpTestResultReport from "./components/http/TestResultReport.vue";
import HttpTests from "./components/http/Tests.vue";
import HttpURLEncodedParams from "./components/http/URLEncodedParams.vue";
import LensesHeadersRenderer from "./components/lenses/HeadersRenderer.vue";
import LensesHeadersRendererEntry from "./components/lenses/HeadersRendererEntry.vue";
import LensesResponseBodyRenderer from "./components/lenses/ResponseBodyRenderer.vue";
import LensesRenderersHTMLLensRenderer from "./components/lenses/renderers/HTMLLensRenderer.vue";
import LensesRenderersImageLensRenderer from "./components/lenses/renderers/ImageLensRenderer.vue";
import LensesRenderersJSONLensRenderer from "./components/lenses/renderers/JSONLensRenderer.vue";
import LensesRenderersPDFLensRenderer from "./components/lenses/renderers/PDFLensRenderer.vue";
import LensesRenderersRawLensRenderer from "./components/lenses/renderers/RawLensRenderer.vue";
import LensesRenderersXMLLensRenderer from "./components/lenses/renderers/XMLLensRenderer.vue";
import ProfilePicture from "./components/profile/Picture.vue";
import ProfileShortcode from "./components/profile/Shortcode.vue";
import RealtimeCommunication from "./components/realtime/Communication.vue";
import RealtimeLog from "./components/realtime/Log.vue";
import RealtimeLogEntry from "./components/realtime/LogEntry.vue";
import SmartAccentModePicker from "./components/smart/AccentModePicker.vue";
import SmartAnchor from "./components/smart/Anchor.vue";
import SmartAutoComplete from "./components/smart/AutoComplete.vue";
import SmartChangeLanguage from "./components/smart/ChangeLanguage.vue";
import SmartCheckbox from "./components/smart/Checkbox.vue";
import SmartColorModePicker from "./components/smart/ColorModePicker.vue";
import SmartConfirmModal from "./components/smart/ConfirmModal.vue";
import SmartEnvInput from "./components/smart/EnvInput.vue";
import SmartExpand from "./components/smart/Expand.vue";
import SmartFileChip from "./components/smart/FileChip.vue";
import SmartFontSizePicker from "./components/smart/FontSizePicker.vue";
import SmartIcon from "./components/smart/Icon.vue";
import SmartIntersection from "./components/smart/Intersection.vue";
import SmartItem from "./components/smart/Item.vue";
import SmartLoadingIndicator from "./components/smart/LoadingIndicator.vue";
import SmartModal from "./components/smart/Modal.vue";
import SmartProgressRing from "./components/smart/ProgressRing.vue";
import SmartRadio from "./components/smart/Radio.vue";
import SmartRadioGroup from "./components/smart/RadioGroup.vue";
import SmartSpinner from "./components/smart/Spinner.vue";
import SmartTab from "./components/smart/Tab.vue";
import SmartTabs from "./components/smart/Tabs.vue";
import SmartToggle from "./components/smart/Toggle.vue";
import TabPrimary from "./components/tab/Primary.vue";
import TabSecondary from "./components/tab/Secondary.vue";
import TeamsAdd from "./components/teams/Add.vue";
import TeamsEdit from "./components/teams/Edit.vue";
import TeamsInvite from "./components/teams/Invite.vue";
import TeamsModal from "./components/teams/Modal.vue";
import TeamsTeam from "./components/teams/Team.vue";
import Teams from "./components/teams/index.vue";
declare global {
interface __VLS_GlobalComponents {
AppAnnouncement: typeof AppAnnouncement;
AppDeveloperOptions: typeof AppDeveloperOptions;
AppFooter: typeof AppFooter;
AppFuse: typeof AppFuse;
AppGitHubStarButton: typeof AppGitHubStarButton;
AppHeader: typeof AppHeader;
AppInterceptor: typeof AppInterceptor;
AppLogo: typeof AppLogo;
AppOptions: typeof AppOptions;
AppPaneLayout: typeof AppPaneLayout;
AppPowerSearch: typeof AppPowerSearch;
AppPowerSearchEntry: typeof AppPowerSearchEntry;
AppShare: typeof AppShare;
AppShortcuts: typeof AppShortcuts;
AppShortcutsEntry: typeof AppShortcutsEntry;
AppSidenav: typeof AppSidenav;
AppSlideOver: typeof AppSlideOver;
AppSupport: typeof AppSupport;
ButtonPrimary: typeof ButtonPrimary;
ButtonSecondary: typeof ButtonSecondary;
CollectionsAdd: typeof CollectionsAdd;
CollectionsAddFolder: typeof CollectionsAddFolder;
CollectionsAddRequest: typeof CollectionsAddRequest;
CollectionsChooseType: typeof CollectionsChooseType;
CollectionsEdit: typeof CollectionsEdit;
CollectionsEditFolder: typeof CollectionsEditFolder;
CollectionsEditRequest: typeof CollectionsEditRequest;
CollectionsImportExport: typeof CollectionsImportExport;
CollectionsSaveRequest: typeof CollectionsSaveRequest;
CollectionsGraphqlAdd: typeof CollectionsGraphqlAdd;
CollectionsGraphqlAddFolder: typeof CollectionsGraphqlAddFolder;
CollectionsGraphqlAddRequest: typeof CollectionsGraphqlAddRequest;
CollectionsGraphqlCollection: typeof CollectionsGraphqlCollection;
CollectionsGraphqlEdit: typeof CollectionsGraphqlEdit;
CollectionsGraphqlEditFolder: typeof CollectionsGraphqlEditFolder;
CollectionsGraphqlEditRequest: typeof CollectionsGraphqlEditRequest;
CollectionsGraphqlFolder: typeof CollectionsGraphqlFolder;
CollectionsGraphqlImportExport: typeof CollectionsGraphqlImportExport;
CollectionsGraphqlRequest: typeof CollectionsGraphqlRequest;
CollectionsGraphql: typeof CollectionsGraphql;
Collections: typeof Collections;
CollectionsMyCollection: typeof CollectionsMyCollection;
CollectionsMyFolder: typeof CollectionsMyFolder;
CollectionsMyRequest: typeof CollectionsMyRequest;
CollectionsTeamsCollection: typeof CollectionsTeamsCollection;
CollectionsTeamsFolder: typeof CollectionsTeamsFolder;
CollectionsTeamsRequest: typeof CollectionsTeamsRequest;
DocsCollection: typeof DocsCollection;
DocsFolder: typeof DocsFolder;
DocsRequest: typeof DocsRequest;
EnvironmentsDetails: typeof EnvironmentsDetails;
EnvironmentsEnvironment: typeof EnvironmentsEnvironment;
EnvironmentsImportExport: typeof EnvironmentsImportExport;
Environments: typeof Environments;
FirebaseLogin: typeof FirebaseLogin;
FirebaseLogout: typeof FirebaseLogout;
GraphqlAuthorization: typeof GraphqlAuthorization;
GraphqlField: typeof GraphqlField;
GraphqlRequest: typeof GraphqlRequest;
GraphqlRequestOptions: typeof GraphqlRequestOptions;
GraphqlResponse: typeof GraphqlResponse;
GraphqlSidebar: typeof GraphqlSidebar;
GraphqlType: typeof GraphqlType;
GraphqlTypeLink: typeof GraphqlTypeLink;
HistoryGraphqlCard: typeof HistoryGraphqlCard;
History: typeof History;
HistoryRestCard: typeof HistoryRestCard;
HttpAuthorization: typeof HttpAuthorization;
HttpBody: typeof HttpBody;
HttpBodyParameters: typeof HttpBodyParameters;
HttpCodegenModal: typeof HttpCodegenModal;
HttpHeaders: typeof HttpHeaders;
HttpImportCurl: typeof HttpImportCurl;
HttpOAuth2Authorization: typeof HttpOAuth2Authorization;
HttpParameters: typeof HttpParameters;
HttpPreRequestScript: typeof HttpPreRequestScript;
HttpRawBody: typeof HttpRawBody;
HttpReqChangeConfirmModal: typeof HttpReqChangeConfirmModal;
HttpRequest: typeof HttpRequest;
HttpRequestOptions: typeof HttpRequestOptions;
HttpResponse: typeof HttpResponse;
HttpResponseMeta: typeof HttpResponseMeta;
HttpSidebar: typeof HttpSidebar;
HttpTestResult: typeof HttpTestResult;
HttpTestResultEntry: typeof HttpTestResultEntry;
HttpTestResultEnv: typeof HttpTestResultEnv;
HttpTestResultReport: typeof HttpTestResultReport;
HttpTests: typeof HttpTests;
HttpURLEncodedParams: typeof HttpURLEncodedParams;
LensesHeadersRenderer: typeof LensesHeadersRenderer;
LensesHeadersRendererEntry: typeof LensesHeadersRendererEntry;
LensesResponseBodyRenderer: typeof LensesResponseBodyRenderer;
LensesRenderersHTMLLensRenderer: typeof LensesRenderersHTMLLensRenderer;
LensesRenderersImageLensRenderer: typeof LensesRenderersImageLensRenderer;
LensesRenderersJSONLensRenderer: typeof LensesRenderersJSONLensRenderer;
LensesRenderersPDFLensRenderer: typeof LensesRenderersPDFLensRenderer;
LensesRenderersRawLensRenderer: typeof LensesRenderersRawLensRenderer;
LensesRenderersXMLLensRenderer: typeof LensesRenderersXMLLensRenderer;
ProfilePicture: typeof ProfilePicture;
ProfileShortcode: typeof ProfileShortcode;
RealtimeCommunication: typeof RealtimeCommunication;
RealtimeLog: typeof RealtimeLog;
RealtimeLogEntry: typeof RealtimeLogEntry;
SmartAccentModePicker: typeof SmartAccentModePicker;
SmartAnchor: typeof SmartAnchor;
SmartAutoComplete: typeof SmartAutoComplete;
SmartChangeLanguage: typeof SmartChangeLanguage;
SmartCheckbox: typeof SmartCheckbox;
SmartColorModePicker: typeof SmartColorModePicker;
SmartConfirmModal: typeof SmartConfirmModal;
SmartEnvInput: typeof SmartEnvInput;
SmartExpand: typeof SmartExpand;
SmartFileChip: typeof SmartFileChip;
SmartFontSizePicker: typeof SmartFontSizePicker;
SmartIcon: typeof SmartIcon;
SmartIntersection: typeof SmartIntersection;
SmartItem: typeof SmartItem;
SmartLoadingIndicator: typeof SmartLoadingIndicator;
SmartModal: typeof SmartModal;
SmartProgressRing: typeof SmartProgressRing;
SmartRadio: typeof SmartRadio;
SmartRadioGroup: typeof SmartRadioGroup;
SmartSpinner: typeof SmartSpinner;
SmartTab: typeof SmartTab;
SmartTabs: typeof SmartTabs;
SmartToggle: typeof SmartToggle;
TabPrimary: typeof TabPrimary;
TabSecondary: typeof TabSecondary;
TeamsAdd: typeof TeamsAdd;
TeamsEdit: typeof TeamsEdit;
TeamsInvite: typeof TeamsInvite;
TeamsModal: typeof TeamsModal;
TeamsTeam: typeof TeamsTeam;
Teams: typeof Teams;
}
}

View File

@@ -1,961 +0,0 @@
<template>
<div :class="{ 'rounded border border-divider': saveRequest }">
<div
class="sticky z-10 flex flex-col border-b rounded-t bg-primary border-dividerLight"
:style="
saveRequest ? 'top: calc(-1.35 * var(--font-size-body))' : 'top: 0'
"
>
<div class="flex flex-col border-b border-dividerLight">
<input
v-model="filterText"
type="search"
autocomplete="off"
:placeholder="t('action.search')"
class="py-2 pl-4 pr-2 bg-transparent"
:disabled="collectionsType.type == 'team-collections'"
/>
</div>
<CollectionsChooseType
:collections-type="collectionsType"
:show="showTeamCollections"
@update-collection-type="updateCollectionType"
@update-selected-team="updateSelectedTeam"
/>
<div class="flex justify-between flex-1">
<ButtonSecondary
v-if="
collectionsType.type == 'team-collections' &&
(collectionsType.selectedTeam == undefined ||
collectionsType.selectedTeam.myRole == 'VIEWER')
"
v-tippy="{ theme: 'tooltip' }"
disabled
class="!rounded-none"
:icon="IconPlus"
:title="t('team.no_access')"
:label="t('action.new')"
/>
<ButtonSecondary
v-else
:icon="IconPlus"
:label="t('action.new')"
class="!rounded-none"
@click="displayModalAdd(true)"
/>
<span class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/collections"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:disabled="
collectionsType.type == 'team-collections' &&
collectionsType.selectedTeam == undefined
"
:icon="IconArchive"
:title="t('modal.import_export')"
@click="displayModalImportExport(true)"
/>
</span>
</div>
</div>
<div class="flex flex-col flex-1">
<component
:is="
collectionsType.type == 'my-collections'
? 'CollectionsMyCollection'
: 'CollectionsTeamsCollection'
"
v-for="(collection, index) in filteredCollections"
:key="`collection-${index}`"
:collection-index="parseInt(index)"
:collection="collection"
:is-filtered="filterText.length > 0"
:save-request="saveRequest"
:collections-type="collectionsType"
:picked="picked"
:loading-collection-i-ds="loadingCollectionIDs"
@edit-collection="editCollection(collection, index)"
@add-request="addRequest($event)"
@add-folder="addFolder($event)"
@edit-folder="editFolder($event)"
@edit-request="editRequest($event)"
@duplicate-request="duplicateRequest($event)"
@update-team-collections="updateTeamCollections"
@select-collection="$emit('use-collection', collection)"
@unselect-collection="$emit('remove-collection', collection)"
@select="$emit('select', $event)"
@expand-collection="expandCollection"
@remove-collection="removeCollection"
@remove-request="removeRequest"
@remove-folder="removeFolder"
/>
</div>
<div
v-if="loadingCollectionIDs.includes('root')"
class="flex flex-col items-center justify-center p-4"
>
<SmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div
v-else-if="filteredCollections.length === 0 && filterText.length === 0"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/pack.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 my-4"
:alt="t('empty.collections')"
/>
<span class="pb-4 text-center">
{{ t("empty.collections") }}
</span>
<ButtonSecondary
v-if="
collectionsType.type == 'team-collections' &&
(collectionsType.selectedTeam == undefined ||
collectionsType.selectedTeam.myRole == 'VIEWER')
"
v-tippy="{ theme: 'tooltip' }"
:title="t('team.no_access')"
:label="t('add.new')"
class="mb-4"
filled
outline
/>
<ButtonSecondary
v-else
:label="t('add.new')"
filled
class="mb-4"
outline
@click="displayModalAdd(true)"
/>
</div>
<div
v-if="filterText.length !== 0 && filteredCollections.length === 0"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<icon-lucide-search class="pb-2 opacity-75 svg-icons" />
<span class="my-2 text-center">
{{ t("state.nothing_found") }} "{{ filterText }}"
</span>
</div>
<CollectionsAdd
:show="showModalAdd"
:loading-state="modalLoadingState"
@submit="addNewRootCollection"
@hide-modal="displayModalAdd(false)"
/>
<CollectionsEdit
:show="showModalEdit"
:editing-collection-name="
editingCollection
? editingCollection.name || editingCollection.title
: ''
"
:loading-state="modalLoadingState"
@hide-modal="displayModalEdit(false)"
@submit="updateEditingCollection"
/>
<CollectionsAddRequest
:show="showModalAddRequest"
:folder="editingFolder"
:folder-path="editingFolderPath"
:loading-state="modalLoadingState"
@add-request="onAddRequest($event)"
@hide-modal="displayModalAddRequest(false)"
/>
<CollectionsAddFolder
:show="showModalAddFolder"
:folder="editingFolder"
:folder-path="editingFolderPath"
:loading-state="modalLoadingState"
@add-folder="onAddFolder($event)"
@hide-modal="displayModalAddFolder(false)"
/>
<CollectionsEditFolder
:show="showModalEditFolder"
:editing-folder-name="
editingFolder ? editingFolder.name || editingFolder.title : ''
"
:loading-state="modalLoadingState"
@submit="updateEditingFolder"
@hide-modal="displayModalEditFolder(false)"
/>
<CollectionsEditRequest
:show="showModalEditRequest"
:editing-request-name="editingRequest ? editingRequest.name : ''"
:loading-state="modalLoadingState"
@submit="updateEditingRequest"
@hide-modal="displayModalEditRequest(false)"
/>
<CollectionsImportExport
:show="showModalImportExport"
:collections-type="collectionsType"
@hide-modal="displayModalImportExport(false)"
@update-team-collections="updateTeamCollections"
/>
<SmartConfirmModal
:show="showConfirmModal"
:title="confirmModalTitle"
:loading-state="modalLoadingState"
@hide-modal="showConfirmModal = false"
@resolve="resolveConfirmModal"
/>
</div>
</template>
<script>
import IconArchive from "~icons/lucide/archive"
import IconPlus from "~icons/lucide/plus"
import IconHelpCircle from "~icons/lucide/help-circle"
import { cloneDeep } from "lodash-es"
import { defineComponent, markRaw } from "vue"
import { makeCollection } from "@hoppscotch/data"
import { useColorMode } from "@composables/theming"
import * as E from "fp-ts/Either"
import CollectionsMyCollection from "./my/Collection.vue"
import CollectionsTeamsCollection from "./teams/Collection.vue"
import { currentUser$ } from "~/helpers/fb/auth"
import TeamCollectionAdapter from "~/helpers/teams/TeamCollectionAdapter"
import {
restCollections$,
addRESTCollection,
editRESTCollection,
addRESTFolder,
removeRESTCollection,
removeRESTFolder,
editRESTFolder,
removeRESTRequest,
editRESTRequest,
saveRESTRequestAs,
} from "~/newstore/collections"
import {
setRESTRequest,
getRESTRequest,
getRESTSaveContext,
} from "~/newstore/RESTSession"
import { useReadonlyStream, useStreamSubscriber } from "@composables/stream"
import { runMutation } from "~/helpers/backend/GQLClient"
import {
CreateChildCollectionDocument,
CreateNewRootCollectionDocument,
CreateRequestInCollectionDocument,
DeleteCollectionDocument,
DeleteRequestDocument,
RenameCollectionDocument,
UpdateRequestDocument,
} from "~/helpers/backend/graphql"
import { useToast } from "@composables/toast"
import { useI18n } from "~/composables/i18n"
export default defineComponent({
components: {
CollectionsMyCollection,
CollectionsTeamsCollection,
},
props: {
saveRequest: Boolean,
picked: { type: Object, default: () => ({}) },
},
emits: [
"update-collection",
"update-coll-type",
"update-team-collections",
"select-request",
"select",
"use-collection",
"remove-collection",
],
setup() {
const { subscribeToStream } = useStreamSubscriber()
return {
subscribeTo: subscribeToStream,
collections: useReadonlyStream(restCollections$, [], "deep"),
currentUser: useReadonlyStream(currentUser$, null),
colorMode: useColorMode(),
toast: useToast(),
t: useI18n(),
}
},
data() {
return {
IconArchive: markRaw(IconArchive),
IconHelpCircle: markRaw(IconHelpCircle),
IconPlus: markRaw(IconPlus),
showModalAdd: false,
showModalEdit: false,
showModalImportExport: false,
showModalAddRequest: false,
showModalAddFolder: false,
showModalEditFolder: false,
showModalEditRequest: false,
showConfirmModal: false,
modalLoadingState: false,
editingCollection: undefined,
editingCollectionIndex: undefined,
editingCollectionID: undefined,
editingFolder: undefined,
editingFolderName: undefined,
editingFolderIndex: undefined,
editingFolderPath: undefined,
editingRequest: undefined,
editingRequestIndex: undefined,
confirmModalTitle: undefined,
filterText: "",
collectionsType: {
type: "my-collections",
selectedTeam: undefined,
},
teamCollectionAdapter: new TeamCollectionAdapter(null),
teamCollectionsNew: [],
loadingCollectionIDs: [],
}
},
computed: {
showTeamCollections() {
if (this.currentUser == null) {
return false
}
return true
},
filteredCollections() {
const collections =
this.collectionsType.type === "my-collections"
? this.collections
: this.teamCollectionsNew
if (!this.filterText) {
return collections
}
if (this.collectionsType.type === "team-collections") {
return []
}
const filterText = this.filterText.toLowerCase()
const filteredCollections = []
for (const collection of collections) {
const filteredRequests = []
const filteredFolders = []
for (const request of collection.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredRequests.push(request)
}
for (const folder of this.collectionsType.type === "team-collections"
? collection.children
: collection.folders) {
const filteredFolderRequests = []
for (const request of folder.requests) {
if (request.name.toLowerCase().includes(filterText))
filteredFolderRequests.push(request)
}
if (filteredFolderRequests.length > 0) {
const filteredFolder = Object.assign({}, folder)
filteredFolder.requests = filteredFolderRequests
filteredFolders.push(filteredFolder)
}
}
if (
filteredRequests.length + filteredFolders.length > 0 ||
collection.name.toLowerCase().includes(filterText)
) {
const filteredCollection = Object.assign({}, collection)
filteredCollection.requests = filteredRequests
filteredCollection.folders = filteredFolders
filteredCollections.push(filteredCollection)
}
}
return filteredCollections
},
},
watch: {
"collectionsType.type": function emitstuff() {
this.$emit("update-collection", this.$data.collectionsType.type)
},
"collectionsType.selectedTeam"(value) {
if (value?.id) this.teamCollectionAdapter.changeTeamID(value.id)
},
currentUser(newValue) {
if (!newValue) this.updateCollectionType("my-collections")
},
},
beforeUnmount() {
this.teamCollectionAdapter.unsubscribeSubscriptions()
},
mounted() {
this.subscribeTo(this.teamCollectionAdapter.collections$, (colls) => {
this.teamCollectionsNew = cloneDeep(colls)
})
this.subscribeTo(
this.teamCollectionAdapter.loadingCollections$,
(collectionsIDs) => {
this.loadingCollectionIDs = collectionsIDs
}
)
},
methods: {
updateTeamCollections() {
// TODO: Remove this at some point
},
updateSelectedTeam(newSelectedTeam) {
this.collectionsType.selectedTeam = newSelectedTeam
this.$emit("update-coll-type", this.collectionsType)
},
updateCollectionType(newCollectionType) {
this.collectionsType.type = newCollectionType
this.$emit("update-coll-type", this.collectionsType)
},
// Intented to be called by the CollectionAdd modal submit event
addNewRootCollection(name) {
if (this.collectionsType.type === "my-collections") {
addRESTCollection(
makeCollection({
name,
folders: [],
requests: [],
})
)
this.displayModalAdd(false)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
this.modalLoadingState = true
runMutation(CreateNewRootCollectionDocument, {
title: name,
teamID: this.collectionsType.selectedTeam.id,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
if (result.left.error === "team_coll/short_title")
this.toast.error(this.t("collection.name_length_insufficient"))
else this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("collection.created"))
this.displayModalAdd(false)
}
})
}
},
// Intented to be called by CollectionEdit modal submit event
updateEditingCollection(newName) {
if (!newName) {
this.toast.error(this.t("collection.invalid_name"))
return
}
if (this.collectionsType.type === "my-collections") {
const collectionUpdated = {
...this.editingCollection,
name: newName,
}
editRESTCollection(this.editingCollectionIndex, collectionUpdated)
this.displayModalEdit(false)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
this.modalLoadingState = true
runMutation(RenameCollectionDocument, {
collectionID: this.editingCollection.id,
newTitle: newName,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("collection.renamed"))
this.displayModalEdit(false)
}
})
}
},
// Intended to be called by CollectionEditFolder modal submit event
updateEditingFolder(name) {
if (this.collectionsType.type === "my-collections") {
editRESTFolder(this.editingFolderPath, { ...this.editingFolder, name })
this.displayModalEditFolder(false)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
this.modalLoadingState = true
runMutation(RenameCollectionDocument, {
collectionID: this.editingFolder.id,
newTitle: name,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
if (result.left.error === "team_coll/short_title")
this.toast.error(this.t("folder.name_length_insufficient"))
else this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("folder.renamed"))
this.displayModalEditFolder(false)
}
})
}
},
// Intented to by called by CollectionsEditRequest modal submit event
updateEditingRequest(requestUpdateData) {
const saveCtx = getRESTSaveContext()
const requestUpdated = {
...this.editingRequest,
name: requestUpdateData.name || this.editingRequest.name,
}
if (this.collectionsType.type === "my-collections") {
// Update REST Session with the updated state
if (
saveCtx &&
saveCtx.originLocation === "user-collection" &&
saveCtx.requestIndex === this.editingRequestIndex &&
saveCtx.folderPath === this.editingFolderPath
) {
setRESTRequest({
...getRESTRequest(),
name: requestUpdateData.name,
})
}
editRESTRequest(
this.editingFolderPath,
this.editingRequestIndex,
requestUpdated
)
this.displayModalEditRequest(false)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
this.modalLoadingState = true
const requestName = requestUpdateData.name || this.editingRequest.name
// Update REST Session with the updated state
if (
saveCtx &&
saveCtx.originLocation === "team-collection" &&
saveCtx.requestID === this.editingRequestIndex
) {
setRESTRequest({
...getRESTRequest(),
name: requestUpdateData.name,
})
}
runMutation(UpdateRequestDocument, {
data: {
request: JSON.stringify(requestUpdated),
title: requestName,
},
requestID: this.editingRequestIndex,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("request.renamed"))
this.$emit("update-team-collections")
this.displayModalEditRequest(false)
}
})
}
},
displayModalAdd(shouldDisplay) {
this.showModalAdd = shouldDisplay
},
displayModalEdit(shouldDisplay) {
this.showModalEdit = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalImportExport(shouldDisplay) {
this.showModalImportExport = shouldDisplay
},
displayModalAddRequest(shouldDisplay) {
this.showModalAddRequest = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalAddFolder(shouldDisplay) {
this.showModalAddFolder = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalEditFolder(shouldDisplay) {
this.showModalEditFolder = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayModalEditRequest(shouldDisplay) {
this.showModalEditRequest = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
displayConfirmModal(shouldDisplay) {
this.showConfirmModal = shouldDisplay
if (!shouldDisplay) this.resetSelectedData()
},
editCollection(collection, collectionIndex) {
this.$data.editingCollection = collection
this.$data.editingCollectionIndex = collectionIndex
this.displayModalEdit(true)
},
onAddFolder({ name, folder, path }) {
if (this.collectionsType.type === "my-collections") {
addRESTFolder(name, path)
this.displayModalAddFolder(false)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
this.modalLoadingState = true
runMutation(CreateChildCollectionDocument, {
childTitle: name,
collectionID: folder.id,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
if (result.left.error === "team_coll/short_title")
this.toast.error(this.t("folder.name_length_insufficient"))
else this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("folder.created"))
this.displayModalAddFolder(false)
this.$emit("update-team-collections")
}
})
}
},
addFolder(payload) {
const { folder, path } = payload
this.$data.editingFolder = folder
this.$data.editingFolderPath = path
this.displayModalAddFolder(true)
},
editFolder(payload) {
const { collectionIndex, folder, folderIndex, folderPath } = payload
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingFolder = folder
this.$data.editingFolderIndex = folderIndex
this.$data.editingFolderPath = folderPath
this.$data.collectionsType = this.collectionsType
this.displayModalEditFolder(true)
},
editRequest(payload) {
const {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
} = payload
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingFolderIndex = folderIndex
this.$data.editingFolderName = folderName
this.$data.editingRequest = request
this.$data.editingRequestIndex = requestIndex
this.editingFolderPath = folderPath
this.$emit("select-request", requestIndex)
this.displayModalEditRequest(true)
},
resetSelectedData() {
this.$data.editingCollection = undefined
this.$data.editingCollectionIndex = undefined
this.$data.editingCollectionID = undefined
this.$data.editingFolder = undefined
this.$data.editingFolderPath = undefined
this.$data.editingFolderIndex = undefined
this.$data.editingRequest = undefined
this.$data.editingRequestIndex = undefined
this.$data.confirmModalTitle = undefined
},
expandCollection(collectionID) {
this.teamCollectionAdapter.expandCollection(collectionID)
},
removeCollection({ collectionIndex, collectionID }) {
this.$data.editingCollectionIndex = collectionIndex
this.$data.editingCollectionID = collectionID
this.confirmModalTitle = `${this.t("confirm.remove_collection")}`
this.displayConfirmModal(true)
},
onRemoveCollection() {
const collectionIndex = this.$data.editingCollectionIndex
const collectionID = this.$data.editingCollectionID
if (this.collectionsType.type === "my-collections") {
// Cancel pick if picked collection is deleted
if (
this.picked &&
this.picked.pickedType === "my-collection" &&
this.picked.collectionIndex === collectionIndex
) {
this.$emit("select", { picked: null })
}
removeRESTCollection(collectionIndex)
this.toast.success(this.t("state.deleted"))
this.displayConfirmModal(false)
} else if (this.collectionsType.type === "team-collections") {
this.modalLoadingState = true
// Cancel pick if picked collection is deleted
if (
this.picked &&
this.picked.pickedType === "teams-collection" &&
this.picked.collectionID === collectionID
) {
this.$emit("select", { picked: null })
}
if (this.collectionsType.selectedTeam.myRole !== "VIEWER") {
runMutation(DeleteCollectionDocument, {
collectionID,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("state.deleted"))
this.displayConfirmModal(false)
}
})
}
}
},
removeFolder({ collectionID, folder, folderPath }) {
this.$data.editingCollectionID = collectionID
this.$data.editingFolder = folder
this.$data.editingFolderPath = folderPath
this.confirmModalTitle = `${this.t("confirm.remove_folder")}`
this.displayConfirmModal(true)
},
onRemoveFolder() {
const folder = this.$data.editingFolder
const folderPath = this.$data.editingFolderPath
if (this.collectionsType.type === "my-collections") {
// Cancel pick if picked folder was deleted
if (
this.picked &&
this.picked.pickedType === "my-folder" &&
this.picked.folderPath === folderPath
) {
this.$emit("select", { picked: null })
}
removeRESTFolder(folderPath)
this.toast.success(this.t("state.deleted"))
this.displayConfirmModal(false)
} else if (this.collectionsType.type === "team-collections") {
this.modalLoadingState = true
// Cancel pick if picked collection folder was deleted
if (
this.picked &&
this.picked.pickedType === "teams-folder" &&
this.picked.folderID === folder.id
) {
this.$emit("select", { picked: null })
}
if (this.collectionsType.selectedTeam.myRole !== "VIEWER") {
runMutation(DeleteCollectionDocument, {
collectionID: folder.id,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
this.toast.error(`${this.t("error.something_went_wrong")}`)
console.error(result.left.error)
} else {
this.toast.success(`${this.t("state.deleted")}`)
this.displayConfirmModal(false)
this.updateTeamCollections()
}
})
}
}
},
removeRequest({ requestIndex, folderPath }) {
this.$data.editingRequestIndex = requestIndex
this.$data.editingFolderPath = folderPath
this.confirmModalTitle = `${this.t("confirm.remove_request")}`
this.displayConfirmModal(true)
},
onRemoveRequest() {
const requestIndex = this.$data.editingRequestIndex
const folderPath = this.$data.editingFolderPath
if (this.collectionsType.type === "my-collections") {
// Cancel pick if the picked item is being deleted
if (
this.picked &&
this.picked.pickedType === "my-request" &&
this.picked.folderPath === folderPath &&
this.picked.requestIndex === requestIndex
) {
this.$emit("select", { picked: null })
}
removeRESTRequest(folderPath, requestIndex)
this.toast.success(this.t("state.deleted"))
this.displayConfirmModal(false)
} else if (this.collectionsType.type === "team-collections") {
this.modalLoadingState = true
// Cancel pick if the picked item is being deleted
if (
this.picked &&
this.picked.pickedType === "teams-request" &&
this.picked.requestID === requestIndex
) {
this.$emit("select", { picked: null })
}
runMutation(DeleteRequestDocument, {
requestID: requestIndex,
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
this.toast.success(this.t("state.deleted"))
this.displayConfirmModal(false)
}
})
}
},
addRequest(payload) {
// TODO: check if the request being worked on
// is being overwritten (selected or not)
const { folder, path } = payload
this.$data.editingFolder = folder
this.$data.editingFolderPath = path
this.displayModalAddRequest(true)
},
onAddRequest({ name, folder, path }) {
const newRequest = {
...cloneDeep(getRESTRequest()),
name,
}
if (this.collectionsType.type === "my-collections") {
const insertionIndex = saveRESTRequestAs(path, newRequest)
// point to it
setRESTRequest(newRequest, {
originLocation: "user-collection",
folderPath: path,
requestIndex: insertionIndex,
})
this.displayModalAddRequest(false)
} else if (
this.collectionsType.type === "team-collections" &&
this.collectionsType.selectedTeam.myRole !== "VIEWER"
) {
this.modalLoadingState = true
runMutation(CreateRequestInCollectionDocument, {
collectionID: folder.id,
data: {
request: JSON.stringify(newRequest),
teamID: this.collectionsType.selectedTeam.id,
title: name,
},
})().then((result) => {
this.modalLoadingState = false
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong"))
console.error(result.left.error)
} else {
const { createRequestInCollection } = result.right
// point to it
setRESTRequest(newRequest, {
originLocation: "team-collection",
requestID: createRequestInCollection.id,
collectionID: createRequestInCollection.collection.id,
teamID: createRequestInCollection.collection.team.id,
})
this.displayModalAddRequest(false)
}
})
}
},
duplicateRequest({ folderPath, request, collectionID }) {
if (this.collectionsType.type === "team-collections") {
const newReq = {
...cloneDeep(request),
name: `${request.name} - ${this.t("action.duplicate")}`,
}
// Error handling ?
runMutation(CreateRequestInCollectionDocument, {
collectionID,
data: {
request: JSON.stringify(newReq),
teamID: this.collectionsType.selectedTeam.id,
title: `${request.name} - ${this.t("action.duplicate")}`,
},
})()
} else if (this.collectionsType.type === "my-collections") {
saveRESTRequestAs(folderPath, {
...cloneDeep(request),
name: `${request.name} - ${this.t("action.duplicate")}`,
})
}
},
resolveConfirmModal(title) {
if (title === `${this.t("confirm.remove_collection")}`)
this.onRemoveCollection()
else if (title === `${this.t("confirm.remove_request")}`)
this.onRemoveRequest()
else if (title === `${this.t("confirm.remove_folder")}`)
this.onRemoveFolder()
else {
console.error(
`Confirm modal title ${title} is not handled by the component`
)
this.toast.error(this.t("error.something_went_wrong"))
this.displayConfirmModal(false)
}
},
},
})
// request inside folder is not being deleted, you dumb fuck
</script>

View File

@@ -1,354 +0,0 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-stretch group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
@contextmenu.prevent="options.tippy.show()"
>
<span
class="flex items-center justify-center px-4 cursor-pointer"
@click="toggleShowChildren()"
>
<component
:is="getCollectionIcon"
class="svg-icons"
:class="{ 'text-accent': isSelected }"
/>
</span>
<span
class="flex flex-1 min-w-0 py-2 pr-2 cursor-pointer transition group-hover:text-secondaryDark"
@click="toggleShowChildren()"
>
<span class="truncate" :class="{ 'text-accent': isSelected }">
{{ collection.name }}
</span>
</span>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
class="hidden group-hover:inline-flex"
@click="
$emit('add-request', {
path: `${collectionIndex}`,
})
"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
class="hidden group-hover:inline-flex"
@click="
$emit('add-folder', {
folder: collection,
path: `${collectionIndex}`,
})
"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.r="requestAction.$el.click()"
@keyup.n="folderAction.$el.click()"
@keyup.e="edit.$el.click()"
@keyup.delete="deleteAction.$el.click()"
@keyup.x="exportAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="t('request.new')"
:shortcut="['R']"
@click="
() => {
$emit('add-request', {
path: `${collectionIndex}`,
})
hide()
}
"
/>
<SmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="t('folder.new')"
:shortcut="['N']"
@click="
() => {
$emit('add-folder', {
folder: collection,
path: `${collectionIndex}`,
})
hide()
}
"
/>
<SmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
:shortcut="['E']"
@click="
() => {
$emit('edit-collection')
hide()
}
"
/>
<SmartItem
ref="exportAction"
:icon="IconDownload"
:label="t('export.title')"
:shortcut="['X']"
@click="
() => {
exportCollection()
hide()
}
"
/>
<SmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"
:shortcut="['⌫']"
@click="
() => {
removeCollection()
hide()
}
"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered" class="flex">
<div
class="bg-dividerLight cursor-nsResize flex ml-5.5 transform transition w-1 hover:bg-dividerDark hover:scale-x-125"
@click="toggleShowChildren()"
></div>
<div class="flex flex-col flex-1 truncate">
<CollectionsMyFolder
v-for="(folder, index) in collection.folders"
:key="`folder-${index}`"
:folder="folder"
:folder-index="index"
:folder-path="`${collectionIndex}/${index}`"
:collection-index="collectionIndex"
:save-request="saveRequest"
:collections-type="collectionsType"
:is-filtered="isFiltered"
:picked="picked"
@add-request="$emit('add-request', $event)"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
@remove-folder="$emit('remove-folder', $event)"
/>
<CollectionsMyRequest
v-for="(request, index) in collection.requests"
:key="`request-${index}`"
:request="request"
:collection-index="collectionIndex"
:folder-index="-1"
:folder-name="collection.name"
:folder-path="`${collectionIndex}`"
:request-index="index"
:save-request="saveRequest"
:collections-type="collectionsType"
:picked="picked"
@edit-request="$emit('edit-request', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
/>
<div
v-if="
(collection.folders == undefined ||
collection.folders.length === 0) &&
(collection.requests == undefined ||
collection.requests.length === 0)
"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/pack.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 mb-4"
:alt="`${t('empty.collection')}`"
/>
<span class="text-center">
{{ t("empty.collection") }}
</span>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import IconCircle from "~icons/lucide/circle"
import IconCheckCircle from "~icons/lucide/check-circle"
import IconFolderPlus from "~icons/lucide/folder-plus"
import IconFilePlus from "~icons/lucide/file-plus"
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconDownload from "~icons/lucide/download"
import IconTrash2 from "~icons/lucide/trash-2"
import IconEdit from "~icons/lucide/edit"
import IconFolder from "~icons/lucide/folder"
import IconFolderOpen from "~icons/lucide/folder-open"
import { useColorMode } from "@composables/theming"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { defineComponent, ref, markRaw } from "vue"
import { moveRESTRequest } from "~/newstore/collections"
export default defineComponent({
props: {
collectionIndex: { type: Number, default: null },
collection: { type: Object, default: () => ({}) },
isFiltered: Boolean,
saveRequest: Boolean,
collectionsType: { type: Object, default: () => ({}) },
picked: { type: Object, default: () => ({}) },
},
emits: [
"select",
"expand-collection",
"add-collection",
"remove-collection",
"add-folder",
"add-request",
"edit-folder",
"edit-request",
"duplicate-request",
"remove-folder",
"remove-request",
"select-collection",
"unselect-collection",
"edit-collection",
],
setup() {
return {
colorMode: useColorMode(),
toast: useToast(),
t: useI18n(),
// Template refs
tippyActions: ref<any | null>(null),
options: ref<any | null>(null),
requestAction: ref<any | null>(null),
folderAction: ref<any | null>(null),
edit: ref<any | null>(null),
deleteAction: ref<any | null>(null),
exportAction: ref<any | null>(null),
}
},
data() {
return {
IconCircle: markRaw(IconCircle),
IconCheckCircle: markRaw(IconCheckCircle),
IconFilePlus: markRaw(IconFilePlus),
IconFolderPlus: markRaw(IconFolderPlus),
IconMoreVertical: markRaw(IconMoreVertical),
IconEdit: markRaw(IconEdit),
IconDownload: markRaw(IconDownload),
IconTrash2: markRaw(IconTrash2),
showChildren: false,
dragging: false,
selectedFolder: {},
prevCursor: "",
cursor: "",
pageNo: 0,
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "my-collection" &&
this.picked.collectionIndex === this.collectionIndex
)
},
getCollectionIcon() {
if (this.isSelected) return IconCheckCircle
else if (!this.showChildren && !this.isFiltered) return IconFolder
else if (this.showChildren || this.isFiltered) return IconFolderOpen
else return IconFolder
},
},
methods: {
exportCollection() {
const collectionJSON = JSON.stringify(this.collection)
const file = new Blob([collectionJSON], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
a.download = `${this.collection.name}.json`
document.body.appendChild(a)
a.click()
this.toast.success(this.t("state.download_started").toString())
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
},
toggleShowChildren() {
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "my-collection",
collectionIndex: this.collectionIndex,
},
})
this.$emit("expand-collection", this.collection.id)
this.showChildren = !this.showChildren
},
removeCollection() {
this.$emit("remove-collection", {
collectionIndex: this.collectionIndex,
collectionID: this.collection.id,
})
},
dropEvent({ dataTransfer }: any) {
this.dragging = !this.dragging
const folderPath = dataTransfer.getData("folderPath")
const requestIndex = dataTransfer.getData("requestIndex")
moveRESTRequest(folderPath, requestIndex, `${this.collectionIndex}`)
},
},
})
</script>

View File

@@ -1,340 +0,0 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-stretch group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
@contextmenu.prevent="options.tippy.show()"
>
<span
class="flex items-center justify-center px-4 cursor-pointer"
@click="toggleShowChildren()"
>
<component
:is="getCollectionIcon"
class="svg-icons"
:class="{ 'text-accent': isSelected }"
/>
</span>
<span
class="flex flex-1 min-w-0 py-2 pr-2 cursor-pointer transition group-hover:text-secondaryDark"
@click="toggleShowChildren()"
>
<span class="truncate" :class="{ 'text-accent': isSelected }">
{{ folder.name ? folder.name : folder.title }}
</span>
</span>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
class="hidden group-hover:inline-flex"
@click="$emit('add-request', { path: folderPath })"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
class="hidden group-hover:inline-flex"
@click="$emit('add-folder', { folder, path: folderPath })"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.r="requestAction.$el.click()"
@keyup.n="folderAction.$el.click()"
@keyup.e="edit.$el.click()"
@keyup.delete="deleteAction.$el.click()"
@keyup.x="exportAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="t('request.new')"
:shortcut="['R']"
@click="
() => {
$emit('add-request', { path: folderPath })
hide()
}
"
/>
<SmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="t('folder.new')"
:shortcut="['N']"
@click="
() => {
$emit('add-folder', { folder, path: folderPath })
hide()
}
"
/>
<SmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
:shortcut="['E']"
@click="
() => {
$emit('edit-folder', {
folder,
folderIndex,
collectionIndex,
folderPath,
})
hide()
}
"
/>
<SmartItem
ref="exportAction"
:icon="IconDownload"
:label="t('export.title')"
:shortcut="['X']"
@click="
() => {
exportFolder()
hide()
}
"
/>
<SmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"
:shortcut="['⌫']"
@click="
() => {
removeFolder()
hide()
}
"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered" class="flex">
<div
class="bg-dividerLight cursor-nsResize flex ml-5.5 transform transition w-1 hover:bg-dividerDark hover:scale-x-125"
@click="toggleShowChildren()"
></div>
<div class="flex flex-col flex-1 truncate">
<!-- Referring to this component only (this is recursive) -->
<Folder
v-for="(subFolder, subFolderIndex) in folder.folders"
:key="`subFolder-${subFolderIndex}`"
:folder="subFolder"
:folder-index="subFolderIndex"
:collection-index="collectionIndex"
:save-request="saveRequest"
:collections-type="collectionsType"
:folder-path="`${folderPath}/${subFolderIndex}`"
:picked="picked"
@add-request="$emit('add-request', $event)"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
@update-team-collections="$emit('update-team-collections')"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
@remove-folder="$emit('remove-folder', $event)"
/>
<CollectionsMyRequest
v-for="(request, index) in folder.requests"
:key="`request-${index}`"
:request="request"
:collection-index="collectionIndex"
:folder-index="folderIndex"
:folder-name="folder.name"
:folder-path="folderPath"
:request-index="index"
:picked="picked"
:save-request="saveRequest"
:collections-type="collectionsType"
@edit-request="$emit('edit-request', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
/>
<div
v-if="
folder.folders &&
folder.folders.length === 0 &&
folder.requests &&
folder.requests.length === 0
"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/pack.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 mb-4"
:alt="`${t('empty.folder')}`"
/>
<span class="text-center">
{{ t("empty.folder") }}
</span>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import IconFilePlus from "~icons/lucide/file-plus"
import IconFolderPlus from "~icons/lucide/folder-plus"
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconEdit from "~icons/lucide/edit"
import IconDownload from "~icons/lucide/download"
import IconTrash2 from "~icons/lucide/trash-2"
import IconFolder from "~icons/lucide/folder"
import IconCheckCircle from "~icons/lucide/check-circle"
import IconFolderOpen from "~icons/lucide/folder-open"
import { defineComponent, ref } from "vue"
import { useColorMode } from "@composables/theming"
import { useToast } from "@composables/toast"
import { useI18n } from "@composables/i18n"
import { moveRESTRequest } from "~/newstore/collections"
export default defineComponent({
name: "Folder",
props: {
folder: { type: Object, default: () => ({}) },
folderIndex: { type: Number, default: null },
collectionIndex: { type: Number, default: null },
folderPath: { type: String, default: null },
saveRequest: Boolean,
isFiltered: Boolean,
collectionsType: { type: Object, default: () => ({}) },
picked: { type: Object, default: () => ({}) },
},
emits: [
"add-request",
"add-folder",
"edit-folder",
"update-team",
"remove-folder",
"edit-request",
"duplicate-request",
"select",
"remove-request",
"update-team-collections",
],
setup() {
const t = useI18n()
return {
// Template refs
tippyActions: ref<any | null>(null),
options: ref<any | null>(null),
requestAction: ref<any | null>(null),
folderAction: ref<any | null>(null),
edit: ref<any | null>(null),
deleteAction: ref<any | null>(null),
exportAction: ref<any | null>(null),
t,
toast: useToast(),
colorMode: useColorMode(),
IconFilePlus,
IconFolderPlus,
IconMoreVertical,
IconEdit,
IconDownload,
IconTrash2,
}
},
data() {
return {
showChildren: false,
dragging: false,
prevCursor: "",
cursor: "",
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "my-folder" &&
this.picked.folderPath === this.folderPath
)
},
getCollectionIcon() {
if (this.isSelected) return IconCheckCircle
else if (!this.showChildren && !this.isFiltered) return IconFolder
else if (this.showChildren || this.isFiltered) return IconFolderOpen
else return IconFolder
},
},
methods: {
exportFolder() {
const folderJSON = JSON.stringify(this.folder)
const file = new Blob([folderJSON], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
a.download = `${this.folder.name}.json`
document.body.appendChild(a)
a.click()
this.toast.success(this.t("state.download_started").toString())
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
},
toggleShowChildren() {
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "my-folder",
collectionIndex: this.collectionIndex,
folderName: this.folder.name,
folderPath: this.folderPath,
},
})
this.showChildren = !this.showChildren
},
removeFolder() {
this.$emit("remove-folder", {
folder: this.folder,
folderPath: this.folderPath,
})
},
dropEvent({ dataTransfer }) {
this.dragging = !this.dragging
const folderPath = dataTransfer.getData("folderPath")
const requestIndex = dataTransfer.getData("requestIndex")
moveRESTRequest(folderPath, requestIndex, this.folderPath)
},
},
})
</script>

View File

@@ -1,433 +0,0 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-stretch group"
draggable="true"
@dragstart="dragStart"
@dragover.stop
@dragleave="dragging = false"
@dragend="dragging = false"
@contextmenu.prevent="options.tippy.show()"
>
<span
class="flex items-center justify-center w-16 px-2 truncate cursor-pointer"
:class="getRequestLabelColor(request.method)"
@click="selectRequest()"
>
<component
:is="IconCheckCircle"
v-if="isSelected"
class="svg-icons"
:class="{ 'text-accent': isSelected }"
/>
<span v-else class="font-semibold truncate text-tiny">
{{ request.method }}
</span>
</span>
<span
class="flex items-center flex-1 min-w-0 py-2 pr-2 cursor-pointer transition group-hover:text-secondaryDark"
@click="selectRequest()"
>
<span class="truncate" :class="{ 'text-accent': isSelected }">
{{ request.name }}
</span>
<span
v-if="isActive"
v-tippy="{ theme: 'tooltip' }"
class="relative h-1.5 w-1.5 flex flex-shrink-0 mx-3"
:title="`${t('collection.request_in_use')}`"
>
<span
class="absolute inline-flex flex-shrink-0 w-full h-full bg-green-500 rounded-full opacity-75 animate-ping"
>
</span>
<span
class="relative inline-flex flex-shrink-0 rounded-full h-1.5 w-1.5 bg-green-500"
></span>
</span>
</span>
<div class="flex">
<ButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:icon="IconRotateCCW"
:title="t('action.restore')"
class="hidden group-hover:inline-flex"
@click="selectRequest()"
/>
<span>
<tippy
ref="options"
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.e="edit.$el.click()"
@keyup.d="duplicate.$el.click()"
@keyup.delete="deleteAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
:shortcut="['E']"
@click="
() => {
emit('edit-request', {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
})
hide()
}
"
/>
<SmartItem
ref="duplicate"
:icon="IconCopy"
:label="t('action.duplicate')"
:shortcut="['D']"
@click="
() => {
emit('duplicate-request', {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
folderPath,
})
hide()
}
"
/>
<SmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"
:shortcut="['⌫']"
@click="
() => {
removeRequest()
hide()
}
"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
<HttpReqChangeConfirmModal
:show="confirmChange"
@hide-modal="confirmChange = false"
@save-change="saveRequestChange"
@discard-change="discardRequestChange"
/>
<CollectionsSaveRequest
mode="rest"
:show="showSaveRequestModal"
@hide-modal="showSaveRequestModal = false"
/>
</div>
</template>
<script setup lang="ts">
import IconCheckCircle from "~icons/lucide/check-circle"
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconEdit from "~icons/lucide/edit"
import IconCopy from "~icons/lucide/copy"
import IconTrash2 from "~icons/lucide/trash-2"
import IconRotateCCW from "~icons/lucide/rotate-ccw"
import { ref, computed } from "vue"
import {
HoppRESTRequest,
safelyExtractRESTRequest,
translateToNewRequest,
isEqualHoppRESTRequest,
} from "@hoppscotch/data"
import * as E from "fp-ts/Either"
import { cloneDeep } from "lodash-es"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { useReadonlyStream } from "@composables/stream"
import {
getDefaultRESTRequest,
getRESTRequest,
restSaveContext$,
setRESTRequest,
setRESTSaveContext,
getRESTSaveContext,
} from "~/newstore/RESTSession"
import { editRESTRequest } from "~/newstore/collections"
import { runMutation } from "~/helpers/backend/GQLClient"
import { UpdateRequestDocument } from "~/helpers/backend/graphql"
import { HoppRequestSaveContext } from "~/helpers/types/HoppRequestSaveContext"
const props = defineProps<{
request: HoppRESTRequest
collectionIndex: number
folderIndex: number
folderName: string
requestIndex: number
saveRequest: boolean
collectionsType: object
folderPath: string
picked?: {
pickedType: string
collectionIndex: number
folderPath: string
folderName: string
requestIndex: number
}
}>()
const emit = defineEmits<{
(
e: "select",
data:
| {
picked: {
pickedType: string
collectionIndex: number
folderPath: string
folderName: string
requestIndex: number
}
}
| undefined
): void
(
e: "remove-request",
data: {
folderPath: string
requestIndex: number
}
): void
(
e: "duplicate-request",
data: {
collectionIndex: number
folderIndex: number
folderName: string
request: HoppRESTRequest
folderPath: string
requestIndex: number
}
): void
(
e: "edit-request",
data: {
collectionIndex: number
folderIndex: number
folderName: string
request: HoppRESTRequest
folderPath: string
requestIndex: number
}
): void
}>()
const t = useI18n()
const toast = useToast()
const dragging = ref(false)
const requestMethodLabels = {
get: "text-green-500",
post: "text-yellow-500",
put: "text-blue-500",
delete: "text-red-500",
default: "text-gray-500",
}
const confirmChange = ref(false)
const showSaveRequestModal = ref(false)
// Template refs
const tippyActions = ref<any | null>(null)
const options = ref<any | null>(null)
const edit = ref<any | null>(null)
const duplicate = ref<any | null>(null)
const deleteAction = ref<any | null>(null)
const active = useReadonlyStream(restSaveContext$, null)
const isSelected = computed(
() =>
props.picked &&
props.picked.pickedType === "my-request" &&
props.picked.folderPath === props.folderPath &&
props.picked.requestIndex === props.requestIndex
)
const isActive = computed(
() =>
active.value &&
active.value.originLocation === "user-collection" &&
active.value.folderPath === props.folderPath &&
active.value.requestIndex === props.requestIndex
)
const dragStart = ({ dataTransfer }: DragEvent) => {
if (dataTransfer) {
dragging.value = !dragging.value
dataTransfer.setData("folderPath", props.folderPath)
dataTransfer.setData("requestIndex", props.requestIndex.toString())
}
}
const removeRequest = () => {
emit("remove-request", {
folderPath: props.folderPath,
requestIndex: props.requestIndex,
})
}
const getRequestLabelColor = (method: string) =>
requestMethodLabels[
method.toLowerCase() as keyof typeof requestMethodLabels
] || requestMethodLabels.default
const setRestReq = (request: any) => {
setRESTRequest(
cloneDeep(
safelyExtractRESTRequest(
translateToNewRequest(request),
getDefaultRESTRequest()
)
),
{
originLocation: "user-collection",
folderPath: props.folderPath,
requestIndex: props.requestIndex,
req: cloneDeep(request),
}
)
}
/** Loads request from the save once, checks for unsaved changes, but ignores default values */
const selectRequest = () => {
// Check if this is a save as request popup, if so we don't need to prompt the confirm change popup.
if (props.saveRequest) {
emit("select", {
picked: {
pickedType: "my-request",
collectionIndex: props.collectionIndex,
folderPath: props.folderPath,
folderName: props.folderName,
requestIndex: props.requestIndex,
},
})
} else if (isEqualHoppRESTRequest(props.request, getDefaultRESTRequest())) {
confirmChange.value = false
setRestReq(props.request)
} else if (!active.value) {
// If the current request is the same as the request to be loaded in, there is no data loss
const currentReq = getRESTRequest()
if (isEqualHoppRESTRequest(currentReq, props.request)) {
setRestReq(props.request)
} else {
confirmChange.value = true
}
} else {
const currentReqWithNoChange = active.value.req
const currentFullReq = getRESTRequest()
// Check if whether user clicked the same request or not
if (!isActive.value && currentReqWithNoChange !== undefined) {
// Check if there is any changes done on the current request
if (isEqualHoppRESTRequest(currentReqWithNoChange, currentFullReq)) {
setRestReq(props.request)
} else {
confirmChange.value = true
}
} else {
setRESTSaveContext(null)
}
}
}
/** Save current request to the collection */
const saveRequestChange = () => {
const saveCtx = getRESTSaveContext()
saveCurrentRequest(saveCtx)
confirmChange.value = false
}
/** Discard changes and change the current request and context */
const discardRequestChange = () => {
setRestReq(props.request)
if (!isActive.value) {
setRESTSaveContext({
originLocation: "user-collection",
folderPath: props.folderPath,
requestIndex: props.requestIndex,
req: cloneDeep(props.request),
})
}
confirmChange.value = false
}
const saveCurrentRequest = (saveCtx: HoppRequestSaveContext | null) => {
if (!saveCtx) {
showSaveRequestModal.value = true
return
}
if (saveCtx.originLocation === "user-collection") {
try {
editRESTRequest(
saveCtx.folderPath,
saveCtx.requestIndex,
getRESTRequest()
)
setRestReq(props.request)
toast.success(`${t("request.saved")}`)
} catch (e) {
setRESTSaveContext(null)
saveCurrentRequest(saveCtx)
}
} else if (saveCtx.originLocation === "team-collection") {
const req = getRESTRequest()
try {
runMutation(UpdateRequestDocument, {
requestID: saveCtx.requestID,
data: {
title: req.name,
request: JSON.stringify(req),
},
})().then((result) => {
if (E.isLeft(result)) {
toast.error(`${t("profile.no_permission")}`)
} else {
toast.success(`${t("request.saved")}`)
}
})
setRestReq(props.request)
} catch (error) {
showSaveRequestModal.value = true
toast.error(`${t("error.something_went_wrong")}`)
console.error(error)
}
}
}
</script>

View File

@@ -1,406 +0,0 @@
<template>
<div class="flex flex-col">
<div
class="flex items-stretch group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
@contextmenu.prevent="options.tippy.show()"
>
<span
class="flex items-center justify-center px-4 cursor-pointer"
@click="toggleShowChildren()"
>
<component
:is="getCollectionIcon"
class="svg-icons"
:class="{ 'text-accent': isSelected }"
/>
</span>
<span
class="flex flex-1 min-w-0 py-2 pr-2 cursor-pointer transition group-hover:text-secondaryDark"
@click="toggleShowChildren()"
>
<span class="truncate" :class="{ 'text-accent': isSelected }">
{{ collection.title }}
</span>
</span>
<div class="flex">
<ButtonSecondary
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
class="hidden group-hover:inline-flex"
@click="
$emit('add-request', {
folder: collection,
path: `${collectionIndex}`,
})
"
/>
<ButtonSecondary
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
class="hidden group-hover:inline-flex"
@click="
$emit('add-folder', {
folder: collection,
path: `${collectionIndex}`,
})
"
/>
<span>
<tippy
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
ref="options"
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.r="requestAction.$el.click()"
@keyup.n="folderAction.$el.click()"
@keyup.e="edit.$el.click()"
@keyup.delete="deleteAction.$el.click()"
@keyup.x="exportAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="t('request.new')"
:shortcut="['R']"
@click="
() => {
$emit('add-request', {
folder: collection,
path: `${collectionIndex}`,
})
hide()
}
"
/>
<SmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="t('folder.new')"
:shortcut="['N']"
@click="
() => {
$emit('add-folder', {
folder: collection,
path: `${collectionIndex}`,
})
hide()
}
"
/>
<SmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
:shortcut="['E']"
@click="
() => {
$emit('edit-collection')
hide()
}
"
/>
<SmartItem
ref="exportAction"
:icon="IconDownload"
:label="t('export.title')"
:shortcut="['X']"
:loading="exportLoading"
@click="exportCollection"
/>
<SmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"
:shortcut="['⌫']"
@click="
() => {
removeCollection()
hide()
}
"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered" class="flex">
<div
class="bg-dividerLight cursor-nsResize flex ml-5.5 transform transition w-1 hover:bg-dividerDark hover:scale-x-125"
@click="toggleShowChildren()"
></div>
<div class="flex flex-col flex-1 truncate">
<CollectionsTeamsFolder
v-for="(folder, index) in collection.children"
:key="`folder-${index}`"
:folder="folder"
:folder-index="index"
:folder-path="`${collectionIndex}/${index}`"
:collection-index="collectionIndex"
:save-request="saveRequest"
:collections-type="collectionsType"
:is-filtered="isFiltered"
:picked="picked"
:loading-collection-i-ds="loadingCollectionIDs"
@add-request="$emit('add-request', $event)"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
@expand-collection="expandCollection"
@remove-request="$emit('remove-request', $event)"
@remove-folder="$emit('remove-folder', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
/>
<CollectionsTeamsRequest
v-for="(request, index) in collection.requests"
:key="`request-${index}`"
:request="request.request"
:collection-index="collectionIndex"
:folder-index="-1"
:folder-name="collection.name"
:request-index="request.id"
:save-request="saveRequest"
:collection-i-d="collection.id"
:collections-type="collectionsType"
:picked="picked"
@edit-request="editRequest($event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
/>
<div
v-if="loadingCollectionIDs.includes(collection.id)"
class="flex flex-col items-center justify-center p-4"
>
<SmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div
v-else-if="
(collection.children == undefined ||
collection.children.length === 0) &&
(collection.requests == undefined ||
collection.requests.length === 0)
"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/pack.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 mb-4"
:alt="`${t('empty.collection')}`"
/>
<span class="text-center">
{{ t("empty.collection") }}
</span>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconTrash2 from "~icons/lucide/trash-2"
import IconDownload from "~icons/lucide/download"
import IconEdit from "~icons/lucide/edit"
import IconFolderPlus from "~icons/lucide/folder-plus"
import IconFilePlus from "~icons/lucide/file-plus"
import IconCircle from "~icons/lucide/circle"
import IconCheckCircle from "~icons/lucide/check-circle"
import IconFolder from "~icons/lucide/folder"
import IconFolderOpen from "~icons/lucide/folder-open"
import { defineComponent, ref } from "vue"
import * as E from "fp-ts/Either"
import {
getCompleteCollectionTree,
teamCollToHoppRESTColl,
} from "~/helpers/backend/helpers"
import { moveRESTTeamRequest } from "~/helpers/backend/mutations/TeamRequest"
import { useColorMode } from "@composables/theming"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
export default defineComponent({
props: {
collectionIndex: { type: Number, default: null },
collection: { type: Object, default: () => ({}) },
isFiltered: Boolean,
saveRequest: Boolean,
collectionsType: { type: Object, default: () => ({}) },
picked: { type: Object, default: () => ({}) },
loadingCollectionIDs: { type: Array, default: () => [] },
},
emits: [
"edit-collection",
"add-request",
"add-folder",
"edit-folder",
"edit-request",
"remove-folder",
"select",
"remove-request",
"duplicate-request",
"expand-collection",
"remove-collection",
],
setup() {
const t = useI18n()
return {
// Template refs
tippyActions: ref<any | null>(null),
options: ref<any | null>(null),
requestAction: ref<any | null>(null),
folderAction: ref<any | null>(null),
edit: ref<any | null>(null),
deleteAction: ref<any | null>(null),
exportAction: ref<any | null>(null),
exportLoading: ref<boolean>(false),
t,
toast: useToast(),
colorMode: useColorMode(),
IconCheckCircle,
IconCircle,
IconFilePlus,
IconFolderPlus,
IconEdit,
IconDownload,
IconTrash2,
IconMoreVertical,
}
},
data() {
return {
showChildren: false,
dragging: false,
selectedFolder: {},
prevCursor: "",
cursor: "",
pageNo: 0,
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "teams-collection" &&
this.picked.collectionID === this.collection.id
)
},
getCollectionIcon() {
if (this.isSelected) return IconCheckCircle
else if (!this.showChildren && !this.isFiltered) return IconFolder
else if (this.showChildren || this.isFiltered) return IconFolderOpen
else return IconFolder
},
},
methods: {
async exportCollection() {
this.exportLoading = true
const result = await getCompleteCollectionTree(this.collection.id)()
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong").toString())
console.log(result.left)
this.exportLoading = false
this.options.tippy().hide()
return
}
const hoppColl = teamCollToHoppRESTColl(result.right)
const collectionJSON = JSON.stringify(hoppColl)
const file = new Blob([collectionJSON], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
a.download = `${hoppColl.name}.json`
document.body.appendChild(a)
a.click()
this.toast.success(this.t("state.download_started").toString())
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
this.exportLoading = false
this.options.tippy().hide()
},
editRequest(event: any) {
this.$emit("edit-request", event)
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "teams-collection",
collectionID: this.collection.id,
},
})
},
toggleShowChildren() {
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "teams-collection",
collectionID: this.collection.id,
},
})
this.$emit("expand-collection", this.collection.id)
this.showChildren = !this.showChildren
},
removeCollection() {
this.$emit("remove-collection", {
collectionIndex: this.collectionIndex,
collectionID: this.collection.id,
})
},
expandCollection(collectionID: string) {
this.$emit("expand-collection", collectionID)
},
async dropEvent({ dataTransfer }: any) {
this.dragging = !this.dragging
const requestIndex = dataTransfer.getData("requestIndex")
const moveRequestResult = await moveRESTTeamRequest(
requestIndex,
this.collection.id
)()
if (E.isLeft(moveRequestResult))
this.toast.error(`${this.t("error.something_went_wrong")}`)
},
},
})
</script>

View File

@@ -1,381 +0,0 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-stretch group"
@dragover.prevent
@drop.prevent="dropEvent"
@dragover="dragging = true"
@drop="dragging = false"
@dragleave="dragging = false"
@dragend="dragging = false"
@contextmenu.prevent="options.tippy.show()"
>
<span
class="flex items-center justify-center px-4 cursor-pointer"
@click="toggleShowChildren()"
>
<component
:is="getCollectionIcon"
class="svg-icons"
:class="{ 'text-accent': isSelected }"
/>
</span>
<span
class="flex flex-1 min-w-0 py-2 pr-2 cursor-pointer transition group-hover:text-secondaryDark"
@click="toggleShowChildren()"
>
<span class="truncate" :class="{ 'text-accent': isSelected }">
{{ folder.name ? folder.name : folder.title }}
</span>
</span>
<div class="flex">
<ButtonSecondary
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
:icon="IconFilePlus"
:title="t('request.new')"
class="hidden group-hover:inline-flex"
@click="$emit('add-request', { folder, path: folderPath })"
/>
<ButtonSecondary
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
v-tippy="{ theme: 'tooltip' }"
:icon="IconFolderPlus"
:title="t('folder.new')"
class="hidden group-hover:inline-flex"
@click="$emit('add-folder', { folder, path: folderPath })"
/>
<span>
<tippy
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
ref="options"
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.r="requestAction.$el.click()"
@keyup.n="folderAction.$el.click()"
@keyup.e="edit.$el.click()"
@keyup.delete="deleteAction.$el.click()"
@keyup.x="exportAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="requestAction"
:icon="IconFilePlus"
:label="t('request.new')"
:shortcut="['R']"
@click="
() => {
$emit('add-request', { folder, path: folderPath })
hide()
}
"
/>
<SmartItem
ref="folderAction"
:icon="IconFolderPlus"
:label="t('folder.new')"
:shortcut="['N']"
@click="
() => {
$emit('add-folder', { folder, path: folderPath })
hide()
}
"
/>
<SmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
:shortcut="['E']"
@click="
() => {
$emit('edit-folder', {
folder,
folderIndex,
collectionIndex,
folderPath: '',
})
hide()
}
"
/>
<SmartItem
ref="exportAction"
:icon="IconDownload"
:label="t('export.title')"
:shortcut="['X']"
:loading="exportLoading"
@click="exportFolder"
/>
<SmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"
:shortcut="['⌫']"
@click="
() => {
removeFolder()
hide()
}
"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
<div v-if="showChildren || isFiltered" class="flex">
<div
class="bg-dividerLight cursor-nsResize flex ml-5.5 transform transition w-1 hover:bg-dividerDark hover:scale-x-125"
@click="toggleShowChildren()"
></div>
<div class="flex flex-col flex-1 truncate">
<!-- Referring to this component only (this is recursive) -->
<Folder
v-for="(subFolder, subFolderIndex) in folder.children"
:key="`subFolder-${subFolderIndex}`"
:folder="subFolder"
:folder-index="subFolderIndex"
:collection-index="collectionIndex"
:save-request="saveRequest"
:collections-type="collectionsType"
:folder-path="`${folderPath}/${subFolderIndex}`"
:picked="picked"
:loading-collection-i-ds="loadingCollectionIDs"
@add-request="$emit('add-request', $event)"
@add-folder="$emit('add-folder', $event)"
@edit-folder="$emit('edit-folder', $event)"
@edit-request="$emit('edit-request', $event)"
@update-team-collections="$emit('update-team-collections')"
@select="$emit('select', $event)"
@expand-collection="expandCollection"
@remove-request="$emit('remove-request', $event)"
@remove-folder="$emit('remove-folder', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
/>
<CollectionsTeamsRequest
v-for="(request, index) in folder.requests"
:key="`request-${index}`"
:request="request.request"
:collection-index="collectionIndex"
:folder-index="folderIndex"
:folder-name="folder.name"
:request-index="request.id"
:save-request="saveRequest"
:collections-type="collectionsType"
:picked="picked"
:collection-i-d="folder.id"
@edit-request="$emit('edit-request', $event)"
@select="$emit('select', $event)"
@remove-request="$emit('remove-request', $event)"
@duplicate-request="$emit('duplicate-request', $event)"
/>
<div
v-if="loadingCollectionIDs.includes(folder.id)"
class="flex flex-col items-center justify-center p-4"
>
<SmartSpinner class="my-4" />
<span class="text-secondaryLight">{{ t("state.loading") }}</span>
</div>
<div
v-else-if="
(folder.children == undefined || folder.children.length === 0) &&
(folder.requests == undefined || folder.requests.length === 0)
"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/pack.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 mb-4"
:alt="`${t('empty.folder')}`"
/>
<span class="text-center">
{{ t("empty.folder") }}
</span>
</div>
</div>
</div>
</div>
</template>
<script lang="ts">
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconEdit from "~icons/lucide/edit"
import IconDownload from "~icons/lucide/download"
import IconTrash2 from "~icons/lucide/trash-2"
import IconFilePlus from "~icons/lucide/file-plus"
import IconCheckCircle from "~icons/lucide/check-circle"
import IconFolderPlus from "~icons/lucide/folder-plus"
import IconFolder from "~icons/lucide/folder"
import IconFolderOpen from "~icons/lucide/folder-open"
import { defineComponent, ref } from "vue"
import * as E from "fp-ts/Either"
import {
getCompleteCollectionTree,
teamCollToHoppRESTColl,
} from "~/helpers/backend/helpers"
import { moveRESTTeamRequest } from "~/helpers/backend/mutations/TeamRequest"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { useColorMode } from "@composables/theming"
export default defineComponent({
name: "Folder",
props: {
folder: { type: Object, default: () => ({}) },
folderIndex: { type: Number, default: null },
collectionIndex: { type: Number, default: null },
folderPath: { type: String, default: null },
saveRequest: Boolean,
isFiltered: Boolean,
collectionsType: { type: Object, default: () => ({}) },
picked: { type: Object, default: () => ({}) },
loadingCollectionIDs: { type: Array, default: () => [] },
},
emits: [
"add-request",
"add-folder",
"edit-folder",
"update-team-collections",
"edit-request",
"remove-request",
"duplicate-request",
"select",
"remove-folder",
"expand-collection",
],
setup() {
return {
// Template refs
tippyActions: ref<any | null>(null),
options: ref<any | null>(null),
requestAction: ref<any | null>(null),
folderAction: ref<any | null>(null),
edit: ref<any | null>(null),
deleteAction: ref<any | null>(null),
exportAction: ref<any | null>(null),
exportLoading: ref<boolean>(false),
toast: useToast(),
t: useI18n(),
colorMode: useColorMode(),
IconFilePlus,
IconFolderPlus,
IconCheckCircle,
IconFolder,
IconFolderOpen,
IconMoreVertical,
IconEdit,
IconDownload,
IconTrash2,
}
},
data() {
return {
showChildren: false,
dragging: false,
prevCursor: "",
cursor: "",
}
},
computed: {
isSelected(): boolean {
return (
this.picked &&
this.picked.pickedType === "teams-folder" &&
this.picked.folderID === this.folder.id
)
},
getCollectionIcon() {
if (this.isSelected) return IconCheckCircle
else if (!this.showChildren && !this.isFiltered) return IconFolder
else if (this.showChildren || this.isFiltered) return IconFolderOpen
else return IconFolder
},
},
methods: {
async exportFolder() {
this.exportLoading = true
const result = await getCompleteCollectionTree(this.folder.id)()
if (E.isLeft(result)) {
this.toast.error(this.t("error.something_went_wrong").toString())
console.log(result.left)
this.exportLoading = false
this.options.tippy().hide()
return
}
const hoppColl = teamCollToHoppRESTColl(result.right)
const collectionJSON = JSON.stringify(hoppColl)
const file = new Blob([collectionJSON], { type: "application/json" })
const a = document.createElement("a")
const url = URL.createObjectURL(file)
a.href = url
a.download = `${hoppColl.name}.json`
document.body.appendChild(a)
a.click()
this.toast.success(this.t("state.download_started").toString())
setTimeout(() => {
document.body.removeChild(a)
URL.revokeObjectURL(url)
}, 1000)
this.exportLoading = false
this.options.tippy().hide()
},
toggleShowChildren() {
if (this.$props.saveRequest)
this.$emit("select", {
picked: {
pickedType: "teams-folder",
folderID: this.folder.id,
},
})
this.$emit("expand-collection", this.$props.folder.id)
this.showChildren = !this.showChildren
},
removeFolder() {
this.$emit("remove-folder", {
collectionsType: this.collectionsType,
folder: this.folder,
})
},
expandCollection(collectionID: number) {
this.$emit("expand-collection", collectionID)
},
async dropEvent({ dataTransfer }: any) {
this.dragging = !this.dragging
const requestIndex = dataTransfer.getData("requestIndex")
const moveRequestResult = await moveRESTTeamRequest(
requestIndex,
this.folder.id
)()
if (E.isLeft(moveRequestResult))
this.toast.error(`${this.t("error.something_went_wrong")}`)
},
},
})
</script>

View File

@@ -1,405 +0,0 @@
<template>
<div class="flex flex-col" :class="[{ 'bg-primaryLight': dragging }]">
<div
class="flex items-stretch group"
draggable="true"
@dragstart="dragStart"
@dragover.stop
@dragleave="dragging = false"
@dragend="dragging = false"
@contextmenu.prevent="options.tippy.show()"
>
<span
class="flex items-center justify-center w-16 px-2 truncate cursor-pointer"
:class="getRequestLabelColor(request.method)"
@click="selectRequest()"
>
<component
:is="IconCheckCircle"
v-if="isSelected"
class="svg-icons"
:class="{ 'text-accent': isSelected }"
/>
<span v-else class="font-semibold truncate text-tiny">
{{ request.method }}
</span>
</span>
<span
class="flex items-center flex-1 min-w-0 py-2 pr-2 cursor-pointer transition group-hover:text-secondaryDark"
@click="selectRequest()"
>
<span class="truncate" :class="{ 'text-accent': isSelected }">
{{ request.name }}
</span>
<span
v-if="isActive"
v-tippy="{ theme: 'tooltip' }"
class="relative h-1.5 w-1.5 flex flex-shrink-0 mx-3"
:title="`${t('collection.request_in_use')}`"
>
<span
class="absolute inline-flex flex-shrink-0 w-full h-full bg-green-500 rounded-full opacity-75 animate-ping"
>
</span>
<span
class="relative inline-flex flex-shrink-0 rounded-full h-1.5 w-1.5 bg-green-500"
></span>
</span>
</span>
<div class="flex">
<ButtonSecondary
v-if="!saveRequest"
v-tippy="{ theme: 'tooltip' }"
:icon="IconRotateCCW"
:title="t('action.restore')"
class="hidden group-hover:inline-flex"
@click="selectRequest()"
/>
<span>
<tippy
v-if="collectionsType.selectedTeam.myRole !== 'VIEWER'"
ref="options"
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:title="t('action.more')"
:icon="IconMoreVertical"
/>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.e="edit.$el.click()"
@keyup.d="duplicate.$el.click()"
@keyup.delete="deleteAction.$el.click()"
@keyup.escape="hide()"
>
<SmartItem
ref="edit"
:icon="IconEdit"
:label="t('action.edit')"
:shortcut="['E']"
@click="
() => {
emit('edit-request', {
collectionIndex,
folderIndex,
folderName,
request,
requestIndex,
})
hide()
}
"
/>
<SmartItem
ref="duplicate"
:icon="IconCopy"
:label="t('action.duplicate')"
:shortcut="['D']"
@click="
() => {
emit('duplicate-request', {
request,
requestIndex,
collectionID,
})
hide()
}
"
/>
<SmartItem
ref="deleteAction"
:icon="IconTrash2"
:label="t('action.delete')"
:shortcut="['⌫']"
@click="
() => {
removeRequest()
hide()
}
"
/>
</div>
</template>
</tippy>
</span>
</div>
</div>
<HttpReqChangeConfirmModal
:show="confirmChange"
@hide-modal="confirmChange = false"
@save-change="saveRequestChange"
@discard-change="discardRequestChange"
/>
<CollectionsSaveRequest
mode="rest"
:show="showSaveRequestModal"
@hide-modal="showSaveRequestModal = false"
/>
</div>
</template>
<script setup lang="ts">
import IconMoreVertical from "~icons/lucide/more-vertical"
import IconCheckCircle from "~icons/lucide/check-circle"
import IconRotateCCW from "~icons/lucide/rotate-ccw"
import IconEdit from "~icons/lucide/edit"
import IconCopy from "~icons/lucide/copy"
import IconTrash2 from "~icons/lucide/trash-2"
import { ref, computed } from "vue"
import {
HoppRESTRequest,
isEqualHoppRESTRequest,
safelyExtractRESTRequest,
translateToNewRequest,
} from "@hoppscotch/data"
import * as E from "fp-ts/Either"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import { useReadonlyStream } from "@composables/stream"
import {
getDefaultRESTRequest,
restSaveContext$,
setRESTRequest,
setRESTSaveContext,
getRESTSaveContext,
getRESTRequest,
} from "~/newstore/RESTSession"
import { editRESTRequest } from "~/newstore/collections"
import { runMutation } from "~/helpers/backend/GQLClient"
import { Team, UpdateRequestDocument } from "~/helpers/backend/graphql"
import { HoppRequestSaveContext } from "~/helpers/types/HoppRequestSaveContext"
const props = defineProps<{
request: HoppRESTRequest
collectionIndex: number
folderIndex: number
folderName?: string
requestIndex: string
saveRequest: boolean
collectionsType: {
type: "my-collections" | "team-collections"
selectedTeam: Team | undefined
}
collectionID: string
picked?: {
pickedType: string
requestID: string
}
}>()
const emit = defineEmits<{
(
e: "select",
data:
| {
picked: {
pickedType: string
requestID: string
}
}
| undefined
): void
(
e: "remove-request",
data: {
folderPath: string | undefined
requestIndex: string
}
): void
(
e: "edit-request",
data: {
collectionIndex: number
folderIndex: number
folderName: string | undefined
requestIndex: string
request: HoppRESTRequest
}
): void
(
e: "duplicate-request",
data: {
collectionID: number | string
requestIndex: string
request: HoppRESTRequest
}
): void
}>()
const t = useI18n()
const toast = useToast()
const dragging = ref(false)
const requestMethodLabels = {
get: "text-green-500",
post: "text-yellow-500",
put: "text-blue-500",
delete: "text-red-500",
default: "text-gray-500",
}
const confirmChange = ref(false)
const showSaveRequestModal = ref(false)
// Template refs
const tippyActions = ref<any | null>(null)
const options = ref<any | null>(null)
const edit = ref<any | null>(null)
const duplicate = ref<any | null>(null)
const deleteAction = ref<any | null>(null)
const active = useReadonlyStream(restSaveContext$, null)
const isSelected = computed(
() =>
props.picked &&
props.picked.pickedType === "teams-request" &&
props.picked.requestID === props.requestIndex
)
const isActive = computed(
() =>
active.value &&
active.value.originLocation === "team-collection" &&
active.value.requestID === props.requestIndex
)
const dragStart = ({ dataTransfer }: DragEvent) => {
if (dataTransfer) {
dragging.value = !dragging.value
dataTransfer.setData("requestIndex", props.requestIndex)
}
}
const removeRequest = () => {
emit("remove-request", {
folderPath: props.folderName,
requestIndex: props.requestIndex,
})
}
const getRequestLabelColor = (method: string): string => {
return (
(requestMethodLabels as any)[method.toLowerCase()] ||
requestMethodLabels.default
)
}
const setRestReq = (request: HoppRESTRequest) => {
setRESTRequest(
safelyExtractRESTRequest(
translateToNewRequest(request),
getDefaultRESTRequest()
),
{
originLocation: "team-collection",
requestID: props.requestIndex,
req: request,
}
)
}
const selectRequest = () => {
// Check if this is a save as request popup, if so we don't need to prompt the confirm change popup.
if (props.saveRequest) {
emit("select", {
picked: {
pickedType: "teams-request",
requestID: props.requestIndex,
},
})
} else if (isEqualHoppRESTRequest(props.request, getDefaultRESTRequest())) {
confirmChange.value = false
setRestReq(props.request)
} else if (!active.value) {
confirmChange.value = true
} else {
const currentReqWithNoChange = active.value.req
const currentFullReq = getRESTRequest()
// Check if whether user clicked the same request or not
if (!isActive.value && currentReqWithNoChange) {
// Check if there is any changes done on the current request
if (isEqualHoppRESTRequest(currentReqWithNoChange, currentFullReq)) {
setRestReq(props.request)
} else {
confirmChange.value = true
}
} else {
setRESTSaveContext(null)
}
}
}
/** Save current request to the collection */
const saveRequestChange = () => {
const saveCtx = getRESTSaveContext()
saveCurrentRequest(saveCtx)
confirmChange.value = false
}
/** Discard changes and change the current request and context */
const discardRequestChange = () => {
setRestReq(props.request)
if (!isActive.value) {
setRESTSaveContext({
originLocation: "team-collection",
requestID: props.requestIndex,
req: props.request,
})
}
confirmChange.value = false
}
const saveCurrentRequest = (saveCtx: HoppRequestSaveContext | null) => {
if (!saveCtx) {
showSaveRequestModal.value = true
return
}
if (saveCtx.originLocation === "team-collection") {
const req = getRESTRequest()
try {
runMutation(UpdateRequestDocument, {
requestID: saveCtx.requestID,
data: {
title: req.name,
request: JSON.stringify(req),
},
})().then((result) => {
if (E.isLeft(result)) {
toast.error(`${t("profile.no_permission")}`)
} else {
toast.success(`${t("request.saved")}`)
}
})
setRestReq(props.request)
} catch (error) {
showSaveRequestModal.value = true
toast.error(`${t("error.something_went_wrong")}`)
console.error(error)
}
} else if (saveCtx.originLocation === "user-collection") {
try {
editRESTRequest(
saveCtx.folderPath,
saveCtx.requestIndex,
getRESTRequest()
)
setRestReq(props.request)
toast.success(`${t("request.saved")}`)
} catch (e) {
setRESTSaveContext(null)
saveCurrentRequest(null)
}
}
}
</script>

View File

@@ -1,197 +0,0 @@
<template>
<div>
<div class="sticky top-0 z-10 flex flex-col rounded-t bg-primary">
<tippy
interactive
trigger="click"
theme="popover"
:on-shown="() => tippyActions.focus()"
>
<span
v-tippy="{ theme: 'tooltip' }"
:title="`${t('environment.select')}`"
class="flex-1 bg-transparent border-b border-dividerLight select-wrapper"
>
<ButtonSecondary
v-if="selectedEnvironmentIndex !== -1"
:label="environments[selectedEnvironmentIndex].name"
class="flex-1 !justify-start pr-8 rounded-none"
/>
<ButtonSecondary
v-else
:label="`${t('environment.select')}`"
class="flex-1 !justify-start pr-8 rounded-none"
/>
</span>
<template #content="{ hide }">
<div
ref="tippyActions"
class="flex flex-col focus:outline-none"
tabindex="0"
@keyup.escape="hide()"
>
<SmartItem
:label="`${t('environment.no_environment')}`"
:info-icon="selectedEnvironmentIndex === -1 ? IconDone : null"
:active-info-icon="selectedEnvironmentIndex === -1"
@click="
() => {
selectedEnvironmentIndex = -1
hide()
}
"
/>
<hr v-if="environments.length > 0" />
<SmartItem
v-for="(gen, index) in environments"
:key="`gen-${index}`"
:label="gen.name"
:info-icon="index === selectedEnvironmentIndex ? IconDone : null"
:active-info-icon="index === selectedEnvironmentIndex"
@click="
() => {
selectedEnvironmentIndex = index
hide()
}
"
/>
</div>
</template>
</tippy>
<div class="flex justify-between flex-1 border-b border-dividerLight">
<ButtonSecondary
:icon="IconPlus"
:label="`${t('action.new')}`"
class="!rounded-none"
@click="displayModalAdd(true)"
/>
<div class="flex">
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
to="https://docs.hoppscotch.io/features/environments"
blank
:title="t('app.wiki')"
:icon="IconHelpCircle"
/>
<ButtonSecondary
v-tippy="{ theme: 'tooltip' }"
:icon="IconArchive"
:title="t('modal.import_export')"
@click="displayModalImportExport(true)"
/>
</div>
</div>
</div>
<div class="flex flex-col">
<EnvironmentsEnvironment
environment-index="Global"
:environment="globalEnvironment"
class="border-b border-dashed border-dividerLight"
@edit-environment="editEnvironment('Global')"
/>
<EnvironmentsEnvironment
v-for="(environment, index) in environments"
:key="`environment-${index}`"
:environment-index="index"
:environment="environment"
@edit-environment="editEnvironment(index)"
/>
</div>
<div
v-if="environments.length === 0"
class="flex flex-col items-center justify-center p-4 text-secondaryLight"
>
<img
:src="`/images/states/${colorMode.value}/blockchain.svg`"
loading="lazy"
class="inline-flex flex-col object-contain object-center w-16 h-16 my-4"
:alt="`${t('empty.environments')}`"
/>
<span class="pb-4 text-center">
{{ t("empty.environments") }}
</span>
<ButtonSecondary
:label="`${t('add.new')}`"
filled
class="mb-4"
outline
@click="displayModalAdd(true)"
/>
</div>
<EnvironmentsDetails
:show="showModalDetails"
:action="action"
:editing-environment-index="editingEnvironmentIndex"
@hide-modal="displayModalEdit(false)"
/>
<EnvironmentsImportExport
:show="showModalImportExport"
@hide-modal="displayModalImportExport(false)"
/>
</div>
</template>
<script setup lang="ts">
import IconDone from "~icons/lucide/check"
import IconPlus from "~icons/lucide/plus"
import IconHelpCircle from "~icons/lucide/help-circle"
import IconArchive from "~icons/lucide/archive"
import { computed, ref } from "vue"
import { useReadonlyStream, useStream } from "@composables/stream"
import { useI18n } from "@composables/i18n"
import { useColorMode } from "@composables/theming"
import {
environments$,
setCurrentEnvironment,
selectedEnvIndex$,
globalEnv$,
} from "~/newstore/environments"
const t = useI18n()
const colorMode = useColorMode()
const globalEnv = useReadonlyStream(globalEnv$, [])
const globalEnvironment = computed(() => ({
name: "Global",
variables: globalEnv.value,
}))
const environments = useReadonlyStream(environments$, [])
const selectedEnvironmentIndex = useStream(
selectedEnvIndex$,
-1,
setCurrentEnvironment
)
// Template refs
const tippyActions = ref<any | null>(null)
const showModalImportExport = ref(false)
const showModalDetails = ref(false)
const action = ref<"new" | "edit">("edit")
const editingEnvironmentIndex = ref<number | "Global" | null>(null)
const displayModalAdd = (shouldDisplay: boolean) => {
action.value = "new"
showModalDetails.value = shouldDisplay
}
const displayModalEdit = (shouldDisplay: boolean) => {
action.value = "edit"
showModalDetails.value = shouldDisplay
if (!shouldDisplay) resetSelectedData()
}
const displayModalImportExport = (shouldDisplay: boolean) => {
showModalImportExport.value = shouldDisplay
}
const editEnvironment = (environmentIndex: number | "Global") => {
editingEnvironmentIndex.value = environmentIndex
action.value = "edit"
displayModalEdit(true)
}
const resetSelectedData = () => {
editingEnvironmentIndex.value = null
}
</script>

View File

@@ -1,28 +0,0 @@
<template>
<div
class="relative flex flex-col overflow-hidden space-y-2"
:class="expand ? 'h-full' : 'max-h-32'"
>
<slot name="body"></slot>
<div class="sticky inset-x-0 bottom-0 flex items-center justify-center">
<ButtonSecondary
:icon="expand ? IconChevronUp : IconChevronDown"
:label="expand ? t('action.less') : t('action.more')"
filled
rounded
@click="expand = !expand"
/>
</div>
</div>
</template>
<script setup lang="ts">
import IconChevronUp from "~icons/lucide/chevron-up"
import IconChevronDown from "~icons/lucide/chevron-down"
import { ref } from "vue"
import { useI18n } from "@composables/i18n"
const t = useI18n()
const expand = ref(false)
</script>

View File

@@ -1,3 +0,0 @@
<template>
<icon-lucide-loader class="animate-spin svg-icons" />
</template>

View File

@@ -1,80 +0,0 @@
/* An `action` is a unique verb that is associated with certain thing that can be done on Hoppscotch.
* For example, sending a request.
*/
import { onBeforeUnmount, onMounted } from "vue"
import { BehaviorSubject } from "rxjs"
export type HoppAction =
| "request.send-cancel" // Send/Cancel a Hoppscotch Request
| "request.reset" // Clear request data
| "request.copy-link" // Copy Request Link
| "request.save" // Save to Collections
| "request.save-as" // Save As
| "request.method.next" // Select Next Method
| "request.method.prev" // Select Previous Method
| "request.method.get" // Select GET Method
| "request.method.head" // Select HEAD Method
| "request.method.post" // Select POST Method
| "request.method.put" // Select PUT Method
| "request.method.delete" // Select DELETE Method
| "flyouts.keybinds.toggle" // Shows the keybinds flyout
| "modals.search.toggle" // Shows the search modal
| "modals.support.toggle" // Shows the support modal
| "modals.share.toggle" // Shows the share modal
| "navigation.jump.rest" // Jump to REST page
| "navigation.jump.graphql" // Jump to GraphQL page
| "navigation.jump.realtime" // Jump to realtime page
| "navigation.jump.documentation" // Jump to documentation page
| "navigation.jump.settings" // Jump to settings page
| "navigation.jump.profile" // Jump to profile page
| "settings.theme.system" // Use system theme
| "settings.theme.light" // Use light theme
| "settings.theme.dark" // Use dark theme
| "settings.theme.black" // Use black theme
| "response.preview.toggle" // Toggle response preview
| "response.file.download" // Download response as file
| "response.copy" // Copy response to clipboard
type BoundActionList = {
// eslint-disable-next-line no-unused-vars
[_ in HoppAction]?: Array<() => void>
}
const boundActions: BoundActionList = {}
export const activeActions$ = new BehaviorSubject<HoppAction[]>([])
export function bindAction(action: HoppAction, handler: () => void) {
if (boundActions[action]) {
boundActions[action]?.push(handler)
} else {
boundActions[action] = [handler]
}
activeActions$.next(Object.keys(boundActions) as HoppAction[])
}
export function invokeAction(action: HoppAction) {
boundActions[action]?.forEach((handler) => handler())
}
export function unbindAction(action: HoppAction, handler: () => void) {
boundActions[action] = boundActions[action]?.filter((x) => x !== handler)
if (boundActions[action]?.length === 0) {
delete boundActions[action]
}
activeActions$.next(Object.keys(boundActions) as HoppAction[])
}
export function defineActionHandler(action: HoppAction, handler: () => void) {
onMounted(() => {
bindAction(action, handler)
})
onBeforeUnmount(() => {
unbindAction(action, handler)
})
}

View File

@@ -1,20 +0,0 @@
import { runMutation } from "../GQLClient"
import {
MoveRestTeamRequestDocument,
MoveRestTeamRequestMutation,
MoveRestTeamRequestMutationVariables,
} from "../graphql"
type MoveRestTeamRequestErrors =
| "team_req/not_found"
| "team_req/invalid_target_id"
export const moveRESTTeamRequest = (requestID: string, collectionID: string) =>
runMutation<
MoveRestTeamRequestMutation,
MoveRestTeamRequestMutationVariables,
MoveRestTeamRequestErrors
>(MoveRestTeamRequestDocument, {
requestID,
collectionID,
})

View File

@@ -1,434 +0,0 @@
import {
User,
getAuth,
onAuthStateChanged,
onIdTokenChanged,
signInWithPopup,
GoogleAuthProvider,
GithubAuthProvider,
OAuthProvider,
signInWithEmailAndPassword as signInWithEmailAndPass,
isSignInWithEmailLink as isSignInWithEmailLinkFB,
fetchSignInMethodsForEmail,
sendSignInLinkToEmail,
signInWithEmailLink as signInWithEmailLinkFB,
ActionCodeSettings,
signOut,
linkWithCredential,
AuthCredential,
AuthError,
UserCredential,
updateProfile,
updateEmail,
sendEmailVerification,
reauthenticateWithCredential,
} from "firebase/auth"
import {
onSnapshot,
getFirestore,
setDoc,
doc,
updateDoc,
} from "firebase/firestore"
import { BehaviorSubject, filter, Subject, Subscription } from "rxjs"
import {
setLocalConfig,
getLocalConfig,
removeLocalConfig,
} from "~/newstore/localpersistence"
export type HoppUser = User & {
provider?: string
accessToken?: string
}
export type AuthEvent =
| { event: "probable_login"; user: HoppUser } // We have previous login state, but the app is waiting for authentication
| { event: "login"; user: HoppUser } // We are authenticated
| { event: "logout" } // No authentication and we have no previous state
| { event: "authTokenUpdate"; user: HoppUser; newToken: string | null } // Token has been updated
/**
* A BehaviorSubject emitting the currently logged in user (or null if not logged in)
*/
export const currentUser$ = new BehaviorSubject<HoppUser | null>(null)
/**
* A BehaviorSubject emitting the current idToken
*/
export const authIdToken$ = new BehaviorSubject<string | null>(null)
/**
* A subject that emits events related to authentication flows
*/
export const authEvents$ = new Subject<AuthEvent>()
/**
* Like currentUser$ but also gives probable user value
*/
export const probableUser$ = new BehaviorSubject<HoppUser | null>(null)
/**
* Resolves when the probable login resolves into proper login
*/
export const waitProbableLoginToConfirm = () =>
new Promise<void>((resolve, reject) => {
if (authIdToken$.value) resolve()
if (!probableUser$.value) reject(new Error("no_probable_user"))
let sub: Subscription | null = null
sub = authIdToken$.pipe(filter((token) => !!token)).subscribe(() => {
sub?.unsubscribe()
resolve()
})
})
/**
* Initializes the firebase authentication related subjects
*/
export function initAuth() {
const auth = getAuth()
const firestore = getFirestore()
let extraSnapshotStop: (() => void) | null = null
probableUser$.next(JSON.parse(getLocalConfig("login_state") ?? "null"))
onAuthStateChanged(auth, (user) => {
/** Whether the user was logged in before */
const wasLoggedIn = currentUser$.value !== null
if (user) {
probableUser$.next(user)
} else {
probableUser$.next(null)
removeLocalConfig("login_state")
}
if (!user && extraSnapshotStop) {
extraSnapshotStop()
extraSnapshotStop = null
} else if (user) {
// Merge all the user info from all the authenticated providers
user.providerData.forEach((profile) => {
if (!profile) return
const us = {
updatedOn: new Date(),
provider: profile.providerId,
name: profile.displayName,
email: profile.email,
photoUrl: profile.photoURL,
uid: profile.uid,
}
setDoc(doc(firestore, "users", user.uid), us, { merge: true }).catch(
(e) => console.error("error updating", us, e)
)
})
extraSnapshotStop = onSnapshot(
doc(firestore, "users", user.uid),
(doc) => {
const data = doc.data()
const userUpdate: HoppUser = user
if (data) {
// Write extra provider data
userUpdate.provider = data.provider
userUpdate.accessToken = data.accessToken
}
currentUser$.next(userUpdate)
}
)
}
currentUser$.next(user)
// User wasn't found before, but now is there (login happened)
if (!wasLoggedIn && user) {
authEvents$.next({
event: "login",
user: currentUser$.value!,
})
} else if (wasLoggedIn && !user) {
// User was found before, but now is not there (logout happened)
authEvents$.next({
event: "logout",
})
}
})
onIdTokenChanged(auth, async (user) => {
if (user) {
authIdToken$.next(await user.getIdToken())
authEvents$.next({
event: "authTokenUpdate",
newToken: authIdToken$.value,
user: currentUser$.value!, // Force not-null because user is defined
})
setLocalConfig("login_state", JSON.stringify(user))
} else {
authIdToken$.next(null)
}
})
}
export function getAuthIDToken(): string | null {
return authIdToken$.getValue()
}
/**
* Sign user in with a popup using Google
*/
export async function signInUserWithGoogle() {
return await signInWithPopup(getAuth(), new GoogleAuthProvider())
}
/**
* Sign user in with a popup using Github
*/
export async function signInUserWithGithub() {
return await signInWithPopup(
getAuth(),
new GithubAuthProvider().addScope("gist")
)
}
/**
* Sign user in with a popup using Microsoft
*/
export async function signInUserWithMicrosoft() {
return await signInWithPopup(getAuth(), new OAuthProvider("microsoft.com"))
}
/**
* Sign user in with email and password
*/
export async function signInWithEmailAndPassword(
email: string,
password: string
) {
return await signInWithEmailAndPass(getAuth(), email, password)
}
/**
* Gets the sign in methods for a given email address
*
* @param email - Email to get the methods of
*
* @returns Promise for string array of the auth provider methods accessible
*/
export async function getSignInMethodsForEmail(email: string) {
return await fetchSignInMethodsForEmail(getAuth(), email)
}
export async function linkWithFBCredential(
user: User,
credential: AuthCredential
) {
return await linkWithCredential(user, credential)
}
/**
* Links account with another account given in a auth/account-exists-with-different-credential error
*
* @param error - Error caught after trying to login
*
* @returns Promise of UserCredential
*/
export async function linkWithFBCredentialFromAuthError(error: unknown) {
// credential is not null since this function is called after an auth/account-exists-with-different-credential error, ie credentials actually exist
const credentials = OAuthProvider.credentialFromError(error as AuthError)!
const otherLinkedProviders = (
await getSignInMethodsForEmail((error as AuthError).customData.email!)
).filter((providerId) => credentials.providerId !== providerId)
let user: User | null = null
if (otherLinkedProviders.indexOf("google.com") >= -1) {
user = (await signInUserWithGoogle()).user
} else if (otherLinkedProviders.indexOf("github.com") >= -1) {
user = (await signInUserWithGithub()).user
} else if (otherLinkedProviders.indexOf("microsoft.com") >= -1) {
user = (await signInUserWithMicrosoft()).user
}
// user is not null since going through each provider will return a user
return await linkWithCredential(user!, credentials)
}
/**
* Sends an email with the signin link to the user
*
* @param email - Email to send the email to
* @param actionCodeSettings - The settings to apply to the link
*/
export async function signInWithEmail(
email: string,
actionCodeSettings: ActionCodeSettings
) {
return await sendSignInLinkToEmail(getAuth(), email, actionCodeSettings)
}
/**
* Checks and returns whether the sign in link is an email link
*
* @param url - The URL to look in
*/
export function isSignInWithEmailLink(url: string) {
return isSignInWithEmailLinkFB(getAuth(), url)
}
/**
* Sends an email with sign in with email link
*
* @param email - Email to log in to
* @param url - The action URL which is used to validate login
*/
export async function signInWithEmailLink(email: string, url: string) {
return await signInWithEmailLinkFB(getAuth(), email, url)
}
/**
* Signs out the user
*/
export async function signOutUser() {
if (!currentUser$.value) throw new Error("No user has logged in")
await signOut(getAuth())
}
/**
* Sets the provider id and relevant provider auth token
* as user metadata
*
* @param id - The provider ID
* @param token - The relevant auth token for the given provider
*/
export async function setProviderInfo(id: string, token: string) {
if (!currentUser$.value) throw new Error("No user has logged in")
const us = {
updatedOn: new Date(),
provider: id,
accessToken: token,
}
try {
await updateDoc(
doc(getFirestore(), "users", currentUser$.value.uid),
us
).catch((e) => console.error("error updating", us, e))
} catch (e) {
console.error("error updating", e)
throw e
}
}
/**
* Sets the user's display name
*
* @param name - The new display name
*/
export async function setDisplayName(name: string) {
if (!currentUser$.value) throw new Error("No user has logged in")
const us = {
displayName: name,
}
try {
await updateProfile(currentUser$.value, us)
} catch (e) {
console.error("error updating", e)
throw e
}
}
/**
* Send user's email address verification mail
*/
export async function verifyEmailAddress() {
if (!currentUser$.value) throw new Error("No user has logged in")
try {
await sendEmailVerification(currentUser$.value)
} catch (e) {
console.error("error updating", e)
throw e
}
}
/**
* Sets the user's email address
*
* @param email - The new email address
*/
export async function setEmailAddress(email: string) {
if (!currentUser$.value) throw new Error("No user has logged in")
try {
await updateEmail(currentUser$.value, email)
} catch (e) {
await reauthenticateUser()
console.error("error updating", e)
throw e
}
}
/**
* Reauthenticate the user with the given credential
*/
async function reauthenticateUser() {
if (!currentUser$.value) throw new Error("No user has logged in")
const currentAuthMethod = currentUser$.value.provider
let credential
if (currentAuthMethod === "google.com") {
const result = await signInUserWithGithub()
credential = GithubAuthProvider.credentialFromResult(result)
} else if (currentAuthMethod === "github.com") {
const result = await signInUserWithGoogle()
credential = GoogleAuthProvider.credentialFromResult(result)
} else if (currentAuthMethod === "microsoft.com") {
const result = await signInUserWithMicrosoft()
credential = OAuthProvider.credentialFromResult(result)
} else if (currentAuthMethod === "password") {
const email = prompt(
"Reauthenticate your account using your current email:"
)
const actionCodeSettings = {
url: `${process.env.BASE_URL}/enter`,
handleCodeInApp: true,
}
await signInWithEmail(email as string, actionCodeSettings)
.then(() =>
alert(
`Check your inbox - we sent an email to ${email}. It contains a magic link that will reauthenticate your account.`
)
)
.catch((e) => {
alert(`Error: ${e.message}`)
console.error(e)
})
return
}
try {
await reauthenticateWithCredential(
currentUser$.value,
credential as AuthCredential
)
} catch (e) {
console.error("error updating", e)
throw e
}
}
export function getGithubCredentialFromResult(result: UserCredential) {
return GithubAuthProvider.credentialFromResult(result)
}

View File

@@ -1,75 +0,0 @@
import { pipe } from "fp-ts/function"
import * as E from "fp-ts/Either"
import { BehaviorSubject } from "rxjs"
import { authIdToken$ } from "../fb/auth"
import { runGQLQuery } from "../backend/GQLClient"
import { GetUserInfoDocument } from "../backend/graphql"
/*
* This file deals with interfacing data provided by the
* Hoppscotch Backend server
*/
/**
* Defines the information provided about a user
*/
export interface UserInfo {
/**
* UID of the user
*/
uid: string
/**
* Displayable name of the user (or null if none available)
*/
displayName: string | null
/**
* Email of the user (or null if none available)
*/
email: string | null
/**
* URL to the profile photo of the user (or null if none available)
*/
photoURL: string | null
}
/**
* An observable subject onto the currently logged in user info (is null if not logged in)
*/
export const currentUserInfo$ = new BehaviorSubject<UserInfo | null>(null)
/**
* Initializes the currenUserInfo$ view and sets up its update mechanism
*/
export function initUserInfo() {
authIdToken$.subscribe((token) => {
if (token) {
updateUserInfo()
} else {
currentUserInfo$.next(null)
}
})
}
/**
* Runs the actual user info fetching
*/
async function updateUserInfo() {
const result = await runGQLQuery({
query: GetUserInfoDocument,
})
currentUserInfo$.next(
pipe(
result,
E.matchW(
() => null,
(x) => ({
uid: x.me.uid,
displayName: x.me.displayName ?? null,
email: x.me.email ?? null,
photoURL: x.me.photoURL ?? null,
})
)
)
)
}

View File

@@ -1,34 +0,0 @@
import { createApp } from "vue"
import { setupLocalPersistence } from "./newstore/localpersistence"
import { performMigrations } from "./helpers/migrations"
import { initializeFirebase } from "./helpers/fb"
import { initUserInfo } from "./helpers/teams/BackendUserInfo"
import { HOPP_MODULES } from "@modules/."
import "virtual:windi.css"
import "../assets/scss/themes.scss"
import "../assets/scss/styles.scss"
import "nprogress/nprogress.css"
import App from "./App.vue"
const app = createApp(App)
// Some basic work that needs to be done before module inits even
initializeFirebase()
setupLocalPersistence()
performMigrations()
initUserInfo()
HOPP_MODULES.forEach((mod) => mod.onVueAppInit?.(app))
app.mount("#app")
console.info(
"%cWe ❤︎ open source!",
"background-color:white;padding:8px 16px;border-radius:8px;font-size:32px;color:red;"
)
console.info(
"%cContribute: https://github.com/hoppscotch/hoppscotch",
"background-color:black;padding:4px 8px;border-radius:8px;font-size:16px;color:white;"
)

View File

@@ -1,70 +0,0 @@
<template>
<div class="flex flex-col items-center justify-center min-h-screen">
<div v-if="signingInWithEmail">
<SmartSpinner />
<div class="mt-2 text-sm text-secondaryLight">
{{ t("state.loading") }}
</div>
</div>
<div v-else>
<AppLogo class="w-16 h-16 rounded" />
</div>
<pre v-if="error" class="mt-4 text-secondaryLight">{{ error }}</pre>
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue"
import { useI18n } from "@composables/i18n"
import { initializeFirebase } from "~/helpers/fb"
import { isSignInWithEmailLink, signInWithEmailLink } from "~/helpers/fb/auth"
import { getLocalConfig, removeLocalConfig } from "~/newstore/localpersistence"
export default defineComponent({
setup() {
return {
t: useI18n(),
}
},
data() {
return {
signingInWithEmail: false,
error: null,
}
},
beforeMount() {
initializeFirebase()
},
async mounted() {
if (isSignInWithEmailLink(window.location.href)) {
this.signingInWithEmail = true
let email = getLocalConfig("emailForSignIn")
if (!email) {
email = window.prompt(
"Please provide your email for confirmation"
) as string
}
await signInWithEmailLink(email, window.location.href)
.then(() => {
removeLocalConfig("emailForSignIn")
this.$router.push({ path: "/" })
})
.catch((e) => {
this.signingInWithEmail = false
this.error = e.message
})
.finally(() => {
this.signingInWithEmail = false
})
}
},
})
</script>
<route lang="yaml">
meta:
layout: empty
</route>

View File

@@ -1,343 +0,0 @@
<template>
<AppPaneLayout layout-id="mqtt">
<template #primary>
<div
class="sticky top-0 z-10 flex flex-shrink-0 p-4 overflow-x-auto space-x-2 bg-primary"
>
<div class="inline-flex flex-1 space-x-2">
<input
id="mqtt-url"
v-model="url"
type="url"
autocomplete="off"
spellcheck="false"
class="w-full px-4 py-2 border rounded bg-primaryLight border-divider text-secondaryDark"
:placeholder="t('mqtt.url')"
:disabled="
connectionState === 'CONNECTED' ||
connectionState === 'CONNECTING'
"
@keyup.enter="isUrlValid ? toggleConnection() : null"
/>
<ButtonPrimary
id="connect"
:disabled="!isUrlValid"
class="w-32"
:label="
connectionState === 'DISCONNECTED'
? t('action.connect')
: t('action.disconnect')
"
:loading="connectionState === 'CONNECTING'"
@click="toggleConnection"
/>
</div>
<div class="flex space-x-2">
<input
id="mqtt-username"
v-model="username"
type="text"
spellcheck="false"
class="input"
:placeholder="t('authorization.username')"
/>
<input
id="mqtt-password"
v-model="password"
type="password"
spellcheck="false"
class="input"
:placeholder="t('authorization.password')"
/>
</div>
</div>
</template>
<template #secondary>
<RealtimeLog
:title="t('mqtt.log')"
:log="log"
@delete="clearLogEntries()"
/>
</template>
<template #sidebar>
<div class="flex items-center justify-between p-4">
<label for="pubTopic" class="font-semibold text-secondaryLight">
{{ t("mqtt.topic") }}
</label>
</div>
<div class="flex px-4">
<input
id="pubTopic"
v-model="pubTopic"
class="input"
:placeholder="t('mqtt.topic_name')"
type="text"
autocomplete="off"
spellcheck="false"
/>
</div>
<div class="flex items-center justify-between p-4">
<label for="mqtt-message" class="font-semibold text-secondaryLight">
{{ t("mqtt.communication") }}
</label>
</div>
<div class="flex px-4 space-x-2">
<input
id="mqtt-message"
v-model="message"
class="input"
type="text"
autocomplete="off"
:placeholder="t('mqtt.message')"
spellcheck="false"
/>
<ButtonPrimary
id="publish"
name="get"
:disabled="!canPublish"
:label="t('mqtt.publish')"
@click="publish"
/>
</div>
<div
class="flex items-center justify-between p-4 mt-4 border-t border-dividerLight"
>
<label for="subTopic" class="font-semibold text-secondaryLight">
{{ t("mqtt.topic") }}
</label>
</div>
<div class="flex px-4 space-x-2">
<input
id="subTopic"
v-model="subTopic"
type="text"
autocomplete="off"
:placeholder="t('mqtt.topic_name')"
spellcheck="false"
class="input"
/>
<ButtonPrimary
id="subscribe"
name="get"
:disabled="!canSubscribe"
:label="
subscriptionState ? t('mqtt.unsubscribe') : t('mqtt.subscribe')
"
reverse
@click="toggleSubscription"
/>
</div>
</template>
</AppPaneLayout>
</template>
<script setup lang="ts">
import { computed, onMounted, onUnmounted, ref, watch } from "vue"
import { debounce } from "lodash-es"
import { MQTTConnection, MQTTError } from "~/helpers/realtime/MQTTConnection"
import { useI18n } from "@composables/i18n"
import { useToast } from "@composables/toast"
import {
useReadonlyStream,
useStream,
useStreamSubscriber,
} from "@composables/stream"
import {
addMQTTLogLine,
MQTTConn$,
MQTTEndpoint$,
MQTTLog$,
setMQTTConn,
setMQTTEndpoint,
setMQTTLog,
} from "~/newstore/MQTTSession"
import RegexWorker from "@workers/regex?worker"
const t = useI18n()
const toast = useToast()
const { subscribeToStream } = useStreamSubscriber()
const url = useStream(MQTTEndpoint$, "", setMQTTEndpoint)
const log = useStream(MQTTLog$, [], setMQTTLog)
const socket = useStream(MQTTConn$, new MQTTConnection(), setMQTTConn)
const connectionState = useReadonlyStream(
socket.value.connectionState$,
"DISCONNECTED"
)
const subscriptionState = useReadonlyStream(
socket.value.subscriptionState$,
false
)
const isUrlValid = ref(true)
const pubTopic = ref("")
const subTopic = ref("")
const message = ref("")
const username = ref("")
const password = ref("")
let worker: Worker
const canPublish = computed(
() =>
pubTopic.value !== "" &&
message.value !== "" &&
connectionState.value === "CONNECTED"
)
const canSubscribe = computed(
() => subTopic.value !== "" && connectionState.value === "CONNECTED"
)
const workerResponseHandler = ({
data,
}: {
data: { url: string; result: boolean }
}) => {
if (data.url === url.value) isUrlValid.value = data.result
}
onMounted(() => {
worker = new RegexWorker()
worker.addEventListener("message", workerResponseHandler)
subscribeToStream(socket.value.event$, (event) => {
switch (event?.type) {
case "CONNECTING":
log.value = [
{
payload: `${t("state.connecting_to", { name: url.value })}`,
source: "info",
color: "var(--accent-color)",
ts: undefined,
},
]
break
case "CONNECTED":
log.value = [
{
payload: `${t("state.connected_to", { name: url.value })}`,
source: "info",
color: "var(--accent-color)",
ts: Date.now(),
},
]
toast.success(`${t("state.connected")}`)
break
case "MESSAGE_SENT":
addMQTTLogLine({
prefix: `${event.message.topic}`,
payload: event.message.message,
source: "client",
ts: Date.now(),
})
break
case "MESSAGE_RECEIVED":
addMQTTLogLine({
prefix: `${event.message.topic}`,
payload: event.message.message,
source: "server",
ts: event.time,
})
break
case "SUBSCRIBED":
addMQTTLogLine({
payload: subscriptionState.value
? `${t("state.subscribed_success", { topic: subTopic.value })}`
: `${t("state.unsubscribed_success", { topic: subTopic.value })}`,
source: "server",
ts: event.time,
})
break
case "SUBSCRIPTION_FAILED":
addMQTTLogLine({
payload: subscriptionState.value
? `${t("state.subscribed_failed", { topic: subTopic.value })}`
: `${t("state.unsubscribed_failed", { topic: subTopic.value })}`,
source: "server",
ts: event.time,
})
break
case "ERROR":
addMQTTLogLine({
payload: getI18nError(event.error),
source: "info",
color: "#ff5555",
ts: event.time,
})
break
case "DISCONNECTED":
addMQTTLogLine({
payload: t("state.disconnected_from", { name: url.value }).toString(),
source: "info",
color: "#ff5555",
ts: event.time,
})
toast.error(`${t("state.disconnected")}`)
break
}
})
})
const debouncer = debounce(function () {
worker.postMessage({ type: "ws", url: url.value })
}, 1000)
watch(url, (newUrl) => {
if (newUrl) debouncer()
})
onUnmounted(() => {
worker.terminate()
})
// METHODS
const toggleConnection = () => {
// If it is connecting:
if (connectionState.value === "DISCONNECTED") {
return socket.value.connect(url.value, username.value, password.value)
}
// Otherwise, it's disconnecting.
socket.value.disconnect()
}
const publish = () => {
socket.value?.publish(pubTopic.value, message.value)
}
const toggleSubscription = () => {
if (subscriptionState.value) {
socket.value.unsubscribe(subTopic.value)
} else {
socket.value.subscribe(subTopic.value)
}
}
const getI18nError = (error: MQTTError): string => {
if (typeof error === "string") return error
switch (error.type) {
case "CONNECTION_NOT_ESTABLISHED":
return t("state.connection_lost").toString()
case "SUBSCRIPTION_FAILED":
return t("state.mqtt_subscription_failed", {
topic: error.topic,
}).toString()
case "PUBLISH_ERROR":
return t("state.publish_error", { topic: error.topic }).toString()
case "CONNECTION_LOST":
return t("state.connection_lost").toString()
case "CONNECTION_FAILED":
return t("state.connection_failed").toString()
default:
return t("state.disconnected_from", { name: url.value }).toString()
}
}
const clearLogEntries = () => {
log.value = []
}
</script>

View File

@@ -36,6 +36,8 @@ module.exports = {
"vue/no-side-effects-in-computed-properties": "off",
"import/no-named-as-default": "off",
"import/no-named-as-default-member": "off",
"@typescript-eslint/no-unused-vars":
process.env.HOPP_LINT_FOR_PROD === "true" ? "error" : "warn",
"@typescript-eslint/no-non-null-assertion": "off",
"@typescript-eslint/no-explicit-any": "off",
"import/default": "off",

View File

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 383 B

View File

Before

Width:  |  Height:  |  Size: 571 B

After

Width:  |  Height:  |  Size: 571 B

View File

Before

Width:  |  Height:  |  Size: 555 B

After

Width:  |  Height:  |  Size: 555 B

View File

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 378 B

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 311 B

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 504 B

After

Width:  |  Height:  |  Size: 504 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 398 B

After

Width:  |  Height:  |  Size: 398 B

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,570 @@
* {
@apply backface-hidden;
@apply before:backface-hidden;
@apply after:backface-hidden;
@apply selection:bg-accentDark;
@apply selection:text-accentContrast;
}
:root {
@apply antialiased;
accent-color: var(--accent-color);
font-variant-ligatures: common-ligatures;
}
::-webkit-scrollbar-track {
@apply bg-transparent;
@apply border-solid border-l border-dividerLight border-t-0 border-b-0 border-r-0;
}
::-webkit-scrollbar-thumb {
@apply bg-divider bg-clip-content;
@apply rounded-full;
@apply border-solid border-transparent border-4;
@apply hover:bg-dividerDark;
@apply hover:bg-clip-content;
}
::-webkit-scrollbar {
@apply w-4;
@apply h-0;
}
input::placeholder,
textarea::placeholder,
.cm-placeholder {
@apply text-secondary;
@apply opacity-35;
}
input,
textarea {
@apply text-secondaryDark;
@apply font-medium;
}
html {
scroll-behavior: smooth;
}
body {
@apply bg-primary;
@apply text-secondary text-body;
@apply font-medium;
@apply select-none;
@apply overflow-x-hidden;
@apply leading-body;
animation: fade 300ms forwards;
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
}
@keyframes fade {
0% {
@apply opacity-0;
}
100% {
@apply opacity-100;
}
}
.fade-enter-active,
.fade-leave-active {
@apply transition-opacity;
}
.fade-enter-from,
.fade-leave-to {
@apply opacity-0;
}
.slide-enter-active,
.slide-leave-active {
@apply transition;
@apply duration-300;
}
.slide-enter-from,
.slide-leave-to {
@apply transform;
@apply translate-x-full;
}
.bounce-enter-active,
.bounce-leave-active {
@apply transition;
}
.bounce-enter-from,
.bounce-leave-to {
@apply transform;
@apply scale-95;
}
.svg-icons {
@apply flex-shrink-0;
@apply overflow-hidden;
height: var(--line-height-body);
width: var(--line-height-body);
}
a {
@apply inline-flex;
@apply text-current;
@apply no-underline;
@apply transition;
@apply leading-body;
@apply focus:outline-none;
&.link {
@apply items-center;
@apply py-0.5 px-1;
@apply -my-0.5 -mx-1;
@apply text-accent;
@apply rounded;
@apply hover:text-accentDark;
@apply focus-visible:ring;
@apply focus-visible:ring-accent;
@apply focus-visible:text-accentDark;
}
}
.cm-tooltip {
.tippy-box {
@apply shadow-none;
@apply fixed;
@apply inline-flex;
@apply -mt-8;
}
}
.tippy-box[data-theme~="tooltip"] {
@apply bg-tooltip;
@apply border-solid border-tooltip;
@apply rounded;
@apply shadow;
.tippy-content {
@apply flex;
@apply text-tiny text-primary;
@apply font-semibold;
@apply py-1 px-2;
@apply truncate;
@apply leading-normal;
@apply items-center;
kbd {
@apply hidden;
@apply font-sans;
@apply bg-gray-500/45;
@apply text-primaryLight;
@apply rounded-sm;
@apply px-1;
@apply my-0 ml-1;
@apply truncate;
@apply sm:inline-flex;
}
.env-icon {
@apply transition;
@apply inline-flex;
@apply items-center;
}
}
.tippy-svg-arrow {
svg:first-child {
@apply fill-tooltip;
}
svg:last-child {
@apply fill-tooltip;
}
}
}
.tippy-box[data-theme~="popover"] {
@apply bg-popover;
@apply border-solid border-dividerDark;
@apply rounded;
@apply shadow-lg;
.tippy-content {
@apply flex flex-col;
@apply max-h-56;
@apply items-stretch;
@apply overflow-y-auto;
@apply text-secondary text-body;
@apply p-2;
@apply leading-normal;
@apply focus:outline-none;
scroll-behavior: smooth;
}
.tippy-svg-arrow {
svg:first-child {
@apply fill-dividerDark;
}
svg:last-child {
@apply fill-popover;
}
}
}
[data-v-tippy] {
@apply flex flex-1;
}
[interactive] > div {
@apply flex flex-1;
@apply h-full;
}
hr {
@apply border-b border-dividerLight;
@apply my-2;
}
.heading {
@apply font-bold;
@apply text-secondaryDark text-lg;
@apply tracking-tight;
}
.input,
.select,
.textarea {
@apply flex;
@apply w-full;
@apply py-2 px-4;
@apply bg-transparent;
@apply rounded;
@apply text-secondaryDark;
@apply border border-divider;
@apply focus-visible:border-dividerDark;
}
input,
select,
textarea,
button {
@apply truncate;
@apply transition;
@apply text-body;
@apply leading-body;
@apply focus:outline-none;
@apply disabled:cursor-not-allowed;
}
.input[type="file"],
.input[type="radio"],
#installPWA {
@apply hidden;
}
.floating-input ~ label {
@apply absolute;
@apply px-2 py-0.5;
@apply m-2;
@apply rounded;
@apply transition;
@apply origin-top-left;
}
.floating-input:focus-within ~ label,
.floating-input:not(:placeholder-shown) ~ label {
@apply bg-primary;
@apply transform;
@apply origin-top-left;
@apply scale-75;
@apply translate-x-1 -translate-y-4;
}
.floating-input:focus-within ~ label {
@apply text-secondaryDark;
}
.floating-input ~ .end-actions {
@apply absolute;
@apply right-0.2;
@apply inset-y-0;
@apply flex;
@apply items-center;
}
.floating-input:has(~ .end-actions) {
@apply pr-12;
}
pre.ace_editor {
@apply font-mono;
@apply resize-none;
@apply z-0;
}
.select {
@apply appearance-none;
@apply cursor-pointer;
&::-ms-expand {
@apply hidden;
}
}
.select-wrapper {
@apply flex flex-1;
@apply relative;
@apply after:absolute;
@apply after:flex;
@apply after:inset-y-0;
@apply after:items-center;
@apply after:justify-center;
@apply after:pointer-events-none;
@apply after:font-icon;
@apply after:text-secondaryLight;
@apply after:right-3;
@apply after:content-["\e313"];
}
.info-response {
@apply text-pink-500;
}
.success-response {
@apply text-green-500;
}
.redir-response {
@apply text-yellow-500;
}
.cl-error-response {
@apply text-red-500;
}
.sv-error-response {
@apply text-red-600;
}
.missing-data-response {
@apply text-secondaryLight;
}
.toasted-container {
@apply max-w-md;
.toasted {
&.toasted-primary {
@apply px-4 py-2;
@apply bg-tooltip;
@apply border-secondaryDark;
@apply text-primary text-body;
@apply justify-between;
@apply shadow-lg;
@apply font-semibold;
@apply transition;
@apply leading-body;
@apply sm:rounded;
@apply sm:border;
.action {
@apply relative;
@apply flex flex-shrink-0;
@apply text-body;
@apply px-4;
@apply my-1;
@apply ml-auto;
@apply normal-case;
@apply font-semibold;
@apply leading-body;
@apply tracking-normal;
@apply rounded;
@apply last:ml-4;
@apply sm:ml-8;
@apply before:absolute;
@apply before:bg-current;
@apply before:opacity-10;
@apply before:inset-0;
@apply before:transition;
@apply before:content-DEFAULT;
@apply hover:no-underline;
@apply hover:before:opacity-20;
}
}
&.info {
@apply bg-accent;
@apply text-accentContrast;
@apply border-accentDark;
}
&.error {
@apply bg-red-200;
@apply text-red-800;
@apply border-red-400;
}
&.success {
@apply bg-green-200;
@apply text-green-800;
@apply border-green-400;
}
}
}
.smart-splitter .splitpanes__splitter {
@apply relative;
@apply bg-primaryLight;
@apply before:absolute;
@apply before:inset-0;
@apply before:bg-accentLight;
@apply before:opacity-0;
@apply before:z-20;
@apply before:transition;
@apply before:content-DEFAULT;
@apply after:absolute;
@apply after:inset-0;
@apply after:z-20;
@apply after:transition;
@apply after:flex;
@apply after:items-center;
@apply after:justify-center;
@apply after:text-dividerDark;
@apply after:font-icon;
@apply hover:before:opacity-100;
@apply hover:after:text-accentDark;
}
.no-splitter .splitpanes__splitter {
@apply relative;
@apply bg-primaryLight;
}
.smart-splitter.splitpanes--vertical > .splitpanes__splitter {
@apply w-1;
@apply before:-left-0.5;
@apply before:-right-0.5;
@apply before:h-full;
@apply after:content-["\e5d4"];
}
.smart-splitter.splitpanes--horizontal > .splitpanes__splitter {
@apply h-1;
@apply before:-top-0.5;
@apply before:-bottom-0.5;
@apply before:w-full;
@apply after:content-["\e5d3"];
}
.no-splitter.splitpanes--vertical > .splitpanes__splitter {
@apply w-0.5;
@apply pointer-events-none;
}
.no-splitter.splitpanes--horizontal > .splitpanes__splitter {
@apply h-0.5;
@apply pointer-events-none;
}
.cm-focused {
@apply select-auto;
@apply outline-none #{!important};
.cm-activeLine {
@apply bg-primaryLight;
}
.cm-activeLineGutter {
@apply bg-primaryDark;
}
}
.cm-editor {
.cm-line::selection {
@apply bg-accentDark #{!important};
@apply text-accentContrast #{!important};
}
.cm-line ::selection {
@apply bg-accentDark #{!important};
@apply text-accentContrast #{!important};
}
}
.shortcut-key {
@apply inline-flex;
@apply font-sans;
@apply text-tiny;
@apply bg-divider;
@apply rounded;
@apply ml-2;
@apply px-1;
@apply min-w-5;
@apply min-h-5;
@apply items-center;
@apply justify-center;
@apply border border-dividerDark;
@apply shadow-sm;
@apply <sm:hidden;
}
.capitalize-first {
@apply first-letter:capitalize;
}
details {
@apply select-none;
}
details summary::-webkit-details-marker {
@apply hidden;
}
details summary .indicator {
@apply transition;
}
details[open] summary .indicator {
@apply transform;
@apply rotate-90;
}
@media (max-width: 767px) {
main {
margin-bottom: env(safe-area-inset-bottom);
}
}
.env-highlight {
@apply text-accentContrast;
&.env-found {
@apply bg-accentDark;
@apply hover:bg-accent;
}
&.env-not-found {
@apply bg-red-500;
@apply hover:bg-red-600;
}
}
#nprogress .bar {
@apply bg-accent #{!important};
}
.color-picker[type="color"] {
@apply appearance-none;
}
.color-picker[type="color"]::-webkit-color-swatch-wrapper {
@apply rounded;
@apply p-0;
}
.color-picker[type="color"]::-webkit-color-swatch {
@apply rounded;
@apply border-0;
}

View File

@@ -1,5 +1,6 @@
overwrite: true
schema: https://api.hoppscotch.io/graphql
schema:
- ${VITE_BACKEND_GQL_URL}
generates:
src/helpers/backend/graphql.ts:
documents: "src/**/*.graphql"

View File

@@ -78,6 +78,12 @@
"iso": "he-HE",
"name": "עִברִית"
},
{
"code": "hi",
"file": "hi.json",
"iso": "hi-HI",
"name": "हिन्दी"
},
{
"code": "hu",
"file": "hu.json",

View File

@@ -7,6 +7,7 @@
"clear_all": "Maak alles skoon",
"close": "Close",
"connect": "Koppel",
"connecting": "Connecting",
"copy": "Kopieer",
"delete": "Vee uit",
"disconnect": "Ontkoppel",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Redigeer",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Gaan terug",
"group_by": "Group by",
"label": "Etiket",
"learn_more": "Leer meer",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Soek",
"send": "Stuur",
"start": "Begin",
"starting": "Starting",
"stop": "Stop",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Span is leeg",
"parameters": "Hierdie versoek het geen parameters nie",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokolle is leeg",
"schema": "Koppel aan 'n GraphQL -eindpunt",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Spannaam leeg",
"teams": "Spanne is leeg",
"tests": "Daar is geen toetse vir hierdie versoek nie"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Bewerk omgewing",
"invalid_name": "Gee 'n geldige naam vir die omgewing",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nuwe omgewing",
"no_environment": "Geen omgewing nie",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Kies omgewing",
"team_environments": "Team Environments",
"title": "Omgewings",
"updated": "Environment updation",
"variable_list": "Veranderlike lys"
@@ -197,6 +203,9 @@
"browser_support_sse": "Dit lyk nie asof hierdie blaaier ondersteuning vir bedieners gestuurde geleenthede het nie.",
"check_console_details": "Kyk na die konsole -log vir meer inligting.",
"curl_invalid_format": "cURL is nie behoorlik geformateer nie",
"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.",
"empty_req_name": "Leë versoeknaam",
"f12_details": "(F12 vir meer inligting)",
"gql_prettify_invalid_query": "Kon nie 'n ongeldige navraag mooi maak nie, los sintaksisfoute op en probeer weer",
@@ -222,6 +231,11 @@
"require_github": "Teken in met GitHub om 'n geheime idee te skep",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Vouer geskep",
"edit": "Wysig gids",
@@ -235,6 +249,10 @@
"schema": "Skema",
"subscriptions": "Inskrywings"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installeer toep",
"login": "Teken aan",
@@ -298,10 +316,28 @@
"import_export": "Invoer uitvoer"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Kommunikasie",
"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",
"log": "Meld",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Boodskap",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publiseer",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Teken in",
"topic": "Onderwerp",
"topic_name": "Onderwerpnaam",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Aksent kleur",
"account": "Rekening",
"account_deleted": "Your account has been deleted",
"account_description": "Pas u rekeninginstellings aan.",
"account_email_description": "Jou primêre e -posadres.",
"account_name_description": "Dit is u vertoonnaam.",
@@ -411,6 +449,8 @@
"change_font_size": "Verander lettergrootte",
"choose_language": "Kies taal",
"dark_mode": "Donker",
"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",
"experiments": "Eksperimente",
"experiments_notice": "Dit is 'n versameling eksperimente waaraan ons werk, wat nuttig, pret of beide kan wees. Hulle is nie finaal nie en is moontlik nie stabiel nie, dus moenie paniekerig raak as iets te vreemd gebeur nie. Skakel net die ding uit. Grappies eenkant,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript -kode",

View File

@@ -7,6 +7,7 @@
"clear_all": "امسح الكل",
"close": "Close",
"connect": "الاتصال",
"connecting": "Connecting",
"copy": "نسخ",
"delete": "حذف",
"disconnect": "قطع الاتصال",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "كرر",
"edit": "يحرر",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "عد",
"group_by": "Group by",
"label": "ملصق",
"learn_more": "اقرأ أكثر",
"less": "اقل",
@@ -35,6 +37,7 @@
"search": "بحث",
"send": "ارسل",
"start": "ابدأ",
"starting": "Starting",
"stop": "قف",
"to_close": "لإغلاء",
"to_navigate": "للإنتقال",
@@ -77,7 +80,7 @@
"status": "حالة",
"status_description": "Check the status of the website",
"terms_and_privacy": "الشروط والخصوصية",
"twitter": "تويتر",
"twitter": "Twitter",
"type_a_command_search": "اكتب أمرًا أو ابحث ...",
"we_use_cookies": "نحن نستخدم ملفات تعريف الارتباط",
"whats_new": "ما هو الجديد؟",
@@ -172,6 +175,7 @@
"protocols": "البروتوكولات فارغة",
"schema": "اتصل بنقطة نهاية GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "اسم الفريق فارغ",
"teams": "الفرق فارغة",
"tests": "لا توجد اختبارات لهذا الطلب"
@@ -184,11 +188,13 @@
"deleted": "حذف بيئة العمل",
"edit": "تحرير البيئة",
"invalid_name": "الرجاء تقديم اسم صالح للبيئة",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "بيئة جديدة",
"no_environment": "لا بيئة",
"no_environment_description": "لم يتم اختيار أي بيئة عمل. اختر ما تريد فعله بالمتغيرات التالية.",
"select": "حدد البيئة",
"team_environments": "Team Environments",
"title": "البيئات",
"updated": "تحديث بيئة العمل",
"variable_list": "قائمة متغيرة"
@@ -197,6 +203,9 @@
"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.",
"empty_req_name": "اسم الطلب فارغ",
"f12_details": "(للحصول على تفاصيل F12)",
"gql_prettify_invalid_query": "تعذر تحسين استعلام غير صالح وحل أخطاء بنية الاستعلام وحاول مرة أخرى",
@@ -222,6 +231,11 @@
"require_github": "تسجيل الدخول باستخدام GitHub لإنشاء جوهر سري",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "تم إنشاء المجلد",
"edit": "تحرير المجلد",
@@ -235,6 +249,10 @@
"schema": "مخطط",
"subscriptions": "الاشتراكات"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "تثبيت التطبيق",
"login": "تسجيل الدخول",
@@ -298,10 +316,28 @@
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "ينشر",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "يشترك",
"topic": "عنوان",
"topic_name": "اسم الموضوع",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "إعدادات التطبيق",
"default_hopp_displayname": "Unnamed User",
"editor": "محرر",
"editor_description": "المحررين يمكنهم اضافة و تعديل و حذف الطلبات.",
"email_verification_mail": "تم إرسال رابط التحقق إلى بريدك الإلكتروني. الرجاء الضغط على الرابط لتأكيد بريدك الإلكتروني.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "لون التمييز",
"account": "حساب",
"account_deleted": "Your account has been deleted",
"account_description": "تخصيص إعدادات حسابك.",
"account_email_description": "عنوان بريدك الإلكتروني الأساسي.",
"account_name_description": "هذا هو اسم العرض الخاص بك.",
@@ -411,6 +449,8 @@
"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.",
"expand_navigation": "توسيع التنقل",
"experiments": "التجارب",
"experiments_notice": "هذه مجموعة من التجارب التي نعمل عليها والتي قد تكون مفيدة ، أو ممتعة ، أو كليهما ، أو لا شيء. إنها ليست نهائية وقد لا تكون مستقرة ، لذلك إذا حدث شيء غريب للغاية ، فلا داعي للذعر. فقط قم بإيقاف تشغيل الشيء. النكات جانبا،",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "لقد أرسلنا رابط دعوة لجميع المدعوين!",
"we_sent_invite_link_description": "اطلب من جميع المدعوين التحقق من صندوق الوارد الخاص بهم. انقر على الرابط للانضمام إلى الفريق."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "فشل التجربة",
"javascript_code": "كود جافا سكريبت",

View File

@@ -7,6 +7,7 @@
"clear_all": "Neteja-ho tot",
"close": "Close",
"connect": "Connectar",
"connecting": "Connecting",
"copy": "Copiar",
"delete": "Eliminar",
"disconnect": "Desconnectar",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicar",
"edit": "Editar",
"filter_response": "Filtrar resposta",
"filter": "Filtrar resposta",
"go_back": "Tornar",
"group_by": "Group by",
"label": "Etiquetar",
"learn_more": "Aprèn més",
"less": "Menys",
@@ -35,6 +37,7 @@
"search": "Cercar",
"send": "Enviar",
"start": "Començar",
"starting": "Starting",
"stop": "Aturar",
"to_close": "Tancar",
"to_navigate": "Navegar",
@@ -172,6 +175,7 @@
"protocols": "Els protocols estan buits",
"schema": "Connecta't a un endpoint GraphQL",
"shortcodes": "Els shortcodes estan buits",
"subscription": "Subscriptions are empty",
"team_name": "El nom de l'equip és buit",
"teams": "Els equips estan buits",
"tests": "No hi ha proves per a aquesta sol·licitud"
@@ -184,11 +188,13 @@
"deleted": "Entorn eliminat",
"edit": "Editar l'entorn",
"invalid_name": "Proporcioneu un nom vàlid per a l'entorn",
"my_environments": "My Environments",
"nested_overflow": "Les variables d'entorn niuades estan limitades a 10 nivells",
"new": "Nou entorn",
"no_environment": "Sense entorn",
"no_environment_description": "No s'ha seleccionat cap entorn. Trieu què voleu fer amb les variables següents.",
"select": "Seleccioneu un entorn",
"team_environments": "Team Environments",
"title": "Entorns",
"updated": "Entorn actualitzat",
"variable_list": "Llista de variables"
@@ -197,6 +203,9 @@
"browser_support_sse": "Sembla que aquest navegador no és compatible amb els Esdeveniments Enviats pel Servidor (Server Sent Events).",
"check_console_details": "Consulta el registre de la consola per obtenir més informació.",
"curl_invalid_format": "cURL no està formatat correctament",
"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.",
"empty_req_name": "Nom de la sol·licitud buida",
"f12_details": "(F12 per obtenir més informació)",
"gql_prettify_invalid_query": "No s'ha pogut definir una consulta no vàlida, resoldre els errors de sintaxi de la consulta i tornar-ho a provar",
@@ -222,6 +231,11 @@
"require_github": "Inicieu la sessió amb GitHub per crear un Gisst secret",
"title": "Exportar"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "S'ha creat la carpeta",
"edit": "Editar la carpeta",
@@ -235,6 +249,10 @@
"schema": "Esquema",
"subscriptions": "Subscripcions"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Instal·la l'aplicació",
"login": "Iniciar Sessió",
@@ -298,10 +316,28 @@
"import_export": "Importar / Exportar"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Comunicació",
"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",
"log": "Registre",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Missatge",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publicar",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "subscriure's",
"topic": "Tema",
"topic_name": "Nom del Tema",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Configuració de l'aplicació",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Els editors poden afegir, editar i eliminar sol·licituds.",
"email_verification_mail": "S'ha enviat un correu electrònic de verificació a la vostra adreça electrònica. Feu clic a l'enllaç per verificar la vostra adreça de correu electrònic.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Color d'accent",
"account": "Compte",
"account_deleted": "Your account has been deleted",
"account_description": "Personalitzeu la configuració del compte.",
"account_email_description": "La vostra adreça de correu electrònic principal.",
"account_name_description": "Aquest és el vostre nom d'exposició",
@@ -411,6 +449,8 @@
"change_font_size": "Canvia la mida de la lletra",
"choose_language": "Tria l'idioma",
"dark_mode": "Fosc",
"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": "Ampliar navegació",
"experiments": "Experiments",
"experiments_notice": "Es tracta d'una col·lecció d'experiments en què estem treballant que poden resultar útils, divertits, o ambdós. No són finals i potser no són estables, de manera que si passa alguna cosa massa estrany, no us espanteu. Només cal que el desactiveu. Bromes a part,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Hem enviat un enllaç d'invitació a tots els convidats!",
"we_sent_invite_link_description": "Demaneu a tots els convidats que comprovin la seva safata d'entrada. Feu clic a l'enllaç per unir-vos a l'equip."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "prova fallada",
"javascript_code": "Codi JavaScript",

View File

@@ -1,40 +1,43 @@
{
"action": {
"autoscroll": "Autoscroll",
"autoscroll": "自动滚动",
"cancel": "取消",
"choose_file": "选择文件",
"clear": "清除",
"clear_all": "全部清除",
"close": "Close",
"close": "关闭",
"connect": "连接",
"connecting": "连接中",
"copy": "复制",
"delete": "删除",
"disconnect": "断开连接",
"dismiss": "忽略",
"dont_save": "不保存",
"download_file": "下载文件",
"drag_to_reorder": "Drag to reorder",
"drag_to_reorder": "拖曳以重新排序",
"duplicate": "复制",
"edit": "编辑",
"filter_response": "Filter response",
"filter": "过滤",
"go_back": "返回",
"group_by": "分组方式",
"label": "标签",
"learn_more": "了解更多",
"less": "更少",
"more": "更多",
"new": "新增",
"no": "否",
"open_workspace": "Open workspace",
"open_workspace": "打开工作区",
"paste": "粘贴",
"prettify": "美化",
"remove": "移除",
"restore": "恢复",
"save": "保存",
"scroll_to_bottom": "Scroll to bottom",
"scroll_to_top": "Scroll to top",
"scroll_to_bottom": "滚动至底部",
"scroll_to_top": "滚动至顶部",
"search": "搜索",
"send": "发送",
"start": "开始",
"starting": "正在开始",
"stop": "停止",
"to_close": "以关闭",
"to_navigate": "以定位",
@@ -171,7 +174,8 @@
"profile": "登录以查看你的个人档案",
"protocols": "协议为空",
"schema": "连接至 GraphQL 端点",
"shortcodes": "Shortcodes are empty",
"shortcodes": "Shortcodes 为空",
"subscription": "订阅为空",
"team_name": "团队名称为空",
"teams": "团队为空",
"tests": "没有针对该请求的测试"
@@ -184,11 +188,13 @@
"deleted": "环境已删除",
"edit": "编辑环境",
"invalid_name": "请提供有效的环境名称",
"my_environments": "我的环境",
"nested_overflow": "环境嵌套深度超过限制10层",
"new": "新建环境",
"no_environment": "无环境",
"no_environment_description": "没有选择环境。选择如何处理以下变量。",
"select": "选择环境",
"team_environments": "团队环境",
"title": "环境",
"updated": "环境已更新",
"variable_list": "变量列表"
@@ -197,6 +203,9 @@
"browser_support_sse": "该浏览器似乎不支持 SSE。",
"check_console_details": "检查控制台日志以获悉详情",
"curl_invalid_format": "cURL 格式不正确",
"danger_zone": "Danger zone",
"delete_account": "您的帐号目前为这些团队的拥有者:",
"delete_account_description": "您在删除帐号前必须先将您自己从团队中移除、转移拥有权,或是删除团队。",
"empty_req_name": "空请求名称",
"f12_details": "F12 详情)",
"gql_prettify_invalid_query": "无法美化无效的查询,处理查询语法错误并重试",
@@ -209,8 +218,8 @@
"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": "找不到此頁面",
"script_fail": "无法执行预请求脚本",
"something_went_wrong": "发生了一些错误",
"test_script_fail": "无法执行请求脚本"
@@ -220,7 +229,12 @@
"create_secret_gist": "创建私密 Gist",
"gist_created": "已创建 Gist",
"require_github": "使用 GitHub 登录以创建私密 Gist",
"title": "Export"
"title": "导出"
},
"filter": {
"all": "全部",
"none": "无",
"starred": "已加星号"
},
"folder": {
"created": "已创建文件夹",
@@ -235,6 +249,10 @@
"schema": "模式",
"subscriptions": "订阅"
},
"group": {
"time": "时间",
"url": "网址"
},
"header": {
"install_pwa": "安装应用",
"login": "登录",
@@ -276,10 +294,10 @@
"from_postman_description": "从 Postman 集合中导入",
"from_url": "从 URL 导入",
"gist_url": "输入 Gist URL",
"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",
"import_from_url_invalid_fetch": "无法从网址取得资料",
"import_from_url_invalid_file_format": "导入组合时发生错误",
"import_from_url_invalid_type": "不支持此类型。可接受的值为 'hoppscotch''openapi''postman''insomnia'",
"import_from_url_success": "已导入组合",
"json_description": "从 Hoppscotch 的集合文件导入JSON",
"title": "导入"
},
@@ -298,10 +316,28 @@
"import_export": "导入/导出"
},
"mqtt": {
"already_subscribed": "您已经订阅了此主題。",
"clean_session": "清除会话",
"clear_input": "清除输入",
"clear_input_on_send": "发送后清除输入",
"client_id": "客户端 ID",
"color": "选择颜色",
"communication": "通讯",
"connection_config": "连接配置",
"connection_not_authorized": "此MQTT连接未使用任何验证。",
"invalid_topic": "请提供该订阅的主题",
"keep_alive": "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": "新订阅",
"not_connected": "请先启动MQTT连接。",
"publish": "发布",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "订阅",
"topic": "主题",
"topic_name": "主题名称",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "应用设置",
"default_hopp_displayname": "未命名使用者",
"editor": "编辑者",
"editor_description": "编辑者可以添加、编辑和删除请求。",
"email_verification_mail": "确认邮件已发送至你的邮箱,请点击链接以验证你的电子邮箱。",
@@ -347,9 +384,9 @@
"choose_language": "选择语言",
"content_type": "内容类型",
"content_type_titles": {
"others": "Others",
"structured": "Structured",
"text": "Text"
"others": "其他",
"structured": "结构",
"text": "文字"
},
"copy_link": "复制链接",
"duration": "持续时间",
@@ -381,11 +418,11 @@
"type": "请求类型",
"url": "URL",
"variables": "变量",
"view_my_links": "View my links"
"view_my_links": "查看我的链接"
},
"response": {
"body": "响应体",
"filter_response_body": "Filter JSON response body (uses JSONPath syntax)",
"filter_response_body": "筛选JSON响应本体使用JSONPath语法",
"headers": "响应头",
"html": "HTML",
"image": "图像",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "强调色",
"account": "帐户",
"account_deleted": "已刪除您的账号",
"account_description": "自定义您的帐户设置。",
"account_email_description": "您的主要电子邮箱地址。",
"account_name_description": "这是您的显示名称。",
@@ -411,6 +449,8 @@
"change_font_size": "更改字体大小",
"choose_language": "选择语言",
"dark_mode": "暗色",
"delete_account": "刪除账号",
"delete_account_description": "一旦您删除了您的帐号,您的所有数据将被永久删除。此操作无法复原。",
"expand_navigation": "展开导航栏",
"experiments": "实验功能",
"experiments_notice": "下面是我们正在开发中的一些实验功能,这些功能可能会很有用,可能很有趣,又或者二者都是或都不是。这些功能并非最终版本且可能不稳定,所以如果发生了一些过于奇怪的事情,不要惊慌,关掉它们就好了。玩笑归玩笑,",
@@ -437,8 +477,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": "集合",
@@ -452,16 +492,16 @@
"theme_description": "自定义您的应用程序主题。",
"use_experimental_url_bar": "使用实验性的带有环境高亮的 URL 栏",
"user": "用户",
"verified_email": "Verified email",
"verified_email": "已验证电子邮件地址",
"verify_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": {
@@ -503,9 +543,9 @@
"title": "请求"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
"copy": "复制响应至剪贴板",
"download": "下载响应",
"title": "响应"
},
"theme": {
"black": "切换为黑色主题",
@@ -523,7 +563,7 @@
},
"socketio": {
"communication": "通讯",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"connection_not_authorized": "SocketIO连接未使用任何验证。",
"event_name": "事件名称",
"events": "事件",
"log": "日志",
@@ -541,9 +581,9 @@
"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": "已弃用",
@@ -558,17 +598,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": {
@@ -652,6 +692,11 @@
"we_sent_invite_link": "我们向所有受邀者发送了邀请链接!",
"we_sent_invite_link_description": "请所有受邀者检查他们的收件箱,点击链接以加入团队。"
},
"team_environment": {
"deleted": "已刪除环境",
"duplicate": "已复制环境",
"not_found": "找不到环境。"
},
"test": {
"failed": "测试失败",
"javascript_code": "JavaScript 代码",

View File

@@ -7,6 +7,7 @@
"clear_all": "Vymazat vše",
"close": "Close",
"connect": "Připojit",
"connecting": "Connecting",
"copy": "kopírovat",
"delete": "Vymazat",
"disconnect": "Odpojit",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Upravit",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Vrať se",
"group_by": "Group by",
"label": "Označení",
"learn_more": "Další informace",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Vyhledávání",
"send": "Poslat",
"start": "Start",
"starting": "Starting",
"stop": "Stop",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -77,7 +80,7 @@
"status": "Postavení",
"status_description": "Check the status of the website",
"terms_and_privacy": "Podmínky a soukromí",
"twitter": "Cvrlikání",
"twitter": "Twitter",
"type_a_command_search": "Zadejte příkaz nebo hledejte…",
"we_use_cookies": "Používáme cookies",
"whats_new": "Co je nového?",
@@ -168,10 +171,11 @@
"members": "Tým je prázdný",
"parameters": "Tento požadavek nemá žádné parametry",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokoly jsou prázdné",
"schema": "Připojte se ke koncovému bodu GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Název týmu prázdný",
"teams": "Týmy jsou prázdné",
"tests": "Pro tento požadavek neexistují žádné testy"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Upravit prostředí",
"invalid_name": "Zadejte platný název prostředí",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nové prostředí",
"no_environment": "Žádné prostředí",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Vyberte prostředí",
"team_environments": "Team Environments",
"title": "Prostředí",
"updated": "Environment updation",
"variable_list": "Seznam proměnných"
@@ -197,6 +203,9 @@
"browser_support_sse": "Zdá se, že tento prohlížeč nemá podporu událostí odeslaných serverem.",
"check_console_details": "Podrobnosti najdete v protokolu konzoly.",
"curl_invalid_format": "cURL nemá správný formát",
"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.",
"empty_req_name": "Název prázdného požadavku",
"f12_details": "(F12 pro podrobnosti)",
"gql_prettify_invalid_query": "Neplatný dotaz nelze předběžně upravit, vyřešit chyby syntaxe dotazu a zkusit to znovu",
@@ -222,6 +231,11 @@
"require_github": "Přihlaste se pomocí GitHub a vytvořte tajný seznam",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Složka vytvořena",
"edit": "Upravit složku",
@@ -235,6 +249,10 @@
"schema": "Schéma",
"subscriptions": "Předplatné"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Nainstalovat aplikaci",
"login": "Přihlásit se",
@@ -298,10 +316,28 @@
"import_export": "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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Sdělení",
"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",
"log": "Záznam",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Zpráva",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publikovat",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "předplatit",
"topic": "Téma",
"topic_name": "Název tématu",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Akcentní barva",
"account": "Účet",
"account_deleted": "Your account has been deleted",
"account_description": "Přizpůsobte si nastavení účtu.",
"account_email_description": "Vaše primární e -mailová adresa.",
"account_name_description": "Toto je vaše zobrazované jméno.",
@@ -411,6 +449,8 @@
"change_font_size": "Změnit velikost písma",
"choose_language": "Vyber jazyk",
"dark_mode": "Temný",
"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",
"experiments": "Experimenty",
"experiments_notice": "Toto je sbírka experimentů, na kterých pracujeme a které se mohou ukázat jako užitečné, zábavné, obojí, nebo ani jedno. Nejsou konečné a nemusí být stabilní, takže pokud se stane něco příliš divného, nepanikařte. Prostě vypni tu nebezpečnou věc. Vtipy stranou,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScriptový kód",

View File

@@ -7,6 +7,7 @@
"clear_all": "Slet alt",
"close": "Close",
"connect": "Opret forbindelse",
"connecting": "Connecting",
"copy": "Kopi",
"delete": "Slet",
"disconnect": "Koble fra",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Redigere",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Gå tilbage",
"group_by": "Group by",
"label": "Etiket",
"learn_more": "Lær mere",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Søg",
"send": "Sende",
"start": "Start",
"starting": "Starting",
"stop": "Hold op",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Holdet er tomt",
"parameters": "Denne anmodning har ingen parametre",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokoller er tomme",
"schema": "Opret forbindelse til et GraphQL -slutpunkt",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Teamnavn er tomt",
"teams": "Hold er tomme",
"tests": "Der er ingen test for denne anmodning"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Rediger miljø",
"invalid_name": "Angiv et gyldigt navn på miljøet",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nyt miljø",
"no_environment": "Intet miljø",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Vælg miljø",
"team_environments": "Team Environments",
"title": "Miljøer",
"updated": "Environment updation",
"variable_list": "Variabel liste"
@@ -197,6 +203,9 @@
"browser_support_sse": "Det ser ikke ud til, at denne browser understøtter Server Sent Events.",
"check_console_details": "Tjek konsollog for at få flere oplysninger.",
"curl_invalid_format": "cURL er ikke formateret korrekt",
"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.",
"empty_req_name": "Tom anmodningsnavn",
"f12_details": "(F12 for detaljer)",
"gql_prettify_invalid_query": "Kunne ikke prætificere en ugyldig forespørgsel, løse forespørgselssyntaksfejl og prøve igen",
@@ -222,6 +231,11 @@
"require_github": "Log ind med GitHub for at skabe hemmelig kerne",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Mappe oprettet",
"edit": "Rediger mappe",
@@ -235,6 +249,10 @@
"schema": "Skema",
"subscriptions": "Abonnementer"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installer app",
"login": "Log på",
@@ -298,10 +316,28 @@
"import_export": "Import Eksport"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Meddelelse",
"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",
"log": "Log",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Besked",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Offentliggøre",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Abonner",
"topic": "Emne",
"topic_name": "Emne navn",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Accent farve",
"account": "Konto",
"account_deleted": "Your account has been deleted",
"account_description": "Tilpas dine kontoindstillinger.",
"account_email_description": "Din primære e -mail -adresse.",
"account_name_description": "Dette er dit visningsnavn.",
@@ -411,6 +449,8 @@
"change_font_size": "Skift skriftstørrelse",
"choose_language": "Vælg sprog",
"dark_mode": "Mørk",
"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",
"experiments": "Eksperimenter",
"experiments_notice": "Dette er en samling af eksperimenter, vi arbejder på, der kan vise sig at være nyttige, sjove, begge dele eller ingen af dem. De er ikke endelige og er muligvis ikke stabile, så hvis der sker noget alt for mærkeligt, skal du ikke gå i panik. Bare sluk for dang -tingen. Vittigheder til side,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript -kode",

View File

@@ -7,6 +7,7 @@
"clear_all": "Alles zurücksetzen",
"close": "Close",
"connect": "Verbinden",
"connecting": "Connecting",
"copy": "Kopieren",
"delete": "Löschen",
"disconnect": "Trennen",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplizieren",
"edit": "Bearbeiten",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Zurück",
"group_by": "Group by",
"label": "Etikett",
"learn_more": "Mehr erfahren",
"less": "Weniger",
@@ -35,6 +37,7 @@
"search": "Suchen",
"send": "Senden",
"start": "Start",
"starting": "Starting",
"stop": "Stopp",
"to_close": "zum Schließen",
"to_navigate": "zum Navigieren",
@@ -172,6 +175,7 @@
"protocols": "Protokolle sind leer",
"schema": "Verbinden mit einem GraphQL-Endpunkt",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Teamname leer",
"teams": "Teams sind leer",
"tests": "Es gibt keine Tests für diese Anfrage"
@@ -184,11 +188,13 @@
"deleted": "Umgebung löschen",
"edit": "Umgebung bearbeiten",
"invalid_name": "Bitte gib einen gültigen Namen für die Umgebung an",
"my_environments": "My Environments",
"nested_overflow": "Verschachtelte Umgebungsvariablen sind limitert auf 10 Unterebenen",
"new": "Neue Umgebung",
"no_environment": "Keine Umgebung",
"no_environment_description": "Es wurden keine Umgebungen ausgewählt. Wähle aus, was mit den untenstehenden Variablen geschehen soll.",
"select": "Umgebung auswählen",
"team_environments": "Team Environments",
"title": "Umgebungen",
"updated": "Umgebung aktualisiert",
"variable_list": "Variablenliste"
@@ -197,6 +203,9 @@
"browser_support_sse": "Dieser Browser scheint keine Unterstützung für die vom Server gesendete Ereignisse zu haben.",
"check_console_details": "Einzelheiten findest Du in der Browser-Konsole.",
"curl_invalid_format": "cURL ist nicht richtig formatiert",
"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.",
"empty_req_name": "Leerer Anfragename",
"f12_details": "(F12 für Details)",
"gql_prettify_invalid_query": "Eine ungültige Abfrage konnte nicht verschönert werden. Fehler in der Abfragesyntax beheben und erneut versuchen",
@@ -222,6 +231,11 @@
"require_github": "Melde Dich bei GitHub an, um einen geheimen Gist zu erstellen",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Ordner erstellt",
"edit": "Ordner bearbeiten",
@@ -235,6 +249,10 @@
"schema": "Schema",
"subscriptions": "Abonnements"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "App installieren",
"login": "Anmeldung",
@@ -298,10 +316,28 @@
"import_export": "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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Kommunikation",
"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",
"log": "Protokoll",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Nachricht",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Veröffentlichen",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Abonnieren",
"topic": "Thema",
"topic_name": "Themenname",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App-Einstellungen",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editoren können neue Anfragen hinzufügen, bearbeiten und löschen.",
"email_verification_mail": "Eine Bestätigungsmail wurde an Deine primäre E-Mail-Adresse versendet. Bitte klicke auf den darin stehenden Link um Deine E-Mail-Adresse zu bestätigen.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Akzentfarbe",
"account": "Konto",
"account_deleted": "Your account has been deleted",
"account_description": "Passe Deine Kontoeinstellungen an.",
"account_email_description": "Deine primäre E-Mail-Adresse.",
"account_name_description": "Dies ist Dein Anzeigename.",
@@ -411,6 +449,8 @@
"change_font_size": "Schriftgröße ändern",
"choose_language": "Sprache wählen",
"dark_mode": "Dunkel",
"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": "Menüpunkte vergrößern",
"experiments": "Experimente",
"experiments_notice": "Dies ist eine Sammlung von Experimenten, an denen wir aktuell arbeiten und die sich als nützlich erweisen könnten, Spaß machen, beides oder keines von beiden. Sie sind nicht endgültig und möglicherweise nicht stabil. Wenn also etwas übermäßig Seltsames passiert, gerate nicht in Panik. Schalte das verdammte Ding einfach aus. Scherz beiseite,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Einladungen wurden an alle E-Mails verschickt!",
"we_sent_invite_link_description": "Bitte alle eingeladenen Personen, ihren Posteingang zu überprüfen. Klicke auf den Link, um dem Team beizutreten."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "Test fehlgeschlagen",
"javascript_code": "JavaScript-Code",

View File

@@ -7,6 +7,7 @@
"clear_all": "Τα καθαρίζω όλα",
"close": "Close",
"connect": "Συνδέω-συωδεομαι",
"connecting": "Connecting",
"copy": "αντίγραφο",
"delete": "Διαγράφω",
"disconnect": "Αποσυνδέω",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Επεξεργασία",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Πήγαινε πίσω",
"group_by": "Group by",
"label": "Επιγραφή",
"learn_more": "Μάθε περισσότερα",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Αναζήτηση",
"send": "Στείλετε",
"start": "Αρχή",
"starting": "Starting",
"stop": "Να σταματήσει",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -54,7 +57,7 @@
"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.",
"developer_option_description": "Εργαλεία για προγραμματιστές που βοηθάνε στην ανάπτυξη και συντήρηση του Hoppscotch.",
"discord": "Discord",
"documentation": "Τεκμηρίωση",
"github": "GitHub",
@@ -75,9 +78,9 @@
"shortcuts": "Συντομεύσεις",
"spotlight": "Προβολέας θέατρου",
"status": "Κατάσταση",
"status_description": "Check the status of the website",
"status_description": "Ελέγξτε το status της Ιστοσελίδας",
"terms_and_privacy": "Όροι και απόρρητο",
"twitter": "Κελάδημα",
"twitter": "Twitter",
"type_a_command_search": "Πληκτρολογήστε μια εντολή ή αναζήτηση…",
"we_use_cookies": "Χρησιμοποιούμε cookies",
"whats_new": "Τι νέα?",
@@ -89,7 +92,7 @@
"continue_with_email": "Συνεχίστε με το Email",
"continue_with_github": "Συνεχίστε με το GitHub",
"continue_with_google": "Συνεχίστε με την Google",
"continue_with_microsoft": "Continue with Microsoft",
"continue_with_microsoft": "Συνεχίστε με την Microsoft",
"email": "ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ",
"logged_out": "Αποσυνδέθηκα",
"login": "Σύνδεση",
@@ -158,62 +161,68 @@
"body": "Αυτό το αίτημα δεν έχει σώμα",
"collection": "Η συλλογή είναι άδεια",
"collections": "Οι συλλογές είναι άδειες",
"documentation": "Connect to a GraphQL endpoint to view documentation",
"endpoint": "Endpoint cannot be empty",
"documentation": "Συνδεθείτε σε ένα GraphQL endpoint για προβολή της τεκμηρίωσης",
"endpoint": "Το Endpoint δεν μπορεί να είναι άδειο",
"environments": "Τα περιβάλλοντα είναι άδεια",
"folder": "Ο φάκελος είναι άδειος",
"headers": "Αυτό το αίτημα δεν έχει κεφαλίδες",
"history": "Η ιστορία είναι άδεια",
"invites": "Invite list is empty",
"history": "Το ιστορικό είναι άδειο",
"invites": "Η λίστα προσκλήσεων είναι άδεια",
"members": "Η ομάδα είναι άδεια",
"parameters": "Αυτό το αίτημα δεν έχει παραμέτρους",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"pending_invites": "Δεν υπάρχουν εκκρεμείς προσκλήσεις για αυτή την ομάδα",
"profile": "Συνδεθείτε για προβολή του προφίλ σας",
"protocols": "Τα πρωτόκολλα είναι κενά",
"schema": "Συνδεθείτε σε ένα τελικό σημείο GraphQL",
"shortcodes": "Shortcodes are empty",
"shortcodes": "Τα Shortcodes είναι κενά",
"subscription": "Subscriptions are empty",
"team_name": "Το όνομα της ομάδας είναι κενό",
"teams": "Οι ομάδες είναι άδειες",
"tests": "Δεν υπάρχουν δοκιμές για αυτό το αίτημα"
},
"environment": {
"add_to_global": "Add to Global",
"added": "Environment addition",
"add_to_global": "Προσθήκη στο Global",
"added": "Προσθήκη Περιβάλλοντος",
"create_new": "Δημιουργήστε νέο περιβάλλον",
"created": "Environment created",
"deleted": "Environment deletion",
"created": "Το Περιβάλλον δημιουργήθηκε",
"deleted": "Διαγραφή Περιβάλλοντος",
"edit": "Επεξεργασία Περιβάλλοντος",
"invalid_name": "Καταχωρίστε ένα έγκυρο όνομα για το περιβάλλον",
"nested_overflow": "nested environment variables are limited to 10 levels",
"my_environments": "Τα Περιβάλλοντα μου",
"nested_overflow": "Οι 'φωλιασμένες' μεταβλητές περιβάλλοντος είναι περιορισμένες σε 10 επίπεδα",
"new": "Νέο Περιβάλλον",
"no_environment": "Χωρίς περιβάλλον",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"no_environment_description": "Δέν επιλέχθηκε κάποιο περιβάλλον. Διαλέξτε τι θέλετε να κάνετε με τις παρακάτω μεταβλητές.",
"select": "Επιλέξτε περιβάλλον",
"team_environments": "Περιβάλλοντα Ομάδας",
"title": "Περιβάλλοντα",
"updated": "Environment updation",
"updated": "Αναβάθμιση Περιβάλλοντος",
"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.",
"empty_req_name": "Όνομα κενού αιτήματος",
"f12_details": "(F12 για λεπτομέρειες)",
"gql_prettify_invalid_query": "Δεν ήταν δυνατή η προεπιλογή ενός μη έγκυρου ερωτήματος, η επίλυση σφαλμάτων σύνταξης ερωτήματος και η δοκιμή ξανά",
"incomplete_config_urls": "Incomplete configuration URLs",
"incorrect_email": "Incorrect email",
"invalid_link": "Invalid link",
"invalid_link_description": "The link you clicked is invalid or expired.",
"json_parsing_failed": "Invalid JSON",
"incomplete_config_urls": "Μη-ολοκληρωμένα URLs διαμόρφωσης",
"incorrect_email": "Λάθος email",
"invalid_link": "Μή έγκυρο link",
"invalid_link_description": "Ο σύνδεσμος που επιλέξατε έχει λήξει ή δεν είναι έγκυρος.",
"json_parsing_failed": "Μη έγκυρο JSON",
"json_prettify_invalid_body": "Δεν ήταν δυνατή η ομορφιά ενός μη έγκυρου σώματος, η επίλυση σφαλμάτων σύνταξης json και η προσπάθεια ξανά",
"network_error": "There seems to be a network error. Please try again.",
"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": "Αυτή η σελίδα δεν βρέθηκε",
"script_fail": "Δεν ήταν δυνατή η εκτέλεση του σεναρίου πριν από το αίτημα",
"something_went_wrong": "Κάτι πήγε στραβά",
"test_script_fail": "Could not execute post-request script"
"test_script_fail": "Δεν μπορεσε να εκτελεστεί το post-request script"
},
"export": {
"as_json": "Εξαγωγή ως JSON",
@@ -222,11 +231,16 @@
"require_github": "Συνδεθείτε με το GitHub για να δημιουργήσετε μυστική ουσία",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Ο φάκελος δημιουργήθηκε",
"edit": "Επεξεργασία φακέλου",
"invalid_name": "Καταχωρίστε ένα όνομα για το φάκελο",
"name_length_insufficient": "Folder name should be at least 3 characters long",
"name_length_insufficient": "Το όνομα του φακέλου πρέπει έχει μέγεθος τουλάχιστον 3 χαρακτήρες.",
"new": "Νέος φάκελος",
"renamed": "Ο φάκελος μετονομάστηκε"
},
@@ -235,6 +249,10 @@
"schema": "Σχήμα",
"subscriptions": "Συνδρομές"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Εγκατάσταση εφαρμογής",
"login": "Σύνδεση",
@@ -253,7 +271,7 @@
"tests": "Γράψτε ένα δοκιμαστικό σενάριο για να αυτοματοποιήσετε τον εντοπισμό σφαλμάτων."
},
"hide": {
"collection": "Collapse Collection Panel",
"collection": "Σύμπτυξη Panel Συλλογών",
"more": "Κρύψου περισσότερο",
"preview": "Απόκρυψη προεπισκόπησης",
"sidebar": "Απόκρυψη πλευρικής γραμμής"
@@ -263,32 +281,32 @@
"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 (YML/JSON)",
"from_postman": "Εισαγωγή από Postman",
"from_postman_description": "Εισαγωγή Συλλογής από Postman",
"from_url": "Εισαγωγή από URL",
"gist_url": "Εισαγάγετε Gist URL",
"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": "Εισαγωγή συλλογών αρχείο JSON Hoppscotch Collections",
"title": "Εισαγωγή"
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout",
"name": "Layout",
"row": "Horizontal layout",
"collapse_collection": "Σύμπτυξη ή επέκταση Συλλογών",
"collapse_sidebar": "Σύμπτυξη ή επέκταση του sidebar",
"column": "Κατακόρυφη Διάταξη",
"name": "Διάταξη",
"row": "Οριζόντια Διάταξη",
"zen_mode": "Λειτουργία Zen"
},
"modal": {
@@ -298,10 +316,28 @@
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "Δημοσιεύω",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Εγγραφείτε",
"topic": "Θέμα",
"topic_name": "Όνομα θέματος",
@@ -324,18 +360,19 @@
"snippets": "Αποσπάσματα"
},
"profile": {
"app_settings": "App Settings",
"app_settings": "Ρυθμίσεις Εφαρμογής",
"default_hopp_displayname": "Ανώνυμος Χρήστης",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
"no_permission": "You do not have permission to perform this action.",
"owner": "Owner",
"owner_description": "Owners can add, edit, and delete requests, collections and team members.",
"roles": "Roles",
"roles_description": "Roles are used to control access to the shared collections.",
"updated": "Profile updated",
"editor_description": "Οι Editors μπορούν να προσθέσουν, επεξεργαστούν και διαγράψουν αιτήματα.",
"email_verification_mail": "Έχει αποσταλεί ένα μήνυμα επιβεβαίωσης στην διεύθυνση email σας. Παρακαλούμε κάντε κλικ στο Link που περιέχει το email για να επιβεβαιώσετε την διεύθυνση email σας.",
"no_permission": "Δεν έχετε άδεια για την εκτέλεση αυτής της λειτουργίας.",
"owner": "Ιδιοκτήτης",
"owner_description": "Οι Ιδιοκτήτες μπορούν να προσθέσουν, επεξεργαστούν και διαγράψουν αιτήματα, συλλογές και μέλη ομάδων.",
"roles": "Ρόλοι",
"roles_description": "Οι ρόλοι χρησιμοποιούνται για να ελέγχεται η πρόσβαση και ο χειρισμός μιας κοινοποιημένης συλλογής.",
"updated": "Το προφίλ ενημερώθηκε",
"viewer": "Viewer",
"viewer_description": "Viewers can only view and use requests."
"viewer_description": "Οι Viewers μπορούν μόνο να δούν και χρησιμοποιήσουν αιτήματα."
},
"remove": {
"star": "Αφαίρεση αστεριού"
@@ -360,7 +397,7 @@
"invalid_name": "Καταχωρίστε ένα όνομα για το αίτημα",
"method": "Μέθοδος",
"name": "Αίτημα ονόματος",
"new": "New Request",
"new": "Νέο Αίτημα",
"override": "Override",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"overriden": "Overridden",
@@ -376,12 +413,12 @@
"save_as": "Αποθήκευση ως",
"saved": "Το αίτημα αποθηκεύτηκε",
"share": "Μερίδιο",
"share_description": "Share Hoppscotch with your friends",
"share_description": "Κοινοποίηση Hoppscotch στους φίλους σου",
"title": "Αίτηση",
"type": "Τύπος αιτήματος",
"url": "URL",
"variables": "Μεταβλητές",
"view_my_links": "View my links"
"view_my_links": "Προβολή των links μου"
},
"response": {
"body": "Σώμα απόκρισης",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Χρώμα προφοράς",
"account": "λογαριασμός",
"account_deleted": "Your account has been deleted",
"account_description": "Προσαρμόστε τις ρυθμίσεις του λογαριασμού σας.",
"account_email_description": "Η κύρια διεύθυνση email σας.",
"account_name_description": "Αυτό είναι το εμφανιζόμενο όνομά σας.",
@@ -411,14 +449,16 @@
"change_font_size": "Αλλαγή μεγέθους γραμματοσειράς",
"choose_language": "Διάλεξε γλώσσα",
"dark_mode": "Σκοτάδι",
"expand_navigation": "Expand navigation",
"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": "Επέκταση navigation",
"experiments": "Πειράματα",
"experiments_notice": "Αυτή είναι μια συλλογή πειραμάτων που δουλεύουμε και που μπορεί να αποδειχθούν χρήσιμα, διασκεδαστικά, και τα δύο ή κανένα από τα δύο. Δεν είναι οριστικά και μπορεί να μην είναι σταθερά, οπότε αν συμβεί κάτι υπερβολικά περίεργο, μην πανικοβληθείτε. Απλώς απενεργοποιήστε το πράγμα. Τα αστεία στην άκρη,",
"extension_ver_not_reported": "Δεν αναφέρεται",
"extension_version": "Έκταση επέκτασης",
"extensions": "Επεκτάσεις",
"extensions_use_toggle": "Χρησιμοποιήστε την επέκταση του προγράμματος περιήγησης για να στείλετε αιτήματα (εάν υπάρχουν)",
"follow": "Follow Us",
"follow": "Ακολούθησε Μας",
"font_size": "Μέγεθος γραμματοσειράς",
"font_size_large": "Μεγάλο",
"font_size_medium": "Μεσαίο",
@@ -429,17 +469,17 @@
"light_mode": "Φως",
"official_proxy_hosting": "Το Official Proxy φιλοξενείται από το Hoppscotch.",
"profile": "Profile",
"profile_description": "Update your profile details",
"profile_email": "Email address",
"profile_name": "Profile name",
"profile_description": "Ανανεώστε τις λεπτομέρειες του προφίλ σας",
"profile_email": "Διευθυνση Email",
"profile_name": "Όνομα Προφίλ",
"proxy": "Πληρεξούσιο",
"proxy_url": "URL διακομιστή μεσολάβησης",
"proxy_use_toggle": "Χρησιμοποιήστε το ενδιάμεσο διακομιστή μεσολάβησης για να στείλετε αιτήματα",
"read_the": "Διαβάστε το",
"reset_default": "Επαναφορά στο προκαθορισμένο",
"short_codes": "Short codes",
"short_codes_description": "Short codes which were created by you.",
"sidebar_on_left": "Sidebar on left",
"short_codes_description": "Short codes πυ δημιουργήσατε.",
"sidebar_on_left": "Sidebar στα αριστερά",
"sync": "Συγχρονίζω",
"sync_collections": "Συλλογές",
"sync_description": "Αυτές οι ρυθμίσεις συγχρονίζονται με το cloud.",
@@ -452,15 +492,15 @@
"theme_description": "Προσαρμόστε το θέμα της εφαρμογής σας.",
"use_experimental_url_bar": "Χρήση πειραματικής γραμμής URL με ανάδειξη περιβάλλοντος",
"user": "Χρήστης",
"verified_email": "Verified email",
"verify_email": "Verify email"
"verified_email": "Επαληθευμένο email",
"verify_email": "Επαλήθευση email"
},
"shortcodes": {
"actions": "Actions",
"actions": "Δράσεις",
"created_on": "Created on",
"deleted": "Shortcode deleted",
"deleted": "Το Shortcode διαγράφηκε",
"method": "Method",
"not_found": "Shortcode not found",
"not_found": "Το Shortcode δεν βρέθηκε",
"short_code": "Short code",
"url": "URL"
},
@@ -481,7 +521,7 @@
"documentation": "Μεταβείτε στη σελίδα Τεκμηρίωση",
"forward": "Προχωρήστε στην επόμενη σελίδα",
"graphql": "Μεταβείτε στη σελίδα GraphQL",
"profile": "Go to Profile page",
"profile": "Πάνε στην σελίδα του Προφίλ",
"realtime": "Μεταβείτε στη σελίδα σε πραγματικό χρόνο",
"rest": "Μεταβείτε στη σελίδα REST",
"settings": "Μεταβείτε στη σελίδα Ρυθμίσεις",
@@ -503,35 +543,35 @@
"title": "Αίτηση"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"copy": "Αντιγραφή response στο πρόχειρο",
"download": "Κατέβασμα response ώς αρχείο",
"title": "Response"
},
"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": "Επέκταση Collection Panel",
"more": "Δείτε περισσότερα",
"sidebar": "Εμφάνιση πλευρικής γραμμής"
},
"socketio": {
"communication": "Επικοινωνία",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"connection_not_authorized": "Η συγκεκριμένη σύνδεση SocketIO δεν χρησιμοποιεί αυθεντικοποίηση.",
"event_name": "Όνομα συμβάντος",
"events": "Εκδηλώσεις",
"log": "Κούτσουρο",
"log": "Logs",
"url": "URL"
},
"sse": {
"event_type": "Τύπος συμβάντος",
"log": "Κούτσουρο",
"log": "Logs",
"url": "URL"
},
"state": {
@@ -541,9 +581,9 @@
"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": "ΚΑΤΑΡΓΗΘΗΚΕ",
@@ -558,17 +598,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": {
@@ -604,59 +644,64 @@
"websocket": "WebSocket"
},
"team": {
"already_member": "You are already a member of this team. Contact your team owner.",
"already_member": "Είστε ήδη μέλος σε αυτή την ομάδα. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"create_new": "Δημιουργία νέας ομάδας",
"deleted": "Η ομάδα διαγράφηκε",
"edit": "Επεξεργασία ομάδας",
"email": "ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ",
"email_do_not_match": "Email doesn't match with your account details. Contact your team owner.",
"email_do_not_match": "Το Email δεν ταιριάζει με τις λεπτομέριες του προφιλ σας. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"exit": "Έξοδος από την ομάδα",
"exit_disabled": "Μόνο ο ιδιοκτήτης δεν μπορεί να αποχωρήσει από την ομάδα",
"invalid_email_format": "Η μορφή ηλεκτρονικού ταχυδρομείου δεν είναι έγκυρη",
"invalid_id": "Invalid team ID. Contact your team owner.",
"invalid_invite_link": "Invalid invite link",
"invalid_invite_link_description": "The link you followed is invalid. Contact your team owner.",
"invalid_id": "Μή εγκυρο αναγνωριστικό ομάδας. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"invalid_invite_link": "Μη έγκυρος σύνδεσμος πρόσκλησης",
"invalid_invite_link_description": "Ο σύνδεσμος πρόσκλησης δεν είναι έγκυρος. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"invalid_member_permission": "Δώστε έγκυρη άδεια στο μέλος της ομάδας",
"invite": "Invite",
"invite_more": "Invite more",
"invite_tooltip": "Invite people to this workspace",
"invited_to_team": "{owner} invited you to join {team}",
"join": "Invitation accepted",
"invite": "Πρόσκληση",
"invite_more": "Πρόσκληση περισσοτέρων",
"invite_tooltip": "Πρόσκληση χρηστών σε αυτό το workspace",
"invited_to_team": "{owner} σου έκανε πρόσκληση για να μπεις στην {team}",
"join": "Πρόσκληση Αποδεκτή",
"join_beta": "Εγγραφείτε στο πρόγραμμα beta για πρόσβαση σε ομάδες.",
"join_team": "Join {team}",
"joined_team": "You have joined {team}",
"joined_team_description": "You are now a member of this team",
"join_team": "Γίνε Μέλος {team}",
"joined_team": "Μπήκες στην ομάδα: {team}",
"joined_team_description": "Είστε πλέον μέλος αυτής της ομάδας",
"left": "Έφυγες από την ομάδα",
"login_to_continue": "Login to continue",
"login_to_continue_description": "You need to be logged in to join a team.",
"logout_and_try_again": "Logout and sign in with another account",
"member_has_invite": "This email ID already has an invite. Contact your team owner.",
"member_not_found": "Member not found. Contact your team owner.",
"login_to_continue": "Συνδέσου για να συνεχίσεις",
"login_to_continue_description": "Πρέπει να είσαι συνδεδεμένος για να μπεις σε κάποια ομάδα.",
"logout_and_try_again": "Αποσύνδεση και Σύνδεση με άλλο λογαριασμό",
"member_has_invite": "Αυτή η διεύθυνση email έχει ήδη πρόσκληση. This email ID already has an invite. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"member_not_found": "Το μέλος δεν βρέθηκε. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"member_removed": "Ο χρήστης καταργήθηκε",
"member_role_updated": "Οι ρόλοι των χρηστών ενημερώθηκαν",
"members": "Μέλη",
"name_length_insufficient": "Το όνομα της ομάδας πρέπει να έχει τουλάχιστον 6 χαρακτήρες",
"name_updated": "Team name updated",
"name_updated": "Το όνομα ομάδας ανανεώθηκε",
"new": "Νέα Ομάδα",
"new_created": "Δημιουργήθηκε νέα ομάδα",
"new_name": "Η νέα μου ομάδα",
"no_access": "Δεν έχετε πρόσβαση επεξεργασίας σε αυτές τις συλλογές",
"no_invite_found": "Invitation not found. Contact your team owner.",
"not_found": "Team not found. Contact your team owner.",
"not_valid_viewer": "You are not a valid viewer. Contact your team owner.",
"pending_invites": "Pending invites",
"no_invite_found": "Δέν βρέθηκε πρόσκληση. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"not_found": "Η ομάδα δεν βρέθηκε. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"not_valid_viewer": "Δεν είστε έγκυρος viewer. Επικοινωνήστε με τον Ιδιοκτήτη της Ομάδας.",
"pending_invites": "Εκκρεμης προσκλήσεις",
"permissions": "Άδειες",
"saved": "Η ομάδα σώθηκε",
"select_a_team": "Select a team",
"select_a_team": "Επιλογή ομάδας",
"title": "Της ομάδας",
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
"we_sent_invite_link": "Στείλαμε έναν σύνδεσμο πρόσκλησης σε όλους!",
"we_sent_invite_link_description": "Ζητήστε από όλους όσους στείλατε πρόσκληση να ελέγξουν τα email τους. Click στον σύνδεσμο για εισαγωγή στην ομάδα."
},
"team_environment": {
"deleted": "Το περιβάλλον διαγράφηκε",
"duplicate": "Το περιβάλλον αντιγράφηκε",
"not_found": "Το περιβάλλον δεν βρέθηκε."
},
"test": {
"failed": "test failed",
"failed": "Αποτυχία test",
"javascript_code": "Κώδικας JavaScript",
"learn": "Διαβάστε την τεκμηρίωση",
"passed": "test passed",
"passed": "Επιτυχία test",
"report": "Αναφορά δοκιμής",
"results": "Αποτελέσματα δοκιμών",
"script": "Γραφή",

View File

@@ -7,6 +7,7 @@
"clear_all": "Clear all",
"close": "Close",
"connect": "Connect",
"connecting": "Connecting",
"copy": "Copy",
"delete": "Delete",
"disconnect": "Disconnect",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Edit",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Go back",
"group_by": "Group by",
"label": "Label",
"learn_more": "Learn more",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Search",
"send": "Send",
"start": "Start",
"starting": "Starting",
"stop": "Stop",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Team is empty",
"parameters": "This request does not have any parameters",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protocols are empty",
"schema": "Connect to a GraphQL endpoint to view schema",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Team name empty",
"teams": "You don't belong to any teams",
"tests": "There are no tests for this request"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Edit Environment",
"invalid_name": "Please provide a name for the environment",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "New Environment",
"no_environment": "No environment",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Select environment",
"team_environments": "Team Environments",
"title": "Environments",
"updated": "Environment updated",
"variable_list": "Variable List"
@@ -197,6 +203,9 @@
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
"check_console_details": "Check console log for details.",
"curl_invalid_format": "cURL is not formatted properly",
"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.",
"empty_req_name": "Empty Request Name",
"f12_details": "(F12 for details)",
"gql_prettify_invalid_query": "Couldn't prettify an invalid query, solve query syntax errors and try again",
@@ -222,6 +231,11 @@
"require_github": "Login with GitHub to create secret gist",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Folder created",
"edit": "Edit Folder",
@@ -235,6 +249,10 @@
"schema": "Schema",
"subscriptions": "Subscriptions"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Install app",
"login": "Login",
@@ -298,10 +316,28 @@
"import_export": "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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "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",
"log": "Log",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Message",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publish",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Subscribe",
"topic": "Topic",
"topic_name": "Topic Name",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -353,7 +390,8 @@
},
"copy_link": "Copy link",
"duration": "Duration",
"enter_curl": "Enter cURL",
"enter_curl": "Enter cURL command",
"duplicated": "Request duplicated",
"generate_code": "Generate code",
"generated_code": "Generated code",
"header_list": "Header List",
@@ -403,6 +441,7 @@
"settings": {
"accent_color": "Accent color",
"account": "Account",
"account_deleted": "Your account has been deleted",
"account_description": "Customize your account settings.",
"account_email_description": "Your primary email address.",
"account_name_description": "This is your display name.",
@@ -411,6 +450,8 @@
"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",
"experiments": "Experiments",
"experiments_notice": "This is a collection of experiments we're working on that might turn out to be useful, fun, both, or neither. They're not final and may not be stable, so if something overly weird happens, don't panic. Just turn the dang thing off. Jokes aside, ",
@@ -418,7 +459,7 @@
"extension_version": "Extension Version",
"extensions": "Browser extension",
"extensions_use_toggle": "Use the browser extension to send requests (if present)",
"follow": "Follow Us",
"follow": "Follow us",
"font_size": "Font size",
"font_size_large": "Large",
"font_size_medium": "Medium",
@@ -524,7 +565,7 @@
"socketio": {
"communication": "Communication",
"connection_not_authorized": "This SocketIO connection does not use any authentication.",
"event_name": "Event Name",
"event_name": "Event/Topic Name",
"events": "Events",
"log": "Log",
"url": "URL"
@@ -652,6 +693,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript Code",

View File

@@ -5,19 +5,21 @@
"choose_file": "Seleccionar archivo",
"clear": "Limpiar",
"clear_all": "Limpiar todo",
"close": "Close",
"close": "Cerrar",
"connect": "Conectar",
"connecting": "Connecting",
"copy": "Copiar",
"delete": "Borrar",
"disconnect": "Desconectar",
"dismiss": "Descartar",
"dont_save": "Don't save",
"download_file": "Descargar archivo",
"drag_to_reorder": "Drag to reorder",
"drag_to_reorder": "Arrastrar para reordenar",
"duplicate": "Duplicar",
"edit": "Editar",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Volver",
"group_by": "Group by",
"label": "Etiqueta",
"learn_more": "Aprender más",
"less": "Menos",
@@ -35,6 +37,7 @@
"search": "Buscar",
"send": "Enviar",
"start": "Comenzar",
"starting": "Starting",
"stop": "Detener",
"to_close": "para cerrar",
"to_navigate": "para navegar",
@@ -171,7 +174,8 @@
"profile": "Iniciar sesión para ver tu perfil",
"protocols": "Los protocolos están vacíos",
"schema": "Conectarse a un punto final de GraphQL",
"shortcodes": "Shortcodes are empty",
"shortcodes": "Los shortcodes están vacíos",
"subscription": "Subscriptions are empty",
"team_name": "Nombre del equipo vacío",
"teams": "Los equipos están vacíos",
"tests": "No hay pruebas para esta petición"
@@ -184,11 +188,13 @@
"deleted": "Eliminar el entorno",
"edit": "Editar entorno",
"invalid_name": "Proporciona un nombre válido para el entorno.",
"my_environments": "My Environments",
"nested_overflow": "las variables de entorno anidadas están limitadas a 10 niveles",
"new": "Nuevo entorno",
"no_environment": "Sin entorno",
"no_environment_description": "No se ha seleccionado ningún entorno. Elije qué hacer con las siguientes variables.",
"select": "Seleccionar entorno",
"team_environments": "Team Environments",
"title": "Entornos",
"updated": "Actualización del entorno",
"variable_list": "Lista de variables"
@@ -197,6 +203,9 @@
"browser_support_sse": "Este navegador no parece ser compatible con los eventos enviados por el servidor.",
"check_console_details": "Consulta el registro de la consola para obtener más detalles.",
"curl_invalid_format": "cURL no está formateado correctamente",
"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.",
"empty_req_name": "Nombre de petición vacío",
"f12_details": "(F12 para más detalles)",
"gql_prettify_invalid_query": "No se puede aplicar embellecedor a una consulta no válida, resuelve los errores de sintaxis de la consulta y vuelve a intentarlo",
@@ -222,6 +231,11 @@
"require_github": "Iniciar sesión con GitHub para crear un Gist secreto",
"title": "Exportar"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Carpeta creada",
"edit": "Editar carpeta",
@@ -235,6 +249,10 @@
"schema": "Esquema",
"subscriptions": "Suscripciones"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Instalar aplicación",
"login": "Iniciar sesión",
@@ -298,10 +316,28 @@
"import_export": "Importación y exportación"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Comunicación",
"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",
"log": "Registro",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Mensaje",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publicar",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Suscribir",
"topic": "Tema",
"topic_name": "Nombre del tema",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Ajustes de la aplicación",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Los editores pueden añadir, editar y eliminar solicitudes.",
"email_verification_mail": "Se ha enviado un correo electrónico de verificación a tu dirección de correo electrónico. Haz clic en el enlace para verificar tu dirección de correo electrónico.",
@@ -381,7 +418,7 @@
"type": "Tipo de petición",
"url": "URL",
"variables": "Variables",
"view_my_links": "View my links"
"view_my_links": "Ver mis enlaces"
},
"response": {
"body": "Cuerpo de respuesta",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Color de acentuación",
"account": "Cuenta",
"account_deleted": "Your account has been deleted",
"account_description": "Personaliza la configuración de tu cuenta.",
"account_email_description": "Tu dirección de correo electrónico principal.",
"account_name_description": "Este es tu nombre para mostrar.",
@@ -411,6 +449,8 @@
"change_font_size": "Cambiar tamaño de fuente",
"choose_language": "Elegir idioma",
"dark_mode": "Oscuro",
"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": "Expandir la navegación",
"experiments": "Experimentos",
"experiments_notice": "Esta es una colección de experimentos en los que estamos trabajando que podrían resultar útiles, divertidos, ambos o ninguno. No son definitivos y es posible que no sean estables, por lo que si sucede algo demasiado extraño, no se asuste. Solo apaga la maldita cosa. Fuera de bromas,",
@@ -418,7 +458,7 @@
"extension_version": "Versión de extensión",
"extensions": "Extensiones",
"extensions_use_toggle": "Utilizar la extensión del navegador para enviar peticiones (si está presente)",
"follow": "Follow Us",
"follow": "Síguenos",
"font_size": "Tamaño de fuente",
"font_size_large": "Grande",
"font_size_medium": "Mediano",
@@ -503,9 +543,9 @@
"title": "Petición"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
"copy": "Copiar la respuesta al portapapeles",
"download": "Descargar la respuesta como archivo",
"title": "Respuesta"
},
"theme": {
"black": "Cambiar el tema al modo negro",
@@ -577,10 +617,10 @@
"community": "Haz preguntas y ayuda a los demás",
"documentation": "Leer más sobre Hoppscotch",
"forum": "Haz preguntas y obtén respuestas",
"github": "Follow us on Github",
"github": "Síguenos en Github",
"shortcuts": "Navega por la aplicación más rápido",
"team": "Ponte en contacto con el equipo",
"title": "Apoyo",
"title": "Ayuda",
"twitter": "Síguenos en Twitter"
},
"tab": {
@@ -595,7 +635,7 @@
"pre_request_script": "Script previo a la petición",
"queries": "Consultas",
"query": "Consulta",
"schema": "Schema",
"schema": "Esquema",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "Pruebas",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "¡Hemos enviado un enlace de invitación a todos los invitados!",
"we_sent_invite_link_description": "Pide a todos los invitados que revisen su bandeja de entrada. Haz clic en el enlace para unirse al equipo."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "prueba fallida",
"javascript_code": "Código JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "Tyhjennä",
"close": "Close",
"connect": "Kytkeä",
"connecting": "Connecting",
"copy": "Kopio",
"delete": "Poistaa",
"disconnect": "Katkaista",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Muokata",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Mene takaisin",
"group_by": "Group by",
"label": "Etiketti",
"learn_more": "Lue lisää",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Hae",
"send": "Lähettää",
"start": "alkaa",
"starting": "Starting",
"stop": "Lopettaa",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -77,7 +80,7 @@
"status": "Tila",
"status_description": "Check the status of the website",
"terms_and_privacy": "Ehdot ja yksityisyys",
"twitter": "Viserrys",
"twitter": "Twitter",
"type_a_command_search": "Kirjoita komento tai hae…",
"we_use_cookies": "Käytämme evästeitä",
"whats_new": "Mikä on uutta?",
@@ -168,10 +171,11 @@
"members": "Joukkue on tyhjä",
"parameters": "Tässä pyynnössä ei ole parametreja",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokollat ovat tyhjiä",
"schema": "Muodosta yhteys GraphQL -päätepisteeseen",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Joukkueen nimi tyhjä",
"teams": "Joukkueet ovat tyhjiä",
"tests": "Tätä pyyntöä ei ole testattu"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Muokkaa ympäristöä",
"invalid_name": "Anna ympäristölle kelvollinen nimi",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Uusi ympäristö",
"no_environment": "Ei ympäristöä",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Valitse ympäristö",
"team_environments": "Team Environments",
"title": "Ympäristöt",
"updated": "Environment updation",
"variable_list": "Muuttujien luettelo"
@@ -197,6 +203,9 @@
"browser_support_sse": "Tämä selain ei näytä tukevan palvelimen lähettämiä tapahtumia.",
"check_console_details": "Katso lisätietoja konsolilokista.",
"curl_invalid_format": "cURL ei ole alustettu oikein",
"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.",
"empty_req_name": "Tyhjä pyynnön nimi",
"f12_details": "(F12 lisätietoja)",
"gql_prettify_invalid_query": "Virheellistä kyselyä ei voitu määrittää, ratkaista kyselyn syntaksivirheet ja yrittää uudelleen",
@@ -222,6 +231,11 @@
"require_github": "Kirjaudu sisään GitHubilla luodaksesi salaisen sisällön",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Kansio luotu",
"edit": "Muokkaa kansiota",
@@ -235,6 +249,10 @@
"schema": "Kaavio",
"subscriptions": "Tilaukset"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Asenna sovellus",
"login": "Kirjaudu sisään",
@@ -298,10 +316,28 @@
"import_export": "Tuonti ja vienti"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Viestintä",
"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",
"log": "Hirsi",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Viesti",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Julkaista",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Tilaa",
"topic": "Aihe",
"topic_name": "Aiheen nimi",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Korostusväri",
"account": "Tili",
"account_deleted": "Your account has been deleted",
"account_description": "Muokkaa tilisi asetuksia.",
"account_email_description": "Ensisijainen sähköpostiosoitteesi.",
"account_name_description": "Tämä on näyttönimesi.",
@@ -411,6 +449,8 @@
"change_font_size": "Vaihda fontin kokoa",
"choose_language": "Valitse kieli",
"dark_mode": "Tumma",
"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",
"experiments": "Kokeet",
"experiments_notice": "Tämä on kokoelma kokeiluja, joita parhaillaan käsittelemme ja jotka voivat osoittautua hyödyllisiksi, hauskoiksi, molemmiksi tai kumpikaan. Ne eivät ole lopullisia eivätkä ehkä vakaita, joten jos jotain liian outoa tapahtuu, älä panikoi. Kytke vain paska pois päältä. Vitsit sivuun,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript -koodi",

View File

@@ -7,6 +7,7 @@
"clear_all": "Tout effacer",
"close": "Close",
"connect": "Connecter",
"connecting": "Connecting",
"copy": "Copier",
"delete": "Supprimer",
"disconnect": "Déconnecter",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Faites glisser pour réorganiser",
"duplicate": "Dupliquer",
"edit": "Éditer",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Retour",
"group_by": "Group by",
"label": "Étiqueter",
"learn_more": "En savoir plus",
"less": "Moins",
@@ -35,6 +37,7 @@
"search": "Chercher",
"send": "Envoyer",
"start": "Démarrer",
"starting": "Starting",
"stop": "Arrêter",
"to_close": "pour fermer",
"to_navigate": "pour naviguer",
@@ -172,6 +175,7 @@
"protocols": "Les protocoles sont vides",
"schema": "Se connecter à un point de terminaison GraphQL",
"shortcodes": "Les shortcodes sont vides",
"subscription": "Subscriptions are empty",
"team_name": "Nom de l'équipe vide",
"teams": "Les équipes sont vides",
"tests": "Il n'y a pas de tests pour cette requête"
@@ -184,11 +188,13 @@
"deleted": "Environnement supprimé",
"edit": "Modifier l'environnement",
"invalid_name": "Veuillez fournir un nom valide pour l'environnement",
"my_environments": "My Environments",
"nested_overflow": "les variables d'environnement imbriquées sont limitées à 10 niveaux",
"new": "Nouvel environnement",
"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.",
"select": "Sélectionnez l'environnement",
"team_environments": "Team Environments",
"title": "Environnements",
"updated": "Mise à jour de l'environnement",
"variable_list": "Liste des variables"
@@ -197,6 +203,9 @@
"browser_support_sse": "Ce navigateur ne semble pas prendre en charge les événements envoyés par le serveur.",
"check_console_details": "Consultez le journal de la console pour plus de détails.",
"curl_invalid_format": "cURL n'est pas formaté correctement",
"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.",
"empty_req_name": "Nom de la requête vide",
"f12_details": "(F12 pour les détails)",
"gql_prettify_invalid_query": "Impossible de formater une requête non valide, résolvez les erreurs de syntaxe de la requête et réessayer",
@@ -222,6 +231,11 @@
"require_github": "Connectez-vous avec GitHub pour créer un Gist secret",
"title": "Exportation"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Dossier créé",
"edit": "Modifier le dossier",
@@ -235,6 +249,10 @@
"schema": "Schéma",
"subscriptions": "Abonnements"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installer l'application",
"login": "Connexion",
@@ -298,10 +316,28 @@
"import_export": "Importer / Exporter"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "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",
"log": "Infos",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Message",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publier",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "S'abonner",
"topic": "Sujet",
"topic_name": "Nom du sujet",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Réglages de l'application",
"default_hopp_displayname": "Unnamed User",
"editor": "Éditeur",
"editor_description": "Les éditeurs peuvent ajouter, modifier et supprimer des demandes.",
"email_verification_mail": "Un e-mail de vérification a été envoyé à votre adresse e-mail. Veuillez cliquer sur le lien pour vérifier votre adresse électronique.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Couleur d'accent",
"account": "Compte",
"account_deleted": "Your account has been deleted",
"account_description": "Personnalisez les paramètres de votre compte.",
"account_email_description": "Votre adresse e-mail principale.",
"account_name_description": "Ceci est votre nom d'affichage.",
@@ -411,6 +449,8 @@
"change_font_size": "Changer la taille de la police",
"choose_language": "Choisissez la langue",
"dark_mode": "Sombre",
"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",
"experiments": "Expériences",
"experiments_notice": "Il s'agit d'une collection d'expériences sur lesquelles nous travaillons et qui pourraient s'avérer utiles, amusantes, les deux ou aucune. Ils ne sont pas définitifs et peuvent ne pas être stables, donc si quelque chose de trop étrange se produit, ne paniquez pas. Il suffit d'éteindre le truc. Blague à part,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Nous avons envoyé un lien d'invitation à tous les invités !",
"we_sent_invite_link_description": "Demandez à tous les invités de vérifier leur boîte de réception. Cliquez sur le lien pour rejoindre l'équipe."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "Test échoué",
"javascript_code": "Code JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "נקה הכל",
"close": "Close",
"connect": "לְחַבֵּר",
"connecting": "Connecting",
"copy": "עותק",
"delete": "לִמְחוֹק",
"disconnect": "לְנַתֵק",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "לַעֲרוֹך",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "תחזור",
"group_by": "Group by",
"label": "תווית",
"learn_more": "למד עוד",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "לחפש",
"send": "לִשְׁלוֹחַ",
"start": "הַתחָלָה",
"starting": "Starting",
"stop": "תפסיק",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -77,7 +80,7 @@
"status": "סטָטוּס",
"status_description": "Check the status of the website",
"terms_and_privacy": "תנאים ופרטיות",
"twitter": "טוויטר",
"twitter": "Twitter",
"type_a_command_search": "הקלד פקודה או חפש ...",
"we_use_cookies": "אנו משתמשים בעוגיות",
"whats_new": "מה חדש?",
@@ -168,10 +171,11 @@
"members": "הקבוצה ריקה",
"parameters": "לבקשה זו אין פרמטרים",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "הפרוטוקולים ריקים",
"schema": "התחבר לנקודת קצה של GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "שם הקבוצה ריק",
"teams": "הקבוצות ריקות",
"tests": "אין בדיקות לבקשה זו"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "ערוך את הסביבה",
"invalid_name": "אנא ספק שם חוקי לסביבה",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "סביבה חדשה",
"no_environment": "אין סביבה",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "בחר סביבה",
"team_environments": "Team Environments",
"title": "סביבות",
"updated": "Environment updation",
"variable_list": "רשימת משתנים"
@@ -197,6 +203,9 @@
"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.",
"empty_req_name": "שם הבקשה ריק",
"f12_details": "(F12 לפרטים)",
"gql_prettify_invalid_query": "לא ניתן היה לייפות שאילתה לא חוקית, לפתור שגיאות תחביר שאילתות ולנסות שוב",
@@ -222,6 +231,11 @@
"require_github": "התחבר עם GitHub כדי ליצור תמצית סודית",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "תיקייה נוצרה",
"edit": "ערוך תיקייה",
@@ -235,6 +249,10 @@
"schema": "סכֵימָה",
"subscriptions": "מנויים"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "התקן אפליקציה",
"login": "התחברות",
@@ -298,10 +316,28 @@
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "לְפַרְסֵם",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "הירשם",
"topic": "נוֹשֵׂא",
"topic_name": "שם הנושא",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "צבע הדגשה",
"account": "חֶשְׁבּוֹן",
"account_deleted": "Your account has been deleted",
"account_description": "התאם אישית את הגדרות החשבון שלך.",
"account_email_description": "כתובת הדוא\"ל הראשית שלך.",
"account_name_description": "זהו שם התצוגה שלך.",
@@ -411,6 +449,8 @@
"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.",
"expand_navigation": "Expand navigation",
"experiments": "ניסויים",
"experiments_notice": "זהו אוסף של ניסויים שעליהם אנו עובדים שעשויים להיות שימושיים, מהנים, שניהם או לא. הם לא סופיים ואולי לא יציבים, אז אם קורה משהו מוזר מדי, אל תיבהל. פשוט כבה את העניין המטומטם. בדיחות בצד,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "קוד JavaScript",

View File

@@ -0,0 +1,718 @@
{
"action": {
"autoscroll": "स्वतः स्क्रॉल",
"cancel": "रद्द करें",
"choose_file": "फ़ाइल चुनें",
"clear": "साफ़",
"clear_all": "सभी साफ करें",
"close": "बंद करे",
"connect": "कनेक्ट करें",
"connecting": "Connecting",
"copy": "कॉपी",
"delete": "हटाएं",
"disconnect": "डिस्कनेक्ट",
"dismiss": "खारिज करें",
"dont_save": "मत बचाओ",
"download_file": "फ़ाइल डाउनलोड करें",
"drag_to_reorder": "व्यवस्थित करने के लिए घसीटे",
"duplicate": "नकल करें",
"edit": "संपादित करें",
"filter": "फ़िल्टर प्रतिक्रिया",
"go_back": "वापस जाओ",
"group_by": "Group by",
"label": "लेबल",
"learn_more": "और अधिक जानें",
"less": "कम",
"more": "अधिक",
"new": "नया",
"no": "स्टार जोड़ें",
"open_workspace": "कार्यक्षेत्र खोलें",
"paste": "पेस्ट",
"prettify": "सुंदर करे",
"remove": "हटाओ",
"restore": "पुनर्स्थापित करें",
"save": "बचाएं",
"scroll_to_bottom": "नीचे स्क्रॉल करें",
"scroll_to_top": "शीर्ष तक स्क्रॉल करें",
"search": "खोज",
"send": "भेजें ",
"start": "प्रारंभ",
"starting": "Starting",
"stop": "रोकें",
"to_close": "बंद करने के लिए",
"to_navigate": "नेविगेट करने के लिए",
"to_select": "चुनने के लिए",
"turn_off": "बंद करें",
"turn_on": "चालू करें",
"undo": "पूर्ववत",
"yes": "हां"
},
"add": {
"new": "नया जोड़ें",
"star": "स्टार जोड़ें"
},
"app": {
"chat_with_us": "हमारे साथ चैट करें",
"contact_us": "हमसे संपर्क करें",
"copy": "कॉपी करें",
"copy_user_id": "उपयोगकर्ता प्रामाणिक टोकन कॉपी करें",
"developer_option": "डेवलपर विकल्प",
"developer_option_description": "डेवलपर टूल जो Hoppscotch के विकास और रखरखाव में मदद करता है",
"discord": "Discord",
"documentation": "दस्तावेज़ीकरण",
"github": "GitHub",
"help": "सहायता और प्रतिक्रिया",
"home": "घर",
"invite": "आमंत्रित करें",
"invite_description": "हॉप्सकॉच एक ओपन सोर्स एपीआई डेवलपमेंट इकोसिस्टम है। हमने आपके एपीआई बनाने और प्रबंधित करने के लिए एक सरल और सहज इंटरफ़ेस डिज़ाइन किया है। हॉप्सकॉच एक ऐसा टूल है जो आपको अपने एपीआई बनाने, परीक्षण, दस्तावेज़ और साझा करने में मदद करता है।",
"invite_your_friends": "अपने दोस्तों को इनवाइट करें",
"join_discord_community": "हमारे डिस्कॉर्ड समुदाय में शामिल हों",
"keyboard_shortcuts": "कीबोर्ड शॉर्टकट",
"name": "हॉप्सकॉच",
"new_version_found": "नया संस्करण मिला। अपडेट करने के लिए रिफ्रेश करें।",
"options": "विकल्प",
"proxy_privacy_policy": "प्रॉक्सी गोपनीयता नीति",
"reload": "पुनः लोड करें",
"search": "खोज",
"share": "बाँट",
"shortcuts": "शॉर्टकट",
"spotlight": "स्पॉटलाइट",
"status": "स्थिति",
"status_description": "वेबसाइट की स्थिति जांचें",
"terms_and_privacy": "शर्तें और गोपनीयता",
"twitter": "Twitter",
"type_a_command_search": "कमांड टाइप करें या सर्च करें...",
"we_use_cookies": "हम कुकीज़ का उपयोग करते हैं",
"whats_new": "नया क्या है?",
"wiki": "विकी"
},
"auth": {
"account_exists": "खाता अलग-अलग क्रेडेंशियल के साथ मौजूद है - दोनों खातों को जोड़ने के लिए लॉगिन करें",
"all_sign_in_options": "सभी साइन इन विकल्प",
"continue_with_email": "ईमेल के साथ जारी रखें",
"continue_with_github": "GitHub के साथ जारी रखें",
"continue_with_google": "Google के साथ जारी रखें",
"continue_with_microsoft": "Microsoft के साथ जारी रखें",
"email": "ईमेल",
"logged_out": "लॉग आउट",
"login": "लॉग इन",
"login_success": "सफलतापूर्वक लॉग इन किया",
"login_to_hoppscotch": "हॉप्सकॉच में लॉगिन करें",
"logout": "लॉगआउट",
"re_enter_email": "ईमेल दोबारा दर्ज करें",
"send_magic_link": "मैजिक लिंक भेजें",
"sync": "सिंक",
"we_sent_magic_link": "हमने आपको एक मैजिक लिंक भेजा है!",
"we_sent_magic_link_description": "अपना इनबॉक्स जांचें - हमने {email} पर एक ईमेल भेजा है। इसमें एक जादुई लिंक है जो आपको लॉग इन करेगा।"
},
"authorization": {
"generate_token": "टोकन जनरेट करें",
"include_in_url": "URL में शामिल करें",
"learn": "जानें कैसे",
"pass_key_by": "पास करें",
"password": "पासवर्ड",
"token": "टोकन",
"type": "प्राधिकरण प्रकार",
"username": "उपयोगकर्ता नाम"
},
"collection": {
"created": "संग्रह बनाया गया",
"edit": "संग्रह संपादित करें",
"invalid_name": "कृपया संग्रह के लिए एक नाम प्रदान करें",
"my_collections": "मेरे संग्रह",
"name": "मेरा नया संग्रह",
"name_length_insufficient": "संग्रह का नाम कम से कम 3 वर्णों का होना चाहिए",
"new": "नया संग्रह",
"renamed": "संग्रह का नाम बदला गया",
"request_in_use": "रिक्वेस्ट इन यूज़",
"save_as": "इस रूप में सेव करें",
"select": "एक संग्रह का चयन करें",
"select_location": "स्थान चुनें",
"select_team": "एक टीम चुनें",
"team_collections": "टीम संग्रह"
},
"confirm": {
"exit_team": "क्या आप वाकई इस टीम को छोड़ना चाहते हैं?",
"logout": "क्या आप वाकई लॉगआउट करना चाहते हैं?",
"remove_collection": "क्या आप वाकई इस संग्रह को स्थायी रूप से हटाना चाहते हैं?",
"remove_environment": "क्या आप वाकई इस परिवेश को स्थायी रूप से हटाना चाहते हैं?",
"remove_folder": "क्या आप वाकई इस फ़ोल्डर को स्थायी रूप से हटाना चाहते हैं?",
"remove_history": "क्या आप वाकई सभी इतिहास को स्थायी रूप से हटाना चाहते हैं?",
"remove_request": "क्या आप वाकई इस अनुरोध को स्थायी रूप से हटाना चाहते हैं?",
"remove_team": "क्या आप वाकई इस टीम को हटाना चाहते हैं?",
"remove_telemetry": "क्या आप वाकई टेलीमेट्री से ऑप्ट-आउट करना चाहते हैं?",
"request_change": "क्या आप वाकई वर्तमान अनुरोध को छोड़ना चाहते हैं, सहेजे नहीं गए परिवर्तन खो जाएंगे।",
"sync": "क्या आप अपने कार्यक्षेत्र को क्लाउड से पुनर्स्थापित करना चाहेंगे? यह आपकी स्थानीय प्रगति को त्याग देगा।"
},
"count": {
"header": "हेडर {count}",
"message": "मैसेज {count}",
"parameter": "पैरामीटर {count}",
"protocol": "प्रोटोकॉल {count}",
"value": "मान {count}",
"variable": "वेरिएबल {count}"
},
"documentation": {
"generate": "दस्तावेज़ीकरण उत्पन्न करें",
"generate_message": "चलते-फिरते API दस्तावेज़ बनाने के लिए कोई भी Hoppscotch संग्रह आयात करें।"
},
"empty": {
"authorization": "यह अनुरोध किसी प्राधिकरण का उपयोग नहीं करता",
"body": "इस अनुरोध में कोई बॉडी नहीं है",
"collection": "संग्रह खाली है",
"collections": "संग्रह खाली हैं",
"documentation": "दस्तावेज़ीकरण देखने के लिए GraphQL से कनेक्ट करें",
"endpoint": "समापन बिंदु खाली नहीं हो सकता",
"environments": "वातावरण खाली हैं",
"folder": " फ़ोल्डर खाली है",
"headers": " इस अनुरोध का कोई हेडर नहीं है",
"history": " इतिहास खाली है",
"invites": " आमंत्रण सूची खाली है",
"members": " टीम खाली है",
"parameters": " इस अनुरोध का कोई पैरामीटर नहीं है",
"pending_invites": " इस टीम के लिए कोई आमंत्रण लंबित नहीं है",
"profile": " अपना प्रोफ़ाइल देखने के लिए लॉगिन करें",
"protocols": " प्रोटोकॉल खाली हैं",
"schema": " स्कीमा देखने के लिए ग्राफ़क्यूएल एंडपॉइंट से कनेक्ट करें",
"shortcodes": " शॉर्टकोड खाली हैं",
"subscription": "Subscriptions are empty",
"team_name": " टीम का नाम खाली",
"teams": " आप किसी भी टीम से संबंधित नहीं हैं",
"tests": " इस अनुरोध के लिए कोई परीक्षण नहीं हैं"
},
"environment": {
"add_to_global": " ग्लोबल में जोड़ें",
"added": " पर्यावरण अतिरिक्त",
"create_new": " नया वातावरण बनाएं",
"created": " पर्यावरण बनाया",
"deleted": " पर्यावरण विलोपन",
"edit": " पर्यावरण संपादित करें",
"invalid_name": " कृपया पर्यावरण के लिए एक नाम प्रदान करें",
"my_environments": "My Environments",
"nested_overflow": " नेस्टेड पर्यावरण चर 10 स्तरों तक सीमित हैं",
"new": " नया वातावरण",
"no_environment": " कोई वातावरण नहीं",
"no_environment_description": " कोई परिवेश नहीं चुना गया था. चुनें कि निम्नलिखित चर के साथ क्या करना है।",
"select": " पर्यावरण का चयन करें",
"team_environments": "Team Environments",
"title": " वातावरण",
"updated": " पर्यावरण अद्यतन",
"variable_list": " परिवर्तनीय सूची"
},
"error": {
"browser_support_sse": " ऐसा लगता है कि इस ब्राउज़र में सर्वर से भेजे गए इवेंट का समर्थन नहीं है।",
"check_console_details": " विवरण के लिए कंसोल लॉग की जाँच करें।",
"curl_invalid_format": " कर्ल ठीक से स्वरूपित नहीं है",
"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.",
"empty_req_name": " खाली अनुरोध का नाम",
"f12_details": " (विवरण के लिए F12)",
"gql_prettify_invalid_query": " अमान्य क्वेरी को सुंदर नहीं बना सका, क्वेरी सिंटैक्स त्रुटियों को हल नहीं कर सका और पुनः प्रयास करें",
"incomplete_config_urls": " अपूर्ण कॉन्फ़िगरेशन URL",
"incorrect_email": " गलत ईमेल",
"invalid_link": " अमान्य लिंक",
"invalid_link_description": " आपके द्वारा क्लिक किया गया लिंक अमान्य है या समाप्त हो गया है।",
"json_parsing_failed": " अमान्य JSON",
"json_prettify_invalid_body": " अमान्य निकाय को सुंदर नहीं बना सका, json सिंटैक्स त्रुटियों को हल करें और पुनः प्रयास करें",
"network_error": " ऐसा लगता है कि कोई नेटवर्क त्रुटि है। कृपया पुन: प्रयास करें।",
"network_fail": " अनुरोध नहीं भेजा जा सका",
"no_duration": " कोई अवधि नहीं",
"no_results_found": " कोई मेल नहीं मिले",
"page_not_found": " यह पृष्ठ नहीं मिल सका",
"script_fail": " पूर्व-अनुरोध स्क्रिप्ट निष्पादित नहीं कर सका",
"something_went_wrong": " कुछ गलत हो गया",
"test_script_fail": " अनुरोध के बाद स्क्रिप्ट निष्पादित नहीं कर सका"
},
"export": {
"as_json": " JSON के रूप में निर्यात करें",
"create_secret_gist": " गुप्त सार बनाएँ",
"gist_created": " जिस्ट बनाया",
"require_github": " गुप्त सार बनाने के लिए GitHub के साथ लॉगिन करें",
"title": " निर्यात करना"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": " फोल्डर बनाया",
"edit": " फ़ोल्डर संपादित करें",
"invalid_name": " कृपया फ़ोल्डर के लिए एक नाम प्रदान करें",
"name_length_insufficient": " फ़ोल्डर का नाम कम से कम 3 वर्ण लंबा होना चाहिए",
"new": " नया फोल्डर",
"renamed": " फ़ोल्डर का नाम बदला"
},
"graphql": {
"mutations": " उत्परिवर्तन",
"schema": " योजना",
"subscriptions": " सदस्यता"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": " एप्लिकेशन इंस्टॉल करें",
"login": " लॉग इन करें",
"save_workspace": " मेरा कार्यक्षेत्र सहेजें"
},
"helpers": {
"authorization": " जब आप अनुरोध भेजेंगे तो प्राधिकरण शीर्षलेख स्वतः उत्पन्न हो जाएगा।",
"generate_documentation_first": " पहले दस्तावेज़ तैयार करें",
"network_fail": " एपीआई समापन बिंदु तक पहुंचने में असमर्थ। अपने नेटवर्क कनेक्शन की जाँच करें या किसी भिन्न इंटरसेप्टर का चयन करें और पुनः प्रयास करें।",
"offline": " ऐसा लगता है कि आप ऑफ़लाइन हैं. हो सकता है कि इस कार्यस्थान का डेटा अप टू डेट न हो.",
"offline_short": " ऐसा लगता है कि आप ऑफ़लाइन हैं.",
"post_request_tests": " टेस्ट स्क्रिप्ट जावास्क्रिप्ट में लिखी जाती हैं, और प्रतिक्रिया प्राप्त होने के बाद चलाई जाती हैं।",
"pre_request_script": " पूर्व-अनुरोध स्क्रिप्ट जावास्क्रिप्ट में लिखी जाती हैं, और अनुरोध भेजे जाने से पहले चलाई जाती हैं।",
"script_fail": " ऐसा लगता है कि प्री-रिक्वेस्ट स्क्रिप्ट में गड़बड़ है। नीचे दी गई त्रुटि की जाँच करें और उसके अनुसार स्क्रिप्ट को ठीक करें।",
"test_script_fail": " ऐसा लगता है कि परीक्षण स्क्रिप्ट में कोई त्रुटि है। कृपया त्रुटियों को ठीक करें और फिर से परीक्षण चलाएं",
"tests": "Write a test script to automate debugging.",
"test": "डिबगिंग को स्वचालित करने के लिए एक परीक्षण स्क्रिप्ट लिखें"
},
"hide": {
"collection": "संग्रह पैनल संक्षिप्त करें",
"more": "अधिक छुपाएं",
"preview": "पूर्वावलोकन छुपाएं",
"sidebar": "साइडबार को ध्वस्त करें"
},
"import": {
"collections": "आयात संग्रहण",
"curl": "आयात cURL",
"failed": "आयात करते समय त्रुटि: प्रारूप पहचाना नहीं गया",
"from_gist": "Gist से आयात करें",
"from_gist_description": "Gist URL से आयात करें",
"from_insomnia": "Insomnia से आयात करें",
"from_insomnia_description": "Insomnia collection से आयात करें",
"from_json": "Hoppscotch से आयात करें",
"from_json_description": "Hoppsotch संग्रह फ़ाइल से आयात करें",
"from_my_collections": "मेरे संग्रह से आयात करें",
"from_my_collections_description": "मेरे संग्रह फ़ाइल से आयात करें",
"from_openapi": "OpenAPI से आयात करें",
"from_openapi_description": "OpenAPI specification file से आयात करें (JSON)",
"from_postman": "Postman से आयात करें",
"from_postman_description": "Postman collection से आयात करें",
"from_url": "URL से आयात करें",
"gist_url": "Gist URL दर्ज करें",
"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 Collections JSON फ़ाइल से संग्रह आयात करें",
"title": "आयात करें"
},
"layout": {
"collapse_collection": "संग्रह को संक्षिप्त या विस्तृत करें",
"collapse_sidebar": "साइडबार को संक्षिप्त या विस्तृत करें",
"column": "लंबवत लेआउट",
"name": "लेआउट",
"row": "क्षैतिज लेआउट",
"zen_mode": "ज़ेन मोड"
},
"modal": {
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "प्रकाशित",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "सब्सक्राइब करें",
"topic": "विषय",
"topic_name": "विषय का नाम",
"topic_title": "विषय प्रकाशित करें / सदस्यता लें",
"unsubscribe": "विषय प्रकाशित करें / सदस्यता लें",
"url": "URL"
},
"navigation": {
"doc": "डॉक्स",
"graphql": "ग्राफक्ल",
"profile": "प्रोफ़ाइल",
"realtime": "रियल टाइम",
"rest": "रेस्ट",
"settings": "समायोजन"
},
"preRequest": {
"javascript_code": "जावास्क्रिप्ट कोड",
"learn": "प्रलेखन पढ़ें",
"script": "पूर्व-अनुरोध स्क्रिप्ट",
"snippets": "स्निपेट्स"
},
"profile": {
"app_settings": "एप्लिकेशन सेटिंग",
"default_hopp_displayname": "Unnamed User",
"editor": "संपादक",
"editor_description": "संपादक अनुरोधों को जोड़ सकते हैं, संपादित कर सकते हैं और हटा सकते हैं।",
"email_verification_mail": "आपके ईमेल पते पर एक सत्यापन ईमेल भेजा गया है। कृपया अपना ईमेल पता सत्यापित करने के लिए लिंक पर क्लिक करें।",
"no_permission": "आपके पास यह कार्रवाई करने की अनुमति नहीं है।",
"owner": "स्वामी",
"owner_description": "मालिक अनुरोध, संग्रह और टीम के सदस्यों को जोड़, संपादित और हटा सकते हैं।",
"roles": "भूमिकाएँ",
"roles_description": "साझा संग्रह तक पहुंच को नियंत्रित करने के लिए भूमिकाओं का उपयोग किया जाता है।",
"updated": "प्रोफाइल अद्यतन किया गया",
"viewer": "दर्शक",
"viewer_description": "दर्शक केवल अनुरोधों को देख और उपयोग कर सकते हैं।"
},
"remove": {
"star": "स्टार निकालें"
},
"request": {
"added": "अनुरोध जोड़ा गया",
"authorization": "प्राधिकार",
"body": "अनुरोध निकाय",
"choose_language": "भाषा चुनें",
"content_type": "सामग्री प्रकार",
"content_type_titles": {
"others": "अन्य",
"structured": "स्ट्रक्चर्ड",
"text": "मूलपाठ"
},
"copy_link": "प्रतिरूप जोड़ना",
"duration": "अवधि",
"enter_curl": "कर्ल दर्ज करें",
"generate_code": "उत्पन्न कोड",
"generated_code": "उत्पन्न कोड",
"header_list": "हेडर सूची",
"invalid_name": "कृपया अनुरोध के लिए एक नाम प्रदान करें",
"method": "तरीका",
"name": "अनुरोध नाम",
"new": "नई विनती",
"override": "अवहेलना",
"override_help": "हेडर में <kbd> सामग्री-प्रकार </kbd> सेट करें",
"overriden": "ओवरराइड",
"parameter_list": "क्वेरी पैरामीटर",
"parameters": "मापदंडों",
"path": "रास्ता",
"payload": "पेलोड",
"query": "सवाल",
"raw_body": "कच्चे अनुरोध निकाय",
"renamed": "अनुरोध नाम दिया गया",
"run": "दौड़ना",
"save": "बचाना",
"save_as": "के रूप रक्षित करें",
"saved": "अनुरोध सहेजा गया",
"share": "शेयर करना",
"share_description": "अपने दोस्तों के साथ hoppscotch साझा करें",
"title": "प्रार्थना",
"type": "अनुरोध का प्रकार",
"url": "यूआरएल",
"variables": "चर",
"view_my_links": "मेरे लिंक देखें"
},
"response": {
"body": "प्रतिक्रिया निकाय",
"filter_response_body": "फ़िल्टर JSON रिस्पांस बॉडी (JSONPATH सिंटैक्स का उपयोग करता है)",
"headers": "हेडर",
"html": "एचटीएमएल",
"image": "छवि",
"json": "जेसन",
"pdf": "पीडीएफ",
"preview_html": "HTML का पूर्वावलोकन करें",
"raw": "कच्चा",
"size": "आकार",
"status": "दर्जा",
"time": "समय",
"title": "जवाब",
"waiting_for_connection": "जुडने के लिए इंतजार",
"xml": "एक्सएमएल"
},
"settings": {
"accent_color": "स्वरोंका रंग",
"account": "खाता",
"account_deleted": "Your account has been 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.",
"expand_navigation": "नेविगेशन का विस्तार करें",
"experiments": "प्रयोगों",
"experiments_notice": "यह उन प्रयोगों का एक संग्रह है, जिन पर हम काम कर रहे हैं, जो उपयोगी, मज़ेदार, दोनों या न ही हो सकते हैं। वे अंतिम नहीं हैं और स्थिर नहीं हो सकते हैं, इसलिए यदि कुछ अजीब होता है, तो घबराएं नहीं। बस खतरे को बंद कर दें। एक तरफ मजाक,",
"extension_ver_not_reported": "सूचना नहीं दी",
"extension_version": "विस्तार संस्करण",
"extensions": "ब्राउज़र विस्तार",
"extensions_use_toggle": "अनुरोध भेजने के लिए ब्राउज़र एक्सटेंशन का उपयोग करें (यदि मौजूद है)",
"follow": "हमारे पर का पालन करें",
"font_size": "फ़ॉन्ट आकार",
"font_size_large": "विशाल",
"font_size_medium": "मध्यम",
"font_size_small": "छोटा",
"interceptor": "इंटरसेप्टर",
"interceptor_description": "एप्लिकेशन और एपीआई के बीच मिडलवेयर।",
"language": "भाषा",
"light_mode": "रोशनी",
"official_proxy_hosting": "आधिकारिक प्रॉक्सी होप्सकॉच द्वारा होस्ट किया गया है।",
"profile": "प्रोफ़ाइल",
"profile_description": "अपने प्रोफ़ाइल विवरण को अपडेट करें",
"profile_email": "ईमेल पता",
"profile_name": "प्रोफ़ाइल नाम",
"proxy": "प्रतिनिधि",
"proxy_url": "प्रॉक्सी यूआरएल",
"proxy_use_toggle": "अनुरोध भेजने के लिए प्रॉक्सी मिडलवेयर का उपयोग करें",
"read_the": "को पढ़िए",
"reset_default": "डिफ़ॉल्ट पर रीसेट",
"short_codes": "लघु संहिताएँ",
"short_codes_description": "छोटे कोड जो आपके द्वारा बनाए गए थे।",
"sidebar_on_left": "बाईं ओर साइडबार",
"sync": "सिंक्रनाइज़",
"sync_collections": "संग्रह",
"sync_description": "इन सेटिंग्स को क्लाउड में सिंक किया जाता है।",
"sync_environments": "वातावरण",
"sync_history": "इतिहास",
"system_mode": "व्यवस्था",
"telemetry": "टेलीमेटरी",
"telemetry_helps_us": "टेलीमेट्री हमें अपने संचालन को निजीकृत करने और आपको सबसे अच्छा अनुभव प्रदान करने में मदद करती है।",
"theme": "थीम",
"theme_description": "अपने एप्लिकेशन थीम को कस्टमाइज़ करें।",
"use_experimental_url_bar": "पर्यावरण हाइलाइटिंग के साथ प्रयोगात्मक URL बार का उपयोग करें",
"user": "उपयोगकर्ता",
"verified_email": "सत्यापित ईमेल",
"verify_email": "ईमेल सत्यापित करें"
},
"shortcodes": {
"actions": "कार्रवाई",
"created_on": "पर बनाया",
"deleted": "शॉर्टकोड हटा दिया गया",
"method": "तरीका",
"not_found": "शॉर्टकोड नहीं मिला",
"short_code": "लघु कूट संख्या",
"url": "यूआरएल"
},
"shortcut": {
"general": {
"close_current_menu": "वर्तमान मेनू बंद करें",
"command_menu": "खोज और कमांड मेनू",
"help_menu": "सहायता मेनू",
"show_all": "कुंजीपटल अल्प मार्ग",
"title": "सामान्य"
},
"miscellaneous": {
"invite": "लोगों को hoppscotch के लिए आमंत्रित करें",
"title": "विविध"
},
"navigation": {
"back": "पिछले पृष्ठ पर वापस जाएं",
"documentation": "प्रलेखन पृष्ठ पर जाएं",
"forward": "अगले पृष्ठ पर आगे बढ़ें",
"graphql": "Graphql पेज पर जाएं",
"profile": "प्रोफ़ाइल पेज पर जाएं",
"realtime": "रियलटाइम पेज पर जाएं",
"rest": "रेस्ट पेज पर जाएं",
"settings": "सेटिंग्स पृष्ठ पर जाएं",
"title": "मार्गदर्शन"
},
"request": {
"copy_request_link": "कॉपी अनुरोध लिंक",
"delete_method": "हटाएं विधि का चयन करें",
"get_method": "गेट विधि का चयन करें",
"head_method": "हेड विधि का चयन करें",
"method": "तरीका",
"next_method": "अगली विधि का चयन करें",
"post_method": "पोस्ट विधि का चयन करें",
"previous_method": "पिछली विधि का चयन करें",
"put_method": "पुट विधि का चयन करें",
"reset_request": "रीसेट अनुरोध",
"save_to_collections": "संग्रह के लिए सहेजें",
"send_request": "अनुरोध भेजा",
"title": "प्रार्थना"
},
"response": {
"copy": "क्लिपबोर्ड पर प्रतिक्रिया कॉपी करें",
"download": "फ़ाइल के रूप में प्रतिक्रिया डाउनलोड करें",
"title": "जवाब"
},
"theme": {
"black": "ब्लैक मोड पर थीम को स्विच करें",
"dark": "डार्क मोड पर थीम को स्विच करें",
"light": "प्रकाश मोड पर थीम स्विच करें",
"system": "सिस्टम मोड पर थीम स्विच करें",
"title": "थीम"
}
},
"show": {
"code": "शो कोड",
"collection": "संग्रह पैनल का विस्तार करें",
"more": "और दिखाओ",
"sidebar": "साइडबार का विस्तार करें"
},
"socketio": {
"communication": "संचार",
"connection_not_authorized": "यह सॉकेटियो कनेक्शन किसी भी प्रमाणीकरण का उपयोग नहीं करता है।",
"event_name": "कार्यक्रम नाम",
"events": "आयोजन",
"log": "लकड़ी का लट्ठा",
"url": "यूआरएल"
},
"sse": {
"event_type": "घटना प्रकार",
"log": "लकड़ी का लट्ठा",
"url": "यूआरएल"
},
"state": {
"bulk_mode": "थोक संपादन",
"bulk_mode_placeholder": "प्रविष्टियों को न्यूलाइन द्वारा अलग किया जाता है \n कुंजियाँ और मूल्यों को अलग कर दिया जाता है: \n किसी भी पंक्ति को आप जोड़ना चाहते हैं, लेकिन अक्षम रखें",
"cleared": "साफ़ किया गया",
"connected": "जुड़े हुए",
"connected_to": "{name} से जुड़ा हुआ है",
"connecting_to": "{name} से कनेक्ट करना ...",
"connection_error": "जोडने में विफल",
"connection_failed": "कनेक्शन विफल",
"connection_lost": "संपर्क टूट गया",
"copied_to_clipboard": "क्लिपबोर्ड पर नकल",
"deleted": "हटाए गए",
"deprecated": "बहिष्कृत किया गया",
"disabled": "अक्षम",
"disconnected": "डिस्कनेक्ट किया गया",
"disconnected_from": "{name} से डिस्कनेक्ट किया गया",
"docs_generated": "प्रलेखन उत्पन्न",
"download_started": "डाउनलोड शुरू हुआ",
"enabled": "सक्रिय",
"file_imported": "आयातित फ़ाइल",
"finished_in": "{duration} एमएस में समाप्त",
"history_deleted": "इतिहास हटा दिया गया",
"linewrap": "लपेटने की रेखाएँ",
"loading": "लोड हो रहा है...",
"message_received": "संदेश: {message} विषय पर पहुंचे: {topic}",
"mqtt_subscription_failed": "विषय की सदस्यता लेते हुए कुछ गलत हो गया: {topic}",
"none": "कोई भी नहीं",
"nothing_found": "के लिए कुछ भी नहीं मिला",
"published_error": "MSG प्रकाशित करते समय कुछ गलत हुआ: {topic} विषय के लिए: {message}",
"published_message": "प्रकाशित संदेश: {message} विषय के लिए: {topic}",
"reconnection_error": "फिर से जुड़ने में विफल रहा",
"subscribed_failed": "विषय की सदस्यता लेने में विफल: {topic}",
"subscribed_success": "सफलतापूर्वक विषय की सदस्यता: {topic}",
"unsubscribed_failed": "विषय से सदस्यता समाप्त करने में विफल: {topic}",
"unsubscribed_success": "विषय से सफलतापूर्वक सदस्यता: {topic}",
"waiting_send_request": "अनुरोध भेजने की प्रतीक्षा में"
},
"support": {
"changelog": "नवीनतम रिलीज़ के बारे में और पढ़ें",
"chat": "प्रशन? हम से बात करे!",
"community": "सवाल पूछें और दूसरों की मदद करें",
"documentation": "Hoppscotch के बारे में और पढ़ें",
"forum": "सवाल पूछें और उत्तर प्राप्त करें",
"github": "हमें GitHub पर फॉलो करें",
"shortcuts": "ऐप को तेजी से ब्राउज़ करें",
"team": "टीम के संपर्क में रहें",
"title": "सहायता",
"twitter": "चहचहाना पर हमें का पालन करें"
},
"tab": {
"authorization": "प्राधिकार",
"body": "शरीर",
"collections": "संग्रह",
"documentation": "प्रलेखन",
"headers": "हेडर",
"history": "इतिहास",
"mqtt": "MQTT",
"parameters": "मापदंडों",
"pre_request_script": "पूर्व-अनुरोध स्क्रिप्ट",
"queries": "प्रश्नों",
"query": "सवाल",
"schema": "योजना",
"socketio": "Socket.IO",
"sse": "एसएसई",
"tests": "परीक्षण",
"types": "प्रकार",
"variables": "चर",
"websocket": "जालसाजक"
},
"team": {
"already_member": "आप पहले से ही इस टीम के सदस्य हैं। अपनी टीम के मालिक से संपर्क करें।",
"create_new": "नई टीम बनाएं",
"deleted": "टीम हटा दी गई",
"edit": "संपादित टीम",
"email": "ईमेल",
"email_do_not_match": "ईमेल आपके खाते के विवरण के साथ मेल नहीं खाता है। अपनी टीम के मालिक से संपर्क करें।",
"exit": "निकास टीम",
"exit_disabled": "केवल मालिक टीम से बाहर नहीं निकल सकते",
"invalid_email_format": "ईमेल प्रारूप अमान्य है",
"invalid_id": "अमान्य टीम आईडी। अपनी टीम के मालिक से संपर्क करें।",
"invalid_invite_link": "अमान्य आमंत्रित लिंक",
"invalid_invite_link_description": "आपके द्वारा पीछा किया गया लिंक अमान्य है। अपनी टीम के मालिक से संपर्क करें।",
"invalid_member_permission": "कृपया टीम के सदस्य को एक वैध अनुमति प्रदान करें",
"invite": "आमंत्रित करना",
"invite_more": "अधिक आमंत्रित करें",
"invite_tooltip": "लोगों को इस कार्यक्षेत्र में आमंत्रित करें",
"invited_to_team": "{owner} ने आपको {team} में शामिल होने के लिए आमंत्रित किया",
"join": "निमंत्रण स्वीकार किया गया",
"join_beta": "टीमों तक पहुंचने के लिए बीटा कार्यक्रम में शामिल हों।",
"join_team": "टीम में शामिल हों}",
"joined_team": "आप {team} में शामिल हो गए हैं",
"joined_team_description": "अब आप इस टीम के सदस्य हैं",
"left": "आपने टीम छोड़ दी",
"login_to_continue": "जारी रखने के लिए लॉगिन करें",
"login_to_continue_description": "एक टीम में शामिल होने के लिए आपको लॉग इन करने की आवश्यकता है।",
"logout_and_try_again": "लॉगआउट और किसी अन्य खाते के साथ साइन इन करें",
"member_has_invite": "इस ईमेल आईडी में पहले से ही एक निमंत्रण है। अपनी टीम के मालिक से संपर्क करें।",
"member_not_found": "सदस्य अनुपस्थित। अपनी टीम के मालिक से संपर्क करें।",
"member_removed": "उपयोगकर्ता हटा दिया",
"member_role_updated": "उपयोगकर्ता भूमिकाएँ अद्यतन की गईं",
"members": "सदस्यों",
"name_length_insufficient": "टीम का नाम कम से कम 6 अक्षर लंबा होना चाहिए",
"name_updated": "टीम का नाम अपडेट किया गया",
"new": "नई टीम",
"new_created": "नई टीम बनाई गई",
"new_name": "मेरी नई टीम",
"no_access": "आपके पास इन संग्रहों तक पहुंच नहीं है",
"no_invite_found": "निमंत्रण नहीं मिला। अपनी टीम के मालिक से संपर्क करें।",
"not_found": "टीम नहीं मिली। अपनी टीम के मालिक से संपर्क करें।",
"not_valid_viewer": "आप एक वैध दर्शक नहीं हैं। अपनी टीम के मालिक से संपर्क करें।",
"pending_invites": "लंबित आमंत्रण",
"permissions": "अनुमतियां",
"saved": "टीम बचाया",
"select_a_team": "एक टीम का चयन करें",
"title": "टीमों",
"we_sent_invite_link": "हमने सभी आमंत्रणों के लिए एक आमंत्रण लिंक भेजा!",
"we_sent_invite_link_description": "सभी आमंत्रणों से उनके इनबॉक्स की जांच करने के लिए पूछें। टीम में शामिल होने के लिए लिंक पर क्लिक करें।"
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "परीक्षण विफल",
"javascript_code": "जावास्क्रिप्ट कोड",
"learn": "प्रलेखन पढ़ें",
"passed": "परीक्षा उत्तीर्ण की",
"report": "जाँच रिपोर्ट",
"results": "परीक्षा के परिणाम",
"script": "लिखी हुई कहानी",
"snippets": "स्निपेट्स"
},
"websocket": {
"communication": "संचार",
"log": "लकड़ी का लट्ठा",
"message": "संदेश",
"protocols": "प्रोटोकॉल",
"url": "यूआरएल"
}
}

View File

@@ -7,6 +7,7 @@
"clear_all": "Összes törlése",
"close": "Close",
"connect": "Kapcsolódás",
"connecting": "Connecting",
"copy": "Másolás",
"delete": "Törlés",
"disconnect": "Leválasztás",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Kettőzés",
"edit": "Szerkesztés",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Vissza",
"group_by": "Group by",
"label": "Címke",
"learn_more": "Tudjon meg többet",
"less": "Kevesebb",
@@ -35,6 +37,7 @@
"search": "Keresés",
"send": "Küldés",
"start": "Indítás",
"starting": "Starting",
"stop": "Leállítás",
"to_close": "a bezáráshoz",
"to_navigate": "a navigáláshoz",
@@ -172,6 +175,7 @@
"protocols": "A protokollok üresek",
"schema": "Kapcsolódjon egy GraphQL-végponthoz a séma megtekintéséhez",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "A csapat neve üres",
"teams": "Ön nem tartozik semmilyen csapathoz",
"tests": "Nincsenek tesztek ehhez a kéréshez"
@@ -184,11 +188,13 @@
"deleted": "Környezet törlése",
"edit": "Környezet szerkesztése",
"invalid_name": "Adjon nevet a környezetnek",
"my_environments": "My Environments",
"nested_overflow": "az egymásba ágyazott környezeti változók 10 szintre vannak korlátozva",
"new": "Új környezet",
"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.",
"select": "Környezet kiválasztása",
"team_environments": "Team Environments",
"title": "Környezetek",
"updated": "Környezet frissítve",
"variable_list": "Változólista"
@@ -197,6 +203,9 @@
"browser_support_sse": "Úgy tűnik, hogy ez a böngésző nem támogatja a kiszolgáló által küldött eseményeket.",
"check_console_details": "Nézze meg a konzolnaplót a részletekért.",
"curl_invalid_format": "A cURL nincs megfelelően formázva",
"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.",
"empty_req_name": "Üres kérésnév",
"f12_details": "(F12 a részletekért)",
"gql_prettify_invalid_query": "Nem sikerült csinosítani egy érvénytelen lekérdezést, oldja meg a lekérdezés szintaktikai hibáit, és próbálja újra",
@@ -222,6 +231,11 @@
"require_github": "Jelentkezzen be GitHub használatával a titkos Gist létrehozásához",
"title": "Exportálás"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Mappa létrehozva",
"edit": "Mappa szerkesztése",
@@ -235,6 +249,10 @@
"schema": "Séma",
"subscriptions": "Feliratkozások"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Alkalmazás telepítése",
"login": "Bejelentkezés",
@@ -298,10 +316,28 @@
"import_export": "Importálás és exportálás"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Kommunikáció",
"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",
"log": "Napló",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Üzenet",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Közzététel",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Feliratkozás",
"topic": "Téma",
"topic_name": "Téma neve",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Alkalmazás beállításai",
"default_hopp_displayname": "Unnamed User",
"editor": "Szerkesztő",
"editor_description": "A szerkesztők hozzáadhatnak, szerkeszthetnek és törölhetnek kéréseket.",
"email_verification_mail": "Egy ellenőrző e-mail el lett küldve az e-mail-címére. Kattintson a hivatkozásra az e-mail-címe ellenőrzéséhez.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Kiemelőszín",
"account": "Fiók",
"account_deleted": "Your account has been deleted",
"account_description": "A fiókbeállítások személyre szabása.",
"account_email_description": "Az Ön elsődleges e-mail-címe.",
"account_name_description": "Ez a megjelenített neve.",
@@ -411,6 +449,8 @@
"change_font_size": "Betűméret megváltoztatása",
"choose_language": "Nyelv kiválasztása",
"dark_mode": "Sötét",
"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": "Navigáció kinyitása",
"experiments": "Kísérletek",
"experiments_notice": "Ez olyan kísérletek gyűjteménye, amelyeken dolgozunk, és amelyek hasznosak, szórakoztatóak lehetnek, mindkettő, vagy egyik sem. Ezek nem véglegesek és nem stabilak, ezért ha valami túl furcsa dolog történik, ne essen pánikba. Egyszerűen kapcsolja ki a hibás dolgot. Viccet félretéve, ",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Elküldtünk egy meghívási hivatkozást az összes meghívottnak.",
"we_sent_invite_link_description": "Kérje meg az összes meghívottat, hogy nézzék meg a beérkező leveleiket. Kattintsanak a hivatkozásra a csapathoz való csatlakozáshoz."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "teszt sikertelen",
"javascript_code": "JavaScript kód",

View File

@@ -1,40 +1,43 @@
{
"action": {
"autoscroll": "Autoscroll",
"autoscroll": "Gulir Otomatis",
"cancel": "Batalkan",
"choose_file": "Pilih file",
"clear": "Bersihkan",
"clear_all": "Bersihkan semua",
"close": "Menutup",
"connect": "Menyambung",
"close": "Tutup",
"connect": "Sambungkan",
"connecting": "Menyambungkan",
"copy": "Salin",
"delete": "Menghapus",
"disconnect": "Memutuskan",
"dismiss": "Menolak",
"dont_save": "Jangan_simpan",
"dismiss": "Tolak",
"dont_save": "Jangan simpan",
"download_file": "Unduh berkas",
"drag_to_reorder": "Seret untuk menyusun ulang",
"duplicate": "Duplikat",
"edit": "Edit",
"filter_response": "Tanggapan filter",
"filter": "Tanggapan filter",
"go_back": "Kembali",
"group_by": "Group by",
"label": "Label",
"learn_more": "Belajarlah lagi",
"learn_more": "Pelajari lebih lanjut",
"less": "Lebih sedikit",
"more": "Lebih banyak",
"new": "Baru",
"no": "No",
"no": "Tidak",
"open_workspace": "Ruang kerja terbuka",
"paste": "Tempel",
"prettify": "Prettify",
"remove": "Menghapus",
"restore": "Memulihkan",
"save": "Menyimpan",
"remove": "Hapus",
"restore": "Pulihkan",
"save": "Simpan",
"scroll_to_bottom": "Gulir ke bawah",
"scroll_to_top": "Gulir ke atas",
"search": "Cari",
"send": "Kirim",
"start": "Mulailah",
"start": "Mulai",
"starting": "Memulai",
"stop": "Berhenti",
"to_close": "Untuk menutup",
"to_navigate": "Untuk menavigasi",
@@ -59,15 +62,15 @@
"documentation": "Dokumentasi",
"github": "GitHub",
"help": "Bantuan & umpan balik",
"home": "Home",
"invite": "Mengundang",
"home": "Beranda",
"invite": "Undang",
"invite_description": "Hoppscotch adalah ekosistem pengembangan API open source. Kami merancang antarmuka yang sederhana dan intuitif untuk membuat dan mengelola API Anda. Hoppscotch adalah alat yang membantu Anda membuat, menguji, mendokumentasikan, dan membagikan API Anda.",
"invite_your_friends": "Undang temanmu",
"join_discord_community": "Bergabunglah dengan komunitas Discord kami",
"keyboard_shortcuts": "Pintasan keyboard",
"name": "Hoppscotch",
"new_version_found": "Versi baru ditemukan. Segarkan untuk memperbarui..",
"options": "Options",
"options": "Pilihan",
"proxy_privacy_policy": "Kebijakan privasi proxy",
"reload": "Muat ulang",
"search": "Mencari",
@@ -86,47 +89,47 @@
"auth": {
"account_exists": "Akun ada dengan kredensial berbeda - Masuk untuk menautkan kedua akun",
"all_sign_in_options": "Semua opsi masuk",
"continue_with_email": "Lanjutkan dengan Email",
"continue_with_email": "Lanjutkan dengan Surel",
"continue_with_github": "Lanjutkan dengan GitHub",
"continue_with_google": "Lanjutkan dengan Google",
"continue_with_microsoft": "Lanjutkan dengan Microsoft",
"email": "Email",
"email": "Surel",
"logged_out": "Keluar",
"login": "Masuk",
"login_success": "Berhasil masuk",
"login_to_hoppscotch": "Masuk ke Hoppscotch",
"logout": "Keluar",
"re_enter_email": "Masukkan kembali email",
"re_enter_email": "Masukkan kembali surel",
"send_magic_link": "Kirim tautan ajaib",
"sync": "Sinkronkan",
"we_sent_magic_link": "Kami mengirimi Anda tautan ajaib!",
"we_sent_magic_link_description": "Periksa kotak masuk Anda - kami mengirim email ke {email}. Ini berisi tautan ajaib yang akan membuat Anda masuk.."
"we_sent_magic_link_description": "Periksa kotak masuk Anda - kami mengirim surel ke {email}. Ini berisi tautan ajaib yang akan membuat Anda masuk.."
},
"authorization": {
"generate_token": "Buat Token",
"include_in_url": "Sertakan dalam URL",
"learn": "Belajar bagaimana",
"pass_key_by": "Lewat",
"password": "Password",
"password": "Kata Sandi",
"token": "Token",
"type": "Jenis Otorisasi",
"username": "Username"
"username": "Nama Pengguna"
},
"collection": {
"created": "Collection dibuat",
"edit": "Mengubah Collection",
"invalid_name": "Berikan nama untuk Collection",
"my_collections": "Collection Saya",
"name": "Collection Baru Saya",
"created": "Koleksi dibuat",
"edit": "Mengubah Koleksi",
"invalid_name": "Berikan nama untuk Koleksi",
"my_collections": "Koleksi Saya",
"name": "Koleksi Baru Saya",
"name_length_insufficient": "Nama koleksi harus minimal 3 karakter",
"new": "Collection baru",
"renamed": "Collection berganti nama",
"new": "Koleksi baru",
"renamed": "Koleksi berganti nama",
"request_in_use": "Permintaan sedang digunakan",
"save_as": "Save as",
"select": "Pilih Collection",
"save_as": "Simpan Sebagai",
"select": "Pilih Koleksi",
"select_location": "Pilih lokasi",
"select_team": "Pilih team",
"team_collections": "Team Collections"
"team_collections": "Koleksi Tim"
},
"confirm": {
"exit_team": "Apakah Anda yakin ingin keluar dari tim ini?",
@@ -136,34 +139,34 @@
"remove_folder": "Apakah Anda yakin ingin menghapus folder ini secara permanen?",
"remove_history": "Apakah Anda yakin ingin menghapus semua riwayat secara permanen?",
"remove_request": "Apakah Anda yakin ingin menghapus permintaan ini secara permanen?",
"remove_team": "Apakah Anda yakin ingin menghapus tim ini??",
"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.",
"sync": "Apakah Anda ingin memulihkan ruang kerja Anda dari cloud? Ini akan membuang kemajuan lokal Anda."
},
"count": {
"header": "Header {count}",
"message": "pesan {count}",
"message": "Pesan {count}",
"parameter": "Parameter {count}",
"protocol": "protocol {count}",
"protocol": "Protocol {count}",
"value": "Nilai {count}",
"variable": "Variabel {count}"
},
"documentation": {
"generate": "Buat dokumentasi",
"generate_message": "Impor collection Hoppscotch apa pun untuk menghasilkan dokumentasi API saat on-the-go."
"generate_message": "Impor koleksi Hoppscotch apa pun untuk menghasilkan dokumentasi API saat on-the-go."
},
"empty": {
"authorization": "Permintaan ini tidak menggunakan otorisasi apa pun",
"body": "Permintaan ini tidak memiliki body",
"collection": "Collection kosong",
"collections": "Collection kosong",
"collection": "Koleksi kosong",
"collections": "Koleksi kosong",
"documentation": "Hubungkan ke endpoint GraphQL untuk melihat dokumentasi",
"endpoint": "Endpoint tidak boleh kosong",
"environments": "Environments kosong",
"folder": "Folder kosong",
"headers": "Permintaan ini tidak memiliki headers",
"history": "History kosong",
"history": "Riwayat kosong",
"invites": "Daftar undangan kosong",
"members": "Team kosong",
"parameters": "Permintaan ini tidak memiliki parameter apa pun",
@@ -172,6 +175,7 @@
"protocols": "Protokol kosong",
"schema": "Hubungkan ke endpoint GraphQL untuk melihat skema",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Nama team kosong",
"teams": "Kamu bukan di team manapun",
"tests": "Tidak ada tes untuk permintaan ini"
@@ -184,11 +188,13 @@
"deleted": "Environment dihapus",
"edit": "Sunting Environment",
"invalid_name": "Tolong beri nama untuk environment",
"my_environments": "My Environments",
"nested_overflow": "variabel environment bersarang dibatasi hingga 10 level",
"new": "Environment Baru",
"no_environment": "No environment",
"no_environment_description": "Tidak ada environment yang dipilih. Pilih apa yang harus dilakukan dengan variabel berikut.",
"select": "Pilih environment",
"team_environments": "Team Environments",
"title": "Environments",
"updated": "Environment diperbarui",
"variable_list": "Daftar Variable"
@@ -197,11 +203,14 @@
"browser_support_sse": "Browser ini sepertinya tidak memiliki dukungan Server Sent Events.",
"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.",
"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",
"incomplete_config_urls": "URL konfigurasi tidak lengkap",
"incorrect_email": "Email Salah",
"incorrect_email": "Surel Salah",
"invalid_link": "Tautan tidak valid",
"invalid_link_description": "Tautan yang Anda klik tidak valid atau kedaluwarsa.",
"json_parsing_failed": "JSON tidak valid",
@@ -222,6 +231,11 @@
"require_github": "Masuk dengan GitHub untuk membuat secret gist",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Folder dibuat",
"edit": "Edit Folder",
@@ -235,8 +249,12 @@
"schema": "Schema",
"subscriptions": "Subscriptions"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Install app",
"install_pwa": "Pasang app",
"login": "Login",
"save_workspace": "Simpan Ruang Kerja Saya"
},
@@ -253,59 +271,77 @@
"tests": "Tulis test script untuk mengotomatiskan debugging."
},
"hide": {
"collection": "Ciutkan Panel Collection",
"collection": "Ciutkan Panel Koleksi",
"more": "Sembunyikan lainnya",
"preview": "Sembunyikan preview",
"sidebar": "Ciutkan sidebar"
},
"import": {
"collections": "Import collections",
"curl": "Import cURL",
"collections": "Impor koleksi",
"curl": "Impor cURL",
"failed": "Kesalahan saat mengimpor: format tidak dikenali",
"from_gist": "Import dari Gist",
"from_gist_description": "Import dari Gist URL",
"from_insomnia": "Import dari Insomnia",
"from_insomnia_description": "Import dari Insomnia collection",
"from_json": "Import dari Hoppscotch",
"from_json_description": "Import dari Hoppscotch collection file",
"from_my_collections": "Import dari Collections Saya",
"from_my_collections_description": "Import dari file Collections Saya",
"from_gist": "Impor dari Gist",
"from_gist_description": "Impor dari Gist URL",
"from_insomnia": "Impor dari Insomnia",
"from_insomnia_description": "Impor dari Koleksi Insomnia",
"from_json": "Impor dari Hoppscotch",
"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_description": "Import dari OpenAPI syarat file (YML/JSON)",
"from_postman": "Import dari Postman",
"from_postman_description": "Import dari Postman collection",
"from_url": "Import dari URL",
"from_openapi_description": "Impor dari OpenAPI syarat berkas (YML/JSON)",
"from_postman": "Impor dari Postman",
"from_postman_description": "Impor dari Koleksi Postman",
"from_url": "Impor dari URL",
"gist_url": "Masukkan Gist URL",
"import_from_url_invalid_fetch": "Tidak bisa mendapatkan data dari url",
"import_from_url_invalid_file_format": "Kesalahan saat mengimpor collections",
"import_from_url_invalid_file_format": "Kesalahan saat mengimpor koleksi",
"import_from_url_invalid_type": "Jenis tidak didukung. nilai yang diterima adalah 'hoppscotch', 'openapi', 'postman', 'insomnia'",
"import_from_url_success": "Collections import",
"json_description": "Import Collections dari file JSON Hoppscotch Collections",
"title": "Import"
"import_from_url_success": "Impor koleksi berhasil",
"json_description": "Impor Koleksi dari berkas JSON Koleksi Hoppscotch",
"title": "Impor"
},
"layout": {
"collapse_collection": "Ciutkan atau Perluas Collections",
"collapse_sidebar": "Ciutkan atau Perluas sidebar",
"column": "Vertical layout",
"column": "Vertikal layout",
"name": "Layout",
"row": "Horizontal layout",
"row": "Horisontal layout",
"zen_mode": "Zen mode"
},
"modal": {
"collections": "Collections",
"collections": "Koleksi",
"confirm": "Mengonfirmasi",
"edit_request": "Edit Request",
"import_export": "Import / Export"
"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",
"client_id": "Client ID",
"color": "Pick a color",
"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",
"keep_alive": "Keep Alive",
"log": "Log",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Pesan",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Menerbitkan",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Langganan",
"topic": "Topic",
"topic_name": "Topic Nama",
"topic_title": "Menerbitkan / Langganan topic",
"topic": "Topik",
"topic_name": "Nama Topik",
"topic_title": "Menerbitkan / Langganan topik",
"unsubscribe": "Berhenti berlangganan",
"url": "URL"
},
@@ -325,9 +361,10 @@
},
"profile": {
"app_settings": "Pengaturan aplikasi",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "EEditor dapat menambah, mengedit, dan menghapus request.",
"email_verification_mail": "Email verifikasi telah dikirim ke alamat email Anda. Silakan klik tautan untuk memverifikasi alamat email Anda.",
"editor_description": "Editor dapat menambah, mengedit, dan menghapus request.",
"email_verification_mail": "Surel verifikasi telah dikirim ke alamat surel Anda. Silakan klik tautan untuk memverifikasi alamat surel Anda.",
"no_permission": "Anda tidak memiliki izin untuk melakukan tindakan ini.",
"owner": "Owner",
"owner_description": "Pemilik dapat menambah, mengedit, dan menghapus permintaan, koleksi, dan anggota tim.",
@@ -378,7 +415,7 @@
"share": "Membagikan",
"share_description": "Bagikan Hoppscotch dengan teman-teman Anda",
"title": "Request",
"type": "Request Tipe",
"type": "Tipe Request",
"url": "URL",
"variables": "Variables",
"view_my_links": "Lihat tautan saya"
@@ -403,21 +440,24 @@
"settings": {
"accent_color": "Accent color",
"account": "Akun",
"account_deleted": "Your account has been deleted",
"account_description": "Sesuaikan pengaturan akun Anda.",
"account_email_description": "Alamat email utama 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",
"delete_account_description": "Once you delete your account, all your data will be permanently deleted. This action cannot be undone.",
"expand_navigation": "Perluas navigasi",
"experiments": "Eksperimen",
"experiments_notice": "Ini adalah kumpulan eksperimen yang sedang kami kerjakan yang mungkin berguna, menyenangkan, keduanya, atau tidak keduanya. Mereka tidak final dan mungkin tidak stabil, jadi jika sesuatu yang terlalu aneh terjadi, jangan panik. Matikan saja. Kesampingkan lelucon, ",
"extension_ver_not_reported": "Tidak Dilaporkan",
"extension_version": "Versi Ekstensi",
"extensions": "Browser extension",
"extensions_use_toggle": "Gunakan ekstensi browser untuk mengirim permintaan (jika ada)",
"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",
@@ -427,21 +467,21 @@
"interceptor_description": "Middleware antara aplikasi dan API.",
"language": "Bahasa",
"light_mode": "Terang",
"official_proxy_hosting": "Official Proxy dihosting oleh Hoppscotch.",
"official_proxy_hosting": "Proxy resmi dihosting oleh Hoppscotch.",
"profile": "Profil",
"profile_description": "Perbarui detail profil Anda",
"profile_email": "Alamat email",
"profile_email": "Alamat surel",
"profile_name": "Nama profil",
"proxy": "Proxy",
"proxy_url": "Proxy URL",
"proxy_use_toggle": "Gunakan middleware proxy untuk mengirim requests ",
"proxy_use_toggle": "Gunakan middleware proxy untuk mengirim requests",
"read_the": "Baca",
"reset_default": "Setel ulang ke default",
"short_codes": "Short codes",
"short_codes_description": "Short codes yang Anda buat.",
"sidebar_on_left": "Sidebar berada di kiri",
"sync": "Synchronise",
"sync_collections": "Collections",
"sync_collections": "Koleksi",
"sync_description": "Pengaturan ini disinkronkan ke cloud.",
"sync_environments": "Environments",
"sync_history": "Riwayat",
@@ -451,9 +491,9 @@
"theme": "Tema",
"theme_description": "Sesuaikan tema aplikasi Anda.",
"use_experimental_url_bar": "Gunakan experimental URL bar dengan environment highlighting",
"user": "User",
"verified_email": "Email terverifikasi",
"verify_email": "Verifikasi email"
"user": "Pengguna",
"verified_email": "Surel terverifikasi",
"verify_email": "Verifikasi surel"
},
"shortcodes": {
"actions": "Tindakan",
@@ -469,7 +509,7 @@
"close_current_menu": "Tutup menu saat ini",
"command_menu": "Cari & menu perintah",
"help_menu": "Menu bantuan",
"show_all": "Keyboard shortcuts",
"show_all": "Pintasan keyboard",
"title": "Umum"
},
"miscellaneous": {
@@ -478,13 +518,13 @@
},
"navigation": {
"back": "Kembali ke halaman sebelumnya",
"documentation": "Pergi halaman Dokumentasi",
"documentation": "Pergi ke halaman Dokumentasi",
"forward": "Pergi ke halaman berikutnya",
"graphql": "Pergi ke halaman GraphQL",
"profile": "Pergi ke halaman Profile",
"realtime": "Pergi ke halaman Realtime",
"rest": "Pergi ke halaman REST",
"settings": "Pergi halaman Pengaturan",
"settings": "Pergi ke halaman Pengaturan",
"title": "Navigasi"
},
"request": {
@@ -519,7 +559,7 @@
"code": "Tampilkan code",
"collection": "Luaskan Panel Collection",
"more": "Lebih banyak",
"sidebar": "memperluas sidebar"
"sidebar": "Memperluas sidebar"
},
"socketio": {
"communication": "Komunikasi",
@@ -530,7 +570,7 @@
"url": "URL"
},
"sse": {
"event_type": "Event tipe",
"event_type": "Tipe Event",
"log": "Log",
"url": "URL"
},
@@ -554,7 +594,7 @@
"download_started": "Unduhan dimulai",
"enabled": "Diaktifkan",
"file_imported": "File diimpor",
"finished_in": "Selesai di {duration} ms",
"finished_in": "Selesai dalam {duration} ms",
"history_deleted": "Riwayat dihapus",
"linewrap": "Wrap lines",
"loading": "Memuat...",
@@ -562,22 +602,22 @@
"mqtt_subscription_failed": "Terjadi masalah saat berlangganan topik: {topic}",
"none": "Tidak ada",
"nothing_found": "Tidak ada yang ditemukan untuk",
"published_error": "Terjadi masalah saat memublikasikan msg: {topic} ke topic: {message}",
"published_message": "Pesan yang dipublikasikan: {message} ke topic: {topic}",
"published_error": "Terjadi masalah saat memublikasikan msg: {topic} ke topik: {message}",
"published_message": "Pesan yang dipublikasikan: {message} ke topik: {topic}",
"reconnection_error": "Gagal menyambung kembali",
"subscribed_failed": "Gagal berlangganan topic: {topic}",
"subscribed_success": "Berhasil berlangganan topic: {topic}",
"unsubscribed_failed": "Gagal berhenti berlangganan dari topic: {topic}",
"unsubscribed_success": "Berhasil berhenti berlangganan dari topic: {topic}",
"subscribed_failed": "Gagal berlangganan topik: {topic}",
"subscribed_success": "Berhasil berlangganan topik: {topic}",
"unsubscribed_failed": "Gagal berhenti berlangganan dari topik: {topic}",
"unsubscribed_success": "Berhasil berhenti berlangganan dari topik: {topic}",
"waiting_send_request": "Menunggu untuk mengirim request"
},
"support": {
"changelog": "Baca lebih lanjut tentang rilis terbaru",
"chat": "Pertanyaan? berbincanglah dengan kami!",
"community": "Ajukan pertanyaan dan bantu orang lain",
"community": "Ajukan pertanyaan dan bantu orang lain",
"documentation": "Baca lebih lanjut tentang Hoppscotch",
"forum": "Ajukan pertanyaan dan dapatkan jawaban",
"github": "Ikuti kami di Github",
"github": "Ikuti kami di GitHub",
"shortcuts": "Jelajahi aplikasi lebih cepat",
"team": "Hubungi tim",
"title": "Mendukung",
@@ -609,10 +649,10 @@
"deleted": "Tim dihapus",
"edit": "Edit Tim",
"email": "E-mail",
"email_do_not_match": "Email tidak cocok dengan detail akun Anda. Hubungi pemilik tim Anda.",
"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_email_format": "Format email 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",
"invalid_invite_link_description": "Tautan yang Anda ikuti tidak valid. Hubungi pemilik tim Anda.",
@@ -638,8 +678,8 @@
"name_length_insufficient": "Nama tim harus setidaknya 6 karakter",
"name_updated": "Nama tim diperbarui",
"new": "Tim Baru",
"new_created": "New team created",
"new_name": "Tim baru dibuat",
"new_created": "Tim baru dibuat",
"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.",
"not_found": "Tim tidak ditemukan. Hubungi pemilik tim Anda.",
@@ -652,11 +692,16 @@
"we_sent_invite_link": "Kami mengirim tautan undangan ke semua undangan!",
"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."
},
"test": {
"failed": "tes gagal",
"failed": "Tes gagal",
"javascript_code": "JavaScript Code",
"learn": "Baca dokumentasi",
"passed": "tes lulus",
"passed": "Tes lulus",
"report": "Laporan pengujian",
"results": "Hasil tes",
"script": "Script",
@@ -666,7 +711,7 @@
"communication": "Komunikasi",
"log": "Log",
"message": "Pesan",
"protocols": "Protocols",
"protocols": "Protokol",
"url": "URL"
}
}

View File

@@ -7,6 +7,7 @@
"clear_all": "Cancella tutto",
"close": "Close",
"connect": "Connetti",
"connecting": "Connecting",
"copy": "Copia",
"delete": "Elimina",
"disconnect": "Disconnetti",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplica",
"edit": "Modifica",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Torna indietro",
"group_by": "Group by",
"label": "Etichetta",
"learn_more": "Per saperne di più",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Cerca",
"send": "Invia",
"start": "Avvia",
"starting": "Starting",
"stop": "Interrompi",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -172,6 +175,7 @@
"protocols": "I protocolli sono vuoti",
"schema": "Connettiti a un endpoint GraphQL per mostrare lo schema",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Il nome del team è vuoto",
"teams": "I team sono vuoti",
"tests": "Non ci sono test per questa richiesta"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Modifica ambiente",
"invalid_name": "Si prega di fornire un nome valido per l'ambiente",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nuovo ambiente",
"no_environment": "Nessun ambiente",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Seleziona ambiente",
"team_environments": "Team Environments",
"title": "Ambienti",
"updated": "Environment updation",
"variable_list": "Elenco variabili"
@@ -197,6 +203,9 @@
"browser_support_sse": "Questo browser non sembra supportare gli eventi inviati dal server (Server Sent Events).",
"check_console_details": "Controlla il log della console per i dettagli.",
"curl_invalid_format": "cURL non è formattato correttamente",
"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.",
"empty_req_name": "Nome richiesta vuoto",
"f12_details": "(F12 per i dettagli)",
"gql_prettify_invalid_query": "Impossibile abbellire una query non valida, risolvere gli errori di sintassi della query e riprovare",
@@ -222,6 +231,11 @@
"require_github": "Accedi con GitHub per creare un Gist segreto",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Cartella creata",
"edit": "Modifica cartella",
@@ -235,6 +249,10 @@
"schema": "Schema",
"subscriptions": "Sottoscrizioni"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installa l'applicazione",
"login": "Accedi",
@@ -298,10 +316,28 @@
"import_export": "Importa/Esporta"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Comunicazione",
"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",
"log": "Log",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Messaggio",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Pubblica",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Sottoscrivi",
"topic": "Argomento",
"topic_name": "Nome argomento",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Impostazioni della app",
"default_hopp_displayname": "Unnamed User",
"editor": "Autore",
"editor_description": "Gli Autori possono aggiungere, modificare e cancellare richieste.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Colore in risalto",
"account": "Account",
"account_deleted": "Your account has been deleted",
"account_description": "Personalizza le impostazioni del tuo account.",
"account_email_description": "Il tuo indirizzo email principale.",
"account_name_description": "Questo è il tuo nome mostrato.",
@@ -411,6 +449,8 @@
"change_font_size": "Cambia la dimensione dei caratteri",
"choose_language": "Scegli la lingua",
"dark_mode": "Scuro",
"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": "Espandi navigazione",
"experiments": "Sperimentale",
"experiments_notice": "Questa è una raccolta di esperimenti su cui stiamo lavorando che potrebbero rivelarsi utili, divertenti, entrambi o nessuno dei due. Non sono definitivi e potrebbero non essere stabili, quindi se succede qualcosa di eccessivamente strano, niente panico. Basta solo disabilitare quella dannata cosa. Scherzi a parte, ",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Abbiamo inviato un link di invito a tutti gli invitati!",
"we_sent_invite_link_description": "Chiedi a tutti gli invitati di controllare la loro casella email. Cliccando sul link possono entrare nel team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "Test fallito",
"javascript_code": "Codice JavaScript",

View File

@@ -0,0 +1,714 @@
{
"action": {
"autoscroll": "自動スクロール",
"cancel": "キャンセル",
"choose_file": "ファイルを選択してください",
"clear": "クリア",
"clear_all": "すべてクリア",
"close": "閉じる",
"connect": "接続",
"connecting": "接続中",
"copy": "コピー",
"delete": "消去",
"disconnect": "切断",
"dismiss": "閉じる",
"dont_save": "保存しない",
"download_file": "ファイルをダウンロード",
"drag_to_reorder": "ドラッグして並べ替え",
"duplicate": "複製",
"edit": "編集",
"filter": "フィルター",
"go_back": "戻る",
"group_by": "グループ化",
"label": "ラベル",
"learn_more": "もっと詳しく",
"less": "表示を減らす",
"more": "もっと見る",
"new": "新規",
"no": "いいえ",
"open_workspace": "ワークスペースを開く",
"paste": "貼り付け",
"prettify": "自動整形",
"remove": "削除",
"restore": "戻す",
"save": "保存",
"scroll_to_bottom": "下にスクロール",
"scroll_to_top": "上にスクロール",
"search": "検索",
"send": "送信",
"start": "はじめる",
"starting": "開始中",
"stop": "止める",
"to_close": "閉じる",
"to_navigate": "上下に移動する",
"to_select": "選択する",
"turn_off": "オフ",
"turn_on": "オン",
"undo": "元に戻す",
"yes": "はい"
},
"add": {
"new": "新しく追加",
"star": "スターを追加"
},
"app": {
"chat_with_us": "チャットで問い合わせる",
"contact_us": "お問い合わせ",
"copy": "コピー",
"copy_user_id": "User Auth Tokenをコピー",
"developer_option": "開発者向けオプション",
"developer_option_description": "Hoppscotchの開発に役立つ開発者向けツール",
"discord": "Discord",
"documentation": "ドキュメント",
"github": "GitHub",
"help": "ヘルプ & フィードバック",
"home": "ホーム",
"invite": "招待",
"invite_description": "HoppscotchはオープンソースのAPI開発エコシステムです。APIを作成・管理するためのシンプルで直感的なインターフェイスを設計しました。HoppscotchはAPIの構築・テスト・文書化・共有を支援します。",
"invite_your_friends": "友達を招待する",
"join_discord_community": "Discordコミュニティに参加する",
"keyboard_shortcuts": "キーボードショートカット",
"name": "Hoppscotch",
"new_version_found": "新しいバージョンが見つかりました。再読み込みすると更新されます。",
"options": "オプション",
"proxy_privacy_policy": "プロキシのプライバシーポリシー",
"reload": "更新",
"search": "検索",
"share": "共有",
"shortcuts": "ショートカット",
"spotlight": "スポットライト",
"status": "状態",
"status_description": "ウェブサイトの状態を確認",
"terms_and_privacy": "利用規約とプライバシーポリシー",
"twitter": "Twitter",
"type_a_command_search": "コマンドもしくは検索ワードを入力…",
"we_use_cookies": "Cookieを使用しています",
"whats_new": "新着情報",
"wiki": "Wiki"
},
"auth": {
"account_exists": "アカウントがそれぞれの認証情報で存在しています - ログインして両方のアカウントを連携する",
"all_sign_in_options": "すべてのサインインオプション",
"continue_with_email": "メールアドレスで続行",
"continue_with_github": "GitHubアカウントで続行",
"continue_with_google": "Googleアカウントで続行",
"continue_with_microsoft": "Microsoftアカウントで続行",
"email": "メールアドレス",
"logged_out": "ログアウトしました",
"login": "ログイン",
"login_success": "正常にログインしました",
"login_to_hoppscotch": "Hoppscotchにログインする",
"logout": "ログアウト",
"re_enter_email": "メールアドレスを再入力してください",
"send_magic_link": "マジックリンクを送る",
"sync": "同期",
"we_sent_magic_link": "マジックリンクを送信しました!",
"we_sent_magic_link_description": "受信トレイを確認してください - {email}にメールを送信しました。ログインするためのマジックリンクが含まれています。"
},
"authorization": {
"generate_token": "トークンを生成",
"include_in_url": "URLに含める",
"learn": "詳しく学ぶ",
"pass_key_by": "認証元: ",
"password": "パスワード",
"token": "トークン",
"type": "認証タイプ",
"username": "ユーザー名"
},
"collection": {
"created": "コレクションが作成されました",
"edit": "コレクションの編集",
"invalid_name": "コレクション名を入力してください",
"my_collections": "マイコレクション",
"name": "新しいマイコレクション",
"name_length_insufficient": "コレクション名は3文字以上である必要があります",
"new": "新しいコレクション",
"renamed": "コレクション名が変更されました",
"request_in_use": "使用中のリクエスト",
"save_as": "名前を付けて保存",
"select": "コレクションを選択",
"select_location": "場所を選択",
"select_team": "チームを選択",
"team_collections": "チームコレクション"
},
"confirm": {
"exit_team": "本当にこのチームから退出しますか?",
"logout": "ログアウトしてもよろしいですか?",
"remove_collection": "このコレクションを完全に削除してもよろしいですか?",
"remove_environment": "この環境を完全に削除してもよろしいですか?",
"remove_folder": "このフォルダを完全に削除してもよろしいですか?",
"remove_history": "すべての履歴を完全に削除してもよろしいですか?",
"remove_request": "このリクエストを完全に削除してもよろしいですか?",
"remove_team": "このチームを削除してもよろしいですか?",
"remove_telemetry": "テレメトリをオプトアウトしてもよろしいですか?",
"request_change": "現在のリクエストを削除してもよろしいですか?保存されていない変更は削除されます。",
"sync": "クラウドからワークスペースを復元しますか?この場合、ローカルの進行状況は破棄されます。"
},
"count": {
"header": "ヘッダー {count}",
"message": "メッセージ {count}",
"parameter": "パラメータ {count}",
"protocol": "プロトコル {count}",
"value": "値 {count}",
"variable": "変数 {count}"
},
"documentation": {
"generate": "ドキュメントを生成",
"generate_message": "Hoppscotchのコレクションをインポートして、APIドキュメントをすぐに生成することができます。"
},
"empty": {
"authorization": "このリクエストでは認証を使用しません",
"body": "リクエストボディがありません",
"collection": "コレクションは空です",
"collections": "コレクションがありません",
"documentation": "GraphQLエンドポイントに接続してドキュメントを表示する",
"endpoint": "エンドポイントを空にすることはできません",
"environments": "環境変数がありません",
"folder": "フォルダは空です",
"headers": "このリクエストにはヘッダーがありません",
"history": "履歴がありません",
"invites": "招待リストは空です",
"members": "チームメンバーはいません",
"parameters": "このリクエストにはパラメータがありません",
"pending_invites": "このチームに保留中の招待はありません",
"profile": "ログインしてプロフィールを見る",
"protocols": "プロトコルがありません",
"schema": "GraphQLエンドポイントに接続する",
"shortcodes": "ショートコードはありません",
"subscription": "サブスクリプションはありません",
"team_name": "チーム名がありません",
"teams": "チームに参加していません",
"tests": "このリクエストのテストはありません"
},
"environment": {
"add_to_global": "環境変数をGlobalに追加",
"added": "環境変数を追加しました",
"create_new": "新しい環境変数を作成",
"created": "環境変数を作成しました",
"deleted": "環境変数を削除しました",
"edit": "環境変数の編集",
"invalid_name": "環境変数名を入力してください",
"my_environments": "個人の環境変数",
"nested_overflow": "環境変数の入れ子は10段階までです",
"new": "新しい環境変数",
"no_environment": "環境変数が存在しません",
"no_environment_description": "環境変数が選択されていません。次の環境変数から選択してください。",
"select": "環境変数を選択",
"team_environments": "チームの環境変数",
"title": "環境変数",
"updated": "環境変数を更新しました",
"variable_list": "環境変数リスト"
},
"error": {
"browser_support_sse": "このブラウザはServer-Sent Eventsをサポートしていないようです。",
"check_console_details": "詳細については、コンソールログを確認してください。",
"curl_invalid_format": "cURLが正しくフォーマットされていません",
"danger_zone": "危険",
"delete_account": "あなたのアカウントは以下のチームのオーナーとなっています:",
"delete_account_description": "アカウントを削除する前にチームを離脱するか、オーナーを委任するか、チームを削除してください。",
"empty_req_name": "リクエスト名がありません",
"f12_details": "詳細はF12キーを押してください",
"gql_prettify_invalid_query": "クエリを整形できませんでした。クエリの構文エラーを解決して再試行してください。",
"incomplete_config_urls": "設定URLが不完全です",
"incorrect_email": "メールアドレスが間違っています",
"invalid_link": "リンクが無効です",
"invalid_link_description": "クリックしたリンクは無効か期限切れです。",
"json_parsing_failed": "JSONが無効です",
"json_prettify_invalid_body": "ボディを整形できませんでした。JSONの構文エラーを解決して再試行してください。",
"network_error": "ネットワークエラーが発生したようです。もう一度お試しください。",
"network_fail": "リクエストを送信できませんでした",
"no_duration": "期間なし",
"no_results_found": "該当するものがありませんでした",
"page_not_found": "このページは見つかりませんでした",
"script_fail": "リクエスト前のスクリプトを実行できませんでした",
"something_went_wrong": "不明なエラーです",
"test_script_fail": "リクエスト後のスクリプトを実行できませんでした"
},
"export": {
"as_json": "JSONとしてエクスポート",
"create_secret_gist": "Secret Gistを作成",
"gist_created": "Gistが作成されました",
"require_github": "GitHubにログインしてSecret Gistを作成",
"title": "エクスポート"
},
"filter": {
"all": "全て",
"none": "無し",
"starred": "スター付き"
},
"folder": {
"created": "作成されたフォルダ",
"edit": "フォルダの編集",
"invalid_name": "フォルダ名を入力してください",
"name_length_insufficient": "フォルダ名は3文字以上である必要があります",
"new": "新しいフォルダ",
"renamed": "フォルダ名が変更されました"
},
"graphql": {
"mutations": "ミューテーション",
"schema": "スキーマ",
"subscriptions": "サブスクリプション"
},
"group": {
"time": "時間",
"url": "URL"
},
"header": {
"install_pwa": "アプリをインストール",
"login": "ログイン",
"save_workspace": "ワークスペースを保存"
},
"helpers": {
"authorization": "リクエストを送信すると、認証ヘッダーが自動的に生成されます。",
"generate_documentation_first": "最初にドキュメントを生成する",
"network_fail": "APIエンドポイントに到達できません。ネットワーク接続を確認して再試行してください。",
"offline": "オフラインになっているようです。このワークスペースのデータは最新でない可能性があります。",
"offline_short": "オフラインになっているようです。",
"post_request_tests": "テストスクリプトはJavaScriptで記述されており、レスポンスを受信した後に実行されます。",
"pre_request_script": "プリリクエストスクリプトはJavaScriptで記述されており、リクエストが送信される前に実行されます。",
"script_fail": "プリリクエストスクリプトに問題があるようです。以下のエラーを確認し、スクリプトを修正してください。",
"test_script_fail": "テストスクリプトにエラーがあるようです。エラーを修正し、再度テストを実行してください。",
"tests": "デバッグを自動化するテストスクリプトを作成します。"
},
"hide": {
"collection": "コレクションパネルを非表示",
"more": "隠す",
"preview": "プレビューを非表示",
"sidebar": "サイドバーを非表示"
},
"import": {
"collections": "コレクションをインポート",
"curl": "cURLをインポート",
"failed": "インポートに失敗しました",
"from_gist": "Gistからインポート",
"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": "マイコレクションファイルからインポート",
"from_openapi": "OpenAPIからインポート",
"from_openapi_description": "OpenAPI仕様のファイル (YML/JSON) からインポート",
"from_postman": "Postmanからインポート",
"from_postman_description": "Postmanのコレクションからインポート",
"from_url": "URLからインポート",
"gist_url": "GistのURLを入力してください",
"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のコレクション (JSONファイル) からインポート",
"title": "インポート"
},
"layout": {
"collapse_collection": "コレクションを表示・非表示",
"collapse_sidebar": "サイドバーを表示・非表示",
"column": "縦型レイアウト",
"name": "レイアウト",
"row": "横型レイアウト",
"zen_mode": "禅モード"
},
"modal": {
"collections": "コレクション",
"confirm": "確認",
"edit_request": "リクエストの編集",
"import_export": "インポート・エクスポート"
},
"mqtt": {
"already_subscribed": "既にこのトピックにサブスクライブしています",
"clean_session": "セッションをクリア",
"clear_input": "入力をクリア",
"clear_input_on_send": "送信後に入力をクリア",
"client_id": "クライアントID",
"color": "色を選択",
"communication": "コミュニケーション",
"connection_config": "接続設定",
"connection_not_authorized": "このMQTTコネクションではどの認証も使われていません。",
"invalid_topic": "このサブスクリプションのためのトピックを入力してください",
"keep_alive": "Keep Alive",
"log": "ログ",
"lw_message": "Last-Willメッセージ",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Willトピック",
"message": "メッセージ",
"new": "新しいサブスクリプション",
"not_connected": "まずMQTTコネクションを開始してください。",
"publish": "パブリッシュ",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "サブスクライブ",
"topic": "トピック",
"topic_name": "トピック名",
"topic_title": "トピックのパブリッシュ・サブスクライブ",
"unsubscribe": "サブスクライブを解除",
"url": "URL"
},
"navigation": {
"doc": "ドキュメント",
"graphql": "GraphQL",
"profile": "Profile",
"realtime": "リアルタイム",
"rest": "REST",
"settings": "設定"
},
"preRequest": {
"javascript_code": "JavaScriptコード",
"learn": "ドキュメントを読む",
"script": "プリリクエストスクリプト",
"snippets": "スニペット"
},
"profile": {
"app_settings": "アプリ設定",
"default_hopp_displayname": "ユーザ名未設定",
"editor": "編集者",
"editor_description": "編集者はリクエストの追加・編集・削除を行うことができます。",
"email_verification_mail": "登録されているメールアドレスに認証メールが送信されました。リンクをクリックしてメールアドレスを認証してください。",
"no_permission": "この操作を行う権限がありません。",
"owner": "管理者",
"owner_description": "管理者はリクエスト・コレクション・チームメンバーの追加・編集・削除が可能です。",
"roles": "ロール",
"roles_description": "ロールは共有コレクションへのアクセスを制御するために使用されます。",
"updated": "プロフィールを更新しました",
"viewer": "閲覧者",
"viewer_description": "閲覧者はリクエストの閲覧・利用が可能です。"
},
"remove": {
"star": "スターを外す"
},
"request": {
"added": "リクエストが追加されました",
"authorization": "認証",
"body": "リクエストボディ",
"choose_language": "言語を選択",
"content_type": "コンテンツタイプ",
"content_type_titles": {
"others": "その他",
"structured": "構造化されたデータ",
"text": "テキスト"
},
"copy_link": "リンクをコピー",
"duration": "間隔",
"enter_curl": "cURLコマンドを入力してください",
"generate_code": "コードを生成",
"generated_code": "生成されたコード",
"header_list": "ヘッダーリスト",
"invalid_name": "リクエスト名を入力してください",
"method": "メソッド",
"name": "リクエスト名",
"new": "新しいリクエスト",
"override": "上書き",
"override_help": "リクエストの <kbd>Content-Type</kbd> ヘッダを上書き",
"overriden": "上書きされました",
"parameter_list": "クエリパラメータ",
"parameters": "パラメータ",
"path": "パス",
"payload": "ペイロード",
"query": "クエリ",
"raw_body": "生のリクエストボディ",
"renamed": "リクエストの名前を変更",
"run": "実行",
"save": "保存",
"save_as": "名前を付けて保存",
"saved": "保存されたリクエスト",
"share": "共有",
"share_description": "Hoppscotchを友人に共有",
"title": "リクエスト",
"type": "リクエストの種類",
"url": "URL",
"variables": "変数",
"view_my_links": "自分のリンクを見る"
},
"response": {
"body": "レスポンスボディ",
"filter_response_body": "JSONレスポンスボディをフィルタ (JSONPathシンタックスを使用)",
"headers": "ヘッダー",
"html": "HTML",
"image": "画像",
"json": "JSON",
"pdf": "PDF",
"preview_html": "HTMLのプレビュー",
"raw": "Raw",
"size": "サイズ",
"status": "ステータス",
"time": "時間",
"title": "レスポンス",
"waiting_for_connection": "接続を待っています",
"xml": "XML"
},
"settings": {
"accent_color": "アクセントの色",
"account": "アカウント",
"account_deleted": "あなたのアカウントは削除されました",
"account_description": "アカウント設定をカスタマイズ",
"account_email_description": "プライマリメールアドレス",
"account_name_description": "あなたの表示名",
"background": "背景",
"black_mode": "ブラック",
"change_font_size": "フォントの大きさを変更",
"choose_language": "言語を選択",
"dark_mode": "ダーク",
"delete_account": "アカウントの削除",
"delete_account_description": "アカウントを削除すると、あなたのアカウントに紐づくデータは全て永久に削除されます。これは取り消すことができません。",
"expand_navigation": "ナビゲーションの詳細表示",
"experiments": "試験的な機能",
"experiments_notice": "これらは試験的に実装している機能で、役に立つかもしれないし、楽しいかもしれないし、両方かもしれないし、はたまたどちらでもないかもしれません。これらは未完成で、安定したものではありません。何か問題がありましたら、こちらより報告をお願いします。→",
"extension_ver_not_reported": "未報告",
"extensions": "拡張機能",
"extension_version": "ブラウザ拡張機能のバージョン",
"extensions_use_toggle": "ブラウザ拡張機能を使用してリクエストを送信する(利用可能な場合)",
"follow": "フォローする",
"font_size": "フォントサイズ",
"font_size_large": "大きめ",
"font_size_medium": "普通",
"font_size_small": "小さめ",
"interceptor": "インターセプタ",
"interceptor_description": "アプリケーションとAPIをつなぐミドルウェア",
"language": "言語",
"light_mode": "ライト",
"official_proxy_hosting": "公式プロキシはHoppscotchによってホストされています。",
"profile": "プロフィール",
"profile_description": "プロフィールの詳細を更新",
"profile_email": "メールアドレス",
"profile_name": "プロフィールに表示する名前",
"proxy": "プロキシ",
"proxy_url": "プロキシURL",
"proxy_use_toggle": "リクエストの送信にプロキシミドルウェアを使用する",
"read_the": "詳しくは",
"reset_default": "デフォルトにリセット",
"short_codes": "ショートコード",
"short_codes_description": "あなたが作成したショートコードです。",
"sidebar_on_left": "サイドバーを左側に表示",
"sync": "同期する",
"sync_collections": "コレクション",
"sync_description": "これらの設定はクラウドに同期されます。",
"sync_environments": "環境変数",
"sync_history": "履歴",
"system_mode": "システム",
"telemetry": "テレメトリ",
"telemetry_helps_us": "テレメトリは私たちの業務を改善し、ユーザの皆様に最高の体験を提供するために役立てられます。",
"theme": "テーマ",
"theme_description": "アプリケーションのテーマをカスタマイズ",
"use_experimental_url_bar": "ハイライトした実験的なURLバーを使用",
"user": "ユーザー",
"verified_email": "メールアドレスの認証済",
"verify_email": "メールアドレスの認証"
},
"shortcodes": {
"actions": "アクション",
"created_on": "作成日",
"deleted": "ショートコードを削除しました",
"method": "メソッド",
"not_found": "ショートコードが見つかりません",
"short_code": "ショートコード",
"url": "URL"
},
"shortcut": {
"general": {
"close_current_menu": "現在のメニューを閉じる",
"command_menu": "検索&コマンドメニュー",
"help_menu": "ヘルプメニュー",
"show_all": "キーボードショートカット",
"title": "全般"
},
"miscellaneous": {
"invite": "Hoppscotchに招待",
"title": "その他"
},
"navigation": {
"back": "前のページに戻る",
"documentation": "ドキュメントページに移動",
"forward": "次のページに進む",
"graphql": "GraphQLページに移動",
"profile": "プロフィールページに移動",
"realtime": "リアルタイムページに移動",
"rest": "RESTページに移動",
"settings": "設定ページに移動",
"title": "ナビゲーション"
},
"request": {
"copy_request_link": "コピーリクエストリンク",
"delete_method": "DELETEメソッドを選択",
"get_method": "GETメソッドを選択",
"head_method": "HEADメソッドを選択",
"method": "メソッド",
"next_method": "次のメソッドを選択",
"post_method": "POSTメソッドを選択",
"previous_method": "前のメソッドを選択",
"put_method": "PUTメソッドを選択",
"reset_request": "リセットリクエスト",
"save_to_collections": "コレクションに保存",
"send_request": "リクエストを送信",
"title": "リクエスト"
},
"response": {
"copy": "レスポンスをクリップボードにコピー",
"download": "レスポンスをファイルとして保存",
"title": "レスポンス"
},
"theme": {
"black": "テーマをブラックモードに変更",
"dark": "テーマをダークモードに変更",
"light": "テーマをライトモードに変更",
"system": "テーマをシステム標準に変更",
"title": "テーマ"
}
},
"show": {
"code": "コードを表示",
"collection": "コレクションパネルを表示",
"more": "さらに表示",
"sidebar": "サイドバーを表示"
},
"socketio": {
"communication": "コミュニケーション",
"connection_not_authorized": "このSocketIOコネクションではどの認証も使われていません。",
"event_name": "イベント・トピック名",
"events": "イベント",
"log": "ログ",
"url": "URL"
},
"sse": {
"event_type": "イベントの種類",
"log": "ログ",
"url": "URL"
},
"state": {
"bulk_mode": "一括編集",
"bulk_mode_placeholder": "エントリは改行で区切られます。\nキーと値は「:」で区切られます。\n追加したいが無効にしたい行の先頭には「#」を追加してください。",
"cleared": "クリア",
"connected": "接続済み",
"connected_to": "{名前}に接続しました",
"connecting_to": "{名前}に接続しています...",
"copied_to_clipboard": "クリップボードにコピーしました",
"deleted": "削除されました",
"deprecated": "非推奨",
"disabled": "無効",
"disconnected": "切断されました",
"disconnected_from": "{名前}から切断されました",
"docs_generated": "生成されたドキュメント",
"download_started": "ダウンロード開始",
"enabled": "有効",
"file_imported": "インポートされたファイル",
"finished_in": "{duration} msで終了しました",
"history_deleted": "履歴が削除されました",
"linewrap": "行の折り返し",
"loading": "読み込んでいます...",
"message_received": "トピック: {topic} でメッセージ: {message} を受信しました",
"mqtt_subscription_failed": "トピック: {topic} のサブスクライブで問題が発生しました",
"none": "なし",
"nothing_found": "何も見つかりません",
"published_error": "ピック: {topic} にメッセージ: {message} を送信する際に問題が発生しました",
"published_message": "トピック: {topic} にメッセージ: {message} を送信しました",
"reconnection_error": "再接続に失敗",
"subscribed_failed": "トピック: {topic} のサブスクライブに失敗",
"subscribed_success": "トピック: {topic} のサブスクライブに成功",
"unsubscribed_failed": "トピック: {topic} のサブスクライブ解除に失敗",
"unsubscribed_success": "トピック: {topic} のサブスクライブ解除に成功",
"waiting_send_request": "リクエストの送信を待機中"
},
"support": {
"changelog": "最新リリースについてもっと読む",
"chat": "ご質問はこちら。チャットでお問い合わせください!",
"community": "質問の投稿・回答はこちらから",
"documentation": "Hoppscotchをもっと知る",
"forum": "質問をして答えを得る",
"github": "GitHubでフォローする",
"shortcuts": "アプリをより効率よく使いこなす",
"team": "チームと連絡を取る",
"title": "サポート",
"twitter": "私たちのTwitterをフォローする"
},
"tab": {
"authorization": "認証",
"body": "ボディ",
"collections": "コレクション",
"documentation": "ドキュメント",
"headers": "ヘッダー",
"history": "履歴",
"mqtt": "MQTT",
"parameters": "パラメータ",
"pre_request_script": "プリリクエストスクリプト",
"queries": "クエリ",
"query": "クエリ",
"schema": "スキーマ",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "テスト",
"types": "種類",
"variables": "変数",
"websocket": "WebSocket"
},
"team": {
"already_member": "あなたは既にこのチームのメンバーです。チームの管理者に連絡してください。",
"create_new": "新しいチームを作成",
"deleted": "チームが削除されました",
"edit": "チームの編集",
"email": "メールアドレス",
"email_do_not_match": "メールアドレスがアカウント情報と一致しません。チームの管理者に連絡してください。",
"exit": "チームから退出",
"exit_disabled": "管理者はチームから退出できません",
"invalid_email_format": "メールアドレスの形式が無効です",
"invalid_id": "チームIDが無効です。チームの管理者に連絡してください。",
"invalid_invite_link": "招待リンクが無効です",
"invalid_invite_link_description": "このリンクは無効です。チームの管理者に連絡してください。",
"invalid_member_permission": "チームメンバーに有効な許可を与えてください",
"invite": "招待",
"invite_more": "さらに招待",
"invite_tooltip": "このワークスペースに招待",
"invited_to_team": "{owner}が{team}にあなたを招待しました",
"join": "招待を了承しました",
"join_beta": "ベータプログラムに参加して、チームにアクセスする。",
"join_team": "{team}に参加",
"joined_team": "あなたは{team}に参加しました",
"joined_team_description": "あなたはこのチームのメンバーです",
"left": "あなたはチームから退出しました",
"login_to_continue": "ログインして続行",
"login_to_continue_description": "チームに参加するには、ログインが必要です。",
"logout_and_try_again": "ログアウトして別のアカウントでサインインする",
"member_has_invite": "このメールアドレスはすでに招待されています。チームの管理者に連絡してください。",
"member_not_found": "メンバーが見つかりませんでした。チームの管理者に連絡してください。",
"member_removed": "ユーザーが削除されました",
"member_role_updated": "ユーザーロールが更新されました",
"members": "メンバー",
"name_length_insufficient": "チーム名は6文字以上である必要があります",
"name_updated": "チーム名が更新されました",
"new": "新しいチーム",
"new_created": "新しいチームが作成されました",
"new_name": "私の新しいチーム",
"no_access": "これらのコレクションを編集することはできません",
"no_invite_found": "招待が見つかりません。チームの管理者に連絡してください。",
"not_found": "チームが見つかりません。チームの管理者に連絡してください。",
"not_valid_viewer": "あなたは有効な閲覧者ではありません。チームの管理者に連絡してください。",
"pending_invites": "招待の保留",
"permissions": "権限",
"saved": "チームが保存されました",
"select_a_team": "チームを選択",
"title": "チーム",
"we_sent_invite_link": "招待者の皆様に、招待リンクを送信しました!",
"we_sent_invite_link_description": "招待者全員に受信トレイを確認するよう依頼します。リンクをクリックすると、チームに参加できます。"
},
"team_environment": {
"deleted": "環境変数を削除しました",
"duplicate": "環境変数が重複しています",
"not_found": "環境変数が見つかりません"
},
"test": {
"failed": "テスト失敗",
"javascript_code": "JavaScriptコード",
"learn": "ドキュメントを読む",
"passed": "テスト成功",
"report": "テストレポート",
"results": "テスト結果",
"script": "スクリプト",
"snippets": "スニペット"
},
"websocket": {
"communication": "コミュニケーション",
"log": "ログ",
"message": "メッセージ",
"protocols": "プロトコル",
"url": "URL"
}
}

View File

@@ -1,26 +1,28 @@
{
"action": {
"autoscroll": "Autoscroll",
"autoscroll": "자동 스크롤",
"cancel": "취소",
"choose_file": "파일 선택",
"clear": "지우기",
"clear_all": "모두 지우기",
"close": "Close",
"close": "닫기",
"connect": "연결",
"connecting": "Connecting",
"copy": "복사",
"delete": "삭제",
"disconnect": "연결 해제",
"dismiss": "닫기",
"dont_save": "Don't save",
"dont_save": "저장 안함",
"download_file": "파일 다운로드",
"drag_to_reorder": "Drag to reorder",
"duplicate": "복제",
"edit": "편집",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "돌아가기",
"group_by": "Group by",
"label": "이름",
"learn_more": "더 알아보기",
"less": "Less",
"less": "접기",
"more": "더보기",
"new": "추가",
"no": "아니요",
@@ -35,6 +37,7 @@
"search": "검색",
"send": "보내기",
"start": "시작",
"starting": "Starting",
"stop": "정지",
"to_close": "로 닫기",
"to_navigate": "로 이동",
@@ -77,7 +80,7 @@
"status": "상태",
"status_description": "Check the status of the website",
"terms_and_privacy": "약관 및 개인정보 보호",
"twitter": "트위터",
"twitter": "Twitter",
"type_a_command_search": "명령을 입력하거나 검색...",
"we_use_cookies": "우리는 쿠키를 사용중입니다.",
"whats_new": "새로 바뀐 점",
@@ -138,7 +141,7 @@
"remove_request": "이 요청을 영구적으로 삭제하겠습니까?",
"remove_team": "이 팀을 삭제하겠습니까?",
"remove_telemetry": "진단 데이터를 보내지 않겠습니까?",
"request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"request_change": "현재 요청을 취소하시겠습니까? 저장되지 않은 변경사항은 삭제됩니다.",
"sync": "이 작업 공간을 동기화하겠습니까?"
},
"count": {
@@ -172,6 +175,7 @@
"protocols": "프로토콜이 비어 있습니다.",
"schema": "스키마를 보려면 GraphQL 엔드포인트에 연결하세요.",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "팀 이름이 비어 있습니다.",
"teams": "아무 팀에도 속하지 않았습니다.",
"tests": "이 요청에 대한 테스트가 없습니다."
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "환경 편집",
"invalid_name": "환경 이름을 바르게 입력하세요.",
"my_environments": "My Environments",
"nested_overflow": "환경 변수는 열 단계까지만 중첩될 수 있습니다.",
"new": "새 환경",
"no_environment": "환경 없음",
"no_environment_description": "선택한 환경이 없습니다. 선택해주세요.",
"select": "환경 선택",
"team_environments": "Team Environments",
"title": "환경",
"updated": "환경 수정됨",
"variable_list": "변수 목록"
@@ -197,6 +203,9 @@
"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.",
"empty_req_name": "빈 요청 이름",
"f12_details": "(자세한 내용은 F12)",
"gql_prettify_invalid_query": "잘못된 쿼리를 구문 강조할 수 없습니다. 쿼리 구문 오류를 해결하고 다시 시도하세요.",
@@ -210,7 +219,7 @@
"network_fail": "요청을 보낼 수 없습니다.",
"no_duration": "소요 시간 없음",
"no_results_found": "No matches found",
"page_not_found": "This page could not be found",
"page_not_found": "해당 페이지를 찾을 수 없습니다.",
"script_fail": "사전 요청 스크립트를 실행할 수 없습니다.",
"something_went_wrong": "문제가 발생했습니다.",
"test_script_fail": "테스트 스크립트를 실행할 수 없습니다."
@@ -222,6 +231,11 @@
"require_github": "GitHub에 로그인하여 secret gist 만들기",
"title": "내보내기"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "폴더 생성됨",
"edit": "폴더 수정",
@@ -235,6 +249,10 @@
"schema": "스키마",
"subscriptions": "섭스크립션"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "앱을 설치",
"login": "로그인",
@@ -276,12 +294,12 @@
"from_postman_description": "Postman 모음집을 가져옵니다.",
"from_url": "URL에서 가져오기",
"gist_url": "Gist URL 입력",
"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",
"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": "호프스카치 모음집 JSON 파일을 가져옵니다.",
"title": "가오기"
"title": "가오기"
},
"layout": {
"collapse_collection": "Collapse or Expand Collections",
@@ -295,13 +313,31 @@
"collections": "모음집",
"confirm": "확인",
"edit_request": "요청 수정",
"import_export": "가오기 / 내보내기"
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "게시",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "구독",
"topic": "토픽",
"topic_name": "토픽 이름",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "앱 설정",
"default_hopp_displayname": "Unnamed User",
"editor": "편집자",
"editor_description": "편집자는 요청을 추가, 수정, 삭제할 수 있습니다.",
"email_verification_mail": "인증 이메일을 보냈습니다. 이메일에 있는 인증용 링크를 눌러주세요.",
@@ -360,9 +397,9 @@
"invalid_name": "요청 이름을 바르게 입력하세요.",
"method": "메서드",
"name": "요청 이름",
"new": "New Request",
"override": "Override",
"override_help": "Set <kbd>Content-Type</kbd> in Headers",
"new": "새로운 요청",
"override": "덮어쓰기",
"override_help": "헤더에 <kbd>Content-Type</kbd>를 설정해주세요.",
"overriden": "Overridden",
"parameter_list": "쿼리 파라미터 목록",
"parameters": "파라미터",
@@ -381,7 +418,7 @@
"type": "요청 유형",
"url": "URL",
"variables": "변수",
"view_my_links": "View my links"
"view_my_links": "내 링크 보기"
},
"response": {
"body": "응답 본문",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "강조색",
"account": "계정",
"account_deleted": "Your account has been deleted",
"account_description": "계정 설정을 수정합니다.",
"account_email_description": "기본 이메일 주소입니다.",
"account_name_description": "디스플레이 이름입니다.",
@@ -411,6 +449,8 @@
"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.",
"expand_navigation": "내비게이션 확장",
"experiments": "실험실",
"experiments_notice": "이것은 유용하거나 재미있거나 둘 다이거나 어느 쪽도 아닌, 아직 실험 중인 기능입니다. 완성되지 않았고 안정적이지 않을 수 있으므로 이상한 일이 발생하더라도 당황하지 마세요. 진지하게 말해서, 끄세요.",
@@ -517,7 +557,7 @@
},
"show": {
"code": "코드 표시",
"collection": "Expand Collection Panel",
"collection": "모음집 보기",
"more": "자세히 보기",
"sidebar": "사이드바 표시"
},
@@ -541,9 +581,9 @@
"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": "더 이상 사용되지 않음",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "모든 초대 대상에게 초대 링크를 보냈습니다.",
"we_sent_invite_link_description": "초대 대상들이 이메일을 확인하도록 권하세요. 이메일 속 링크를 클릭하면 팀에 합류할 수 있습니다."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "테스트 실패",
"javascript_code": "자바스크립트 코드",

View File

@@ -7,6 +7,7 @@
"clear_all": "Wis alles",
"close": "Close",
"connect": "Verbinden",
"connecting": "Connecting",
"copy": "Kopiëren",
"delete": "Verwijderen",
"disconnect": "Verbinding verbreken",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Bewerking",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Ga terug",
"group_by": "Group by",
"label": "Label",
"learn_more": "Leer meer",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Zoeken",
"send": "Versturen",
"start": "Begin",
"starting": "Starting",
"stop": "Stop",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Team is leeg",
"parameters": "Dit verzoek heeft geen parameters",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protocollen zijn leeg",
"schema": "Verbinding maken met een GraphQL-eindpunt",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Teamnaam leeg",
"teams": "Teams zijn leeg",
"tests": "Er zijn geen tests voor dit verzoek"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Omgeving bewerken",
"invalid_name": "Geef een geldige naam op voor de omgeving",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nieuwe omgeving",
"no_environment": "Geen omgeving",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Selecteer omgeving",
"team_environments": "Team Environments",
"title": "omgevingen",
"updated": "Environment updation",
"variable_list": "Variabele lijst"
@@ -197,6 +203,9 @@
"browser_support_sse": "Deze browser lijkt geen ondersteuning te hebben voor door de server verzonden gebeurtenissen.",
"check_console_details": "Controleer het consolelogboek voor details.",
"curl_invalid_format": "cURL is niet correct geformatteerd",
"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.",
"empty_req_name": "Lege aanvraagnaam",
"f12_details": "(F12 voor details)",
"gql_prettify_invalid_query": "Kon een ongeldige zoekopdracht niet mooier maken, syntaxisfouten in de query oplossen en opnieuw proberen",
@@ -222,6 +231,11 @@
"require_github": "Log in met GitHub om een geheime kern te maken",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Map aangemaakt",
"edit": "Map bewerken",
@@ -235,6 +249,10 @@
"schema": "Schema",
"subscriptions": "Abonnementen"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installeer app",
"login": "Log in",
@@ -298,10 +316,28 @@
"import_export": "Importeren / exporteren"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Communicatie",
"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",
"log": "Logboek",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Bericht",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publiceren",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Abonneren",
"topic": "Onderwerp",
"topic_name": "Onderwerpnaam",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Accentkleur",
"account": "Account",
"account_deleted": "Your account has been deleted",
"account_description": "Pas uw accountinstellingen aan.",
"account_email_description": "Uw primaire e-mailadres.",
"account_name_description": "Dit is uw weergavenaam.",
@@ -411,6 +449,8 @@
"change_font_size": "Verander lettergrootte",
"choose_language": "Kies een taal",
"dark_mode": "Donker",
"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",
"experiments": "Experimentele functies",
"experiments_notice": "Dit is een verzameling experimenten waaraan we werken en die nuttig, leuk, beide of geen van beide kunnen te zijn. Ze zijn niet definitief en zijn mogelijk niet stabiel, dus als er iets heel raars gebeurt, raak dan niet in paniek. Zet de functie uit, en",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript-code",

View File

@@ -7,6 +7,7 @@
"clear_all": "Tøm alt",
"close": "Close",
"connect": "Koble",
"connecting": "Connecting",
"copy": "Kopiere",
"delete": "Slett",
"disconnect": "Koble fra",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Rediger",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Gå tilbake",
"group_by": "Group by",
"label": "Merkelapp",
"learn_more": "Lær mer",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Søk",
"send": "Sende",
"start": "Start",
"starting": "Starting",
"stop": "Stoppe",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Teamet er tomt",
"parameters": "Denne forespørselen har ingen parametere",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokoller er tomme",
"schema": "Koble til et GraphQL-endepunkt",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Lagnavnet er tomt",
"teams": "Lagene er tomme",
"tests": "Det er ingen tester for denne forespørselen"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Rediger miljø",
"invalid_name": "Oppgi et gyldig navn på miljøet",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nytt miljø",
"no_environment": "Ingen miljø",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Velg miljø",
"team_environments": "Team Environments",
"title": "Miljøer",
"updated": "Environment updation",
"variable_list": "Variabel liste"
@@ -197,6 +203,9 @@
"browser_support_sse": "Denne nettleseren ser ikke ut til å ha Server Sent Events -støtte.",
"check_console_details": "Sjekk konsollloggen for detaljer.",
"curl_invalid_format": "cURL er ikke riktig formatert",
"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.",
"empty_req_name": "Tom forespørselsnavn",
"f12_details": "(F12 for detaljer)",
"gql_prettify_invalid_query": "Kunne ikke forskjønne en ugyldig spørring, løse spørringssyntaksfeil og prøve igjen",
@@ -222,6 +231,11 @@
"require_github": "Logg på med GitHub for å lage en hemmelig oppgave",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Mappen er opprettet",
"edit": "Rediger mappe",
@@ -235,6 +249,10 @@
"schema": "Skjema",
"subscriptions": "Abonnementer"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installer app",
"login": "Logg Inn",
@@ -298,10 +316,28 @@
"import_export": "Import / Eksport"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Kommunikasjon",
"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",
"log": "Logg",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Beskjed",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publisere",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Abonnere",
"topic": "Emne",
"topic_name": "Emne navn",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Aksentfarge",
"account": "Konto",
"account_deleted": "Your account has been deleted",
"account_description": "Tilpass kontoinnstillingene dine.",
"account_email_description": "Din primære e-postadresse.",
"account_name_description": "Dette er visningsnavnet ditt.",
@@ -411,6 +449,8 @@
"change_font_size": "Endre skriftstørrelse",
"choose_language": "Velg språk",
"dark_mode": "Mørk",
"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",
"experiments": "Eksperimenter",
"experiments_notice": "Dette er en samling eksperimenter vi jobber med som kan vise seg å være nyttige, morsomme, begge deler eller ingen av dem. De er ikke endelige og er kanskje ikke stabile, så hvis det skjer noe altfor rart, ikke få panikk. Bare slå av det. Vitser til side,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript-kode",

View File

@@ -7,6 +7,7 @@
"clear_all": "Wyczyść wszystko",
"close": "Close",
"connect": "Połącz",
"connecting": "Connecting",
"copy": "Kopiuj",
"delete": "Usuń",
"disconnect": "Rozłącz",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Edytuj",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Wróć",
"group_by": "Group by",
"label": "Etykieta",
"learn_more": "Dowiedz się więcej",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Szukaj",
"send": "Wyślij",
"start": "Rozpocznij",
"starting": "Starting",
"stop": "Zatrzymaj",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Zespół jest pusty",
"parameters": "To żądanie nie ma żadnych parametrów",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokoły są puste",
"schema": "Połącz się z punktem końcowym GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Nazwa zespołu jest pusta",
"teams": "Zespoły są puste",
"tests": "Nie ma testów dla tego żądania"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Edytuj środowisko",
"invalid_name": "Podaj prawidłową nazwę środowiska",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Nowe środowisko",
"no_environment": "Brak środowiska",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Wybierz środowisko",
"team_environments": "Team Environments",
"title": "Środowiska",
"updated": "Environment updation",
"variable_list": "Lista zmiennych"
@@ -197,6 +203,9 @@
"browser_support_sse": "Wygląda na to, że ta przeglądarka nie obsługuje zdarzeń wysłanych przez serwer.",
"check_console_details": "Sprawdź dziennik konsoli, aby uzyskać szczegółowe informacje.",
"curl_invalid_format": "cURL nie jest poprawnie sformatowany",
"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.",
"empty_req_name": "Pusta nazwa żądania",
"f12_details": "(F12 po szczegóły)",
"gql_prettify_invalid_query": "Nie można poprawić czytelności nieprawidłowego zapytania, napraw błędy składni zapytania i spróbuj ponownie",
@@ -222,6 +231,11 @@
"require_github": "Zaloguj się za pomocą GitHub, aby utworzyć tajny Gist",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Utworzono folder",
"edit": "Edytuj folder",
@@ -235,6 +249,10 @@
"schema": "Schemat",
"subscriptions": "Subskrypcje"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Zainstaluj aplikację",
"login": "Zaloguj sie",
@@ -298,10 +316,28 @@
"import_export": "Import Eksport"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Komunikacja",
"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",
"log": "Logi",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Wiadomość",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publikuj",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Subskrybuj",
"topic": "Temat",
"topic_name": "Nazwa tematu",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Kolor akcentu",
"account": "Konto",
"account_deleted": "Your account has been deleted",
"account_description": "Dostosuj ustawienia swojego konta.",
"account_email_description": "Twój podstawowy adres e-mail.",
"account_name_description": "To jest Twoja nazwa wyświetlana.",
@@ -411,6 +449,8 @@
"change_font_size": "Zmień rozmiar czczionki",
"choose_language": "Wybierz język",
"dark_mode": "Ciemny",
"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",
"experiments": "Eksperymenty",
"experiments_notice": "To jest zbiór eksperymentów, nad którymi pracujemy, które mogą okazać się przydatne, zabawne, obie te rzeczy albo żadne. Nie są ostateczne i mogą nie być stabilne, więc jeśli wydarzy się coś zbyt dziwnego, nie panikuj. Po prostu wyłącz to cholerstwo. Żarty na bok,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "Kod JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "Limpar tudo",
"close": "Close",
"connect": "Conectar",
"connecting": "Connecting",
"copy": "Copiar",
"delete": "Excluir",
"disconnect": "Desconectar",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicar",
"edit": "Editar",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Voltar",
"group_by": "Group by",
"label": "Etiqueta",
"learn_more": "Saber mais",
"less": "Menos",
@@ -35,6 +37,7 @@
"search": "Procurar",
"send": "Enviar",
"start": "Começar",
"starting": "Starting",
"stop": "Pare",
"to_close": "Fechar",
"to_navigate": "Navegar",
@@ -172,6 +175,7 @@
"protocols": "Os protocolos estão vazios",
"schema": "Conecte-se a um endpoint GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Nome da equipe vazio",
"teams": "Equipes estão vazias",
"tests": "Não há testes para esta requisição"
@@ -184,11 +188,13 @@
"deleted": "Deleção de ambiente",
"edit": "Editar Ambiente",
"invalid_name": "Forneça um nome válido para o ambiente",
"my_environments": "My Environments",
"nested_overflow": "Variáveis de ambiente aninhadas são limitadas a 10 níveis",
"new": "Novo ambiente",
"no_environment": "Sem ambiente",
"no_environment_description": "Nenhum ambiente foi selecionado. Escolha o que fazer com as seguintes variáveis.",
"select": "Selecione o ambiente",
"team_environments": "Team Environments",
"title": "Ambientes",
"updated": "Atualizacao de ambientes",
"variable_list": "Lista de Variáveis"
@@ -197,6 +203,9 @@
"browser_support_sse": "Este navegador não parece ter suporte para eventos enviados pelo servidor.",
"check_console_details": "Verifique o log do console para obter detalhes.",
"curl_invalid_format": "cURL não está formatado corretamente",
"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.",
"empty_req_name": "Nome de requisição vazio",
"f12_details": "(F12 para detalhes)",
"gql_prettify_invalid_query": "Não foi possível justificar uma requisição inválida, resolva os erros de sintaxe da requisição e tente novamente",
@@ -222,6 +231,11 @@
"require_github": "Faça login com GitHub para criar um gist secreta",
"title": "Exportar"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Pasta criada",
"edit": "Editar pasta",
@@ -235,6 +249,10 @@
"schema": "Esquema",
"subscriptions": "Assinaturas"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Instalar aplicativo",
"login": "Conecte-se",
@@ -298,10 +316,28 @@
"import_export": "Importar / Exportar"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Comunicação",
"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",
"log": "Registro",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Mensagem",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publicar",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Se inscrever",
"topic": "Tema",
"topic_name": "Nome do tópico",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editores podem adicionar, editar e deletar requisições.",
"email_verification_mail": "Um e-mail de verificação foi enviado ao seu endereço de e-mail. Por favor, clique no link para verificar seu endereço e-mail.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Cor de destaque",
"account": "Conta",
"account_deleted": "Your account has been deleted",
"account_description": "Personalize as configurações da sua conta.",
"account_email_description": "Seu endereço de e-mail principal.",
"account_name_description": "Este é o seu nome de exibição.",
@@ -411,6 +449,8 @@
"change_font_size": "Mudar TAMANHO DA FONTE",
"choose_language": "Escolha o seu idioma",
"dark_mode": "Escuro",
"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": "Expandir navegação",
"experiments": "Experimentos",
"experiments_notice": "Esta é uma coleção de experimentos em que estamos trabalhando que podem ser úteis, divertidos, ambos ou nenhum dos dois. Eles não são finais e podem não ser estáveis, portanto, se algo muito estranho acontecer, não entre em pânico. Apenas desligue essa maldita coisa. Piadas à parte,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Link de convite enviado para todos os convidados!",
"we_sent_invite_link_description": "Peça a todos os convidados que verifiquem sua caixa de entrada. Clique no link para se juntar à equipe."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "teste falhou",
"javascript_code": "Código JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "Limpar tudo",
"close": "Close",
"connect": "Conectar",
"connecting": "Connecting",
"copy": "cópia de",
"delete": "Excluir",
"disconnect": "desconectar",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Editar",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Volte",
"group_by": "Group by",
"label": "Etiqueta",
"learn_more": "Saber mais",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Procurar",
"send": "Mandar",
"start": "Começar",
"starting": "Starting",
"stop": "Pare",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Time está vazio",
"parameters": "Esta solicitação não possui parâmetros",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Os protocolos estão vazios",
"schema": "Conecte-se a um endpoint GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Nome do time vazio",
"teams": "Times estão vazios",
"tests": "Não há testes para esta solicitação"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Editar Ambiente",
"invalid_name": "Forneça um nome válido para o ambiente",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Novo ambiente",
"no_environment": "Sem ambiente",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Selecione o ambiente",
"team_environments": "Team Environments",
"title": "Ambientes",
"updated": "Environment updation",
"variable_list": "Lista de Variáveis"
@@ -197,6 +203,9 @@
"browser_support_sse": "Este navegador não parece ter suporte para eventos enviados pelo servidor.",
"check_console_details": "Verifique o log do console para obter detalhes.",
"curl_invalid_format": "cURL não está formatado corretamente",
"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.",
"empty_req_name": "Nome do pedido vazio",
"f12_details": "(F12 para detalhes)",
"gql_prettify_invalid_query": "Não foi possível justificar uma consulta inválida, resolva os erros de sintaxe da consulta e tente novamente",
@@ -222,6 +231,11 @@
"require_github": "Faça login com GitHub para criar uma essência secreta",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Pasta criada",
"edit": "Editar pasta",
@@ -235,6 +249,10 @@
"schema": "Esquema",
"subscriptions": "Assinaturas"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Instalar aplicativo",
"login": "Conecte-se",
@@ -298,10 +316,28 @@
"import_export": "Importar / Exportar"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Comunicação",
"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",
"log": "Registro",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Mensagem",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publicar",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Se inscrever",
"topic": "Tema",
"topic_name": "Nome do tópico",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Cor de destaque",
"account": "Conta",
"account_deleted": "Your account has been deleted",
"account_description": "Personalize as configurações da sua conta.",
"account_email_description": "Seu endereço de e-mail principal.",
"account_name_description": "Este é o seu nome de exibição.",
@@ -411,6 +449,8 @@
"change_font_size": "Mudar TAMANHO DA FONTE",
"choose_language": "Escolha o seu idioma",
"dark_mode": "Escuro",
"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",
"experiments": "Experimentos",
"experiments_notice": "Esta é uma coleção de experimentos em que estamos trabalhando que podem ser úteis, divertidos, ambos ou nenhum dos dois. Eles não são finais e podem não ser estáveis, portanto, se algo muito estranho acontecer, não entre em pânico. Apenas desligue essa maldita coisa. Piadas à parte,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "Código JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "Curăță tot",
"close": "Închide",
"connect": "Conectare",
"connecting": "Connecting",
"copy": "Copiază",
"delete": "Șterge",
"disconnect": "Deconectare",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Trage pentru a rearanja",
"duplicate": "Duplicare",
"edit": "Editare",
"filter_response": "Filtrare răspuns",
"filter": "Filtrare răspuns",
"go_back": "Înapoi",
"group_by": "Group by",
"label": "Etichetă",
"learn_more": "Află mai multe",
"less": "Mai puțin",
@@ -35,6 +37,7 @@
"search": "Căutare",
"send": "Trimite",
"start": "Start",
"starting": "Starting",
"stop": "Stop",
"to_close": "Închide",
"to_navigate": "Navighează",
@@ -172,6 +175,7 @@
"protocols": "Protocoalele sunt goale",
"schema": "Conectați-vă la un Endpoint GraphQL",
"shortcodes": "Codurile scurte sunt goale",
"subscription": "Subscriptions are empty",
"team_name": "Numele echipei este gol",
"teams": "Echipele sunt goale",
"tests": "Nu există teste pentru această solicitare"
@@ -184,11 +188,13 @@
"deleted": "Mediu șters",
"edit": "Editați mediul",
"invalid_name": "Vă rugăm să furnizați un nume valid pentru mediu",
"my_environments": "My Environments",
"nested_overflow": "Variabilele de mediu impricate sunt limitate la 10 nivele",
"new": "Mediu nou",
"no_environment": "Fără mediu",
"no_environment_description": "Niciun mediu nu a fost selectat. Alegeți acțiuni pentru următoarele variabile.",
"select": "Selectați mediul",
"team_environments": "Team Environments",
"title": "Medii",
"updated": "Mediu actualizat",
"variable_list": "Lista variabilelor"
@@ -197,6 +203,9 @@
"browser_support_sse": "Acest browser pare să nu aibă suport pentru Server Sent Events.",
"check_console_details": "Verificați jurnalul consolei pentru detalii.",
"curl_invalid_format": "cURL nu este formatat corect",
"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.",
"empty_req_name": "Nume cerere goală",
"f12_details": "(F12 pentru detalii)",
"gql_prettify_invalid_query": "Nu am putut formata o interogare nevalidă, rezolvați erorile de sintaxă ale interogării și încercați din nou",
@@ -222,6 +231,11 @@
"require_github": "Conectați-vă cu GitHub pentru a crea un Gist secret",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Dosar creat",
"edit": "Editați dosarul",
@@ -235,6 +249,10 @@
"schema": "Schemă",
"subscriptions": "Abonamente"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Instalează aplicația",
"login": "Autentificare",
@@ -298,10 +316,28 @@
"import_export": "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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Comunicare",
"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",
"log": "Log",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Mesaj",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publică",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Abonați-vă",
"topic": "Subiect",
"topic_name": "Nume subiect",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Setări aplicație",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editorii pot adăuga, edita și șterge cereri.",
"email_verification_mail": "Un email de verificare a fost trimis la adresa dumneavoastră de email. Apăsați link-ul pentru verificarea adresei.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Culoare de accent",
"account": "Cont",
"account_deleted": "Your account has been deleted",
"account_description": "Personalizați setările contului.",
"account_email_description": "Adresa dvs. de e-mail principală.",
"account_name_description": "Acesta este numele dvs. afișat.",
@@ -411,6 +449,8 @@
"change_font_size": "Schimbă marimea fontului",
"choose_language": "Alege limba",
"dark_mode": "Întunecat",
"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": "Expandează navigarea",
"experiments": "Experimente",
"experiments_notice": "Aceasta este o colecție de experimente la care lucrăm, care s-ar putea dovedi a fi utile, distractive, ambele sau nici una. Nu sunt definitive și s-ar putea să nu fie stabile, așa că, dacă se întâmplă ceva prea ciudat, nu vă panicați. Doar oprește-l. Lăsând glumele deoparte,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Am trimis un link de invitație către toți invitații!",
"we_sent_invite_link_description": "Rugați toate persoanele invitate să iși verifice căsuța. Click pe link pentru a se alătura echipei."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test eșuat",
"javascript_code": "Cod JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "Очистить все",
"close": "Close",
"connect": "Подключиться",
"connecting": "Connecting",
"copy": "Скопировать",
"delete": "Удалить",
"disconnect": "Отключиться",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Дублировать",
"edit": "Редактировать",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Вернуться",
"group_by": "Group by",
"label": "Название",
"learn_more": "Узнать больше",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Поиск",
"send": "Отправить",
"start": "Начать",
"starting": "Starting",
"stop": "Стоп",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -77,7 +80,7 @@
"status": "Статус",
"status_description": "Check the status of the website",
"terms_and_privacy": "Условия и конфиденциальность",
"twitter": "Твиттер",
"twitter": "Twitter",
"type_a_command_search": "Введите команду или выполните поиск…",
"we_use_cookies": "Мы используем куки",
"whats_new": "Что нового?",
@@ -172,6 +175,7 @@
"protocols": "Протоколы пустые",
"schema": "Подключиться к конечной точке GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Название команды пусто",
"teams": "Команды пустые",
"tests": "Для этого запроса нет тестов"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Редактировать среду",
"invalid_name": "Укажите допустимое имя для среды",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Новая среда",
"no_environment": "Нет окружающей среды",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Выберите среду",
"team_environments": "Team Environments",
"title": "Среды",
"updated": "Environment updation",
"variable_list": "Список переменных"
@@ -197,6 +203,9 @@
"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.",
"empty_req_name": "Пустое имя запроса",
"f12_details": "(F12 для подробностей)",
"gql_prettify_invalid_query": "Не удалось определить недопустимый запрос, устранить синтаксические ошибки запроса и повторить попытку.",
@@ -222,6 +231,11 @@
"require_github": "Войдите через GitHub, чтобы создать секретную суть",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Папка создана",
"edit": "Редактировать папку",
@@ -235,6 +249,10 @@
"schema": "Схема",
"subscriptions": "Подписки"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Установить приложение",
"login": "Авторизоваться",
@@ -298,10 +316,28 @@
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "Публиковать",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Подписаться",
"topic": "Тема",
"topic_name": "Название темы",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Настройки приложения",
"default_hopp_displayname": "Unnamed User",
"editor": "Редактор",
"editor_description": "Редакторы могут добавлять, редактировать, а так же удалять запросы.",
"email_verification_mail": "На вашу электронную почту отправлено письмо для подтверждения. Перейдите по ссылке из письма, чтобы подтвердить свой электронный адрес.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Основной цвет",
"account": "Счет",
"account_deleted": "Your account has been deleted",
"account_description": "Настройте параметры своей учетной записи.",
"account_email_description": "Ваш основной адрес электронной почты.",
"account_name_description": "Это ваше отображаемое имя.",
@@ -411,6 +449,8 @@
"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.",
"expand_navigation": "Раскрыть панель навигации",
"experiments": "Эксперименты",
"experiments_notice": "Это набор экспериментов, над которыми мы работаем, которые могут оказаться полезными, интересными, и тем, и другим, или ни тем, ни другим. Они не окончательные и могут быть нестабильными, поэтому, если произойдет что-то слишком странное, не паникуйте. Просто выключи эту чертову штуку. Шутки в сторону,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Мы отправили все приглашения!",
"we_sent_invite_link_description": "Попросите тех, кого Вы пригласили, проверить их почтовые ящики. Им нужно перейди по ссылке, чтобы подтвердить вступление в эту команду."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "Тест не пройден",
"javascript_code": "Код JavaScript",

View File

@@ -7,6 +7,7 @@
"clear_all": "Избриши све",
"close": "Close",
"connect": "Цоннецт",
"connecting": "Connecting",
"copy": "Цопи",
"delete": "Избриши",
"disconnect": "Прекините везу",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Уредити",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Вратити се",
"group_by": "Group by",
"label": "Ознака",
"learn_more": "Сазнајте више",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Претрага",
"send": "Пошаљи",
"start": "Почетак",
"starting": "Starting",
"stop": "Зауставити",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -77,7 +80,7 @@
"status": "Статус",
"status_description": "Check the status of the website",
"terms_and_privacy": "Услови и приватност",
"twitter": "Твиттер",
"twitter": "Twitter",
"type_a_command_search": "Унесите команду или претражите…",
"we_use_cookies": "Користимо колачиће",
"whats_new": "Шта је ново?",
@@ -168,10 +171,11 @@
"members": "Тим је празан",
"parameters": "Овај захтев нема параметре",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Протоколи су празни",
"schema": "Повежите се са ГрапхКЛ крајњом тачком",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Назив тима празан",
"teams": "Тимови су празни",
"tests": "Нема тестова за овај захтев"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Едит Енвиронмент",
"invalid_name": "Наведите важећи назив за окружење",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Ново окружење",
"no_environment": "Нема окружења",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Изаберите окружење",
"team_environments": "Team Environments",
"title": "Енвиронментс",
"updated": "Environment updation",
"variable_list": "Листа променљивих"
@@ -197,6 +203,9 @@
"browser_support_sse": "Изгледа да овај прегледач нема подршку за Послане догађаје са сервера.",
"check_console_details": "Детаље потражите у дневнику конзоле.",
"curl_invalid_format": "цУРЛ није правилно форматиран",
"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.",
"empty_req_name": "Празан назив захтева",
"f12_details": "(Ф12 за детаље)",
"gql_prettify_invalid_query": "Није могуће унапредити неважећи упит, решити грешке у синтакси упита и покушати поново",
@@ -222,6 +231,11 @@
"require_github": "Пријавите се са ГитХуб -ом да бисте креирали тајну суштину",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Фолдер је креиран",
"edit": "Едит Фолдер",
@@ -235,6 +249,10 @@
"schema": "Схема",
"subscriptions": "Претплате"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Инсталирати апликацију",
"login": "Пријавите се",
@@ -298,10 +316,28 @@
"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",
"client_id": "Client ID",
"color": "Pick a 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",
"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.",
"publish": "Публисх",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "претплатити се",
"topic": "Тема",
"topic_name": "Назив теме",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Боја акцента",
"account": "Рачун",
"account_deleted": "Your account has been deleted",
"account_description": "Прилагодите поставке налога.",
"account_email_description": "Ваша примарна адреса е -поште.",
"account_name_description": "Ово је ваше име за приказ.",
@@ -411,6 +449,8 @@
"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.",
"expand_navigation": "Expand navigation",
"experiments": "Експерименти",
"experiments_notice": "Ово је збирка експеримената на којима радимо и који би се могли показати корисним, забавним, обоје или ниједно. Нису коначни и можда нису стабилни, па ако се догоди нешто превише чудно, немојте паничарити. Само искључите опасну ствар. Шалу на страну,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "ЈаваСцрипт код",

View File

@@ -7,6 +7,7 @@
"clear_all": "Rensa alla",
"close": "Close",
"connect": "Ansluta",
"connecting": "Connecting",
"copy": "Kopiera",
"delete": "Radera",
"disconnect": "Koppla ifrån",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Redigera",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Gå tillbaka",
"group_by": "Group by",
"label": "Märka",
"learn_more": "Läs mer",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Sök",
"send": "Skicka",
"start": "Start",
"starting": "Starting",
"stop": "Sluta",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Teamet är tomt",
"parameters": "Denna begäran har inga parametrar",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Protokoll är tomma",
"schema": "Anslut till en GraphQL -slutpunkt",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Lagets namn är tomt",
"teams": "Lag är tomma",
"tests": "Det finns inga tester för denna begäran"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Redigera miljö",
"invalid_name": "Ange ett giltigt namn på miljön",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Ny miljö",
"no_environment": "Ingen miljö",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Välj miljö",
"team_environments": "Team Environments",
"title": "Miljöer",
"updated": "Environment updation",
"variable_list": "Variabel lista"
@@ -197,6 +203,9 @@
"browser_support_sse": "Den här webbläsaren verkar inte ha stöd för Server Sent Events.",
"check_console_details": "Kontrollera konsolloggen för mer information.",
"curl_invalid_format": "cURL är inte korrekt formaterad",
"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.",
"empty_req_name": "Tom förfrågningsnamn",
"f12_details": "(F12 för detaljer)",
"gql_prettify_invalid_query": "Det gick inte att pryda en ogiltig fråga, lösa frågesyntaxfel och försök igen",
@@ -222,6 +231,11 @@
"require_github": "Logga in med GitHub för att skapa hemlig information",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Mapp skapad",
"edit": "Redigera mapp",
@@ -235,6 +249,10 @@
"schema": "Schema",
"subscriptions": "Prenumerationer"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Installera app",
"login": "Logga in",
@@ -298,10 +316,28 @@
"import_export": "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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Kommunikation",
"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",
"log": "Logga",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Meddelande",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Publicera",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Prenumerera",
"topic": "Ämne",
"topic_name": "Ämnesnamn",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Accentfärg",
"account": "konto",
"account_deleted": "Your account has been deleted",
"account_description": "Anpassa dina kontoinställningar.",
"account_email_description": "Din primära e -postadress.",
"account_name_description": "Detta är ditt visningsnamn.",
@@ -411,6 +449,8 @@
"change_font_size": "Ändra typsnittsstorlek",
"choose_language": "Välj språk",
"dark_mode": "Mörk",
"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",
"experiments": "Experiment",
"experiments_notice": "Det här är en samling experiment vi arbetar med som kan visa sig vara användbara, roliga, båda eller ingen av dem. De är inte slutgiltiga och kanske inte är stabila, så om inget alltför konstigt händer, var inte rädd. Stäng bara av det jävla. Skämt åt sidan,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "JavaScript -kod",

View File

@@ -7,6 +7,7 @@
"clear_all": "Hepsini temizle",
"close": "Close",
"connect": "Bağlan",
"connecting": "Connecting",
"copy": "Kopyala",
"delete": "Sil",
"disconnect": "Bağlantıyı kes",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Klonla",
"edit": "Düzenle",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Geri git",
"group_by": "Group by",
"label": "Etiket",
"learn_more": "Daha fazla bilgi edin",
"less": "Daha az",
@@ -35,6 +37,7 @@
"search": "Arama",
"send": "Gönder",
"start": "Başla",
"starting": "Starting",
"stop": "Dur",
"to_close": "kapatmak için",
"to_navigate": "gezdirmek için",
@@ -172,31 +175,37 @@
"protocols": "Protokoller boş",
"schema": "Bir GraphQL uç noktasına bağlanma",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Takım adı boş",
"teams": "Takımlar boş",
"tests": "Bu istek için test yok"
},
"environment": {
"add_to_global": "Globale ekle",
"added": "Çevre eklendi",
"added": "Ortam eklendi",
"create_new": "Yeni ortam oluştur",
"created": "Environment created",
"created": "Ortam oluşturuldu",
"deleted": "Ortam silindi",
"edit": "Ortamı düzenle",
"invalid_name": "Lütfen ortam için geçerli bir ad girin",
"my_environments": "My Environments",
"nested_overflow": "İç içe ortam değişkenleri 10 düzeyle sınırlıdır",
"new": "Yeni ortam",
"no_environment": "Ortam yok",
"no_environment_description": "Hiçbir ortam seçilmedi. Aşağıdaki değişkenlerle ne yapacağınızı seçin.",
"select": "Ortam seçin",
"team_environments": "Team Environments",
"title": "Ortamlar",
"updated": "Çevre güncellendi",
"updated": "Ortam güncellendi",
"variable_list": "Değişken listesi"
},
"error": {
"browser_support_sse": "Bu tarayıcıda SSE desteği yok gibi görünüyor.",
"check_console_details": "Ayrıntılar için konsol günlüğünü kontrol edin.",
"curl_invalid_format": "cURL düzgün biçimlendirilmemiş",
"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.",
"empty_req_name": "Boş İstek Adı",
"f12_details": "(Ayrıntılar için F12)",
"gql_prettify_invalid_query": "Geçersiz bir sorgu güzelleştirilemedi, sorgu sözdizimi hatalarını çözüp tekrar deneyin",
@@ -222,6 +231,11 @@
"require_github": "Gizli Gist oluşturmak için GitHub ile giriş yapın",
"title": "Dışarı Aktar"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Klasör oluşturuldu",
"edit": "Klasörü düzenle",
@@ -235,6 +249,10 @@
"schema": "Şema",
"subscriptions": "Abonelikler"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Uygulamayı yükle",
"login": "Giriş yap",
@@ -298,10 +316,28 @@
"import_export": "Yükleme/Dışa aktarma"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "İletişim",
"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",
"log": "Kayıt",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "İleti",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Yayınla",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Abone",
"topic": "Başlık",
"topic_name": "Konu adı",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "Uygulama ayarları",
"default_hopp_displayname": "Unnamed User",
"editor": "Düzenleyici",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "Doğrulama bağlantısı e-postanıza gönderildi. E-postanızı doğrulamak için gelen bağlantıya tıklayınız.",
@@ -392,8 +429,8 @@
"json": "JSON",
"pdf": "PDF",
"preview_html": "HTML'yi önizle",
"raw": "Çiğ",
"size": "Boy",
"raw": "Ham",
"size": "Boyut",
"status": "Durum",
"time": "Zaman",
"title": "Cevap",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Vurgu rengi",
"account": "Hesap",
"account_deleted": "Your account has been deleted",
"account_description": "Hesap ayarlarınızı özelleştirin.",
"account_email_description": "Birincil e-posta adresiniz.",
"account_name_description": "Bu sizin görünen adınız.",
@@ -411,6 +449,8 @@
"change_font_size": "Yazı tipi boyutunu değiştir",
"choose_language": "Dil seçiniz",
"dark_mode": "Karanlık",
"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": "Gezinmeyi genişlet",
"experiments": "Deneyler",
"experiments_notice": "Bu, üzerinde çalıştığımız, yararlı, eğlenceli, her ikisi de ya da hiçbiri olabilecek bir deneyler koleksiyonudur. Nihai değiller ve istikrarlı olmayabilirler, bu yüzden aşırı garip bir şey olursa panik yapmayın.",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "Tüm davetlilere bir davet bağlantısı gönderdik!",
"we_sent_invite_link_description": "Tüm davetlilerden gelen kutularını kontrol etmelerini isteyin. Ekibe katılmak için bağlantıya tıklayın."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "Test başarısız",
"javascript_code": "JavaScript Kodu",

View File

@@ -5,19 +5,21 @@
"choose_file": "選擇一個檔案",
"clear": "清除",
"clear_all": "全部清除",
"close": "Close",
"close": "關閉",
"connect": "連線",
"connecting": "正在連接",
"copy": "複製",
"delete": "刪除",
"disconnect": "斷開連線",
"dismiss": "忽略",
"dont_save": "不要儲存",
"download_file": "下載檔案",
"drag_to_reorder": "Drag to reorder",
"drag_to_reorder": "拖曳以重新排序",
"duplicate": "複製",
"edit": "編輯",
"filter_response": "篩選回應",
"filter": "篩選回應",
"go_back": "返回",
"group_by": "分組方式",
"label": "標籤",
"learn_more": "瞭解更多",
"less": "更少",
@@ -35,6 +37,7 @@
"search": "搜尋",
"send": "傳送",
"start": "開始",
"starting": "正在開始",
"stop": "停止",
"to_close": "以關閉",
"to_navigate": "以瀏覽",
@@ -106,7 +109,7 @@
"generate_token": "產生權杖",
"include_in_url": "包含在網址",
"learn": "瞭解更多",
"pass_key_by": "Pass by",
"pass_key_by": "傳遞方式",
"password": "密碼",
"token": "權杖",
"type": "授權類型",
@@ -172,6 +175,7 @@
"protocols": "協定為空",
"schema": "連線至 GraphQL 端點",
"shortcodes": "Shortcodes 為空",
"subscription": "訂閱為空",
"team_name": "團隊名稱為空",
"teams": "團隊為空",
"tests": "沒有針對該請求的測試"
@@ -184,11 +188,13 @@
"deleted": "刪除環境",
"edit": "編輯環境",
"invalid_name": "請提供有效的環境名稱",
"my_environments": "我的環境",
"nested_overflow": "巢狀環境變數不得大於 10 層",
"new": "建立環境",
"no_environment": "無環境",
"no_environment_description": "未選取任何環境。請選擇要對以下變數進行的動作。",
"select": "選擇環境",
"team_environments": "團隊環境",
"title": "環境",
"updated": "更新環境",
"variable_list": "變數列表"
@@ -197,6 +203,9 @@
"browser_support_sse": "此瀏覽器似乎不支援 SSE。",
"check_console_details": "檢查控制台日誌以獲悉詳情",
"curl_invalid_format": "cURL 格式不正確",
"danger_zone": "Danger zone",
"delete_account": "您的帳號目前為這些團隊的擁有者:",
"delete_account_description": "您在刪除帳號前必須先將您自己從團隊中移除、轉移擁有權,或是刪除團隊。",
"empty_req_name": "空請求名稱",
"f12_details": "(按下 F12 以獲悉詳情)",
"gql_prettify_invalid_query": "無法美化無效的查詢,處理查詢語法錯誤並重試",
@@ -210,7 +219,7 @@
"network_fail": "無法傳送請求",
"no_duration": "無持續時間",
"no_results_found": "找不到結果",
"page_not_found": "This page could not be found",
"page_not_found": "找不到此頁面",
"script_fail": "無法執行預請求指令碼",
"something_went_wrong": "發生了一些錯誤",
"test_script_fail": "無法執行測試指令碼"
@@ -220,7 +229,12 @@
"create_secret_gist": "建立私密 Gist",
"gist_created": "已建立 Gist",
"require_github": "使用 GitHub 登入以建立私密 Gist",
"title": "Export"
"title": "匯出"
},
"filter": {
"all": "全部",
"none": "無",
"starred": "已加星號"
},
"folder": {
"created": "已建立資料夾",
@@ -235,6 +249,10 @@
"schema": "綱要",
"subscriptions": "訂閱"
},
"group": {
"time": "時間",
"url": "網址"
},
"header": {
"install_pwa": "安裝應用程式",
"login": "登入",
@@ -298,10 +316,28 @@
"import_export": "匯入/匯出"
},
"mqtt": {
"already_subscribed": "您已經訂閱了此主題。",
"clean_session": "清理工作階段",
"clear_input": "清除輸入",
"clear_input_on_send": "傳送後清除輸入",
"client_id": "客戶端 ID",
"color": "選擇顏色",
"communication": "通訊",
"connection_config": "連線設定",
"connection_not_authorized": "此 MQTT 連線未使用任何驗證。",
"invalid_topic": "請提供該訂閱的主題",
"keep_alive": "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": "新訂閱",
"not_connected": "請先啟動 MQTT 連線。",
"publish": "發佈",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "訂閱",
"topic": "主題",
"topic_name": "主題名稱",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "應用程式設定",
"default_hopp_displayname": "未命名使用者",
"editor": "編輯者",
"editor_description": "編輯者可以新增、編輯和刪除請求。",
"email_verification_mail": "已將驗證信寄送至您的電子郵件地址。請點擊信中連結以驗證您的電子郵件地址。",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "強調色",
"account": "帳號",
"account_deleted": "已刪除您的帳號",
"account_description": "自定義您的帳號設定。",
"account_email_description": "您的主要電子郵件地址。",
"account_name_description": "這是您的顯示名稱。",
@@ -411,6 +449,8 @@
"change_font_size": "更改字型大小",
"choose_language": "選擇語言",
"dark_mode": "暗色",
"delete_account": "刪除帳號",
"delete_account_description": "一旦您刪除了您的帳號,您的所有資料將被永久刪除。此操作無法復原。",
"expand_navigation": "展開導航欄",
"experiments": "實驗功能",
"experiments_notice": "下面是我們正在開發中的一些實驗功能,這些功能可能會很有用,可能很有趣,又或者二者都是或都不是。這些功能並非最終版本且可能不穩定,所以如果發生了一些過於奇怪的事情,不要驚慌,關掉它們就好了。玩笑歸玩笑,",
@@ -452,7 +492,7 @@
"theme_description": "自定義您的應用程式主題。",
"use_experimental_url_bar": "使用帶有環境醒目標示的實驗性網址欄",
"user": "使用者",
"verified_email": "Verified email",
"verified_email": "已確認電子郵件地址",
"verify_email": "確認電子郵件地址"
},
"shortcodes": {
@@ -503,9 +543,9 @@
"title": "請求"
},
"response": {
"copy": "Copy response to clipboard",
"download": "Download response as file",
"title": "Response"
"copy": "複製回應至剪貼簿",
"download": "下載回應",
"title": "回應"
},
"theme": {
"black": "將主題切換至黑色模式",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "我們向所有受邀者傳送了邀請連結!",
"we_sent_invite_link_description": "請所有受邀者檢查他們的收件匣。點擊連結加入團隊。"
},
"team_environment": {
"deleted": "已刪除環境",
"duplicate": "已複製環境",
"not_found": "找不到環境。"
},
"test": {
"failed": "測試未通過",
"javascript_code": "JavaScript 程式碼",

View File

@@ -3,39 +3,42 @@
"autoscroll": "Автопрокручування",
"cancel": "Скасувати",
"choose_file": "Виберіть файл",
"clear": "Ясно",
"clear": "Очистити",
"clear_all": "Очистити все",
"close": "Закрити",
"connect": "Підключіться",
"connect": "Підключитись",
"connecting": "Підключення",
"copy": "Копіювати",
"delete": "Видалити",
"disconnect": "Відключити",
"disconnect": "Відключитись",
"dismiss": "Відхилити",
"dont_save": "Не зберігати",
"download_file": "Завантажити файл",
"drag_to_reorder": "Перетягніть для зміни порядку",
"duplicate": "Дублювати",
"edit": "Редагувати",
"filter_response": "Фільтр відповіді",
"go_back": "Повертайся",
"filter": "Фільтрувати відповіді",
"go_back": "Повернутись",
"group_by": "Групувати за",
"label": "Мітка",
"learn_more": "Вчи більше",
"learn_more": "Дізнатись більше",
"less": "Менше",
"more": "Більше",
"new": "Новий",
"no": "Немає",
"no": "Ні",
"open_workspace": "Відкрити робочу область",
"paste": "Вставити",
"prettify": "Прикрасьте",
"prettify": "Форматувати",
"remove": "Видалити",
"restore": "Відновлювати",
"restore": "Відновити",
"save": "Зберегти",
"scroll_to_bottom": "Прокрутити вниз",
"scroll_to_top": "Прокрутити вгору",
"search": "Пошук",
"send": "Надіслати",
"start": "Почати",
"stop": "Стій",
"starting": "Розпочинається",
"stop": "Зупити",
"to_close": "щоб закрити",
"to_navigate": "для навігації",
"to_select": "щоб вибрати",
@@ -49,7 +52,7 @@
"star": "Додати зірочку"
},
"app": {
"chat_with_us": "Спілкуйтеся з нами",
"chat_with_us": "Написати нам",
"contact_us": "Зв'яжіться з нами",
"copy": "Копіювати",
"copy_user_id": "Скопіювати токен автентифікації користувача",
@@ -63,10 +66,10 @@
"invite": "Запросити",
"invite_description": "У Hoppscotch ми розробили простий та інтуїтивно зрозумілий інтерфейс для створення та управління вашими API. Hoppscotch - це інструмент, який допомагає вам створювати, тестувати, документувати та ділитися своїми API.",
"invite_your_friends": "Запросіть своїх друзів",
"join_discord_community": "Приєднуйтесь до нашої спільноти Discord",
"join_discord_community": "Приєднуйтесь до нашої спільноти у Discord",
"keyboard_shortcuts": "Гарячі клавіши",
"name": "Гопскотч",
"new_version_found": "Знайдено нову версію. Оновіть, щоб оновити.",
"name": "Hoppscotch",
"new_version_found": "Знайдено нову версію. Перезавантажте сторінку, щоб оновити.",
"options": "Опції",
"proxy_privacy_policy": "Політика конфіденційності проксі",
"reload": "Перезавантажити",
@@ -81,17 +84,17 @@
"type_a_command_search": "Введіть команду або виконайте пошук…",
"we_use_cookies": "Ми використовуємо файли cookie",
"whats_new": "Що нового?",
"wiki": "Вікі"
"wiki": "Wiki"
},
"auth": {
"account_exists": "Обліковий запис існує з різними обліковими даними - увійдіть, щоб зв'язати обидва облікові записи",
"all_sign_in_options": "Усі параметри входу",
"continue_with_email": "Продовжити з електронною поштою",
"continue_with_github": "Продовжити з GitHub",
"continue_with_google": "Продовжуйте працювати з Google",
"continue_with_google": "Продовжити з Google",
"continue_with_microsoft": "Продовжити з Microsoft",
"email": "Електронна пошта",
"logged_out": "Вийшли з системи",
"logged_out": "Ви вийшли з облікового запису",
"login": "Увійти",
"login_success": "Вхід успішно здійснено",
"login_to_hoppscotch": "Увійдіть до Hoppscotch",
@@ -99,7 +102,7 @@
"re_enter_email": "Введіть електронну адресу ще раз",
"send_magic_link": "Надішліть чарівне посилання",
"sync": "Синхронізувати",
"we_sent_magic_link": "Ми надіслали вам чарівне посилання!",
"we_sent_magic_link": "Ми надіслали Вам чарівне посилання!",
"we_sent_magic_link_description": "Перевірте свою поштову скриньку - ми надіслали електронний лист на адресу {email}. Він містить чарівне посилання, яке дозволить вам увійти."
},
"authorization": {
@@ -151,7 +154,7 @@
},
"documentation": {
"generate": "Створення документації",
"generate_message": "Імпортуйте будь-яку колекцію Hoppscotch для створення документації API на ходу."
"generate_message": "Імпортуйте будь-яку колекцію Hoppscotch для автоматичного створення API-документації на ходу."
},
"empty": {
"authorization": "У цьому запиті не використовується авторизація",
@@ -172,31 +175,37 @@
"protocols": "Протоколи порожні",
"schema": "Підключіться до кінцевої точки GraphQL",
"shortcodes": "Короткі коди порожні",
"subscription": "Підписки порожні",
"team_name": "Назва команди порожня",
"teams": "Команди порожні",
"tests": "Для цього запиту немає тестів"
},
"environment": {
"add_to_global": "Додати до Глобального",
"add_to_global": "Додати до Глобального середовища",
"added": "Додавання середовища",
"create_new": "Створіть нове середовище",
"create_new": "Створити нове середовище",
"created": "Середовище створено",
"deleted": "Видалення середовища",
"edit": "Редагувати середовище",
"invalid_name": "Укажіть дійсну назву середовища",
"my_environments": "Мої середовища",
"nested_overflow": "вкладені змінні середовища обмежені до 10 рівнів",
"new": "Нове середовище",
"no_environment": "Жодного середовища",
"no_environment_description": "Не було обрано жодного середовища. Виберіть, що робити з наступними змінними.",
"select": "Виберіть середовище",
"team_environments": "Командні середовища",
"title": "Середовища",
"updated": "Environment updation",
"updated": "Оновлення середовища",
"variable_list": "Список змінних"
},
"error": {
"browser_support_sse": "Схоже, цей браузер не підтримує події, надіслані сервером.",
"check_console_details": "Детальніше перевірте журнал консолі.",
"curl_invalid_format": "cURL неправильно форматовано",
"danger_zone": "Небезпечна зона",
"delete_account": "Ваш обліковий запис на разі володіє цими командами:",
"delete_account_description": "Ви повинні або видалити себе, або передати право власності, або видалити ці команди, перш ніж ви зможете видалити свій обліковий запис.",
"empty_req_name": "Пуста назва запиту",
"f12_details": "(F12 для деталей)",
"gql_prettify_invalid_query": "Не вдалося попередньо визначити недійсний запит, вирішити синтаксичні помилки запиту та повторити спробу",
@@ -217,10 +226,15 @@
},
"export": {
"as_json": "Експортувати як JSON",
"create_secret_gist": "Створіть секретну суть",
"gist_created": "Суть створена",
"require_github": "Увійдіть за допомогою GitHub, щоб створити секретну історію",
"title": "Експорт"
"create_secret_gist": "Створити секретний GitHub Gist",
"gist_created": "Gist створений",
"require_github": "Увійдіть за допомогою GitHub, щоб створити секретний Gist",
"title": "Експортувати"
},
"filter": {
"all": "Всі",
"none": "Жодного",
"starred": "З Зірочкою"
},
"folder": {
"created": "Папка створена",
@@ -235,6 +249,10 @@
"schema": "Схема",
"subscriptions": "Підписки"
},
"group": {
"time": "Час",
"url": "URL"
},
"header": {
"install_pwa": "Встановити додаток",
"login": "Увійти",
@@ -242,19 +260,19 @@
},
"helpers": {
"authorization": "Заголовок авторизації буде автоматично сформований під час надсилання запиту.",
"generate_documentation_first": "Спочатку сформуйте документацію",
"generate_documentation_first": "Спочатку згенеруйте документацію",
"network_fail": "Не вдається зв'язатися з кінцевою точкою API. Перевірте підключення до мережі та повторіть спробу.",
"offline": "Ви, здається, не в мережі. Дані в цій робочій області можуть бути не актуальними.",
"offline_short": "Ви, здається, не в мережі.",
"post_request_tests": "Тестові сценарії записуються на JavaScript і запускаються після отримання відповіді.",
"pre_request_script": "Сценарії попереднього запиту написані на JavaScript і запускаються перед надсиланням запиту.",
"script_fail": "Схоже, є збій у сценарії попереднього запиту. Перевірте помилку нижче та виправте відповідним чином сценарій.",
"test_script_fail": "Здається виникла помилка з тестовим сценарієм. Будь ласка, виправте помилки і спробуйте знову",
"tests": "Напишіть тестовий сценарій для автоматизації налагодження."
"post_request_tests": "Тестові скрипти записуються на JavaScript і запускаються після отримання відповіді.",
"pre_request_script": "Скрипти написані на JavaScript і запускаються перед надсиланням запиту.",
"script_fail": "Схоже, є збій у скрипті. Перевірте помилку нижче та виправте відповідним чином сценарій.",
"test_script_fail": "Здається виникла помилка з тестовим скриптом. Будь ласка, виправте помилки і спробуйте знову",
"tests": "Напишіть тестовий скрипт для автоматизації налагодження."
},
"hide": {
"collection": "Згорнути панель колекції",
"more": "Приховай більше",
"more": "Приховати більше",
"preview": "Приховати попередній перегляд",
"sidebar": "Приховати бічну панель"
},
@@ -268,20 +286,20 @@
"from_insomnia_description": "Імпорт із колекції Insomnia",
"from_json": "Імпорт з Hoppscotch",
"from_json_description": "Імпорт з файлу колекції Hoppscotch",
"from_my_collections": "Імпортувати з Моїх колекцій",
"from_my_collections": "Імпортувати з моїх колекцій",
"from_my_collections_description": "Імпортувати з мого файлу колекцій",
"from_openapi": "Імпорт з OpenAPI",
"from_openapi_description": "Імпорт з файлу специфікації OpenAPI (YML/JSON)",
"from_postman": "Імпортувати з Postman",
"from_postman_description": "Імпорт із колекції Postman",
"from_url": "Імпорт з URL",
"gist_url": "Введіть URL -адресу Gist",
"gist_url": "Введіть URL-адресу Gist",
"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 JSON файлу",
"title": "Імпорт"
"title": "Імпортувати"
},
"layout": {
"collapse_collection": "Згорнути або розширити колекції",
@@ -298,11 +316,29 @@
"import_export": "Імпорт-експорт"
},
"mqtt": {
"communication": "Спілкування",
"already_subscribed": "Ви вже підписані на цю тему.",
"clean_session": "Очистити сесію.",
"clear_input": "Очистити вхідні дані",
"clear_input_on_send": "Очистити вхідні дані після надсилання",
"client_id": "ID Клієнта",
"color": "Оберіть колір",
"communication": "Комунікації",
"connection_config": "Налаштування підключення",
"connection_not_authorized": "Це MQTT-з'єднання не використовує автентифікацію.",
"invalid_topic": "Будь ласка, вкажіть тему для підписки",
"keep_alive": "Keep Alive",
"log": "Журнал",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "повідомлення",
"publish": "Публікуйте",
"subscribe": "Підпишіться",
"new": "Нова Підписка",
"not_connected": "Будь ласка, спочатку створіть з'єднання MQTT.",
"publish": "Опублікувати",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Підписатись",
"topic": "Тема",
"topic_name": "Назва теми",
"topic_title": "Опублікувати / підписатися на тему",
@@ -319,12 +355,13 @@
},
"preRequest": {
"javascript_code": "Код JavaScript",
"learn": "Прочитайте документацію",
"learn": "Прочитати документацію",
"script": "Сценарій попереднього запиту",
"snippets": "Фрагменти"
"snippets": "Сніпети"
},
"profile": {
"app_settings": "Параметри програми",
"default_hopp_displayname": "Користувач без імені",
"editor": "Редактор",
"editor_description": "Редактори можуть додавати, змінювати та видаляти запити.",
"email_verification_mail": "Лист для підтвердження електронної пошти було надіслано на вашу електронну адресу. Будь ласка, натисніть на посилання для підтвердження своєї адреси електронної пошти.",
@@ -402,15 +439,18 @@
},
"settings": {
"accent_color": "Колір акценту",
"account": "Рахунок",
"account": "Обліковий запис",
"account_deleted": "Ваш обліковий запис успішно видалено.",
"account_description": "Налаштуйте налаштування свого облікового запису.",
"account_email_description": "Ваша основна електронна адреса.",
"account_name_description": "Це ваше відображуване ім'я.",
"background": "Довідка",
"background": "Колір фону",
"black_mode": "Чорний",
"change_font_size": "Змінити розмір шрифту",
"choose_language": "Виберіть мову",
"dark_mode": "Темний",
"delete_account": "Видалити обліковий запис",
"delete_account_description": "Якщо Ви видалите обліковий запис, усі дані будуть втрачені без можливості їх відновлення.",
"expand_navigation": "Розгорнути навігацію",
"experiments": "Експерименти",
"experiments_notice": "Це збірка експериментів, над якими ми працюємо, які можуть виявитися корисними, веселими, обома чи ні. Вони не остаточні і можуть бути нестійкими, тому, якщо трапиться щось надто дивне, не панікуйте. Просто вимкніть небезпеку. Жарти в сторону,",
@@ -596,7 +636,7 @@
"queries": "Запити",
"query": "Запит",
"schema": "Схема",
"socketio": "Сокет.IO",
"socketio": "Socket.IO",
"sse": "SSE",
"tests": "Тести",
"types": "Типи",
@@ -652,15 +692,20 @@
"we_sent_invite_link": "Ми надіслали запрошення всім запрошеним!",
"we_sent_invite_link_description": "Попросіть всіх запрошених перевірити свої поштові скриньки. Перейдіть за посиланням, щоб приєднатися до команди."
},
"team_environment": {
"deleted": "Середовище видалено",
"duplicate": "Середовище дубльовано",
"not_found": "Середовище не знайдено."
},
"test": {
"failed": "помилка тесту",
"failed": "Помилка тесту",
"javascript_code": "Код JavaScript",
"learn": "Прочитайте документацію",
"passed": "тест пройдено",
"passed": "Тест пройдено",
"report": "Протокол випробування",
"results": "Результати тесту",
"script": "Сценарій",
"snippets": "Фрагменти"
"script": "Скрипти",
"snippets": "Сніпети"
},
"websocket": {
"communication": "Спілкування",

View File

@@ -7,6 +7,7 @@
"clear_all": "Quet sạch tât cả",
"close": "Close",
"connect": "Liên kết",
"connecting": "Connecting",
"copy": "Sao chép",
"delete": "Xóa bỏ",
"disconnect": "Ngắt kết nối",
@@ -16,8 +17,9 @@
"drag_to_reorder": "Drag to reorder",
"duplicate": "Duplicate",
"edit": "Chỉnh sửa",
"filter_response": "Filter response",
"filter": "Filter",
"go_back": "Quay lại",
"group_by": "Group by",
"label": "Nhãn",
"learn_more": "Tìm hiểu thêm",
"less": "Less",
@@ -35,6 +37,7 @@
"search": "Tìm kiếm",
"send": "Gửi",
"start": "Bắt đầu",
"starting": "Starting",
"stop": "Ngừng lại",
"to_close": "to close",
"to_navigate": "to navigate",
@@ -168,10 +171,11 @@
"members": "Đội trống",
"parameters": "Yêu cầu này không có bất kỳ thông số nào",
"pending_invites": "There are no pending invites for this team",
"profile": "Login in to view your profile",
"profile": "Login to view your profile",
"protocols": "Giao thức trống",
"schema": "Kết nối với một điểm cuối GraphQL",
"shortcodes": "Shortcodes are empty",
"subscription": "Subscriptions are empty",
"team_name": "Tên đội trống",
"teams": "Các đội trống",
"tests": "Không có bài kiểm tra nào cho yêu cầu này"
@@ -184,11 +188,13 @@
"deleted": "Environment deletion",
"edit": "Chỉnh sửa môi trường",
"invalid_name": "Vui lòng cung cấp tên hợp lệ cho môi trường",
"my_environments": "My Environments",
"nested_overflow": "nested environment variables are limited to 10 levels",
"new": "Môi trường mới",
"no_environment": "Không có môi trường",
"no_environment_description": "No environments were selected. Choose what to do with the following variables.",
"select": "Chọn môi trường",
"team_environments": "Team Environments",
"title": "Môi trường",
"updated": "Environment updation",
"variable_list": "Danh sách biến"
@@ -197,6 +203,9 @@
"browser_support_sse": "Trình duyệt này dường như không có hỗ trợ Sự kiện do Máy chủ gửi.",
"check_console_details": "Kiểm tra nhật ký bảng điều khiển để biết chi tiết.",
"curl_invalid_format": "cURL không được định dạng đúng",
"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.",
"empty_req_name": "Tên yêu cầu trống",
"f12_details": "(F12 để biết chi tiết)",
"gql_prettify_invalid_query": "Không thể xác minh trước một truy vấn không hợp lệ, hãy giải quyết các lỗi cú pháp truy vấn và thử lại",
@@ -222,6 +231,11 @@
"require_github": "Đăng nhập bằng GitHub để tạo ý chính bí mật",
"title": "Export"
},
"filter": {
"all": "All",
"none": "None",
"starred": "Starred"
},
"folder": {
"created": "Thư mục đã được tạo",
"edit": "Chỉnh sửa thư mục",
@@ -235,6 +249,10 @@
"schema": "Lược đồ",
"subscriptions": "Đăng ký"
},
"group": {
"time": "Time",
"url": "URL"
},
"header": {
"install_pwa": "Cài đặt ứng dụng",
"login": "Đăng nhập",
@@ -298,10 +316,28 @@
"import_export": "Nhập khẩu xuất khẩu"
},
"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",
"client_id": "Client ID",
"color": "Pick a color",
"communication": "Liên lạc",
"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",
"log": "Nhật ký",
"lw_message": "Last-Will Message",
"lw_qos": "Last-Will QoS",
"lw_retain": "Last-Will Retain",
"lw_topic": "Last-Will Topic",
"message": "Thông điệp",
"new": "New Subscription",
"not_connected": "Please start a MQTT connection first.",
"publish": "Công bố",
"qos": "QoS",
"ssl": "SSL",
"subscribe": "Đặt mua",
"topic": "Chủ đề",
"topic_name": "Tên chủ đề",
@@ -325,6 +361,7 @@
},
"profile": {
"app_settings": "App Settings",
"default_hopp_displayname": "Unnamed User",
"editor": "Editor",
"editor_description": "Editors can add, edit, and delete requests.",
"email_verification_mail": "A verification email has been sent to your email address. Please click on the link to verify your email address.",
@@ -403,6 +440,7 @@
"settings": {
"accent_color": "Màu nhấn",
"account": "Tài khoản",
"account_deleted": "Your account has been deleted",
"account_description": "Tùy chỉnh cài đặt tài khoản của bạn.",
"account_email_description": "Địa chỉ email chính của bạn.",
"account_name_description": "Đây là tên hiển thị của bạn.",
@@ -411,6 +449,8 @@
"change_font_size": "Thay đổi kích thước phông chữ",
"choose_language": "Chọn ngôn ngữ",
"dark_mode": "Tối tăm",
"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",
"experiments": "Thí nghiệm",
"experiments_notice": "Đây là một bộ sưu tập các thử nghiệm mà chúng tôi đang thực hiện có thể hữu ích, thú vị, cả hai hoặc không. Chúng không phải là cuối cùng và có thể không ổn định, vì vậy nếu có điều gì đó quá kỳ lạ xảy ra, đừng hoảng sợ. Chỉ cần tắt điều này đi. Chuyện cười sang một bên,",
@@ -652,6 +692,11 @@
"we_sent_invite_link": "We sent an invite link to all invitees!",
"we_sent_invite_link_description": "Ask all invitees to check their inbox. Click on the link to join the team."
},
"team_environment": {
"deleted": "Environment Deleted",
"duplicate": "Environment Duplicated",
"not_found": "Environment not found."
},
"test": {
"failed": "test failed",
"javascript_code": "Mã JavaScript",

View File

@@ -1,21 +1,18 @@
{
"name": "hoppscotch-app",
"name": "@hoppscotch/common",
"private": true,
"version": "3.0.1",
"scripts": {
"dev": "pnpm exec npm-run-all -p -l dev:*",
"dev:vite": "vite",
"dev:gql-codegen": "graphql-codegen --config gql-codegen.yml --watch",
"build": "node --max_old_space_size=16384 ./node_modules/vite/bin/vite.js build",
"dev:gql-codegen": "graphql-codegen --require dotenv/config --config gql-codegen.yml --watch dotenv_config_path=\"../../.env\"",
"lint": "eslint src --ext .ts,.js,.vue --ignore-path .gitignore .",
"lint:ts": "vue-tsc --noEmit",
"prod-lint": "cross-env HOPP_LINT_FOR_PROD=true pnpm run lint",
"lintfix": "eslint --fix src --ext .ts,.js,.vue --ignore-path .gitignore .",
"generate": "pnpm run build",
"preview": "vite preview",
"gql-codegen": "graphql-codegen --config gql-codegen.yml",
"gql-codegen": "graphql-codegen --require dotenv/config --config gql-codegen.yml dotenv_config_path=\"../../.env\"",
"postinstall": "pnpm run gql-codegen",
"do-dev": "pnpm run dev",
"do-build-prod": "pnpm run build",
"do-lint": "pnpm run prod-lint",
"do-typecheck": "pnpm run lint",
"do-lintfix": "pnpm run lintfix"
@@ -34,6 +31,7 @@
"@codemirror/state": "^6.1.0",
"@codemirror/view": "^6.0.2",
"@hoppscotch/codemirror-lang-graphql": "workspace:^0.2.0",
"@hoppscotch/ui": "workspace:^0.0.1",
"@hoppscotch/data": "workspace:^0.4.4",
"@hoppscotch/js-sandbox": "workspace:^2.1.0",
"@hoppscotch/vue-toasted": "^0.1.0",
@@ -44,6 +42,7 @@
"@urql/devtools": "^2.0.3",
"@urql/exchange-auth": "^0.1.7",
"@urql/exchange-graphcache": "^4.4.3",
"@vitejs/plugin-legacy": "^2.3.0",
"@vueuse/core": "^8.7.5",
"@vueuse/head": "^0.7.9",
"acorn-walk": "^8.2.0",
@@ -117,6 +116,7 @@
"@types/paho-mqtt": "^1.0.6",
"@types/postman-collection": "^3.5.7",
"@types/splitpanes": "^2.2.1",
"@types/uuid": "^8.3.4",
"@types/yargs-parser": "^21.0.0",
"@typescript-eslint/eslint-plugin": "^5.19.0",
"@typescript-eslint/parser": "^5.19.0",

View File

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

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