Compare commits

..

2 Commits

Author SHA1 Message Date
amk-dev
a9814a6bce refactor: make the calculation more expressive 2023-09-18 11:16:24 +05:30
nivedin
34220ba814 fix: dirty tab count incorrect when closing tabs 2023-09-18 11:16:24 +05:30
689 changed files with 15072 additions and 42820 deletions

View File

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

View File

@@ -59,6 +59,3 @@ VITE_BACKEND_API_URL=http://localhost:3170/v1
# Terms Of Service And Privacy Policy Links (Optional) # Terms Of Service And Privacy Policy Links (Optional)
VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms VITE_APP_TOS_LINK=https://docs.hoppscotch.io/support/terms
VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy VITE_APP_PRIVACY_POLICY_LINK=https://docs.hoppscotch.io/support/privacy
# Set to `true` for subpath based access
ENABLE_SUBPATH_BASED_ACCESS=false

View File

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

View File

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

14
.vscode/extensions.json vendored Normal file
View File

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

View File

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

View File

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

11
aio.Caddyfile Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -147,7 +147,7 @@ module.exports = {
// The glob patterns Jest uses to detect test files // The glob patterns Jest uses to detect test files
testMatch: [ testMatch: [
// "**/__tests__/**/*.[jt]s?(x)", // "**/__tests__/**/*.[jt]s?(x)",
"**/src/__tests__/commands/**/*.*.ts", "**/src/__tests__/**/*.*.ts",
], ],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped

View File

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

View File

@@ -106,7 +106,7 @@ describe("Test 'hopp test <file> --env <file>' command:", () => {
const TESTS_PATH = getTestJsonFilePath("env-flag-tests.json"); const TESTS_PATH = getTestJsonFilePath("env-flag-tests.json");
const ENV_PATH = getTestJsonFilePath("env-flag-envs.json"); const ENV_PATH = getTestJsonFilePath("env-flag-envs.json");
const cmd = `node ./bin/hopp test ${TESTS_PATH} --env ${ENV_PATH}`; const cmd = `node ./bin/hopp test ${TESTS_PATH} --env ${ENV_PATH}`;
const { error, stdout } = await execAsync(cmd); const { error } = await execAsync(cmd);
expect(error).toBeNull(); expect(error).toBeNull();
}); });
@@ -129,6 +129,7 @@ describe("Test 'hopp test <file> --delay <delay_in_ms>' command:", () => {
const cmd = `${VALID_TEST_CMD} --delay 'NaN'`; const cmd = `${VALID_TEST_CMD} --delay 'NaN'`;
const { stderr } = await execAsync(cmd); const { stderr } = await execAsync(cmd);
const out = getErrorCode(stderr); const out = getErrorCode(stderr);
console.log("invalid value thing", out)
expect(out).toBe<HoppErrorCode>("INVALID_ARGUMENT"); expect(out).toBe<HoppErrorCode>("INVALID_ARGUMENT");
}); });

View File

@@ -1,6 +1,7 @@
{ {
"URL": "https://echo.hoppscotch.io", "URL": "https://echo.hoppscotch.io",
"HOST": "echo.hoppscotch.io", "HOST": "echo.hoppscotch.io",
"X-COUNTRY": "IN",
"BODY_VALUE": "body_value", "BODY_VALUE": "body_value",
"BODY_KEY": "body_key" "BODY_KEY": "body_key"
} }

View File

@@ -12,7 +12,7 @@
"method": "POST", "method": "POST",
"auth": { "authType": "none", "authActive": true }, "auth": { "authType": "none", "authActive": true },
"preRequestScript": "", "preRequestScript": "",
"testScript": "const HOST = pw.env.get(\"HOST\");\nconst UNSET_ENV = pw.env.get(\"UNSET_ENV\");\nconst EXPECTED_URL = \"https://echo.hoppscotch.io\";\nconst URL = pw.env.get(\"URL\");\nconst BODY_VALUE = pw.env.get(\"BODY_VALUE\");\n\n// Check JSON response property\npw.test(\"Check headers properties.\", ()=> {\n pw.expect(pw.response.body.headers.host).toBe(HOST);\n});\n\npw.test(\"Check data properties.\", () => {\n\tconst DATA = pw.response.body.data;\n \n pw.expect(DATA).toBeType(\"string\");\n pw.expect(JSON.parse(DATA).body_key).toBe(BODY_VALUE);\n});\n\npw.test(\"Check request URL.\", () => {\n pw.expect(URL).toBe(EXPECTED_URL);\n})\n\npw.test(\"Check unset ENV.\", () => {\n pw.expect(UNSET_ENV).toBeType(\"undefined\");\n})", "testScript": "const HOST = pw.env.get(\"HOST\");\nconst UNSET_ENV = pw.env.get(\"UNSET_ENV\");\nconst EXPECTED_URL = \"https://echo.hoppscotch.io\";\nconst URL = pw.env.get(\"URL\");\nconst X_COUNTRY = pw.env.get(\"X-COUNTRY\");\nconst BODY_VALUE = pw.env.get(\"BODY_VALUE\");\n\n// Check JSON response property\npw.test(\"Check headers properties.\", ()=> {\n pw.expect(pw.response.body.headers.host).toBe(HOST);\n\t pw.expect(pw.response.body.headers[\"x-country\"]).toBe(X_COUNTRY); \n});\n\npw.test(\"Check data properties.\", () => {\n\tconst DATA = pw.response.body.data;\n \n pw.expect(DATA).toBeType(\"string\");\n pw.expect(JSON.parse(DATA).body_key).toBe(BODY_VALUE);\n});\n\npw.test(\"Check request URL.\", () => {\n pw.expect(URL).toBe(EXPECTED_URL);\n})\n\npw.test(\"Check unset ENV.\", () => {\n pw.expect(UNSET_ENV).toBeType(\"undefined\");\n})",
"body": { "body": {
"contentType": "application/json", "contentType": "application/json",
"body": "{\n \"<<BODY_KEY>>\":\"<<BODY_VALUE>>\"\n}" "body": "{\n \"<<BODY_KEY>>\":\"<<BODY_VALUE>>\"\n}"

View File

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

View File

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

View File

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

View File

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

View File

@@ -6,24 +6,23 @@ import {
parseTemplateString, parseTemplateString,
parseTemplateStringE, parseTemplateStringE,
} from "@hoppscotch/data"; } from "@hoppscotch/data";
import { runPreRequestScript } from "@hoppscotch/js-sandbox/node"; import { runPreRequestScript } from "@hoppscotch/js-sandbox";
import * as A from "fp-ts/Array";
import * as E from "fp-ts/Either";
import * as O from "fp-ts/Option";
import * as RA from "fp-ts/ReadonlyArray";
import * as TE from "fp-ts/TaskEither";
import { flow, pipe } from "fp-ts/function"; import { flow, pipe } from "fp-ts/function";
import * as TE from "fp-ts/TaskEither";
import * as E from "fp-ts/Either";
import * as RA from "fp-ts/ReadonlyArray";
import * as A from "fp-ts/Array";
import * as O from "fp-ts/Option";
import * as S from "fp-ts/string"; import * as S from "fp-ts/string";
import qs from "qs"; import qs from "qs";
import { EffectiveHoppRESTRequest } from "../interfaces/request"; import { EffectiveHoppRESTRequest } from "../interfaces/request";
import { HoppCLIError, error } from "../types/errors"; import { error, HoppCLIError } from "../types/errors";
import { HoppEnvs } from "../types/request"; import { HoppEnvs } from "../types/request";
import { PreRequestMetrics } from "../types/response";
import { isHoppCLIError } from "./checks"; import { isHoppCLIError } from "./checks";
import { arrayFlatMap, arraySort, tupleToRecord } from "./functions/array"; import { tupleToRecord, arraySort, arrayFlatMap } from "./functions/array";
import { getEffectiveFinalMetaData } from "./getters";
import { toFormData } from "./mutators"; import { toFormData } from "./mutators";
import { getEffectiveFinalMetaData } from "./getters";
import { PreRequestMetrics } from "../types/response";
/** /**
* Runs pre-request-script runner over given request which extracts set ENVs and * Runs pre-request-script runner over given request which extracts set ENVs and

View File

@@ -1,19 +1,17 @@
import { HoppRESTRequest } from "@hoppscotch/data"; import { HoppRESTRequest } from "@hoppscotch/data";
import { TestDescriptor } from "@hoppscotch/js-sandbox"; import { execTestScript, TestDescriptor } from "@hoppscotch/js-sandbox";
import { runTestScript } from "@hoppscotch/js-sandbox/node";
import * as A from "fp-ts/Array";
import * as RA from "fp-ts/ReadonlyArray";
import * as T from "fp-ts/Task";
import * as TE from "fp-ts/TaskEither";
import { flow, pipe } from "fp-ts/function";
import { hrtime } from "process"; import { hrtime } from "process";
import { flow, pipe } from "fp-ts/function";
import * as RA from "fp-ts/ReadonlyArray";
import * as A from "fp-ts/Array";
import * as TE from "fp-ts/TaskEither";
import * as T from "fp-ts/Task";
import { import {
RequestRunnerResponse, RequestRunnerResponse,
TestReport, TestReport,
TestScriptParams, TestScriptParams,
} from "../interfaces/response"; } from "../interfaces/response";
import { HoppCLIError, error } from "../types/errors"; import { error, HoppCLIError } from "../types/errors";
import { HoppEnvs } from "../types/request"; import { HoppEnvs } from "../types/request";
import { ExpectResult, TestMetrics, TestRunnerRes } from "../types/response"; import { ExpectResult, TestMetrics, TestRunnerRes } from "../types/response";
import { getDurationInSeconds } from "./getters"; import { getDurationInSeconds } from "./getters";
@@ -38,7 +36,7 @@ export const testRunner = (
pipe( pipe(
TE.of(testScriptData), TE.of(testScriptData),
TE.chain(({ testScript, response, envs }) => TE.chain(({ testScript, response, envs }) =>
runTestScript(testScript, envs, response) execTestScript(testScript, envs, response)
) )
) )
), ),

View File

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

View File

@@ -4,5 +4,5 @@ module.exports = {
singleQuote: false, singleQuote: false,
printWidth: 80, printWidth: 80,
useTabs: false, useTabs: false,
tabWidth: 2, tabWidth: 2
} }

View File

@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width=".88em" height="1em" viewBox="0 0 21 24"><path fill="currentColor" d="M12.731 2.751 17.666 5.6a2.138 2.138 0 1 1 2.07 3.548l-.015.003v5.7a2.14 2.14 0 1 1-2.098 3.502l-.002-.002-4.905 2.832a2.14 2.14 0 1 1-4.079.054l-.004.015-4.941-2.844a2.14 2.14 0 1 1-2.067-3.556l.015-.003V9.15a2.14 2.14 0 1 1 1.58-3.926l-.01-.005c.184.106.342.231.479.376l.001.001 4.938-2.85a2.14 2.14 0 1 1 4.096.021l.004-.015zm-.515.877a.766.766 0 0 1-.057.057l-.001.001 6.461 11.19c.026-.009.056-.016.082-.023V9.146a2.14 2.14 0 0 1-1.555-2.603l-.003.015.019-.072zm-3.015.059-.06-.06-4.946 2.852A2.137 2.137 0 0 1 2.749 9.12l-.015.004-.076.021v5.708l.084.023 6.461-11.19zm2.076.507a2.164 2.164 0 0 1-1.207-.004l.015.004-6.46 11.189c.286.276.496.629.597 1.026l.003.015h12.911c.102-.413.313-.768.599-1.043l.001-.001L11.28 4.194zm.986 16.227 4.917-2.838a1.748 1.748 0 0 1-.038-.142H4.222l-.021.083 4.939 2.852c.39-.403.936-.653 1.54-.653.626 0 1.189.268 1.581.696l.001.002z"/></svg> <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" width=".88em" height="1em" viewBox="0 0 21 24" class="iconify iconify--fontisto"><path fill="currentColor" d="M12.731 2.751 17.666 5.6a2.138 2.138 0 1 1 2.07 3.548l-.015.003v5.7a2.14 2.14 0 1 1-2.098 3.502l-.002-.002-4.905 2.832a2.14 2.14 0 1 1-4.079.054l-.004.015-4.941-2.844a2.14 2.14 0 1 1-2.067-3.556l.015-.003V9.15a2.14 2.14 0 1 1 1.58-3.926l-.01-.005c.184.106.342.231.479.376l.001.001 4.938-2.85a2.14 2.14 0 1 1 4.096.021l.004-.015zm-.515.877a.766.766 0 0 1-.057.057l-.001.001 6.461 11.19c.026-.009.056-.016.082-.023V9.146a2.14 2.14 0 0 1-1.555-2.603l-.003.015.019-.072zm-3.015.059-.06-.06-4.946 2.852A2.137 2.137 0 0 1 2.749 9.12l-.015.004-.076.021v5.708l.084.023 6.461-11.19zm2.076.507a2.164 2.164 0 0 1-1.207-.004l.015.004-6.46 11.189c.286.276.496.629.597 1.026l.003.015h12.911c.102-.413.313-.768.599-1.043l.001-.001L11.28 4.194zm.986 16.227 4.917-2.838a1.748 1.748 0 0 1-.038-.142H4.222l-.021.083 4.939 2.852c.39-.403.936-.653 1.54-.653.626 0 1.189.268 1.581.696l.001.002z"/></svg>

Before

Width:  |  Height:  |  Size: 1017 B

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M10.133 1h4.409a.5.5 0 0 1 .5.5v4.422c0 .026-.035.033-.045.01l-.048-.112a9.095 9.095 0 0 0-4.825-4.776c-.023-.01-.016-.044.01-.044Zm-8.588.275h-.5v1h.5c7.027 0 12.229 5.199 12.229 12.226v.5h1v-.5c0-7.58-5.65-13.226-13.229-13.226Zm.034 4.22h-.5v1h.5c2.361 0 4.348.837 5.744 2.238 1.395 1.401 2.227 3.395 2.227 5.758v.5h1v-.5c0-2.604-.921-4.859-2.52-6.463-1.596-1.605-3.845-2.532-6.45-2.532Zm-.528 8.996v-4.423c0-.041.033-.074.074-.074a4.923 4.923 0 0 1 4.923 4.922.074.074 0 0 1-.074.074H1.551a.5.5 0 0 1-.5-.5Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 684 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 16 16"><path fill="currentColor" fill-rule="evenodd" d="M9.277 2.084a.5.5 0 0 1 .185.607l-2.269 5.5a.5.5 0 0 1-.462.309H3.5a.5.5 0 0 1-.354-.854l5.5-5.5a.5.5 0 0 1 .631-.062ZM4.707 7.5h1.69l1.186-2.875L4.707 7.5Zm2.016 6.416a.5.5 0 0 1-.185-.607l2.269-5.5a.5.5 0 0 1 .462-.309H12.5a.5.5 0 0 1 .354.854l-5.5 5.5a.5.5 0 0 1-.631.062Zm4.57-5.416h-1.69l-1.186 2.875L11.293 8.5Z" clip-rule="evenodd"/><path fill="currentColor" fill-rule="evenodd" d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0Zm-1 0A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 633 B

View File

@@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 16 16"><path fill="currentColor" d="M1 2h4.257a2.5 2.5 0 0 1 1.768.732L9.293 5 5 9.293 3.732 8.025A2.5 2.5 0 0 1 3 6.257V4H2v2.257a3.5 3.5 0 0 0 1.025 2.475L5 10.707l1.25-1.25 2.396 2.397.708-.708L6.957 8.75 8.75 6.957l2.396 2.397.708-.708L9.457 6.25 10.707 5 7.732 2.025A3.5 3.5 0 0 0 5.257 1H1v1ZM10.646 2.354l2.622 2.62A2.5 2.5 0 0 1 14 6.744V12h1V6.743a3.5 3.5 0 0 0-1.025-2.475l-2.621-2.622-.707.708ZM4.268 13.975l-2.622-2.621.708-.708 2.62 2.622A2.5 2.5 0 0 0 6.744 14H15v1H6.743a3.5 3.5 0 0 1-2.475-1.025Z"/></svg>

Before

Width:  |  Height:  |  Size: 610 B

View File

@@ -1,25 +1,7 @@
/*
* Write hoppscotch-common related custom styles in this file.
* If styles are sharable across all package then write into hoppscotch-ui/assets/scss/styles.scss file.
*/
* { * {
backface-visibility: hidden; @apply backface-hidden;
-moz-backface-visibility: hidden; @apply before:backface-hidden;
-webkit-backface-visibility: hidden; @apply after:backface-hidden;
&::before {
backface-visibility: hidden;
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
&::after {
backface-visibility: hidden;
-moz-backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
@apply selection:bg-accentDark; @apply selection:bg-accentDark;
@apply selection:text-accentContrast; @apply selection:text-accentContrast;
@apply overscroll-none; @apply overscroll-none;
@@ -33,13 +15,13 @@
::-webkit-scrollbar-track { ::-webkit-scrollbar-track {
@apply bg-transparent; @apply bg-transparent;
@apply border-b-0 border-l border-r-0 border-t-0 border-solid border-dividerLight; @apply border-solid border-l border-dividerLight border-t-0 border-b-0 border-r-0;
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
@apply bg-divider bg-clip-content; @apply bg-divider bg-clip-content;
@apply rounded-full; @apply rounded-full;
@apply border-4 border-solid border-transparent; @apply border-solid border-transparent border-4;
@apply hover:bg-dividerDark; @apply hover:bg-dividerDark;
@apply hover:bg-clip-content; @apply hover:bg-clip-content;
} }
@@ -49,15 +31,11 @@
@apply h-0; @apply h-0;
} }
.no-scrollbar {
scrollbar-width: none;
}
input::placeholder, input::placeholder,
textarea::placeholder, textarea::placeholder,
.cm-placeholder { .cm-placeholder {
@apply text-secondary; @apply text-secondary;
@apply opacity-50 #{!important}; @apply opacity-50;
} }
input, input,
@@ -72,11 +50,11 @@ html {
body { body {
@apply bg-primary; @apply bg-primary;
@apply text-body text-secondary; @apply text-secondary text-body;
@apply font-medium; @apply font-medium;
@apply select-none; @apply select-none;
@apply overflow-x-hidden; @apply overflow-x-hidden;
@apply leading-body #{!important}; @apply leading-body;
animation: fade 300ms forwards; animation: fade 300ms forwards;
-webkit-tap-highlight-color: transparent; -webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none; -webkit-touch-callout: none;
@@ -142,8 +120,8 @@ a {
&.link { &.link {
@apply items-center; @apply items-center;
@apply px-1 py-0.5; @apply py-0.5 px-1;
@apply -mx-1 -my-0.5; @apply -my-0.5 -mx-1;
@apply text-accent; @apply text-accent;
@apply rounded; @apply rounded;
@apply hover:text-accentDark; @apply hover:text-accentDark;
@@ -155,7 +133,7 @@ a {
.cm-tooltip { .cm-tooltip {
.tippy-box { .tippy-box {
@apply shadow-none #{!important}; @apply shadow-none;
@apply fixed; @apply fixed;
@apply inline-flex; @apply inline-flex;
@apply -mt-8; @apply -mt-8;
@@ -172,15 +150,15 @@ a {
@apply flex; @apply flex;
@apply text-tiny text-primary; @apply text-tiny text-primary;
@apply font-semibold; @apply font-semibold;
@apply px-2 py-1; @apply py-1 px-2;
@apply truncate; @apply truncate;
@apply leading-body; @apply leading-normal;
@apply items-center; @apply items-center;
kbd { kbd {
@apply hidden; @apply hidden;
@apply font-sans; @apply font-sans;
background-color: rgba(107, 114, 128, 0.45); @apply bg-gray-500/45;
@apply text-primaryLight; @apply text-primaryLight;
@apply rounded-sm; @apply rounded-sm;
@apply px-1; @apply px-1;
@@ -188,12 +166,6 @@ a {
@apply truncate; @apply truncate;
@apply sm:inline-flex; @apply sm:inline-flex;
} }
.env-icon {
@apply transition;
@apply inline-flex;
@apply items-center;
}
} }
.tippy-svg-arrow { .tippy-svg-arrow {
@@ -219,9 +191,9 @@ a {
@apply max-h-[45vh]; @apply max-h-[45vh];
@apply items-stretch; @apply items-stretch;
@apply overflow-y-auto; @apply overflow-y-auto;
@apply text-body text-secondary; @apply text-secondary text-body;
@apply p-2; @apply p-2;
@apply leading-body; @apply leading-normal;
@apply focus:outline-none; @apply focus:outline-none;
scroll-behavior: smooth; scroll-behavior: smooth;
@@ -253,12 +225,12 @@ a {
hr { hr {
@apply border-b border-dividerLight; @apply border-b border-dividerLight;
@apply my-2 #{!important}; @apply my-2;
} }
.heading { .heading {
@apply font-bold; @apply font-bold;
@apply text-lg text-secondaryDark; @apply text-secondaryDark text-lg;
@apply tracking-tight; @apply tracking-tight;
} }
@@ -267,7 +239,7 @@ hr {
.textarea { .textarea {
@apply flex; @apply flex;
@apply w-full; @apply w-full;
@apply px-4 py-2; @apply py-2 px-4;
@apply bg-transparent; @apply bg-transparent;
@apply rounded; @apply rounded;
@apply text-secondaryDark; @apply text-secondaryDark;
@@ -308,7 +280,7 @@ button {
@apply transform; @apply transform;
@apply origin-top-left; @apply origin-top-left;
@apply scale-75; @apply scale-75;
@apply -translate-y-4 translate-x-1; @apply translate-x-1 -translate-y-4;
} }
.floating-input:focus-within ~ label { .floating-input:focus-within ~ label {
@@ -317,7 +289,7 @@ button {
.floating-input ~ .end-actions { .floating-input ~ .end-actions {
@apply absolute; @apply absolute;
@apply right-[.05rem]; @apply right-0.2;
@apply inset-y-0; @apply inset-y-0;
@apply flex; @apply flex;
@apply items-center; @apply items-center;
@@ -342,28 +314,44 @@ pre.ace_editor {
} }
} }
.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-current;
@apply after:right-3;
@apply after:content-["\e5cf"];
@apply after:text-lg;
}
.info-response { .info-response {
color: var(--status-info-color); @apply text-pink-500;
} }
.success-response { .success-response {
color: var(--status-success-color); @apply text-green-500;
} }
.redirect-response { .redir-response {
color: var(--status-redirect-color); @apply text-yellow-500;
} }
.critical-error-response { .cl-error-response {
color: var(--status-critical-error-color); @apply text-red-500;
} }
.server-error-response { .sv-error-response {
color: var(--status-server-error-color); @apply text-red-600;
} }
.missing-data-response { .missing-data-response {
color: var(--status-missing-data-color); @apply text-secondaryLight;
} }
.toasted-container { .toasted-container {
@@ -374,7 +362,7 @@ pre.ace_editor {
@apply px-4 py-2; @apply px-4 py-2;
@apply bg-tooltip; @apply bg-tooltip;
@apply border-secondaryDark; @apply border-secondaryDark;
@apply text-body text-primary; @apply text-primary text-body;
@apply justify-between; @apply justify-between;
@apply shadow-lg; @apply shadow-lg;
@apply font-semibold; @apply font-semibold;
@@ -402,7 +390,7 @@ pre.ace_editor {
@apply before:opacity-10; @apply before:opacity-10;
@apply before:inset-0; @apply before:inset-0;
@apply before:transition; @apply before:transition;
@apply before:content-['']; @apply before:content-DEFAULT;
@apply hover:no-underline; @apply hover:no-underline;
@apply hover:before:opacity-20; @apply hover:before:opacity-20;
} }
@@ -436,7 +424,7 @@ pre.ace_editor {
@apply before:opacity-0; @apply before:opacity-0;
@apply before:z-20; @apply before:z-20;
@apply before:transition; @apply before:transition;
@apply before:content-['']; @apply before:content-DEFAULT;
@apply hover:before:opacity-100; @apply hover:before:opacity-100;
} }
@@ -513,12 +501,12 @@ pre.ace_editor {
@apply inline-flex; @apply inline-flex;
@apply font-sans; @apply font-sans;
@apply text-tiny; @apply text-tiny;
@apply bg-dividerLight; @apply bg-divider;
@apply rounded; @apply rounded;
@apply ml-2; @apply ml-2;
@apply px-1; @apply px-1;
@apply min-w-[1.25rem]; @apply min-w-5;
@apply min-h-[1.25rem]; @apply min-h-5;
@apply items-center; @apply items-center;
@apply justify-center; @apply justify-center;
@apply border border-dividerDark; @apply border border-dividerDark;

View File

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

View File

@@ -0,0 +1,272 @@
@mixin base-theme {
--font-sans: "Inter Variable", sans-serif;
--font-icon: "Material Symbols Rounded Variable";
--font-mono: "Roboto Mono Variable", monospace;
--font-size-body: 0.75rem;
--font-size-tiny: 0.688rem;
--line-height-body: 1rem;
--upper-primary-sticky-fold: 4.125rem;
--upper-secondary-sticky-fold: 6.188rem;
--upper-tertiary-sticky-fold: 8.25rem;
--upper-mobile-primary-sticky-fold: 6.625rem;
--upper-mobile-secondary-sticky-fold: 8.688rem;
--upper-mobile-sticky-fold: 10.75rem;
--upper-mobile-tertiary-sticky-fold: 8.25rem;
--lower-primary-sticky-fold: 3rem;
--lower-secondary-sticky-fold: 5.063rem;
--lower-tertiary-sticky-fold: 7.125rem;
--sidebar-primary-sticky-fold: 2rem;
}
@mixin dark-theme {
--primary-color: theme("colors.dark.800");
--primary-light-color: theme("colors.dark.600");
--primary-dark-color: theme("colors.neutral.800");
--primary-contrast-color: theme("colors.neutral.900");
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.50");
--divider-color: theme("colors.neutral.800");
--divider-light-color: theme("colors.dark.500");
--divider-dark-color: theme("colors.dark.300");
--error-color: theme("colors.stone.800");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.dark.700");
--editor-theme: "merbivore_soft";
}
@mixin light-theme {
--primary-color: theme("colors.white");
--primary-light-color: theme("colors.gray.50");
--primary-dark-color: theme("colors.gray.100");
--primary-contrast-color: theme("colors.light.50");
--secondary-color: theme("colors.gray.500");
--secondary-light-color: theme("colors.gray.400");
--secondary-dark-color: theme("colors.gray.900");
--divider-color: theme("colors.gray.100");
--divider-light-color: theme("colors.gray.100");
--divider-dark-color: theme("colors.gray.300");
--error-color: theme("colors.yellow.100");
--tooltip-color: theme("colors.neutral.800");
--popover-color: theme("colors.white");
--editor-theme: "textmate";
}
@mixin black-theme {
--primary-color: theme("colors.dark.900");
--primary-light-color: theme("colors.neutral.900");
--primary-dark-color: theme("colors.dark.800");
--primary-contrast-color: theme("colors.dark.900");
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.100");
--divider-color: theme("colors.dark.600");
--divider-light-color: theme("colors.dark.800");
--divider-dark-color: theme("colors.dark.200");
--error-color: theme("colors.stone.900");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.dark.900");
--editor-theme: "twilight";
}
@mixin dark-editor-theme {
--editor-type-color: theme("colors.purple.400");
--editor-name-color: theme("colors.blue.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.green.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.fuchsia.400");
--editor-constant-color: theme("colors.violet.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin light-editor-theme {
--editor-type-color: theme("colors.purple.600");
--editor-name-color: theme("colors.red.600");
--editor-operator-color: theme("colors.indigo.600");
--editor-invalid-color: theme("colors.red.600");
--editor-separator-color: theme("colors.gray.600");
--editor-meta-color: theme("colors.gray.600");
--editor-variable-color: theme("colors.green.600");
--editor-link-color: theme("colors.cyan.600");
--editor-process-color: theme("colors.blue.600");
--editor-constant-color: theme("colors.fuchsia.600");
--editor-keyword-color: theme("colors.pink.600");
}
@mixin black-editor-theme {
--editor-type-color: theme("colors.purple.400");
--editor-name-color: theme("colors.fuchsia.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.green.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.violet.400");
--editor-constant-color: theme("colors.blue.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin green-theme {
--accent-color: theme("colors.green.500");
--accent-light-color: theme("colors.green.400");
--accent-dark-color: theme("colors.green.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.green.200");
--gradient-via-color: theme("colors.green.400");
--gradient-to-color: theme("colors.green.600");
}
@mixin teal-theme {
--accent-color: theme("colors.teal.500");
--accent-light-color: theme("colors.teal.400");
--accent-dark-color: theme("colors.teal.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.teal.200");
--gradient-via-color: theme("colors.teal.400");
--gradient-to-color: theme("colors.teal.600");
}
@mixin blue-theme {
--accent-color: theme("colors.blue.500");
--accent-light-color: theme("colors.blue.400");
--accent-dark-color: theme("colors.blue.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.blue.200");
--gradient-via-color: theme("colors.blue.400");
--gradient-to-color: theme("colors.blue.600");
}
@mixin indigo-theme {
--accent-color: theme("colors.indigo.500");
--accent-light-color: theme("colors.indigo.400");
--accent-dark-color: theme("colors.indigo.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.indigo.200");
--gradient-via-color: theme("colors.indigo.400");
--gradient-to-color: theme("colors.indigo.600");
}
@mixin purple-theme {
--accent-color: theme("colors.purple.500");
--accent-light-color: theme("colors.purple.400");
--accent-dark-color: theme("colors.purple.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.purple.200");
--gradient-via-color: theme("colors.purple.400");
--gradient-to-color: theme("colors.purple.600");
}
@mixin yellow-theme {
--accent-color: theme("colors.yellow.500");
--accent-light-color: theme("colors.yellow.400");
--accent-dark-color: theme("colors.yellow.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.yellow.200");
--gradient-via-color: theme("colors.yellow.400");
--gradient-to-color: theme("colors.yellow.600");
}
@mixin orange-theme {
--accent-color: theme("colors.orange.500");
--accent-light-color: theme("colors.orange.400");
--accent-dark-color: theme("colors.orange.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.orange.200");
--gradient-via-color: theme("colors.orange.400");
--gradient-to-color: theme("colors.orange.600");
}
@mixin red-theme {
--accent-color: theme("colors.red.500");
--accent-light-color: theme("colors.red.400");
--accent-dark-color: theme("colors.red.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.red.200");
--gradient-via-color: theme("colors.red.400");
--gradient-to-color: theme("colors.red.600");
}
@mixin pink-theme {
--accent-color: theme("colors.pink.500");
--accent-light-color: theme("colors.pink.400");
--accent-dark-color: theme("colors.pink.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.pink.200");
--gradient-via-color: theme("colors.pink.400");
--gradient-to-color: theme("colors.pink.600");
}
:root {
@include base-theme;
@include dark-theme;
@include dark-editor-theme;
@include green-theme;
}
:root.light {
@include light-theme;
@include light-editor-theme;
color-scheme: light;
}
:root.dark {
@include dark-theme;
@include dark-editor-theme;
color-scheme: dark;
}
:root.black {
@include black-theme;
@include black-editor-theme;
color-scheme: dark;
}
:root[data-accent="blue"] {
@include blue-theme;
}
:root[data-accent="green"] {
@include green-theme;
}
:root[data-accent="teal"] {
@include teal-theme;
}
:root[data-accent="indigo"] {
@include indigo-theme;
}
:root[data-accent="purple"] {
@include purple-theme;
}
:root[data-accent="orange"] {
@include orange-theme;
}
:root[data-accent="pink"] {
@include pink-theme;
}
:root[data-accent="red"] {
@include red-theme;
}
:root[data-accent="yellow"] {
@include yellow-theme;
}

View File

@@ -1,89 +0,0 @@
@mixin green-theme {
--accent-color: theme("colors.emerald.500");
--accent-light-color: theme("colors.emerald.400");
--accent-dark-color: theme("colors.emerald.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.emerald.400");
--gradient-via-color: theme("colors.emerald.500");
--gradient-to-color: theme("colors.emerald.600");
}
@mixin teal-theme {
--accent-color: theme("colors.teal.500");
--accent-light-color: theme("colors.teal.400");
--accent-dark-color: theme("colors.teal.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.teal.400");
--gradient-via-color: theme("colors.teal.500");
--gradient-to-color: theme("colors.teal.600");
}
@mixin blue-theme {
--accent-color: theme("colors.blue.500");
--accent-light-color: theme("colors.blue.400");
--accent-dark-color: theme("colors.blue.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.blue.400");
--gradient-via-color: theme("colors.blue.500");
--gradient-to-color: theme("colors.blue.600");
}
@mixin indigo-theme {
--accent-color: theme("colors.indigo.500");
--accent-light-color: theme("colors.indigo.400");
--accent-dark-color: theme("colors.indigo.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.indigo.400");
--gradient-via-color: theme("colors.indigo.500");
--gradient-to-color: theme("colors.indigo.600");
}
@mixin purple-theme {
--accent-color: theme("colors.purple.500");
--accent-light-color: theme("colors.purple.400");
--accent-dark-color: theme("colors.purple.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.purple.400");
--gradient-via-color: theme("colors.purple.500");
--gradient-to-color: theme("colors.purple.600");
}
@mixin yellow-theme {
--accent-color: theme("colors.amber.500");
--accent-light-color: theme("colors.amber.400");
--accent-dark-color: theme("colors.amber.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.amber.400");
--gradient-via-color: theme("colors.amber.500");
--gradient-to-color: theme("colors.amber.600");
}
@mixin orange-theme {
--accent-color: theme("colors.orange.500");
--accent-light-color: theme("colors.orange.400");
--accent-dark-color: theme("colors.orange.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.orange.400");
--gradient-via-color: theme("colors.orange.500");
--gradient-to-color: theme("colors.orange.600");
}
@mixin red-theme {
--accent-color: theme("colors.red.500");
--accent-light-color: theme("colors.red.400");
--accent-dark-color: theme("colors.red.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.red.400");
--gradient-via-color: theme("colors.red.500");
--gradient-to-color: theme("colors.red.600");
}
@mixin pink-theme {
--accent-color: theme("colors.pink.500");
--accent-light-color: theme("colors.pink.400");
--accent-dark-color: theme("colors.pink.600");
--accent-contrast-color: theme("colors.white");
--gradient-from-color: theme("colors.pink.400");
--gradient-via-color: theme("colors.pink.500");
--gradient-to-color: theme("colors.pink.600");
}

View File

@@ -1,140 +0,0 @@
@mixin base-theme {
--font-sans: "Inter Variable", sans-serif;
--font-mono: "Roboto Mono Variable", monospace;
--font-size-body: 0.75rem;
--font-size-tiny: 0.625rem;
--line-height-body: 1rem;
--upper-primary-sticky-fold: 4.125rem;
--upper-secondary-sticky-fold: 6.188rem;
--upper-tertiary-sticky-fold: 8.25rem;
--upper-fourth-sticky-fold: 10.2rem;
--upper-mobile-primary-sticky-fold: 6.75rem;
--upper-mobile-secondary-sticky-fold: 8.813rem;
--upper-mobile-sticky-fold: 10.875rem;
--upper-mobile-tertiary-sticky-fold: 8.25rem;
--lower-primary-sticky-fold: 3rem;
--lower-secondary-sticky-fold: 5.063rem;
--lower-tertiary-sticky-fold: 7.125rem;
--lower-fourth-sticky-fold: 9.188rem;
--sidebar-primary-sticky-fold: 2rem;
}
@mixin light-theme {
--primary-color: theme("colors.white");
--primary-light-color: theme("colors.gray.50");
--primary-dark-color: theme("colors.gray.100");
--primary-contrast-color: #fdfdfd;
--secondary-color: theme("colors.gray.500");
--secondary-light-color: theme("colors.gray.400");
--secondary-dark-color: theme("colors.gray.900");
--divider-color: theme("colors.gray.100");
--divider-light-color: theme("colors.gray.100");
--divider-dark-color: theme("colors.gray.300");
--banner-info-color: theme("colors.stone.100");
--banner-warning-color: theme("colors.yellow.100");
--banner-error-color: theme("colors.red.100");
--tooltip-color: theme("colors.neutral.800");
--popover-color: theme("colors.white");
--method-get-color: theme("colors.green.500");
--method-post-color: theme("colors.amber.500");
--method-put-color: theme("colors.blue.500");
--method-patch-color: theme("colors.purple.500");
--method-delete-color: theme("colors.red.500");
--method-head-color: theme("colors.lime.500");
--method-options-color: theme("colors.pink.500");
--method-default-color: theme("colors.gray.500");
--status-info-color: theme("colors.blue.500");
--status-success-color: theme("colors.green.500");
--status-redirect-color: theme("colors.amber.500");
--status-critical-error-color: theme("colors.red.500");
--status-server-error-color: theme("colors.rose.500");
--status-missing-data-color: theme("colors.slate.500");
--editor-theme: "textmate";
}
@mixin dark-theme {
--primary-color: #181818;
--primary-light-color: #1c1c1e;
--primary-dark-color: theme("colors.neutral.800");
--primary-contrast-color: theme("colors.neutral.900");
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.zinc.50");
--divider-color: #1f1f1f;
--divider-light-color: #1f1f1f;
--divider-dark-color: theme("colors.zinc.800");
--banner-info-color: theme("colors.stone.800");
--banner-warning-color: theme("colors.yellow.800");
--banner-error-color: theme("colors.red.800");
--tooltip-color: theme("colors.neutral.100");
--popover-color: #1b1b1b;
--method-get-color: theme("colors.emerald.500");
--method-post-color: theme("colors.yellow.500");
--method-put-color: theme("colors.sky.500");
--method-patch-color: theme("colors.violet.500");
--method-delete-color: theme("colors.rose.500");
--method-head-color: theme("colors.teal.500");
--method-options-color: theme("colors.indigo.500");
--method-default-color: theme("colors.neutral.500");
--status-info-color: theme("colors.blue.500");
--status-success-color: theme("colors.green.500");
--status-redirect-color: theme("colors.amber.500");
--status-critical-error-color: theme("colors.red.500");
--status-server-error-color: theme("colors.rose.500");
--status-missing-data-color: theme("colors.slate.500");
--editor-theme: "merbivore_soft";
}
@mixin black-theme {
--primary-color: #0f0f0f;
--primary-light-color: theme("colors.neutral.900");
--primary-dark-color: #181818;
--primary-contrast-color: #0f0f0f;
--secondary-color: theme("colors.neutral.400");
--secondary-light-color: theme("colors.neutral.500");
--secondary-dark-color: theme("colors.neutral.50");
--divider-color: theme("colors.neutral.900");
--divider-light-color: theme("colors.neutral.900");
--divider-dark-color: theme("colors.zinc.800");
--banner-info-color: theme("colors.stone.900");
--banner-warning-color: theme("colors.yellow.900");
--banner-error-color: theme("colors.red.900");
--tooltip-color: theme("colors.neutral.100");
--popover-color: theme("colors.stone.950");
--method-get-color: theme("colors.emerald.500");
--method-post-color: theme("colors.yellow.500");
--method-put-color: theme("colors.sky.500");
--method-patch-color: theme("colors.violet.500");
--method-delete-color: theme("colors.rose.500");
--method-head-color: theme("colors.teal.500");
--method-options-color: theme("colors.indigo.500");
--method-default-color: theme("colors.zinc.500");
--status-info-color: theme("colors.blue.500");
--status-success-color: theme("colors.green.500");
--status-redirect-color: theme("colors.amber.500");
--status-critical-error-color: theme("colors.red.500");
--status-server-error-color: theme("colors.rose.500");
--status-missing-data-color: theme("colors.slate.500");
--editor-theme: "twilight";
}

View File

@@ -1,41 +0,0 @@
@mixin light-editor-theme {
--editor-type-color: theme("colors.violet.600");
--editor-name-color: theme("colors.red.600");
--editor-operator-color: theme("colors.indigo.600");
--editor-invalid-color: theme("colors.red.600");
--editor-separator-color: theme("colors.gray.600");
--editor-meta-color: theme("colors.gray.600");
--editor-variable-color: theme("colors.emerald.600");
--editor-link-color: theme("colors.cyan.600");
--editor-process-color: theme("colors.blue.600");
--editor-constant-color: theme("colors.fuchsia.600");
--editor-keyword-color: theme("colors.pink.600");
}
@mixin dark-editor-theme {
--editor-type-color: theme("colors.violet.400");
--editor-name-color: theme("colors.blue.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.emerald.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.fuchsia.400");
--editor-constant-color: theme("colors.violet.400");
--editor-keyword-color: theme("colors.pink.400");
}
@mixin black-editor-theme {
--editor-type-color: theme("colors.violet.400");
--editor-name-color: theme("colors.fuchsia.400");
--editor-operator-color: theme("colors.indigo.400");
--editor-invalid-color: theme("colors.red.400");
--editor-separator-color: theme("colors.gray.400");
--editor-meta-color: theme("colors.gray.400");
--editor-variable-color: theme("colors.emerald.400");
--editor-link-color: theme("colors.cyan.400");
--editor-process-color: theme("colors.violet.400");
--editor-constant-color: theme("colors.blue.400");
--editor-keyword-color: theme("colors.pink.400");
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,17 +1,15 @@
{ {
"action": { "action": {
"add": "Add",
"autoscroll": "Autoscroll", "autoscroll": "Autoscroll",
"cancel": "Cancel", "cancel": "Cancel",
"choose_file": "Choose a file", "choose_file": "Choose a file",
"clear": "Clear", "clear": "Clear",
"clear_history": "Clear All History",
"clear_all": "Clear all", "clear_all": "Clear all",
"clear_history": "Clear all History",
"close": "Close", "close": "Close",
"connect": "Connect", "connect": "Connect",
"connecting": "Connecting", "connecting": "Connecting",
"copy": "Copy", "copy": "Copy",
"create": "Create",
"delete": "Delete", "delete": "Delete",
"disconnect": "Disconnect", "disconnect": "Disconnect",
"dismiss": "Dismiss", "dismiss": "Dismiss",
@@ -33,15 +31,14 @@
"open_workspace": "Open workspace", "open_workspace": "Open workspace",
"paste": "Paste", "paste": "Paste",
"prettify": "Prettify", "prettify": "Prettify",
"remove": "Remove",
"rename": "Rename", "rename": "Rename",
"remove": "Remove",
"restore": "Restore", "restore": "Restore",
"save": "Save", "save": "Save",
"scroll_to_bottom": "Scroll to bottom", "scroll_to_bottom": "Scroll to bottom",
"scroll_to_top": "Scroll to top", "scroll_to_top": "Scroll to top",
"search": "Search", "search": "Search",
"send": "Send", "send": "Send",
"share": "Share",
"start": "Start", "start": "Start",
"starting": "Starting", "starting": "Starting",
"stop": "Stop", "stop": "Stop",
@@ -57,30 +54,10 @@
"new": "Add new", "new": "Add new",
"star": "Add star" "star": "Add star"
}, },
"cookies": {
"modal": {
"new_domain_name": "New domain name",
"set": "Set a cookie",
"cookie_string": "Cookie string",
"enter_cookie_string": "Enter cookie string",
"cookie_name": "Name",
"cookie_value": "Value",
"cookie_path": "Path",
"cookie_expires": "Expires",
"managed_tab": "Managed",
"raw_tab": "Raw",
"interceptor_no_support": "Your currently selected interceptor does not support cookies. Select a different Interceptor and try again.",
"empty_domains": "Domain list is empty",
"empty_domain": "Domain is empty",
"no_cookies_in_domain": "No cookies set for this domain"
}
},
"app": { "app": {
"chat_with_us": "Chat with us", "chat_with_us": "Chat with us",
"contact_us": "Contact us", "contact_us": "Contact us",
"cookies": "Cookies",
"copy": "Copy", "copy": "Copy",
"copy_interface_type": "Copy interface type",
"copy_user_id": "Copy User Auth Token", "copy_user_id": "Copy User Auth Token",
"developer_option": "Developer options", "developer_option": "Developer options",
"developer_option_description": "Developer tools which helps in development and maintenance of Hoppscotch.", "developer_option_description": "Developer tools which helps in development and maintenance of Hoppscotch.",
@@ -92,19 +69,18 @@
"invite": "Invite", "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_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", "invite_your_friends": "Invite your friends",
"social_links": "Social links",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"join_discord_community": "Join our Discord community", "join_discord_community": "Join our Discord community",
"keyboard_shortcuts": "Keyboard shortcuts", "keyboard_shortcuts": "Keyboard shortcuts",
"name": "Hoppscotch", "name": "Hoppscotch",
"new_version_found": "New version found. Refresh to update.", "new_version_found": "New version found. Refresh to update.",
"open_in_hoppscotch": "Open in Hoppscotch",
"options": "Options", "options": "Options",
"proxy_privacy_policy": "Proxy privacy policy", "proxy_privacy_policy": "Proxy privacy policy",
"reload": "Reload", "reload": "Reload",
"search": "Search", "search": "Search",
"share": "Share", "share": "Share",
"shortcuts": "Shortcuts", "shortcuts": "Shortcuts",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Spotlight", "spotlight": "Spotlight",
"status": "Status", "status": "Status",
"status_description": "Check the status of the website", "status_description": "Check the status of the website",
@@ -136,34 +112,18 @@
}, },
"authorization": { "authorization": {
"generate_token": "Generate Token", "generate_token": "Generate Token",
"graphql_headers": "Authorization Headers are sent as part of the payload to connection_init",
"include_in_url": "Include in URL", "include_in_url": "Include in URL",
"learn": "Learn how", "learn": "Learn how",
"pass_key_by": "Pass by", "pass_key_by": "Pass by",
"password": "Password", "password": "Password",
"token": "Token", "token": "Token",
"type": "Authorization Type", "type": "Authorization Type",
"username": "Username", "username": "Username"
"oauth": {
"token_generation_oidc_discovery_failed": "Failure on token generation: OpenID Connect Discovery Failed",
"something_went_wrong_on_token_generation": "Something went wrong on token generation",
"redirect_auth_server_returned_error": "Auth Server returned an error state",
"redirect_no_auth_code": "No Authorization Code present in the redirect",
"redirect_invalid_state": "Invalid State value present in the redirect",
"redirect_no_token_endpoint": "No Token Endpoint Defined",
"redirect_no_client_id": "No Client ID defined",
"redirect_no_client_secret": "No Client Secret Defined",
"redirect_no_code_verifier": "No Code Verifier Defined",
"redirect_auth_token_request_failed": "Request to get the auth token failed",
"redirect_auth_token_request_invalid_response": "Invalid Response from the Token Endpoint when requesting for an auth token",
"something_went_wrong_on_oauth_redirect": "Something went wrong during OAuth Redirect"
}
}, },
"collection": { "collection": {
"created": "Collection created", "created": "Collection created",
"different_parent": "Cannot reorder collection with different parent", "different_parent": "Cannot reorder collection with different parent",
"edit": "Edit Collection", "edit": "Edit Collection",
"import_or_create": "Import or create a collection",
"invalid_name": "Please provide a name for the collection", "invalid_name": "Please provide a name for the collection",
"invalid_root_move": "Collection already in the root", "invalid_root_move": "Collection already in the root",
"moved": "Moved Successfully", "moved": "Moved Successfully",
@@ -182,8 +142,6 @@
"team_collections": "Team Collections" "team_collections": "Team Collections"
}, },
"confirm": { "confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Are you sure you want to leave this team?", "exit_team": "Are you sure you want to leave this team?",
"logout": "Are you sure you want to logout?", "logout": "Are you sure you want to logout?",
"remove_collection": "Are you sure you want to permanently delete this collection?", "remove_collection": "Are you sure you want to permanently delete this collection?",
@@ -191,17 +149,18 @@
"remove_folder": "Are you sure you want to permanently delete this folder?", "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_history": "Are you sure you want to permanently delete all history?",
"remove_request": "Are you sure you want to permanently delete this request?", "remove_request": "Are you sure you want to permanently delete this request?",
"remove_shared_request": "Are you sure you want to permanently delete this shared request?",
"remove_team": "Are you sure you want to delete this team?", "remove_team": "Are you sure you want to delete this team?",
"remove_telemetry": "Are you sure you want to opt-out of Telemetry?", "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.", "request_change": "Are you sure you want to discard current request, unsaved changes will be lost.",
"save_unsaved_tab": "Do you want to save changes made in this tab?", "save_unsaved_tab": "Do you want to save changes made in this tab?",
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"sync": "Would you like to restore your workspace from cloud? This will discard your local progress." "sync": "Would you like to restore your workspace from cloud? This will discard your local progress."
}, },
"context_menu": { "context_menu": {
"set_environment_variable": "Set as variable",
"add_parameters": "Add to parameters", "add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab", "open_request_in_new_tab": "Open request in new tab"
"set_environment_variable": "Set as variable"
}, },
"count": { "count": {
"header": "Header {count}", "header": "Header {count}",
@@ -233,8 +192,7 @@
"profile": "Login to view your profile", "profile": "Login to view your profile",
"protocols": "Protocols are empty", "protocols": "Protocols are empty",
"schema": "Connect to a GraphQL endpoint to view schema", "schema": "Connect to a GraphQL endpoint to view schema",
"shared_requests_logout": "Login to view your shared requests or create a new one", "shortcodes": "Shortcodes are empty",
"shared_requests": "Shared requests are empty",
"subscription": "Subscriptions are empty", "subscription": "Subscriptions are empty",
"team_name": "Team name empty", "team_name": "Team name empty",
"teams": "You don't belong to any teams", "teams": "You don't belong to any teams",
@@ -248,10 +206,9 @@
"deleted": "Environment deletion", "deleted": "Environment deletion",
"duplicated": "Environment duplicated", "duplicated": "Environment duplicated",
"edit": "Edit Environment", "edit": "Edit Environment",
"empty_variables": "No variables",
"global": "Global", "global": "Global",
"empty_variables": "No variables",
"global_variables": "Global variables", "global_variables": "Global variables",
"import_or_create": "Import or create a environment",
"invalid_name": "Please provide a name for the environment", "invalid_name": "Please provide a name for the environment",
"list": "Environment variables", "list": "Environment variables",
"my_environments": "My Environments", "my_environments": "My Environments",
@@ -274,13 +231,9 @@
"variable": "Variable", "variable": "Variable",
"variable_list": "Variable List" "variable_list": "Variable List"
}, },
"graphql_collections": {
"title": "GraphQL Collections"
},
"error": { "error": {
"browser_support_sse": "This browser doesn't seems to have Server Sent Events support.", "browser_support_sse": "This browser doesn't seems to have Server Sent Events support.",
"check_console_details": "Check console log for details.", "check_console_details": "Check console log for details.",
"check_how_to_add_origin": "Check how you can add an origin",
"curl_invalid_format": "cURL is not formatted properly", "curl_invalid_format": "cURL is not formatted properly",
"danger_zone": "Danger zone", "danger_zone": "Danger zone",
"delete_account": "Your account is currently an owner in these teams:", "delete_account": "Your account is currently an owner in these teams:",
@@ -296,12 +249,9 @@
"json_prettify_invalid_body": "Couldn't prettify an invalid body, solve json syntax errors and try again", "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_error": "There seems to be a network error. Please try again.",
"network_fail": "Could not send request", "network_fail": "Could not send request",
"no_collections_to_export": "No collections to export. Please create a collection to get started.",
"no_duration": "No duration", "no_duration": "No duration",
"no_environments_to_export": "No environments to export. Please create an environment to get started.",
"no_results_found": "No matches found", "no_results_found": "No matches found",
"page_not_found": "This page could not be found", "page_not_found": "This page could not be found",
"please_install_extension": "Please install the extension and add origin to the extension.",
"proxy_error": "Proxy error", "proxy_error": "Proxy error",
"script_fail": "Could not execute pre-request script", "script_fail": "Could not execute pre-request script",
"something_went_wrong": "Something went wrong", "something_went_wrong": "Something went wrong",
@@ -312,8 +262,7 @@
"create_secret_gist": "Create secret Gist", "create_secret_gist": "Create secret Gist",
"gist_created": "Gist created", "gist_created": "Gist created",
"require_github": "Login with GitHub to create secret gist", "require_github": "Login with GitHub to create secret gist",
"title": "Export", "title": "Export"
"failed": "Something went wrong while exporting"
}, },
"filter": { "filter": {
"all": "All", "all": "All",
@@ -329,13 +278,13 @@
"renamed": "Folder renamed" "renamed": "Folder renamed"
}, },
"graphql": { "graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutations", "mutations": "Mutations",
"schema": "Schema", "schema": "Schema",
"subscriptions": "Subscriptions", "switch_connection": "Switch connection",
"switch_connection": "Switch connection" "connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"subscriptions": "Subscriptions"
}, },
"group": { "group": {
"time": "Time", "time": "Time",
@@ -350,8 +299,8 @@
"authorization": "The authorization header will be automatically generated when you send the request.", "authorization": "The authorization header will be automatically generated when you send the request.",
"generate_documentation_first": "Generate documentation first", "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.", "network_fail": "Unable to reach the API endpoint. Check your network connection or select a different Interceptor and try again.",
"offline": "You're using Hoppscotch offline. Updates will sync when you're online, based on workspace settings.", "offline": "You seem to be offline. Data in this workspace might not be up to date.",
"offline_short": "You're using Hoppscotch offline.", "offline_short": "You seem to be offline.",
"post_request_tests": "Test scripts are written in JavaScript, and are run after the response is received.", "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.", "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.", "script_fail": "It seems there is a glitch in the pre-request script. Check the error below and fix the script accordingly.",
@@ -364,6 +313,30 @@
"preview": "Hide Preview", "preview": "Hide Preview",
"sidebar": "Collapse sidebar" "sidebar": "Collapse sidebar"
}, },
"inspections": {
"title": "Inspector",
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"network_error": "Please check your network connection.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request."
},
"url": {
"extension_not_installed": "Extension not installed.",
"extention_not_enabled": "Extension not enabled.",
"extention_enable_action": "Enable Browser Extension",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list."
}
},
"import": { "import": {
"collections": "Import collections", "collections": "Import collections",
"curl": "Import cURL", "curl": "Import cURL",
@@ -380,7 +353,6 @@
"from_openapi_description": "Import from OpenAPI specification file (YML/JSON)", "from_openapi_description": "Import from OpenAPI specification file (YML/JSON)",
"from_postman": "Import from Postman", "from_postman": "Import from Postman",
"from_postman_description": "Import from Postman collection", "from_postman_description": "Import from Postman collection",
"from_file": "Import from File",
"from_url": "Import from URL", "from_url": "Import from URL",
"gist_url": "Enter Gist URL", "gist_url": "Enter Gist URL",
"import_from_url_invalid_fetch": "Couldn't get data from the url", "import_from_url_invalid_fetch": "Couldn't get data from the url",
@@ -388,53 +360,21 @@
"import_from_url_invalid_type": "Unsupported type. accepted values are 'hoppscotch', 'openapi', 'postman', 'insomnia'", "import_from_url_invalid_type": "Unsupported type. accepted values are 'hoppscotch', 'openapi', 'postman', 'insomnia'",
"import_from_url_success": "Collections Imported", "import_from_url_success": "Collections Imported",
"json_description": "Import collections from a Hoppscotch Collections JSON file", "json_description": "Import collections from a Hoppscotch Collections JSON file",
"title": "Import", "title": "Import"
"hoppscotch_environment": "Hoppscotch Environment",
"hoppscotch_environment_description": "Import Hoppscotch Environment JSON file",
"postman_environment": "Postman Environment",
"postman_environment_description": "Import Postman Environment JSON file",
"environments_from_gist": "Import From Gist",
"environments_from_gist_description": "Import Hoppscotch Environments From Gist",
"gql_collections_from_gist_description": "Import GraphQL Collections From Gist"
},
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
}, },
"layout": { "layout": {
"collapse_collection": "Collapse or Expand Collections", "collapse_collection": "Collapse or Expand Collections",
"collapse_sidebar": "Collapse or Expand the sidebar", "collapse_sidebar": "Collapse or Expand the sidebar",
"column": "Vertical layout", "column": "Vertical layout",
"name": "Layout", "name": "Layout",
"row": "Horizontal layout" "row": "Horizontal layout",
"zen_mode": "Zen mode"
}, },
"modal": { "modal": {
"close_unsaved_tab": "You have unsaved changes", "close_unsaved_tab": "You have unsaved changes",
"collections": "Collections", "collections": "Collections",
"confirm": "Confirm", "confirm": "Confirm",
"customize_request": "Customize Request",
"edit_request": "Edit Request", "edit_request": "Edit Request",
"share_request": "Share Request",
"import_export": "Import / Export" "import_export": "Import / Export"
}, },
"mqtt": { "mqtt": {
@@ -510,14 +450,13 @@
"structured": "Structured", "structured": "Structured",
"text": "Text" "text": "Text"
}, },
"copy_link": "Copy link",
"different_collection": "Cannot reorder requests from different collections", "different_collection": "Cannot reorder requests from different collections",
"duplicated": "Request duplicated", "duplicated": "Request duplicated",
"duration": "Duration", "duration": "Duration",
"enter_curl": "Enter cURL command", "enter_curl": "Enter cURL command",
"generate_code": "Generate code", "generate_code": "Generate code",
"generated_code": "Generated code", "generated_code": "Generated code",
"go_to_authorization_tab": "Go to Authorization tab",
"go_to_body_tab": "Go to Body tab",
"header_list": "Header List", "header_list": "Header List",
"invalid_name": "Please provide a name for the request", "invalid_name": "Please provide a name for the request",
"method": "Method", "method": "Method",
@@ -537,13 +476,12 @@
"rename": "Rename Request", "rename": "Rename Request",
"renamed": "Request renamed", "renamed": "Request renamed",
"run": "Run", "run": "Run",
"stop": "Stop",
"save": "Save", "save": "Save",
"save_as": "Save as", "save_as": "Save as",
"saved": "Request saved", "saved": "Request saved",
"share": "Share", "share": "Share",
"share_description": "Share Hoppscotch with your friends", "share_description": "Share Hoppscotch with your friends",
"share_request": "Share Request",
"stop": "Stop",
"title": "Request", "title": "Request",
"type": "Request type", "type": "Request type",
"url": "URL", "url": "URL",
@@ -578,8 +516,9 @@
"account_name_description": "This is your display name.", "account_name_description": "This is your display name.",
"background": "Background", "background": "Background",
"black_mode": "Black", "black_mode": "Black",
"choose_language": "Choose language",
"dark_mode": "Dark", "dark_mode": "Dark",
"change_font_size": "Change font size",
"choose_language": "Choose language",
"delete_account": "Delete account", "delete_account": "Delete account",
"delete_account_description": "Once you delete your account, all your data will be permanently deleted. This action cannot be undone.", "delete_account_description": "Once you delete your account, all your data will be permanently deleted. This action cannot be undone.",
"expand_navigation": "Expand navigation", "expand_navigation": "Expand navigation",
@@ -590,6 +529,10 @@
"extensions": "Browser extension", "extensions": "Browser extension",
"extensions_use_toggle": "Use the browser extension to send requests (if present)", "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",
"font_size_small": "Small",
"interceptor": "Interceptor", "interceptor": "Interceptor",
"interceptor_description": "Middleware between application and APIs.", "interceptor_description": "Middleware between application and APIs.",
"language": "Language", "language": "Language",
@@ -620,34 +563,16 @@
"use_experimental_url_bar": "Use experimental URL bar with environment highlighting", "use_experimental_url_bar": "Use experimental URL bar with environment highlighting",
"user": "User", "user": "User",
"verified_email": "Verified email", "verified_email": "Verified email",
"additional": "Additional Settings",
"verify_email": "Verify email" "verify_email": "Verify email"
}, },
"shared_requests": { "shortcodes": {
"button": "Button", "actions": "Actions",
"button_info": "Create a 'Run in Hoppscotch' button for your website, blog or a README.", "created_on": "Created on",
"customize": "Customize", "deleted": "Shortcode deleted",
"creating_widget": "Creating widget", "method": "Method",
"copy_html": "Copy HTML", "not_found": "Shortcode not found",
"copy_link": "Copy Link", "short_code": "Short code",
"copy_markdown": "Copy Markdown", "url": "URL"
"deleted": "Shared request deleted",
"description": "Select a widget, you can change and customize this later",
"embed": "Embed",
"embed_info": "Add a mini 'Hoppscotch API Playground' to your website, blog or documentation.",
"link": "Link",
"link_info": "Create a shareable link to share with anyone on the internet with view access.",
"modified": "Shared request modified",
"not_found": "Shared request not found",
"open_new_tab": "Open in new tab",
"preview": "Preview",
"run_in_hoppscotch": "Run in Hoppscotch",
"theme": {
"dark": "Dark",
"light": "Light",
"system": "System",
"title": "Theme"
}
}, },
"shortcut": { "shortcut": {
"general": { "general": {
@@ -657,6 +582,10 @@
"show_all": "Keyboard shortcuts", "show_all": "Keyboard shortcuts",
"title": "General" "title": "General"
}, },
"others": {
"title": "Others",
"prettify": "Prettify Editor's Content"
},
"miscellaneous": { "miscellaneous": {
"invite": "Invite people to Hoppscotch", "invite": "Invite people to Hoppscotch",
"title": "Miscellaneous" "title": "Miscellaneous"
@@ -672,27 +601,23 @@
"settings": "Go to Settings page", "settings": "Go to Settings page",
"title": "Navigation" "title": "Navigation"
}, },
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": { "request": {
"copy_request_link": "Copy Request Link",
"delete_method": "Select DELETE method", "delete_method": "Select DELETE method",
"get_method": "Select GET method", "get_method": "Select GET method",
"head_method": "Select HEAD method", "head_method": "Select HEAD method",
"rename": "Rename Request",
"import_curl": "Import cURL", "import_curl": "Import cURL",
"show_code": "Generate code snippet",
"method": "Method", "method": "Method",
"next_method": "Select Next method", "next_method": "Select Next method",
"post_method": "Select POST method", "post_method": "Select POST method",
"previous_method": "Select Previous method", "previous_method": "Select Previous method",
"put_method": "Select PUT method", "put_method": "Select PUT method",
"rename": "Rename Request",
"reset_request": "Reset Request", "reset_request": "Reset Request",
"save_request": "Save Request",
"save_to_collections": "Save to Collections", "save_to_collections": "Save to Collections",
"send_request": "Send Request", "send_request": "Send Request",
"show_code": "Generate code snippet", "save_request": "Save Request",
"share_request": "Share Request",
"title": "Request" "title": "Request"
}, },
"response": { "response": {
@@ -723,82 +648,87 @@
"url": "URL" "url": "URL"
}, },
"spotlight": { "spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": { "general": {
"chat": "Chat with support",
"help_menu": "Help and support", "help_menu": "Help and support",
"chat": "Chat with support",
"open_docs": "Read Documentation", "open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts", "open_keybindings": "Keyboard shortcuts",
"open_github": "Open GitHub repository",
"social": "Social", "social": "Social",
"title": "General" "title": "General"
}, },
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": { "miscellaneous": {
"invite": "Invite your friends to Hoppscotch", "invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous" "title": "Miscellaneous"
}, },
"request": { "request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to", "switch_to": "Switch to",
"tab_authorization": "Authorization tab", "select_method": "Select method",
"save_as_new": "Save as new request",
"tab_parameters": "Parameters tab",
"tab_body": "Body tab", "tab_body": "Body tab",
"tab_headers": "Headers tab", "tab_headers": "Headers tab",
"tab_parameters": "Parameters tab", "tab_authorization": "Authorization tab",
"tab_pre_request_script": "Pre-request script tab", "tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab", "tab_tests": "Tests tab",
"tab_query": "Query tab",
"tab_variables": "Variables tab" "tab_variables": "Variables tab"
}, },
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"response": { "response": {
"copy": "Copy response", "copy": "Copy response",
"download": "Download response as file", "download": "Download response as file",
"title": "Response" "title": "Response"
}, },
"section": { "environments": {
"interceptor": "Interceptor", "new": "Create new environment",
"interface": "Interface", "new_variable": "Create a new environment variable",
"theme": "Theme", "edit": "Edit current environment",
"user": "User" "delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"edit_global": "Edit global environment",
"duplicate_global": "Duplicate global environment",
"title": "Environments"
},
"workspace": {
"new": "Create new team",
"edit": "Edit current team",
"delete": "Delete current team",
"invite": "Invite people to team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
},
"tab": {
"duplicate": "Duplicate current tab",
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"section": {
"user": "User",
"theme": "Theme",
"interface": "Interface",
"interceptor": "Interceptor"
}, },
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language", "change_language": "Change Language",
"settings": {
"theme": { "theme": {
"black": "Black", "black": "Black",
"dark": "Dark", "dark": "Dark",
"light": "Light", "light": "Light",
"system": "System preference" "system": "System preference"
}
}, },
"tab": { "font": {
"close_current": "Close current tab", "size_sm": "Small",
"close_others": "Close all other tabs", "size_md": "Medium",
"duplicate": "Duplicate current tab", "size_lg": "Large"
"new_tab": "Open a new tab",
"title": "Tabs"
}, },
"workspace": { "change_interceptor": "Change Interceptor",
"delete": "Delete current team", "change_language": "Change Language"
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
} }
}, },
"sse": { "sse": {
@@ -817,7 +747,6 @@
"connection_failed": "Connection failed", "connection_failed": "Connection failed",
"connection_lost": "Connection lost", "connection_lost": "Connection lost",
"copied_to_clipboard": "Copied to clipboard", "copied_to_clipboard": "Copied to clipboard",
"copied_interface_to_clipboard": "Copied {language} interface type to clipboard",
"deleted": "Deleted", "deleted": "Deleted",
"deprecated": "DEPRECATED", "deprecated": "DEPRECATED",
"disabled": "Disabled", "disabled": "Disabled",
@@ -825,11 +754,9 @@
"disconnected_from": "Disconnected from {name}", "disconnected_from": "Disconnected from {name}",
"docs_generated": "Documentation generated", "docs_generated": "Documentation generated",
"download_started": "Download started", "download_started": "Download started",
"download_failed": "Download failed",
"enabled": "Enabled", "enabled": "Enabled",
"file_imported": "File imported", "file_imported": "File imported",
"finished_in": "Finished in {duration} ms", "finished_in": "Finished in {duration} ms",
"hide": "Hide",
"history_deleted": "History deleted", "history_deleted": "History deleted",
"linewrap": "Wrap lines", "linewrap": "Wrap lines",
"loading": "Loading...", "loading": "Loading...",
@@ -840,7 +767,6 @@
"published_error": "Something went wrong while publishing msg: {topic} to topic: {message}", "published_error": "Something went wrong while publishing msg: {topic} to topic: {message}",
"published_message": "Published message: {message} to topic: {topic}", "published_message": "Published message: {message} to topic: {topic}",
"reconnection_error": "Failed to reconnect", "reconnection_error": "Failed to reconnect",
"show": "Show",
"subscribed_failed": "Failed to subscribe to topic: {topic}", "subscribed_failed": "Failed to subscribe to topic: {topic}",
"subscribed_success": "Successfully subscribed to topic: {topic}", "subscribed_success": "Successfully subscribed to topic: {topic}",
"unsubscribed_failed": "Failed to unsubscribe from topic: {topic}", "unsubscribed_failed": "Failed to unsubscribe from topic: {topic}",
@@ -850,7 +776,7 @@
"support": { "support": {
"changelog": "Read more about latest releases", "changelog": "Read more about latest releases",
"chat": "Questions? Chat with us!", "chat": "Questions? Chat with us!",
"community": "Ask questions and help others", "community": "Ask questions and help others",
"documentation": "Read more about Hoppscotch", "documentation": "Read more about Hoppscotch",
"forum": "Ask questions and get answers", "forum": "Ask questions and get answers",
"github": "Follow us on Github", "github": "Follow us on Github",
@@ -876,7 +802,6 @@
"queries": "Queries", "queries": "Queries",
"query": "Query", "query": "Query",
"schema": "Schema", "schema": "Schema",
"shared_requests": "Shared Requests",
"socketio": "Socket.IO", "socketio": "Socket.IO",
"sse": "SSE", "sse": "SSE",
"tests": "Tests", "tests": "Tests",
@@ -923,14 +848,12 @@
"new": "New Team", "new": "New Team",
"new_created": "New team created", "new_created": "New team created",
"new_name": "My New Team", "new_name": "My New Team",
"no_access": "You do not have edit access to this team", "no_access": "You do not have edit access to these collections",
"no_invite_found": "Invitation not found. Contact your team owner.", "no_invite_found": "Invitation not found. Contact your team owner.",
"no_request_found": "Request not found.", "no_request_found": "Request not found.",
"not_found": "Team 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.", "not_valid_viewer": "You are not a valid viewer. Contact your team owner.",
"parent_coll_move": "Cannot move collection to a child collection", "parent_coll_move": "Cannot move collection to a child collection",
"success_invites": "Success invites",
"failed_invites": "Failed invites",
"pending_invites": "Pending invites", "pending_invites": "Pending invites",
"permissions": "Permissions", "permissions": "Permissions",
"same_target_destination": "Same target and destination", "same_target_destination": "Same target and destination",

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -5,7 +5,6 @@
"choose_file": "Pilih file", "choose_file": "Pilih file",
"clear": "Bersihkan", "clear": "Bersihkan",
"clear_all": "Bersihkan semua", "clear_all": "Bersihkan semua",
"clear_history": "Clear all History",
"close": "Tutup", "close": "Tutup",
"connect": "Sambungkan", "connect": "Sambungkan",
"connecting": "Menyambungkan", "connecting": "Menyambungkan",
@@ -32,7 +31,6 @@
"paste": "Tempel", "paste": "Tempel",
"prettify": "Prettify", "prettify": "Prettify",
"remove": "Hapus", "remove": "Hapus",
"rename": "Rename",
"restore": "Pulihkan", "restore": "Pulihkan",
"save": "Simpan", "save": "Simpan",
"scroll_to_bottom": "Gulir ke bawah", "scroll_to_bottom": "Gulir ke bawah",
@@ -79,8 +77,6 @@
"search": "Mencari", "search": "Mencari",
"share": "Membagikan", "share": "Membagikan",
"shortcuts": "Jalan pintas", "shortcuts": "Jalan pintas",
"social_description": "Follow us on social media to stay updated with the latest news, updates and releases.",
"social_links": "Social links",
"spotlight": "Menyoroti", "spotlight": "Menyoroti",
"status": "Status", "status": "Status",
"status_description": "Periksa status situs web", "status_description": "Periksa status situs web",
@@ -135,15 +131,12 @@
"renamed": "Koleksi berganti nama", "renamed": "Koleksi berganti nama",
"request_in_use": "Permintaan sedang digunakan", "request_in_use": "Permintaan sedang digunakan",
"save_as": "Simpan Sebagai", "save_as": "Simpan Sebagai",
"save_to_collection": "Save to Collection",
"select": "Pilih Koleksi", "select": "Pilih Koleksi",
"select_location": "Pilih lokasi", "select_location": "Pilih lokasi",
"select_team": "Pilih tim", "select_team": "Pilih tim",
"team_collections": "Koleksi Tim" "team_collections": "Koleksi Tim"
}, },
"confirm": { "confirm": {
"close_unsaved_tab": "Are you sure you want to close this tab?",
"close_unsaved_tabs": "Are you sure you want to close all tabs? {count} unsaved tabs will be lost.",
"exit_team": "Apakah Anda yakin ingin keluar dari tim ini?", "exit_team": "Apakah Anda yakin ingin keluar dari tim ini?",
"logout": "Apakah Anda yakin ingin keluar?", "logout": "Apakah Anda yakin ingin keluar?",
"remove_collection": "Apakah Anda yakin ingin menghapus koleksi ini secara permanen?", "remove_collection": "Apakah Anda yakin ingin menghapus koleksi ini secara permanen?",
@@ -157,11 +150,6 @@
"save_unsaved_tab": "Apakah Anda ingin menyimpan perubahan yang dibuat di tab ini?", "save_unsaved_tab": "Apakah Anda ingin menyimpan perubahan yang dibuat di tab ini?",
"sync": "Apakah Anda ingin memulihkan ruang kerja Anda dari cloud? Ini akan membuang kemajuan lokal Anda." "sync": "Apakah Anda ingin memulihkan ruang kerja Anda dari cloud? Ini akan membuang kemajuan lokal Anda."
}, },
"context_menu": {
"add_parameters": "Add to parameters",
"open_request_in_new_tab": "Open request in new tab",
"set_environment_variable": "Set as variable"
},
"count": { "count": {
"header": "Header {count}", "header": "Header {count}",
"message": "Pesan {count}", "message": "Pesan {count}",
@@ -204,31 +192,17 @@
"create_new": "Membuat environment baru", "create_new": "Membuat environment baru",
"created": "Environment dibuat", "created": "Environment dibuat",
"deleted": "Environment dihapus", "deleted": "Environment dihapus",
"duplicated": "Environment duplicated",
"edit": "Sunting Environment", "edit": "Sunting Environment",
"empty_variables": "No variables",
"global": "Global",
"global_variables": "Global variables",
"invalid_name": "Tolong beri nama untuk environment", "invalid_name": "Tolong beri nama untuk environment",
"list": "Environment variables",
"my_environments": "Environment Saya", "my_environments": "Environment Saya",
"name": "Name",
"nested_overflow": "Variabel environment bersarang dibatasi hingga 10 level", "nested_overflow": "Variabel environment bersarang dibatasi hingga 10 level",
"new": "Environment Baru", "new": "Environment Baru",
"no_active_environment": "No active environment",
"no_environment": "No environment", "no_environment": "No environment",
"no_environment_description": "Tidak ada environment yang dipilih. Pilih apa yang harus dilakukan dengan variabel berikut.", "no_environment_description": "Tidak ada environment yang dipilih. Pilih apa yang harus dilakukan dengan variabel berikut.",
"quick_peek": "Environment Quick Peek",
"replace_with_variable": "Replace with variable",
"scope": "Scope",
"select": "Pilih environment", "select": "Pilih environment",
"set": "Set environment",
"set_as_environment": "Set as environment",
"team_environments": "Environment Tim", "team_environments": "Environment Tim",
"title": "Environment", "title": "Environment",
"updated": "Environment diperbarui", "updated": "Environment diperbarui",
"value": "Value",
"variable": "Variable",
"variable_list": "Daftar Variable" "variable_list": "Daftar Variable"
}, },
"error": { "error": {
@@ -252,7 +226,6 @@
"no_duration": "Tidak ada durasi", "no_duration": "Tidak ada durasi",
"no_results_found": "Tidak ada kecocokan yang ditemukan", "no_results_found": "Tidak ada kecocokan yang ditemukan",
"page_not_found": "Halaman ini tidak dapat ditemukan", "page_not_found": "Halaman ini tidak dapat ditemukan",
"proxy_error": "Proxy error",
"script_fail": "Tidak dapat menjalankan pre-request script", "script_fail": "Tidak dapat menjalankan pre-request script",
"something_went_wrong": "Ada yang salah", "something_went_wrong": "Ada yang salah",
"test_script_fail": "Tidak dapat mengeksekusi post-request script" "test_script_fail": "Tidak dapat mengeksekusi post-request script"
@@ -278,13 +251,9 @@
"renamed": "Folder berganti nama" "renamed": "Folder berganti nama"
}, },
"graphql": { "graphql": {
"connection_switch_confirm": "Do you want to connect with the latest GraphQL endpoint?",
"connection_switch_new_url": "Switching to a tab will disconnected you from the active GraphQL connection. New connection URL is",
"connection_switch_url": "You're connected to a GraphQL endpoint the connection URL is",
"mutations": "Mutations", "mutations": "Mutations",
"schema": "Schema", "schema": "Schema",
"subscriptions": "Subscriptions", "subscriptions": "Subscriptions"
"switch_connection": "Switch connection"
}, },
"group": { "group": {
"time": "Time", "time": "Time",
@@ -338,36 +307,13 @@
"json_description": "Impor Koleksi dari berkas JSON Koleksi Hoppscotch", "json_description": "Impor Koleksi dari berkas JSON Koleksi Hoppscotch",
"title": "Impor" "title": "Impor"
}, },
"inspections": {
"description": "Inspect possible errors",
"environment": {
"add_environment": "Add to Environment",
"not_found": "Environment variable “{environment}” not found."
},
"header": {
"cookie": "The browser doesn't allow Hoppscotch to set the Cookie Header. While we're working on the Hoppscotch Desktop App (coming soon), please use the Authorization Header instead."
},
"response": {
"401_error": "Please check your authentication credentials.",
"404_error": "Please check your request URL and method type.",
"cors_error": "Please check your Cross-Origin Resource Sharing configuration.",
"default_error": "Please check your request.",
"network_error": "Please check your network connection."
},
"title": "Inspector",
"url": {
"extension_not_installed": "Extension not installed.",
"extension_unknown_origin": "Make sure you've added the API endpoint's origin to the Hoppscotch Browser Extension list.",
"extention_enable_action": "Enable Browser Extension",
"extention_not_enabled": "Extension not enabled."
}
},
"layout": { "layout": {
"collapse_collection": "Ciutkan atau Perluas Collections", "collapse_collection": "Ciutkan atau Perluas Collections",
"collapse_sidebar": "Ciutkan atau Perluas sidebar", "collapse_sidebar": "Ciutkan atau Perluas sidebar",
"column": "Vertikal layout", "column": "Vertikal layout",
"name": "Layout", "name": "Layout",
"row": "Horisontal layout" "row": "Horisontal layout",
"zen_mode": "Zen mode"
}, },
"modal": { "modal": {
"close_unsaved_tab": "Anda memiliki perubahan yang belum disimpan", "close_unsaved_tab": "Anda memiliki perubahan yang belum disimpan",
@@ -472,7 +418,6 @@
"payload": "Payload", "payload": "Payload",
"query": "Query", "query": "Query",
"raw_body": "Raw Request Body", "raw_body": "Raw Request Body",
"rename": "Rename Request",
"renamed": "Request berganti nama", "renamed": "Request berganti nama",
"run": "Jalankan", "run": "Jalankan",
"save": "Menyimpan", "save": "Menyimpan",
@@ -480,7 +425,6 @@
"saved": "Request disimpan", "saved": "Request disimpan",
"share": "Membagikan", "share": "Membagikan",
"share_description": "Bagikan Hoppscotch dengan teman-teman Anda", "share_description": "Bagikan Hoppscotch dengan teman-teman Anda",
"stop": "Stop",
"title": "Request", "title": "Request",
"type": "Tipe Request", "type": "Tipe Request",
"url": "URL", "url": "URL",
@@ -515,6 +459,7 @@
"account_name_description": "Ini adalah nama tampilan Anda.", "account_name_description": "Ini adalah nama tampilan Anda.",
"background": "Latar belakang", "background": "Latar belakang",
"black_mode": "Hitam", "black_mode": "Hitam",
"change_font_size": "Ubah ukuran font",
"choose_language": "Pilih bahasa", "choose_language": "Pilih bahasa",
"dark_mode": "Gelap", "dark_mode": "Gelap",
"delete_account": "Delete account", "delete_account": "Delete account",
@@ -527,6 +472,10 @@
"extensions": "Ekstensi Peramban", "extensions": "Ekstensi Peramban",
"extensions_use_toggle": "Gunakan ekstensi peramban untuk mengirim permintaan (jika ada)", "extensions_use_toggle": "Gunakan ekstensi peramban untuk mengirim permintaan (jika ada)",
"follow": "Ikuti kami", "follow": "Ikuti kami",
"font_size": "Ukuran huruf",
"font_size_large": "Besar",
"font_size_medium": "Sedang",
"font_size_small": "Kecil",
"interceptor": "Pencegat", "interceptor": "Pencegat",
"interceptor_description": "Middleware antara aplikasi dan API.", "interceptor_description": "Middleware antara aplikasi dan API.",
"language": "Bahasa", "language": "Bahasa",
@@ -591,27 +540,19 @@
"settings": "Pergi ke halaman Pengaturan", "settings": "Pergi ke halaman Pengaturan",
"title": "Navigasi" "title": "Navigasi"
}, },
"others": {
"prettify": "Prettify Editor's Content",
"title": "Others"
},
"request": { "request": {
"copy_request_link": "Salin Tautan Permintaan", "copy_request_link": "Salin Tautan Permintaan",
"delete_method": "Pilih metode DELETE", "delete_method": "Pilih metode DELETE",
"get_method": "Pilih metode GET", "get_method": "Pilih metode GET",
"head_method": "Pilih metode HEAD", "head_method": "Pilih metode HEAD",
"import_curl": "Import cURL",
"method": "metode", "method": "metode",
"next_method": "Pilih metode Next", "next_method": "Pilih metode Next",
"post_method": "Pilih metode POST", "post_method": "Pilih metode POST",
"previous_method": "Pilih metode Previous", "previous_method": "Pilih metode Previous",
"put_method": "Pilih metode PUT", "put_method": "Pilih metode PUT",
"rename": "Rename Request",
"reset_request": "Mengatur ulang Request", "reset_request": "Mengatur ulang Request",
"save_request": "Save Request",
"save_to_collections": "Menyimpan ke Collections", "save_to_collections": "Menyimpan ke Collections",
"send_request": "Kirim Request", "send_request": "Kirim Request",
"show_code": "Generate code snippet",
"title": "Request" "title": "Request"
}, },
"response": { "response": {
@@ -641,85 +582,6 @@
"log": "Log", "log": "Log",
"url": "URL" "url": "URL"
}, },
"spotlight": {
"change_language": "Change Language",
"environments": {
"delete": "Delete current environment",
"duplicate": "Duplicate current environment",
"duplicate_global": "Duplicate global environment",
"edit": "Edit current environment",
"edit_global": "Edit global environment",
"new": "Create new environment",
"new_variable": "Create a new environment variable",
"title": "Environments"
},
"general": {
"chat": "Chat with support",
"help_menu": "Help and support",
"open_docs": "Read Documentation",
"open_github": "Open GitHub repository",
"open_keybindings": "Keyboard shortcuts",
"social": "Social",
"title": "General"
},
"graphql": {
"connect": "Connect to server",
"disconnect": "Disconnect from server"
},
"miscellaneous": {
"invite": "Invite your friends to Hoppscotch",
"title": "Miscellaneous"
},
"request": {
"save_as_new": "Save as new request",
"select_method": "Select method",
"switch_to": "Switch to",
"tab_authorization": "Authorization tab",
"tab_body": "Body tab",
"tab_headers": "Headers tab",
"tab_parameters": "Parameters tab",
"tab_pre_request_script": "Pre-request script tab",
"tab_query": "Query tab",
"tab_tests": "Tests tab",
"tab_variables": "Variables tab"
},
"response": {
"copy": "Copy response",
"download": "Download response as file",
"title": "Response"
},
"section": {
"interceptor": "Interceptor",
"interface": "Interface",
"theme": "Theme",
"user": "User"
},
"settings": {
"change_interceptor": "Change Interceptor",
"change_language": "Change Language",
"theme": {
"black": "Black",
"dark": "Dark",
"light": "Light",
"system": "System preference"
}
},
"tab": {
"close_current": "Close current tab",
"close_others": "Close all other tabs",
"duplicate": "Duplicate current tab",
"new_tab": "Open a new tab",
"title": "Tabs"
},
"workspace": {
"delete": "Delete current team",
"edit": "Edit current team",
"invite": "Invite people to team",
"new": "Create new team",
"switch_to_personal": "Switch to your personal workspace",
"title": "Teams"
}
},
"sse": { "sse": {
"event_type": "Tipe Event", "event_type": "Tipe Event",
"log": "Log", "log": "Log",
@@ -777,11 +639,8 @@
"tab": { "tab": {
"authorization": "Authorization", "authorization": "Authorization",
"body": "Body", "body": "Body",
"close": "Close Tab",
"close_others": "Close other Tabs",
"collections": "Collections", "collections": "Collections",
"documentation": "Dokumentasi", "documentation": "Dokumentasi",
"duplicate": "Duplicate Tab",
"environments": "Environments", "environments": "Environments",
"headers": "Headers", "headers": "Headers",
"history": "Riwayat", "history": "Riwayat",

View File

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

View File

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

View File

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

View File

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

View File

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

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