1
0
mirror of https://github.com/spacebarchat/server.git synced 2024-11-07 11:22:35 +01:00

Merge branch 'master' into util

This commit is contained in:
Flam3rboy 2021-08-12 20:22:16 +02:00
commit 282f3cad77
289 changed files with 163830 additions and 0 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

2
api/.dockerignore Normal file
View File

@ -0,0 +1,2 @@
node_modules
dist

4
api/.env.example Normal file
View File

@ -0,0 +1,4 @@
MONGO_URL=mongodb://localhost/fosscord
PORT=3001
PRODUCTION=TRUE
THREADS=# automatically use all available cores, only available if production = true

1
api/.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1 @@
open_collective: fosscord

View File

@ -0,0 +1,20 @@
---
name: "[Feature] "
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -0,0 +1,71 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '25 10 * * 5'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

View File

@ -0,0 +1,47 @@
name: docker-publish
on:
push:
branches:
- 'master'
jobs:
docker:
runs-on: ubuntu-latest
steps:
-
name: Checkout
uses: actions/checkout@v2
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
-
name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
-
name: Login to DockerHub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Build and push
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: ${{ secrets.DOCKERHUB_TAGS }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
-
# Hackfix to cleanup cache; replace after buildx 0.6 and BuildKit 0.9 are released
# https://github.com/docker/build-push-action/pull/406#issuecomment-879184394
name: Move cache fix
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache

88
api/.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,88 @@
on:
workflow_dispatch:
push:
# Sequence of patterns matched against refs/tags
tags:
- "v*" # Push events to matching v*, i.e. v1.0, v20.15.10
name: Publish Release
jobs:
insiders-build:
strategy:
matrix:
os: [windows, macos, ubuntu]
include:
- os: windows
build: npm run bundle:windows
artifact: fosscord-api-windows.exe
- os: macos
build: npm run bundle:macos
artifact: fosscord-api-macos.app.tgz
- os: ubuntu
build: npm run bundle:linux
artifact: fosscord-api-linux.tgz
runs-on: ${{ matrix.os }}-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: 14
- run: npm install
- run: npm run build
- run: ${{ matrix.build }}
- uses: actions/upload-artifact@v2
with:
name: ${{ matrix.artifact }}
path: ${{ matrix.artifact }}
release:
needs: [insiders-build]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Extract version
id: extract_version
uses: Saionaro/extract-package-version@v1.0.6
- uses: actions/download-artifact@v2
with:
name: fosscord-api-windows-${{ github.sha }}.exe
- uses: actions/download-artifact@v2
with:
name: fosscord-api-macos-${{ github.sha }}.app.tgz
- uses: actions/download-artifact@v2
with:
name: fosscord-api-linux-${{ github.sha }}.tgz
- uses: actions/create-release@v1
id: create-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ steps.extract_version.outputs.version }}
release_name: Release ${{ steps.extract_version.outputs.version }}
draft: false
prerelease: true # TODO: change this to false
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: fosscord-api-windows-${{ github.sha }}.exe
asset_name: fosscord-api-windows.exe
asset_content_type: application/vnd.microsoft.portable-executable
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: fosscord-api-macos-${{ github.sha }}.app.tgz
asset_name: fosscord-api-macos.app.tgz
asset_content_type: application/gzip
- uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create-release.outputs.upload_url }}
asset_path: fosscord-api-linux-${{ github.sha }}.tgz
asset_name: fosscord-api-linux.tgz
asset_content_type: application/gzip

112
api/.gitignore vendored Normal file
View File

@ -0,0 +1,112 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# TypeScript v1 declaration files
typings/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
# Next.js build output
.next
# Nuxt.js build / generate output
.nuxt
dist
build
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and *not* Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
.DS_STORE
src/ready.json
# Docker
.docker/config/*
!.docker/config/.keep

1
api/.npmignore Normal file
View File

@ -0,0 +1 @@
!dist/

6
api/.prettierrc Normal file
View File

@ -0,0 +1,6 @@
{
"tabWidth": 4,
"useTabs": true,
"printWidth": 140,
"trailingComma": "none"
}

28
api/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,28 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"sourceMaps": true,
"type": "node",
"request": "launch",
"name": "Launch Server",
"program": "${workspaceFolder}/dist/start.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"outFiles": ["${workspaceFolder}/dist/**/*.js"],
"envFile": "${workspaceFolder}/.env"
},
{
"name": "Debug current file",
"program": "${file}",
"request": "launch",
"skipFiles": ["<node_internals>/**"],
"runtimeArgs": ["--nolazy", "-r", "ts-node/register/transpile-only"],
"preLaunchTask": "tsc: build - tsconfig.json",
"type": "node",
"resolveSourceMapLocations": ["${workspaceFolder}/**", "!**/node_modules/**"]
}
]
}

12
api/Dockerfile Normal file
View File

@ -0,0 +1,12 @@
FROM node:lts-alpine
# needed for native packages (bcrypt, canvas)
RUN apk add --no-cache make gcc g++ python cairo-dev jpeg-dev pango-dev giflib-dev
WORKDIR /usr/src/fosscord-api
COPY package.json .
COPY package-lock.json .
RUN npm rebuild bcrypt --build-from-source && npm install canvas --build-from-source
RUN npm install
COPY . .
EXPOSE 3001
RUN npm run build-docker
CMD ["node", "dist/start.js"]

14
api/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright (C) 2021 Fosscord and contributors
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.

67
api/README.md Normal file
View File

@ -0,0 +1,67 @@
<p align="center">
<img width="100" src="https://raw.githubusercontent.com/fosscord/fosscord/master/assets/logo_big_transparent.png" />
</p>
<h1 align="center">Fosscord HTTP API Server</h1>
<p>
<a href="https://discord.gg/ZrnGQP6p3d">
<img src="https://img.shields.io/discord/806142446094385153?color=7489d5&logo=discord&logoColor=ffffff" />
</a>
<img src="https://img.shields.io/static/v1?label=Status&message=Development&color=blue">
<a title="Crowdin" target="_blank" href="https://translate.fosscord.com/"><img src="https://badges.crowdin.net/fosscord/localized.svg"></a>
<a href="https://opencollective.com/fosscord">
<img src="https://opencollective.com/fosscord/tiers/badge.svg">
</a>
</p>
## [About](https://github.com/fosscord/fosscord-api/wiki)
This repository contains the Fosscord HTTP API Server
## Bug Tracker
[Project Board](https://fosscord.notion.site/2c7fe9e73f9842d3bab3a4912dedd091)
## API
We use [express](https://expressjs.com/) for the HTTP Server and
[lambert-server](https://www.npmjs.com/package/lambert-server) for route handling and body validation (customized).
## Contribution
You should be familiar with:
- [Git](https://git-scm.com/)
- [NodeJS](https://nodejs.org/)
- [TypeScript](https://www.typescriptlang.org/)
- [MongoDB/mongoose](http://mongoosejs.com/)
and the other technologies we use
### Getting Started
Clone the Repository:
```bash
git clone https://github.com/fosscord/fosscord-api
cd discord-server
```
#### Install (dev)dependencies:
```bash
npm install
npm install --only=dev
```
#### Starting:
```
npm start
```
#### Debugging:
**Vscode:**
The Launch file configuration is in `./vscode/launch.json`,
so you can just debug the server by pressing `F5` or the `> Launch Server` button

View File

@ -0,0 +1 @@
it("works", () => {});

115
api/assets/endpoints.json Normal file
View File

@ -0,0 +1,115 @@
{
"USER_CHANNELS": "/users/@me/channels",
"USER_ACTIVITY_STATISTICS": "/users/@me/activities/statistics/applications",
"ACTIVITIES": "/activities",
"LOBBIES": "/lobbies",
"LOBBY_SEARCH": "/lobbies/search",
"NETWORKING_TOKEN": "/networking/token",
"USER_GAMES_NOTIFICATIONS": "/users/@me/settings/game-notifications",
"USER_GAMES_NOTIFICATIONS_OVERRIDES": "/users/@me/settings/game-notifications/overrides",
"UNVERIFIED_APPLICATIONS": "/unverified-applications",
"UNVERIFIED_APPLICATIONS_ICONS": "/unverified-applications/icons",
"BULK_ACK": "/read-states/ack-bulk",
"GUILDS": "/guilds",
"CHANNELS": "/channels",
"TUTORIAL_INDICATORS": "/tutorial/indicators",
"TUTORIAL_INDICATORS_SUPPRESS": "/tutorial/indicators/suppress",
"USERS": "/users",
"ME": "/users/@me",
"DELETE_ACCOUNT": "/users/@me/delete",
"DISABLE_ACCOUNT": "/users/@me/disable",
"DEVICES": "/users/@me/devices",
"SETTINGS": "/users/@me/settings",
"SETTINGS_CONSENT": "/users/@me/consent",
"PHONE": "/users/@me/phone",
"VERIFY_PHONE": "/users/@me/phone/verify",
"VERIFY_PHONE_NEW": "/phone-verifications/verify",
"RESEND_PHONE": "/phone-verifications/resend",
"CONNECTIONS": "/users/@me/connections",
"CONNECTION_SYNC_CONTACTS": "/users/@me/connections/contacts/@me/external-friend-list-entries",
"NOTES": "/users/@me/notes",
"MENTIONS": "/users/@me/mentions",
"CAPTCHA": "/users/@me/captcha/verify",
"EXPERIMENTS": "/experiments",
"LOGIN": "/auth/login",
"LOGIN_MFA": "/auth/mfa/totp",
"LOGIN_SMS": "/auth/mfa/sms",
"LOGIN_SMS_SEND": "/auth/mfa/sms/send",
"REMOTE_AUTH_INITIALIZE": "/users/@me/remote-auth",
"REMOTE_AUTH_CANCEL": "/users/@me/remote-auth/cancel",
"REMOTE_AUTH_FINISH": "/users/@me/remote-auth/finish",
"LOGOUT": "/auth/logout",
"REGISTER": "/auth/register",
"REGISTER_PHONE": "/auth/register/phone",
"TRACK": "/science",
"SSO": "/sso",
"VERIFY": "/auth/verify",
"AUTHORIZE_IP": "/auth/authorize-ip",
"VERIFY_RESEND": "/auth/verify/resend",
"FORGOT_PASSWORD": "/auth/forgot",
"RESET_PASSWORD": "/auth/reset",
"ICE": "/voice/ice",
"REPORT": "/report",
"REPORT_V2": "/reports",
"REPORT_OPTIONS": "/report/options",
"INTEGRATIONS": "/integrations",
"GATEWAY": "/gateway",
"APPLICATIONS_DETECTABLE": "/applications/detectable",
"OAUTH2_AUTHORIZE": "/oauth2/authorize",
"OAUTH2_AUTHORIZE_WEBHOOK_CHANNELS": "/oauth2/authorize/webhook-channels",
"OAUTH2_CURRENT_AUTH": "/oauth2/@me",
"OAUTH2_TOKENS": "/oauth2/tokens",
"OAUTH2_WHITELIST_ACCEPT": "/oauth2/whitelist/accept",
"MFA_TOTP_ENABLE": "/users/@me/mfa/totp/enable",
"MFA_TOTP_DISABLE": "/users/@me/mfa/totp/disable",
"MFA_SMS_ENABLE": "/users/@me/mfa/sms/enable",
"MFA_SMS_DISABLE": "/users/@me/mfa/sms/disable",
"MFA_CODES": "/users/@me/mfa/codes",
"DISABLE_EMAIL_NOTIFICATIONS": "/users/disable-email-notifications",
"GUILD_PREMIUM_SUBSCRIPTION_COOLDOWN": "/users/@me/guilds/premium/subscriptions/cooldown",
"USER_GUILD_PREMIUM_SUBSCRIPTIONS": "/users/@me/guilds/premium/subscriptions",
"USER_PREMIUM_GUILD_SUBSCRIPTION_SLOTS": "/users/@me/guilds/premium/subscription-slots",
"BILLING_STRIPE_SETUP_INTENT_SECRET": "/users/@me/billing/stripe/setup-intents",
"BILLING_PAYMENT_SOURCES": "/users/@me/billing/payment-sources",
"BILLING_PAYMENTS": "/users/@me/billing/payments",
"BILLING_BRAINTREE_POPUP_BRIDGE": "/billing/braintree/popup-bridge",
"BILLING_BRAINTREE_POPUP_BRIDGE_CALLBACK": "/billing/braintree/popup-bridge/callback",
"BILLING_SUBSCRIPTIONS": "/users/@me/billing/subscriptions",
"BILLING_APPLY_APPLE_RECEIPT": "/billing/apple/apply-receipt",
"BILLING_INVOICE_PREVIEW": "/users/@me/billing/invoices/preview",
"USER_AGREEMENTS": "/users/@me/agreements",
"HANDOFF": "/auth/handoff",
"HANDOFF_EXCHANGE": "/auth/handoff/exchange",
"LIBRARY": "/users/@me/library",
"AUTH_CONSENT_REQUIRED": "/auth/consent-required",
"USER_HARVEST": "/users/@me/harvest",
"APPLICATION_BRANCHES": "/branches",
"APPLICATIONS_PUBLIC": "/applications/public",
"APPLICATIONS_TRENDING": "/applications/trending/global",
"STORE_PUBLISHED_LISTINGS_APPLICATIONS": "/store/published-listings/applications",
"STORE_PUBLISHED_LISTINGS_SKUS": "/store/published-listings/skus",
"ENTITLEMENTS_GIFTABLE": "/users/@me/entitlements/gifts",
"PROMOTIONS": "/promotions",
"PROMOTION_ACK": "/promotions/ack",
"HYPESQUAD_ONLINE": "/hypesquad/online",
"GIFS_SEARCH": "/gifs/search",
"GIFS_TRENDING": "/gifs/trending",
"GIFS_TRENDING_GIFS": "/gifs/trending-gifs",
"GIFS_SELECT": "/gifs/select",
"GIFS_SUGGEST": "/gifs/suggest",
"GIFS_TRENDING_SEARCH": "/gifs/trending-search",
"USER_GIFT_CODE_CREATE": "/users/@me/entitlements/gift-codes",
"USER_GIFT_CODES": "/users/@me/entitlements/gift-codes",
"GUILD_DISCOVERY": "/discoverable-guilds",
"GUILD_DISCOVERY_CATEGORIES": "/discovery/categories",
"GUILD_DISCOVERY_VALID_TERM": "/discovery/valid-term",
"USER_AFFINITIES": "/users/@me/affinities/users",
"GUILD_AFFINITIES": "/users/@me/affinities/guilds",
"XBOX_GAME_PASS_PROMOTION": "/promotions/xbox-game-pass",
"XBOX_GAME_PASS_PROMOTION_REDEEM": "/promotions/xbox-game-pass/redeem",
"FUNIMATION_PROMOTION": "/promotions/funimation",
"PARTNERS_CONNECTIONS": "/partners/connections",
"PARTNERS_APPLY": "/partners/apply",
"USER_STICKER_PACKS": "/users/@me/sticker-packs",
"INTERACTIONS": "/interactions"
}

26
api/assets/features.json Normal file
View File

@ -0,0 +1,26 @@
[
"ANIMATED_ICON",
"BANNER",
"COMMERCE",
"COMMUNITY",
"DISCOVERABLE",
"DISCOVERABLE_DISABLED",
"ENABLED_DISCOVERABLE_BEFORE",
"HUB",
"INVITE_SPLASH",
"MONETIZATION_ENABLED",
"MORE_EMOJI",
"MORE_STICKERS",
"NEWS",
"PARTNERED",
"PREVIEW_ENABLED",
"PRIVATE_THREADS",
"SEVEN_DAY_THREAD_ARCHIVE",
"THREE_DAY_THREAD_ARCHIVE",
"THREADS_ENABLED",
"TICKETED_EVENTS_ENABLED",
"VANITY_URL",
"VERIFIED",
"VIP_REGIONS",
"WELCOME_SCREEN_ENABLED"
]

136
api/assets/openapi.yaml Normal file
View File

@ -0,0 +1,136 @@
openapi: 3.0.3
info:
title: Fosscord
version: '9'
license:
name: GNU AGPLv3
url: https://www.gnu.org/licenses/agpl.txt
x-last-modified: 1625409195984
x-logo:
url: ''
servers:
- url: https://api.fosscord.com
description: ''
x-last-modified: 1625407844365
paths:
/users/:id:
summary: get user
description: test
get:
tags: []
responses:
'200':
$ref: '#/components/responses/User'
x-last-modified: 1625409722629
parameters:
- name: id
in: path
required: true
deprecated: false
x-last-modified: 1625409813480
x-last-modified: 1625409704895
components:
schemas:
User:
type: object
properties:
avatar:
type: string
example:
- d83f330fc30367f859bc6ee358b14319
bot:
type: boolean
example:
- false
desktop:
type: boolean
example:
- false
discriminator:
type: string
example:
- '0001'
email:
type: string
example:
- example@example.org
flags:
type: string
example:
- '0'
id:
type: string
example:
- '732645009894277321'
mfa_enabled:
type: boolean
example:
- false
mobile:
type: boolean
example:
- false
nsfw_allowed:
type: boolean
example:
- true
premium:
type: boolean
example:
- false
premium_type:
type: number
example:
- 0
public_flags:
type: string
example:
- '0'
username:
type: string
example:
- Example
verified:
type: boolean
example:
- true
example:
avatar: d83f330fc30367f859bc6ee358b14319
bot: false
desktop: false
discriminator: '0001'
email: example@example.org
flags: '0'
id: '732645009894277321'
mfa_enabled: false
mobile: false
nsfw_allowed: true
premium: false
premium_type: 0
public_flags: '0'
username: Example
verified: true
x-last-modified: 1625409630283
required: []
description: test
securitySchemes:
JWTAuth:
scheme: bearer
bearerFormat: JWT
type: http
description: |-
Example:
> Authorization: Bot <token>
x-last-modified: 1625407825787
headers: {}
responses:
User:
content:
application/json:
schema:
$ref: '#/components/schemas/User'
x-last-modified: 1625409578903
parameters: {}
security:
- JWTAuth: []
tags: []

526
api/assets/openapi.yml Normal file
View File

@ -0,0 +1,526 @@
swagger: "2.0"
info:
description: "Fosscord backend api docs"
version: "1.0.0"
title: "Fosscord Backend API"
termsOfService: "https://github.com/fosscord/fosscord/blob/master/LICENSE"
license:
name: "AGPL 3.0"
url: "https://www.gnu.org/licenses/agpl-3.0.html"
host: "dev.fosscord.com"
basePath: "/api/v9"
tags:
- name: "Audit Log"
description: "Guild Audit Log resource"
externalDocs:
description: "Find out more"
url: "https://discord.com/developers/docs/resources/audit-log"
- name: "Channel"
description: "Channel resource"
externalDocs:
description: "Find out more"
url: "https://discord.com/developers/docs/resources/channel"
schemes:
- "https"
- "http"
paths:
/guilds/{guildId}/audit-logs:
get:
summary: "Returns an audit log object for the guild. Requires the 'VIEW_AUDIT_LOG' permission."
tags:
- Audit Log
parameters:
- $ref: "#/definitionsParam/guildId"
- name: user_id
in: query
type: string
description: "Type of snowflake - Filter the log for actions made by a user"
- name: action_type
in: query
type: integer
description: "The type of audit log event"
- name: before
in: query
type: string
description: "Type of snowflake - Filter the log before a certain entry id"
- name: limit
in: query
type: integer
description: "How many entries are returned (default 50, minimum 1, maximum 100)"
responses:
'200':
description: "Audit Log Object"
schema:
$ref: "#/definitions/Audit%20Log"
/channels/{channelId}:
get:
summary: "Get a channel by ID. Returns a channel object. If the channel is a thread, a thread member object is included in the returned result."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
responses:
'200':
description: "Channel Object"
schema:
$ref: "#/definitions/Channel"
patch:
summary: "Update a channel's settings. Returns a channel on success, and a 400 BAD REQUEST on invalid parameters. All JSON parameters are optional."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- name: body (Group DM)
in: body
description: "The request body when modifying Group DM channels - Fires a Channel Update Gateway event."
schema:
type: object
properties:
name:
type: string
description: "1-100 character channel name"
icon:
type: string
format: byte
description: "base64 encoded icon"
- name: body (Guild channel)
in: body
description: "Requires the MANAGE_CHANNELS permission for the guild. Fires a Channel Update Gateway event. If modifying a category, individual Channel Update events will fire for each child channel that also changes. If modifying permission overwrites, the MANAGE_ROLES permission is required. Only permissions your bot has in the guild or channel can be allowed/denied (unless your bot has a MANAGE_ROLES overwrite in the channel)."
schema:
type: object
properties:
name:
type: string
description: "1-100 character channel name"
type:
type: integer
description: "The type of channel; only conversion between text and news is supported and only in guilds with the \"NEWS\" feature"
position:
type: integer
default: null
description: "The position of the channel in the left-hand listing"
topic:
type: string
default: null
description: "0-1024 character channel topic"
nsfw:
type: boolean
default: null
description: "Whether the channel is nsfw"
rate_limit_per_user:
type: integer
default: null
description: "Amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages or manage_channel, are unaffected"
bitrate:
type: integer
default: null
description: "The bitrate (in bits) of the voice channel; 8000 to 96000 (128000 for VIP servers)"
user_limit:
type: integer
default: null
description: "The user limit of the voice channel; 0 refers to no limit, 1 to 99 refers to a user limit"
permission_overwrites:
type: array
items:
$ref: "#/definitions/Overwrite"
default: null
description: "Channel or category-specific permissions"
parent_id:
$ref: "#/definitions/Snowflake"
default: null
description: "Id of the new parent category for a channel"
rtc_region:
type: string
default: null
description: "Channel voice region id, automatic when set to null"
video_quality_mode:
type: integer
default: null
description: "The camera video quality mode of the voice channel"
default_auto_archive_duration:
type: integer
default: null
description: "The default duration for newly created threads in the channel, in minutes, to automatically archive the thread after recent activity"
- name: body (Thread)
in: body
description: "When setting archived to false, when locked is also false, only the SEND_MESSAGES permission is required.Otherwise, requires the MANAGE_THREADS permission. Fires a Thread Update Gateway event. Requires the thread to have archived set to false or be set to false in the request."
schema:
type: object
properties:
name:
type: string
description: "1-100 character channel name"
archived:
type: boolean
description: "Whether the channel is archived"
auto_archive_duration:
type: integer
description: "Duration in minutes to automatically archive the thread after recent activity, can be set to: 60, 1440, 4320, 10080 (The 3 day and 7 day archive durations require the server to be boosted. The guild features will indicate if a server is able to use those settings)"
locked:
type: boolean
description: "When a thread is locked, only users with MANAGE_THREADS can unarchive it"
rate_limit_per_user:
type: integer
default: null
description: "Amount of seconds a user has to wait before sending another message (0-21600); bots, as well as users with the permission manage_messages, manage_thread, or manage_channel, are unaffected"
responses:
'200':
description: "Channel Object"
schema:
$ref: "#/definitions/Channel"
'400':
description: "Bad Request due to invalid parameters"
delete:
summary: "Delete a channel, or close a private message. Requires the MANAGE_CHANNELS permission for the guild, or MANAGE_THREADS if the channel is a thread. Deleting a category does not delete its child channels; they will have their parent_id removed and a Channel Update Gateway event will fire for each of them. Returns a channel object on success. Fires a Channel Delete Gateway event (or Thread Delete if the channel was a thread)."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
responses:
'200':
description: "Channel deleted sucessfully"
/channels/{channelId}/messages:
get:
summary: "Returns the messages for a channel. If operating on a guild channel, this endpoint requires the VIEW_CHANNEL permission to be present on the current user. If the current user is missing the 'READ_MESSAGE_HISTORY' permission in the channel then this will return no messages (since they cannot read the message history). Returns an array of message objects on success."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- name: around
in: query
type: string
description: "Type of snowflake - Get messages around this message ID"
- name: before
in: query
type: string
description: "Type of snowflake - Get messages before this message ID"
- name: after
in: query
type: string
description: "Type of snowflake - Get messages after this message ID"
- name: limit
in: query
type: integer
description: "Max number of messages to return (1-100)"
default: 50
responses:
'200':
description: "Returns an array of message objects on success"
schema:
type: array
items:
$ref: "#/definitions/Message"
/channels/{channelId}/messages/{messageId}:
get:
summary: "Returns a specific message in the channel. If operating on a guild channel, this endpoint requires the 'READ_MESSAGE_HISTORY' permission to be present on the current user. Returns a message object on success."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
responses:
'200':
description: "Returns a message object on success"
schema:
$ref: "#/definitions/Message"
post:
summary: "Post a message to a guild text or DM channel. Returns a message object. Fires a Message Create Gateway event. See message formatting for more information on how to properly format messages."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- name: body
in: body
required: true
description: "Request body that contains the necessary data for creating messages"
schema:
type: object
properties:
content:
type: string
description: "The message contents (up to 2000 characters)"
tts:
type: boolean
description: "True if this is a TTS message"
default: null
file:
type: string
format: binary
description: "The contents of the file being sent"
embeds:
type: array
items:
$ref: "#/definitions/Embed"
description: "Embedded rich content (up to 6000 characters)"
payload_json:
type: string
description: "JSON encoded body of non-file params"
default: null
allowed_mentions:
$ref: "#/definitions/Allowed%20Mention"
description: "Allowed mentions for the message"
default: null
message_refrence:
$ref: "#/definitions/Message%20Refrence"
description: "Include to make your message a reply"
default: null
components:
type: array
items:
$ref: "#/definitions/Message%20Component"
default: null
responses:
'200':
description: "Returns a message object on success"
schema:
$ref: "#/definitions/Message"
patch:
summary: "Edit a previously sent message. The fields content, embeds, and flags can be edited by the original message author. Other users can only edit flags and only if they have the MANAGE_MESSAGES permission in the corresponding channel. When specifying flags, ensure to include all previously set flags/bits in addition to ones that you are modifying. Only flags documented in the table below may be modified by users (unsupported flag changes are currently ignored without error)."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- name: body
in: body
required: true
description: "Request body that contains the necessary data for editing messages"
schema:
type: object
properties:
content:
type: string
description: "The message contents (up to 2000 characters)"
embeds:
type: array
items:
$ref: "#/definitions/Embed"
description: "Embedded rich content (up to 6000 characters)"
flags:
type: integer
description: "Edit the flags of a message (only SUPPRESS_EMBEDS can currently be set/unset)"
file:
type: string
format: binary
description: "The contents of the file being sent/edited"
payload_json:
type: string
description: "JSON encoded body of non-file params (multipart/form-data only)"
default: null
allowed_mentions:
$ref: "#/definitions/Allowed%20Mention"
description: "Allowed mentions for the message"
default: null
message_refrence:
$ref: "#/definitions/Message%20Refrence"
description: "Include to make your message a reply"
default: null
components:
type: array
items:
$ref: "#/definitions/Message%20Component"
default: null
responses:
'200':
description: "Message edited"
delete:
summary: "Delete a message. If operating on a guild channel and trying to delete a message that was not sent by the current user, this endpoint requires the MANAGE_MESSAGES permission. Returns a 204 empty response on success. Fires a Message Delete Gateway event."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
responses:
'204':
description: "Returns a 204 empty response on success."
/channels/{channelId}/messages/{messageId}/crosspost:
post:
summary: "Crosspost a message in a News Channel to following channels. This endpoint requires the 'SEND_MESSAGES' permission, if the current user sent the message, or additionally the 'MANAGE_MESSAGES' permission, for all other messages, to be present for the current user."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
responses:
'200':
description: "Returns a message object on success"
schema:
$ref: "#/definitions/Message"
/channels/{channelId}/messages/{messageId}/reactions/{emoji}/@me:
put:
summary: "Create a reaction for the message. This endpoint requires the 'READ_MESSAGE_HISTORY' permission to be present on the current user. Additionally, if nobody else has reacted to the message using this emoji, this endpoint requires the 'ADD_REACTIONS' permission to be present on the current user. Returns a 204 empty response on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- $ref: "#/definitionsParam/emoji"
responses:
'204':
description: "Returns a 204 empty response on success."
delete:
summary: "Delete a reaction the current user has made for the message. Returns a 204 empty response on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- $ref: "#/definitionsParam/emoji"
responses:
'204':
description: "Returns a 204 empty response on success."
/channels/{channelId}/messages/{messageId}/reactions/{emoji}/{userId}:
delete:
summary: "Deletes another user's reaction. This endpoint requires the 'MANAGE_MESSAGES' permission to be present on the current user. Returns a 204 empty response on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- $ref: "#/definitionsParam/emoji"
- $ref: "#/definitionsParam/userId"
responses:
'204':
description: "Returns a 204 empty response on success."
/channels/{channelId}/messages/{messageId}/reactions/{emoji}:
get:
summary: "Get a list of users that reacted with this emoji. Returns an array of user objects on success. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- $ref: "#/definitionsParam/emoji"
- name: after
in: query
type: string
description: "Type of snowflake - Get users after this user ID"
- name: limit
in: query
type: integer
description: "Max number of users to return (1-100)"
default: 25
responses:
'200':
description: "Returns an array of user objects on success"
schema:
type: array
items:
$ref: "#/definitions/User"
delete:
summary: "Deletes all the reactions for a given emoji on a message. This endpoint requires the MANAGE_MESSAGES permission to be present on the current user. Fires a Message Reaction Remove Emoji Gateway event. The emoji must be URL Encoded or the request will fail with 10014: Unknown Emoji. To use custom emoji, you must encode it in the format name:id with the emoji name and emoji id."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
- $ref: "#/definitionsParam/emoji"
responses:
'204':
description: "Returns a 204 empty response on success."
/channels/{channelId}/messages/{messageId}/reactions:
delete:
summary: "Deletes all reactions on a message. This endpoint requires the 'MANAGE_MESSAGES' permission to be present on the current user. Fires a Message Reaction Remove All Gateway event."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
- $ref: "#/definitionsParam/messageId"
responses:
'204':
description: "Returns a 204 empty response on success."
/channels/{channelId}/messages/bulk-delete:
post:
summary: "Delete multiple messages in a single request. This endpoint can only be used on guild channels and requires the MANAGE_MESSAGES permission. Returns a 204 empty response on success. Fires a Message Delete Bulk Gateway event."
tags:
- Channel
parameters:
- $ref: "#/definitionsParam/channelId"
responses:
'204':
description: "Returns a 204 empty response on success."
definitions:
Snowflake:
type: string
pattern: "^\\d+$"
Audit Log:
type: object
properties:
webhooks:
type: array
items:
$ref: "#/definitions/Webhook"
description: "List of webhooks found in the audit log"
users:
type: array
items:
$ref: "#/definitions/User"
description: "List of users found in the audit log"
audit_log_entries:
type: array
items:
$ref: "#/definitions/Audit%20Log%20Entry"
description: "List of audit log entries"
integrations:
type: array
items:
$ref: "#/definitions/Integration"
description: "List of partial integration objects"
Audit Log Entry:
type: object
Webhook:
type: object
User:
type: object
Integration:
type: object
Channel:
type: object
Overwrite:
type: object
Message:
type: object
Embed:
type: object
Allowed Mention:
type: object
Message Refrence:
type: object
Message Component:
type: object
definitionsParam:
channelId:
name: channelId
in: path
required: true
type: string
description: "Type of snowflake - A channel Id"
messageId:
name: messageId
in: path
required: true
type: string
description: "Type of snowflake - A message ID"
guildId:
name: guildId
in: path
required: true
type: string
description: "Type of snowflake - A guild ID"
emoji:
name: emoji
in: path
required: true
type: string
format: url
description: "The emoji ID to use"
userId:
name: userId
in: path
required: true
type: string
description: "Type of snowflake - A user ID"
externalDocs:
description: "Discord API"
url: "https://discord.com/developers/docs/"

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 726 B

View File

@ -0,0 +1,50 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Discord Test Client</title>
</head>
<body>
<div id="app-mount"></div>
<script>
window.__OVERLAY__ = /overlay/.test(location.pathname);
window.__BILLING_STANDALONE__ = /^\/billing/.test(location.pathname);
window.GLOBAL_ENV = {
API_ENDPOINT: "/api",
API_VERSION: 9,
GATEWAY_ENDPOINT: `${location.protocol === "https:" ? "wss://" : "ws://"}${location.hostname}:3002`,
WEBAPP_ENDPOINT: "",
CDN_HOST: `${location.hostname}:3003`,
ASSET_ENDPOINT: "",
MEDIA_PROXY_ENDPOINT: "https://media.discordapp.net",
WIDGET_ENDPOINT: `//${location.host}/widget`,
INVITE_HOST: `${location.hostname}`,
GUILD_TEMPLATE_HOST: "discord.new",
GIFT_CODE_HOST: "discord.gift",
RELEASE_CHANNEL: "stable",
MARKETING_ENDPOINT: "//discord.com",
BRAINTREE_KEY: "production_5st77rrc_49pp2rp4phym7387",
STRIPE_KEY: "pk_live_CUQtlpQUF0vufWpnpUmQvcdi",
NETWORKING_ENDPOINT: "//router.discordapp.net",
RTC_LATENCY_ENDPOINT: "//latency.discord.media/rtc",
PROJECT_ENV: "production",
REMOTE_AUTH_ENDPOINT: "//remote-auth-gateway.discord.gg",
SENTRY_TAGS: { buildId: "75e36d9", buildType: "normal" },
MIGRATION_SOURCE_ORIGIN: "https://discordapp.com",
MIGRATION_DESTINATION_ORIGIN: "https://discord.com",
HTML_TIMESTAMP: Date.now(),
ALGOLIA_KEY: "aca0d7082e4e63af5ba5917d5e96bed0"
};
localStorage.removeItem("gatewayURL");
localStorage.setItem(
"DeveloperOptionsStore",
`{"trace":false,"canary":false,"logGatewayEvents":true,"logOverlayEvents":false,"logAnalyticsEvents":false,"sourceMapsEnabled":false,"axeEnabled":false}`
);
</script>
<script src="/assets/f4cfdce920759d48b997.js"></script>
<script src="/assets/fee63b3d875ea42099e2.js"></script>
<script src="/assets/f291c7bb28bfcc2c10ab.js"></script>
<script src="/assets/2d959037561522bd3b2a.js"></script>
</body>
</html>

3
api/crowdin.yml Normal file
View File

@ -0,0 +1,3 @@
files:
- source: /locales/en/*.json
translation: /locales/%two_letters_code%/%original_file_name%

192
api/jest.config.ts Normal file
View File

@ -0,0 +1,192 @@
/*
* For a detailed explanation regarding each configuration property and type check, visit:
* https://jestjs.io/docs/en/configuration.html
*/
export default {
// All imported modules in your tests should be mocked automatically
// automock: false,
// Stop running tests after `n` failures
// bail: 0,
// The directory where Jest should store its cached dependency information
// cacheDirectory: "/private/var/folders/yw/1x3cqgtd4wvg2m2w4pjv5ctm0000gn/T/jest_dx",
// Automatically clear mock calls and instances between every test
// clearMocks: false,
// Indicates whether the coverage information should be collected while executing the test
// collectCoverage: false,
// An array of glob patterns indicating a set of files for which coverage information should be collected
// collectCoverageFrom: undefined,
// The directory where Jest should output its coverage files
coverageDirectory: "coverage",
// An array of regexp pattern strings used to skip coverage collection
coveragePathIgnorePatterns: ["/node_modules/"],
// Indicates which provider should be used to instrument code for coverage
coverageProvider: "v8",
// A list of reporter names that Jest uses when writing coverage reports
// coverageReporters: [
// "json",
// "text",
// "lcov",
// "clover"
// ],
// An object that configures minimum threshold enforcement for coverage results
// coverageThreshold: undefined,
// A path to a custom dependency extractor
// dependencyExtractor: undefined,
// Make calling deprecated APIs throw helpful error messages
// errorOnDeprecated: false,
// Force coverage collection from ignored files using an array of glob patterns
// forceCoverageMatch: [],
// A path to a module which exports an async function that is triggered once before all test suites
// globalSetup: undefined,
// A path to a module which exports an async function that is triggered once after all test suites
// globalTeardown: undefined,
// A set of global variables that need to be available in all test environments
// globals: {},
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
// maxWorkers: "50%",
// An array of directory names to be searched recursively up from the requiring module's location
// moduleDirectories: [
// "node_modules"
// ],
// An array of file extensions your modules use
// moduleFileExtensions: [
// "js",
// "json",
// "jsx",
// "ts",
// "tsx",
// "node"
// ],
// A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
// moduleNameMapper: {},
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
// modulePathIgnorePatterns: [],
// Activates notifications for test results
// notify: false,
// An enum that specifies notification mode. Requires { notify: true }
// notifyMode: "failure-change",
// A preset that is used as a base for Jest's configuration
// preset: undefined,
// Run tests from one or more projects
// projects: undefined,
// Use this configuration option to add custom reporters to Jest
// reporters: undefined,
// Automatically reset mock state between every test
// resetMocks: false,
// Reset the module registry before running each individual test
// resetModules: false,
// A path to a custom resolver
// resolver: undefined,
// Automatically restore mock state between every test
// restoreMocks: false,
// The root directory that Jest should scan for tests and modules within
// rootDir: undefined,
// A list of paths to directories that Jest should use to search for files in
// roots: [
// "<rootDir>"
// ],
// Allows you to use a custom runner instead of Jest's default test runner
// runner: "jest-runner",
// The paths to modules that run some code to configure or set up the testing environment before each test
// setupFiles: [],
// A list of paths to modules that run some code to configure or set up the testing framework before each test
// setupFilesAfterEnv: [],
// The number of seconds after which a test is considered as slow and reported as such in the results.
// slowTestThreshold: 5,
// A list of paths to snapshot serializer modules Jest should use for snapshot testing
// snapshotSerializers: [],
// The test environment that will be used for testing
testEnvironment: "node",
// Options that will be passed to the testEnvironment
// testEnvironmentOptions: {},
// Adds a location field to test results
// testLocationInResults: false,
// The glob patterns Jest uses to detect test files
testMatch: [
"**/__tests__/**/*.[jt]s?(x)",
// "**/?(*.)+(spec|test).[tj]s?(x)"
],
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
// testPathIgnorePatterns: [
// "/node_modules/"
// ],
// The regexp pattern or array of patterns that Jest uses to detect test files
// testRegex: [],
// This option allows the use of a custom results processor
// testResultsProcessor: undefined,
// This option allows use of a custom test runner
// testRunner: "jasmine2",
// This option sets the URL for the jsdom environment. It is reflected in properties such as location.href
// testURL: "http://localhost",
// Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout"
// timers: "real",
// A map from regular expressions to paths to transformers
// transform: undefined,
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
// transformIgnorePatterns: [
// "/node_modules/",
// "\\.pnp\\.[^\\/]+$"
// ],
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
// unmockedModulePathPatterns: undefined,
// Indicates whether each individual test should be reported during the run
// verbose: undefined,
// An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
// watchPathIgnorePatterns: [],
// Whether to use watchman for file crawling
// watchman: true,
};

11
api/jsconfig.json Normal file
View File

@ -0,0 +1,11 @@
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@util/*": ["./src/util/*"],
"@middlewares/*": ["./src/middlewares/*"],
"@schema/*": ["./src/schema/*"]
}
},
"include": ["src"]
}

18
api/locales/af/af Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/af/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to the Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be an object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unknown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well-formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

18
api/locales/ar/ar Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/ar/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "البريد الإلكتروني أو الهاتف غير موجود",
"INVALID_PASSWORD": "كلمة المرور غير صالحة",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "تم تعطيل تسجيل المستخدم الجديد",
"INVITE_ONLY": "يجب دعوتك للتسجيل",
"EMAIL_INVALID": "البريد الإلكتروني خاطئ",
"EMAIL_ALREADY_REGISTERED": "البريد الإلكتروني مسجل بالفعل",
"DATE_OF_BIRTH_UNDERAGE": "يجب أن تكون {{years}} سنة أو أكثر",
"CONSENT_REQUIRED": "يجب أن توافق على شروط الخدمة وسياسة الخصوصية.",
"USERNAME_TOO_MANY_USERS": "عدد كبير جدا من المستخدمين لديهم اسم المستخدم هذا، الرجاء محاولة اسم آخر"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "هذا الحقل مطلوب",
"BASE_TYPE_STRING": "يجب أن يكون هذا الحقل سلسلة من الأحرف",
"BASE_TYPE_NUMBER": "يجب أن يكون هذا الحقل رقم",
"BASE_TYPE_BIGINT": "يجب أن يكون هذا الحقل أكبر",
"BASE_TYPE_BOOLEAN": "يجب أن يكون هذا الحقل منطقيا",
"BASE_TYPE_CHOICES": "يجب أن يكون هذا الحقل واحدا من ({{types}})",
"BASE_TYPE_CLASS": "يجب أن يكون هذا الحقل مثيل {{type}}",
"BASE_TYPE_OBJECT": "يجب أن يكون هذا الحقل كائناً",
"BASE_TYPE_ARRAY": "يجب أن يكون هذا الحقل مصفوفة",
"UNKOWN_FIELD": "مفتاح غير معروف: {{key}}",
"BASE_TYPE_CONSTANT": "يجب أن يكون هذا الحقل {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "عنوان البريد الإلكتروني ليس مشكّل جيدا",
"DATE_TYPE_PARSE": "لا يمكن تحليل {{date}}. يجب أن يكون ISO8601",
"BASE_TYPE_BAD_LENGTH": "يجب أن يكون بين {{length}} في الطول"
}
}

16
api/locales/be/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Дадзены адрас электроннай пошты ці тэлефон не знойдзены",
"INVALID_PASSWORD": "Няправільны пароль",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Рэгістрацыя новага карыстальніка адключана",
"INVITE_ONLY": "Вас павінны запрасіць, каб зарэгістравацца",
"EMAIL_INVALID": "Няправільны адрас электроннай пошты",
"EMAIL_ALREADY_REGISTERED": "Дадзены адрас электроннай пошты ўжо зарэгістраваны",
"DATE_OF_BIRTH_UNDERAGE": "Вам павінна быць не менш за {{years}} гадоў або больш",
"CONSENT_REQUIRED": "Вы павінны пагадзіцца з Умовамі прадастаўлення паслуг і Палітыкай прыватнасці.",
"USERNAME_TOO_MANY_USERS": "Занадта шмат карыстальнікаў маюць гэтае імя карыстальніка, калі ласка, паспрабуйце іншае"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Гэта поле з'яўляецца абавязковым",
"BASE_TYPE_STRING": "Гэта поле павінна быць string",
"BASE_TYPE_NUMBER": "Гэта поле павінна быць number",
"BASE_TYPE_BIGINT": "Гэта поле павінна быць bigint",
"BASE_TYPE_BOOLEAN": "Гэта поле павінна быць boolean",
"BASE_TYPE_CHOICES": "Гэта поле павінна быць адным з ({{types}})",
"BASE_TYPE_CLASS": "Гэта поле павінна быць асобнікам {{type}}",
"BASE_TYPE_OBJECT": "Гэта поле павінна быць аб'ектам",
"BASE_TYPE_ARRAY": "Гэта поле павінна быць масівам",
"UNKOWN_FIELD": "Невядомае поле: {{key}}",
"BASE_TYPE_CONSTANT": "Гэта поле павінна быць {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Няправільны фармат адрасы электроннай пошты",
"DATE_TYPE_PARSE": "Немагчыма разабраць {{date}}. Яна павінна быць у ISO8601",
"BASE_TYPE_BAD_LENGTH": "Павінна быць паміж {{length}} у даўжыню"
}
}

16
api/locales/bg/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Невалиден имейл адрес или телефонен номер",
"INVALID_PASSWORD": "Невалидна парола",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Регистрацията на нов потребител е деактивирана",
"INVITE_ONLY": "Вие трябва да бъдете поканени, за да можете да се регистрирате",
"EMAIL_INVALID": "Невалиден имейл",
"EMAIL_ALREADY_REGISTERED": "Имейлът вече е регистриран",
"DATE_OF_BIRTH_UNDERAGE": "Трябва да сте навършили {{years}} или повече години",
"CONSENT_REQUIRED": "Трябва да се съгласите с Общите условия и Политиката за поверителност.",
"USERNAME_TOO_MANY_USERS": "Твърде много потребители имат това потребителско име, моля опитайте друго"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Това поле е задължително",
"BASE_TYPE_STRING": "Това поле трябва да е низ",
"BASE_TYPE_NUMBER": "Това поле трябва да е число",
"BASE_TYPE_BIGINT": "Това поле трябва да е голямо",
"BASE_TYPE_BOOLEAN": "Това поле трябва да бъде булево",
"BASE_TYPE_CHOICES": "Това поле трябва да бъде едно от ({{types}})",
"BASE_TYPE_CLASS": "Това поле трябва да бъде екземпляр на {{type}}",
"BASE_TYPE_OBJECT": "Това поле трябва да бъде обект",
"BASE_TYPE_ARRAY": "Това поле трябва да бъде масив",
"UNKOWN_FIELD": "Непознат ключ: {{key}}",
"BASE_TYPE_CONSTANT": "Това поле трябва да е {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Невалиден имейл адрес",
"DATE_TYPE_PARSE": "Не може да се анализира {{date}}. Трябва да е ISO8601",
"BASE_TYPE_BAD_LENGTH": "Трябва да е с дължина между {{length}}"
}
}

16
api/locales/ca/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to the Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

18
api/locales/ca/ca Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be an object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unknown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well-formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/cs/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail nebo telefon nenalezen",
"INVALID_PASSWORD": "Neplatné heslo",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Registrace nového uživatele je zakázána",
"INVITE_ONLY": "Musíte být pozváni k registraci",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "E-mail je již registrován",
"DATE_OF_BIRTH_UNDERAGE": "Musíš být {{years}} let nebo starší",
"CONSENT_REQUIRED": "Musíte souhlasit s obchodními podmínkami a zásadami ochrany osobních údajů.",
"USERNAME_TOO_MANY_USERS": "Příliš mnoho uživatelů má toto uživatelské jméno, zkuste prosím jiné"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Toto pole je povinné",
"BASE_TYPE_STRING": "Toto pole musí být řetězec",
"BASE_TYPE_NUMBER": "Toto pole musí být číslo",
"BASE_TYPE_BIGINT": "Toto pole musí být velké",
"BASE_TYPE_BOOLEAN": "Toto pole musí být logická hodnota",
"BASE_TYPE_CHOICES": "Toto pole musí být jedno z ({{types}})",
"BASE_TYPE_CLASS": "Toto pole musí být instancí {{type}}",
"BASE_TYPE_OBJECT": "Toto pole musí být objekt",
"BASE_TYPE_ARRAY": "Toto pole musí být pole",
"UNKOWN_FIELD": "Neznámý klíč: {{key}}",
"BASE_TYPE_CONSTANT": "Toto pole musí být {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Není dobře vytvořená e-mailová adresa",
"DATE_TYPE_PARSE": "Nelze naparsovat {{date}}. Mělo by být ISO8601",
"BASE_TYPE_BAD_LENGTH": "Musí být mezi {{length}} délkou"
}
}

18
api/locales/cs/cs Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/da/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-mail eller telefon ikke fundet",
"INVALID_PASSWORD": "Ugyldig Adgangskode",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Ny brugerregistrering er deaktiveret",
"INVITE_ONLY": "Du skal inviteres til at registrere dig",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "E-mail er allerede registreret",
"DATE_OF_BIRTH_UNDERAGE": "Du skal være {{years}} år eller ældre",
"CONSENT_REQUIRED": "Du skal acceptere Servicevilkår og privatlivspolitik.",
"USERNAME_TOO_MANY_USERS": "For mange brugere har dette brugernavn, prøv venligst et andet"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Dette felt er påkrævet",
"BASE_TYPE_STRING": "Dette felt skal være en streng",
"BASE_TYPE_NUMBER": "Dette felt skal være et tal",
"BASE_TYPE_BIGINT": "Dette felt skal være en bigint",
"BASE_TYPE_BOOLEAN": "Dette felt skal være en boolsk",
"BASE_TYPE_CHOICES": "Dette felt skal være et af ({{types}})",
"BASE_TYPE_CLASS": "Dette felt skal være en instans på {{type}}",
"BASE_TYPE_OBJECT": "Dette felt skal være et objekt",
"BASE_TYPE_ARRAY": "Dette felt skal være et array",
"UNKOWN_FIELD": "Ukendt nøgle: {{key}}",
"BASE_TYPE_CONSTANT": "Dette felt skal være {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Ikke en velformet e-mailadresse",
"DATE_TYPE_PARSE": "Kunne ikke fortolke {{date}}. Bør være ISO8601",
"BASE_TYPE_BAD_LENGTH": "Skal være mellem {{length}} i længden"
}
}

15
api/locales/da/da Normal file
View File

@ -0,0 +1,15 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

16
api/locales/de/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail oder Telefonnummer nicht gefunden",
"INVALID_PASSWORD": "Ungültiges Passwort",
"ACCOUNT_DISABLED": "Dieses Konto ist gesperrt"
},
"register": {
"REGISTRATION_DISABLED": "Die Registrierung ist deaktiviert",
"INVITE_ONLY": "Du musst eingeladen werden, um dich zu registrieren",
"EMAIL_INVALID": "Ungültige E-Mail-Adresse",
"EMAIL_ALREADY_REGISTERED": "Die E-Mail-Adresse wird bereits verwendet",
"DATE_OF_BIRTH_UNDERAGE": "Du musst mindestens {{years}} Jahre oder älter sein",
"CONSENT_REQUIRED": "Du musst den Nutzungsbedingungen und den Datenschutzbestimmungen zustimmen.",
"USERNAME_TOO_MANY_USERS": "Zu viele Benutzer haben bereits diesen Benutzernamen, bitte wähle einen anderen"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Dieses Feld ist erforderlich",
"BASE_TYPE_STRING": "Dieses Feld muss ein String sein",
"BASE_TYPE_NUMBER": "Dieses Feld muss eine Zahl sein",
"BASE_TYPE_BIGINT": "Dieses Feld muss ein bigint sein",
"BASE_TYPE_BOOLEAN": "Dieses Feld muss ein boolean sein",
"BASE_TYPE_CHOICES": "Dieses Feld muss eines von ({{types}}) sein",
"BASE_TYPE_CLASS": "Dieses Feld muss {{type}} sein",
"BASE_TYPE_OBJECT": "Dieses Feld muss ein Objekt sein",
"BASE_TYPE_ARRAY": "Dieses Feld muss ein Array sein",
"UNKOWN_FIELD": "Unbekanntes Feld: {{key}}",
"BASE_TYPE_CONSTANT": "Dieses Feld muss {{value}} sein",
"EMAIL_TYPE_INVALID_EMAIL": "Keine gültige E-Mail-Adresse",
"DATE_TYPE_PARSE": "Konnte {{date}} nicht lesen. Muss ISO8601 entsprechen",
"BASE_TYPE_BAD_LENGTH": "Muss zwischen {{length}} lang sein"
}
}

18
api/locales/de/de Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/el/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Το e-mail ή το τηλέφωνο δεν βρέθηκε",
"INVALID_PASSWORD": "Μη Έγκυρος Κωδικός",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Η εγγραφή νέου χρήστη είναι απενεργοποιημένη",
"INVITE_ONLY": "Πρέπει να προσκληθείτε να εγγραφείτε",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Το email έχει ήδη καταχωρηθεί",
"DATE_OF_BIRTH_UNDERAGE": "Πρέπει να είστε {{years}} ετών ή μεγαλύτεροι",
"CONSENT_REQUIRED": "Πρέπει να συμφωνήσετε με τους Όρους Παροχής Υπηρεσιών και την Πολιτική Απορρήτου.",
"USERNAME_TOO_MANY_USERS": "Πάρα πολλοί χρήστες έχουν αυτό το όνομα χρήστη, παρακαλώ δοκιμάστε ένα άλλο"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Αυτό το πεδίο είναι υποχρεωτικό",
"BASE_TYPE_STRING": "Αυτό το πεδίο πρέπει να είναι μια συμβολοσειρά",
"BASE_TYPE_NUMBER": "Αυτό το πεδίο πρέπει να είναι αριθμός",
"BASE_TYPE_BIGINT": "Αυτό το πεδίο πρέπει να είναι μεγαλοπρεπής",
"BASE_TYPE_BOOLEAN": "Αυτό το πεδίο πρέπει να είναι boolean",
"BASE_TYPE_CHOICES": "Αυτό το πεδίο πρέπει να είναι ένα από{{types}})",
"BASE_TYPE_CLASS": "Αυτό το πεδίο πρέπει να είναι ένα παράδειγμα {{type}}",
"BASE_TYPE_OBJECT": "Αυτό το πεδίο πρέπει να είναι αντικείμενο",
"BASE_TYPE_ARRAY": "Αυτό το πεδίο πρέπει να είναι ένας πίνακας",
"UNKOWN_FIELD": "Άγνωστο κλειδί: {{key}}",
"BASE_TYPE_CONSTANT": "Αυτό το πεδίο πρέπει να είναι {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Δεν είναι καλά σχηματισμένη διεύθυνση ηλεκτρονικού ταχυδρομείου",
"DATE_TYPE_PARSE": "Αδυναμία ανάλυσης του {{date}}. Πρέπει να είναι ISO8601",
"BASE_TYPE_BAD_LENGTH": "Πρέπει να είναι μεταξύ {{length}} σε μήκος"
}
}

18
api/locales/el/el Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/en/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to the Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be an object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unknown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well-formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

18
api/locales/en/en Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/eo/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail aŭ Telefonnumero ne trovis",
"INVALID_PASSWORD": "Pasfrazo ne validas",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Nova uzanta reĝistro estas malebligita",
"INVITE_ONLY": "Vi devas esti invitita de iu membro",
"EMAIL_INVALID": "Retpoŝto ne estas valida",
"EMAIL_ALREADY_REGISTERED": "Tiu retpoŝto estas jam registrita",
"DATE_OF_BIRTH_UNDERAGE": "Vi povas esti {{years}} jaroj aŭ pli aĝa",
"CONSENT_REQUIRED": "Vi devi konsenti Kondiĉo de Servo kaj Politiko de privateco.",
"USERNAME_TOO_MANY_USERS": "Pli multaj uzantoj havas tiu salutnomo, bonvolu provi ankoraŭ"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Tio kampo estas bezona",
"BASE_TYPE_STRING": "Tio kampo devas string",
"BASE_TYPE_NUMBER": "Tio kampo devas numbero",
"BASE_TYPE_BIGINT": "Tio kampo devas bigint",
"BASE_TYPE_BOOLEAN": "Tio kampo devas bulea",
"BASE_TYPE_CHOICES": "Tio kampo devas unu de ({{types}})",
"BASE_TYPE_CLASS": "Tio kampo devas kazo de {{type}}",
"BASE_TYPE_OBJECT": "Tio kampo devas objekto",
"BASE_TYPE_ARRAY": "Tio kampo devas tabelo",
"UNKOWN_FIELD": "Nekonata ŝlosilo: {{key}}",
"BASE_TYPE_CONSTANT": "Tio kampo devas {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Formado de retpoŝto estas nevalida",
"DATE_TYPE_PARSE": "Nevalida dato {{date}}. Devas ISO8601",
"BASE_TYPE_BAD_LENGTH": "Devas sub {{length}} en longo"
}
}

16
api/locales/es/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail o teléfono no encontrado",
"INVALID_PASSWORD": "Contraseña Incorrecta",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "El registro de un nuevo usuario no se encuentra habilitado",
"INVITE_ONLY": "Tenés que ser invitado para poder registrarte",
"EMAIL_INVALID": "Email inválido",
"EMAIL_ALREADY_REGISTERED": "Este E-mail ya está registrado",
"DATE_OF_BIRTH_UNDERAGE": "Necesitas tener {{years}} años o más",
"CONSENT_REQUIRED": "Tenés que aceptar los Términos de Servicio y la Política de Privacidad.",
"USERNAME_TOO_MANY_USERS": "Demasiados usuarios tienen este nombre de usuario, por favor intente con otro"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Este campo es obligatorio",
"BASE_TYPE_STRING": "Este campo debe ser un texto",
"BASE_TYPE_NUMBER": "Este campo debe ser un número",
"BASE_TYPE_BIGINT": "Este campo debe ser un tamaño grande",
"BASE_TYPE_BOOLEAN": "Este campo debe ser un boolean",
"BASE_TYPE_CHOICES": "Este campo debe ser uno de ({{types}})",
"BASE_TYPE_CLASS": "Este campo debe ser una instancia de {{type}}",
"BASE_TYPE_OBJECT": "Este campo debe ser un objeto",
"BASE_TYPE_ARRAY": "Este campo debe ser una matriz",
"UNKOWN_FIELD": "Clave desconocida: {{key}}",
"BASE_TYPE_CONSTANT": "Este campo debe ser {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "No es una dirección de email bien formada",
"DATE_TYPE_PARSE": "No se pudo analizar {{date}}. Debe ser ISO8601",
"BASE_TYPE_BAD_LENGTH": "Debe estar entre {{length}} de longitud"
}
}

18
api/locales/es/es Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/fi/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Sähköpostia tai puhelinta ei löydy",
"INVALID_PASSWORD": "Virheellinen Salasana",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Uuden käyttäjän rekisteröinti pois käytöstä",
"INVITE_ONLY": "Sinut on kutsuttava rekisteröitymään",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Sähköposti on jo rekisteröity",
"DATE_OF_BIRTH_UNDERAGE": "Sinun täytyy olla {{years}} vuotta tai vanhempi",
"CONSENT_REQUIRED": "Sinun on hyväksyttävä käyttöehdot ja tietosuojakäytäntö.",
"USERNAME_TOO_MANY_USERS": "Liian monilla käyttäjillä on tämä käyttäjänimi, yritä toista"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Tämä kenttä on pakollinen",
"BASE_TYPE_STRING": "Tämän kentän on oltava merkkijono",
"BASE_TYPE_NUMBER": "Tämän kentän on oltava numero",
"BASE_TYPE_BIGINT": "Tämän kentän on oltava isoin",
"BASE_TYPE_BOOLEAN": "Tämän kentän on oltava totuus",
"BASE_TYPE_CHOICES": "Tämän kentän on oltava yksi ({{types}})",
"BASE_TYPE_CLASS": "Tämän kentän on oltava {{type}} instanssi",
"BASE_TYPE_OBJECT": "Tämän kentän on oltava objekti",
"BASE_TYPE_ARRAY": "Tämän kentän on oltava array",
"UNKOWN_FIELD": "Tuntematon avain: {{key}}",
"BASE_TYPE_CONSTANT": "Tämän kentän on oltava {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Sähköpostiosoite ei ole hyvin muodostettu",
"DATE_TYPE_PARSE": "Ei voitu jäsentää {{date}}. Pitäisi olla ISO8601",
"BASE_TYPE_BAD_LENGTH": "Pituuden on oltava välillä {{length}}"
}
}

18
api/locales/fi/fi Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/fr/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail ou Téléphone introuvable",
"INVALID_PASSWORD": "Mot de passe invalide",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "L'inscription aux nouveaux utilisateurs est désactivée",
"INVITE_ONLY": "Vous devez être invité à s'inscrire",
"EMAIL_INVALID": "Adresse e-mail invalide",
"EMAIL_ALREADY_REGISTERED": "L'adresse e-mail est déjà enregistrée",
"DATE_OF_BIRTH_UNDERAGE": "Vous devez avoir {{years}} ans ou plus",
"CONSENT_REQUIRED": "Vous devez accepter les conditions d'utilisation et la politique de confidentialité.",
"USERNAME_TOO_MANY_USERS": "Trop d'utilisateurs ont ce nom d'utilisateur, veuillez en essayer un autre"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Ce champ est obligatoire",
"BASE_TYPE_STRING": "Ce champ doit être une chaîne de caractères",
"BASE_TYPE_NUMBER": "Ce champ doit être un nombre",
"BASE_TYPE_BIGINT": "Ce champ doit être un bigint",
"BASE_TYPE_BOOLEAN": "Ce champ doit être un boolean",
"BASE_TYPE_CHOICES": "Ce champ doit être l'un des ({{types}})",
"BASE_TYPE_CLASS": "Ce champ doit être une instance de {{type}}",
"BASE_TYPE_OBJECT": "Ce champ doit être un objet",
"BASE_TYPE_ARRAY": "Ce champ doit être un tableau",
"UNKOWN_FIELD": "Clé inconnue: {{key}}",
"BASE_TYPE_CONSTANT": "Ce champ doit être {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Adresse e-mail mal formaté",
"DATE_TYPE_PARSE": "Impossible d'analyser {{date}}. Doit être ISO8601",
"BASE_TYPE_BAD_LENGTH": "Doit être entre {{length}} de longueur"
}
}

18
api/locales/fr/fr Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/he/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to the Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be an object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unknown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well-formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

18
api/locales/he/he Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/hi/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "ईमेल या फ़ोन नहीं मिला",
"INVALID_PASSWORD": "अमान्य पासवर्ड",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "नया उपयोगकर्ता पंजीकरण अक्षम है",
"INVITE_ONLY": "आपको पंजीकरण के लिए आमंत्रण किया गया है",
"EMAIL_INVALID": "अमान्य ई-मेल",
"EMAIL_ALREADY_REGISTERED": "ईमेल पहले से ही पंजीकृत है.",
"DATE_OF_BIRTH_UNDERAGE": "आपकी उम्र [[years]] वर्ष होनी चाहिए",
"CONSENT_REQUIRED": "आपको सेवाओं और गोपनीयता नीति से सहमत होना होगा",
"USERNAME_TOO_MANY_USERS": "बहुत से उपयोगकर्ताओं के पास यह उपयोगकर्ता नाम है, कृपया दूसरा प्रयास करें"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "यह फ़ील्ड आवश्यक है",
"BASE_TYPE_STRING": "यह फ़ील्ड एक स्ट्रिंग होनी चाहिए",
"BASE_TYPE_NUMBER": "यह फ़ील्ड एक संख्या होनी चाहिए",
"BASE_TYPE_BIGINT": "यह फ़ील्ड एक बिगिन्ट होनी चाहिए",
"BASE_TYPE_BOOLEAN": "यह फ़ील्ड एक बूलियन होनी चाहिए",
"BASE_TYPE_CHOICES": "यह फ़ील्ड एक प्रकार का [[[types]]] होना चाहिए",
"BASE_TYPE_CLASS": "यह फ़ील्ड एक प्रकार का [[[types]]] होना चाहिए",
"BASE_TYPE_OBJECT": "यह फ़ील्ड एक ऑब्जेक्ट होनी चाहिए",
"BASE_TYPE_ARRAY": "यह फ़ील्ड एक ऐरे होनी चाहिए",
"UNKOWN_FIELD": "अज्ञात कुंजी: [[key]]",
"BASE_TYPE_CONSTANT": "यह क्षेत्र {{value}} होना चाहिए",
"EMAIL_TYPE_INVALID_EMAIL": "खराब ईमेल एड्रेस",
"DATE_TYPE_PARSE": "{{date}} की पदव्‍याख्‍या नहीं हो पाई है। ISO8601 होना चाहिए",
"BASE_TYPE_BAD_LENGTH": "लंबाई {{length}} के बीच में होनी चाहिए"
}
}

18
api/locales/hi/hi Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/hr/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Email ili broj mobitela nije pronađen",
"INVALID_PASSWORD": "Pogrešna lozinka",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Registracija novog korisnika je onemogućena",
"INVITE_ONLY": "Morate biti pozvani da se registrirate",
"EMAIL_INVALID": "Nevažeći email",
"EMAIL_ALREADY_REGISTERED": "Email je već registriran",
"DATE_OF_BIRTH_UNDERAGE": "Morate imati {{years}} godina ili više",
"CONSENT_REQUIRED": "Morate se složiti s uvjetima pružanja usluge i pravila o privatnosti.",
"USERNAME_TOO_MANY_USERS": "Previše korisnika ima ovo korisničko ime, molimo vas da pokušate sa drugim"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Ovo polje je obavezno",
"BASE_TYPE_STRING": "Ovo polje mora biti niz",
"BASE_TYPE_NUMBER": "Ovo polje mora biti broj",
"BASE_TYPE_BIGINT": "Ovo polje mora biti bigint",
"BASE_TYPE_BOOLEAN": "Ovo polje mora biti boolean",
"BASE_TYPE_CHOICES": "Ovo polje mora biti jedno od ({{types}})",
"BASE_TYPE_CLASS": "Ovo polje mora biti primjer od {{type}}",
"BASE_TYPE_OBJECT": "Ovo polje mora biti objekt",
"BASE_TYPE_ARRAY": "Ovo polje mora biti niz",
"UNKOWN_FIELD": "Nepoznati ključ: {{key}}",
"BASE_TYPE_CONSTANT": "Ovo polje mora biti {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Nije dobro oblikovana Email adresa",
"DATE_TYPE_PARSE": "Nije moguće raščlaniti {{date}}. Treba biti ISO8601",
"BASE_TYPE_BAD_LENGTH": "Mora biti između {{length}} u duljini"
}
}

16
api/locales/hu/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Nincs ilyen E-Mail vagy Telefon",
"INVALID_PASSWORD": "Érvénytelen jelszó",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Új felhasználók regisztrációja nem engedélyezett",
"INVITE_ONLY": "Csak meghívottak regisztrálhatnak",
"EMAIL_INVALID": "Érvénytelen Email",
"EMAIL_ALREADY_REGISTERED": "Az Email már regisztrálva van",
"DATE_OF_BIRTH_UNDERAGE": "{{years}} éves vagy idősebbnek kell lenned",
"CONSENT_REQUIRED": "El kell fogadnod a Felhasználási Feltételeket és az Adatvédelmi Nyilatkozatot.",
"USERNAME_TOO_MANY_USERS": "Túl sok felhasználó használja ezt a nevet, kérlek próbálj egy másikat"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Ez a mező kötelező",
"BASE_TYPE_STRING": "Ennek a mezőnek string-nek kell lennie",
"BASE_TYPE_NUMBER": "Ennek a mezőnek számnak kell lennie",
"BASE_TYPE_BIGINT": "Ennek a mezőnek bigint-nek kell lennie",
"BASE_TYPE_BOOLEAN": "Ennek a mezőnek boolean-nek kell lennie",
"BASE_TYPE_CHOICES": "Ennek a mezőnek {{types}} típusúnak kell lennie",
"BASE_TYPE_CLASS": "Ennek a mezőnek {{type}} típusúnak kell lennie",
"BASE_TYPE_OBJECT": "Ennek a mezőnek object-nek kell lennie",
"BASE_TYPE_ARRAY": "Ennek a mezőnek array-nek kell lennie",
"UNKOWN_FIELD": "Ismeretlen kulcs: {{key}}",
"BASE_TYPE_CONSTANT": "A mezőnek {{value}} kell lennie",
"EMAIL_TYPE_INVALID_EMAIL": "Nem jól megformázott email cím",
"DATE_TYPE_PARSE": "Nem sikerült elemezni {{date}}. ISO8901-nak kéne lennie",
"BASE_TYPE_BAD_LENGTH": "{{length}} között kell lennie hosszban"
}
}

18
api/locales/hu/hu Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/id/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to the Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be an object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unknown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well-formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/it/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-Mail o numero di telefono non trovato",
"INVALID_PASSWORD": "Password Non Valida",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "La registrazione di nuovi utenti è disabilitata",
"INVITE_ONLY": "Devi essere stato invitato per registrarti",
"EMAIL_INVALID": "Indirizzo e-mail non valido",
"EMAIL_ALREADY_REGISTERED": "Email già registrata",
"DATE_OF_BIRTH_UNDERAGE": "Devi avere almeno {{years}} anni",
"CONSENT_REQUIRED": "È necessario accettare i Termini di Servizio e l'Informativa sulla privacy.",
"USERNAME_TOO_MANY_USERS": "Troppi utenti hanno questo nickname, per favore provane un altro"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Questo campo è obbligatorio",
"BASE_TYPE_STRING": "Questo campo deve essere una stringa",
"BASE_TYPE_NUMBER": "Questo campo deve essere un numero",
"BASE_TYPE_BIGINT": "Questo campo deve essere un numero intero",
"BASE_TYPE_BOOLEAN": "Questo campo deve essere un numero booleano",
"BASE_TYPE_CHOICES": "Questo campo deve essere uno di ({{types}})",
"BASE_TYPE_CLASS": "Questo campo deve essere un'istanza di {{type}}",
"BASE_TYPE_OBJECT": "Questo campo deve essere un oggetto",
"BASE_TYPE_ARRAY": "Questo campo deve essere un array",
"UNKOWN_FIELD": "Chiave non riconosciuta: {{key}}",
"BASE_TYPE_CONSTANT": "Questo campo deve essere {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Questo indirizzo e-mail non è in un formato valido",
"DATE_TYPE_PARSE": "Impossibile analizzare {{date}}. Dovrebbe essere ISO8601",
"BASE_TYPE_BAD_LENGTH": "Deve essere compreso tra {{length}} in lunghezza"
}
}

18
api/locales/it/it Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/ja/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "メールまたは電話が見つかりません",
"INVALID_PASSWORD": "無効なパスワード",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "新しいユーザー登録は無効です",
"INVITE_ONLY": "登録するには招待する必要があります",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "メールアドレスは既に登録されています",
"DATE_OF_BIRTH_UNDERAGE": "{{years}} 歳以上である必要があります",
"CONSENT_REQUIRED": "利用規約およびプライバシーポリシーに同意する必要があります。",
"USERNAME_TOO_MANY_USERS": "このユーザー名を持つユーザーが多すぎます。別のユーザーをお試しください。"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "このフィールドは必須項目です",
"BASE_TYPE_STRING": "このフィールドは文字列でなければなりません",
"BASE_TYPE_NUMBER": "このフィールドは数値でなければなりません",
"BASE_TYPE_BIGINT": "このフィールドはbigintでなければなりません",
"BASE_TYPE_BOOLEAN": "このフィールドはブール値でなければなりません",
"BASE_TYPE_CHOICES": "このフィールドは ({{types}} ) のいずれかでなければなりません",
"BASE_TYPE_CLASS": "このフィールドは {{type}} のインスタンスでなければなりません",
"BASE_TYPE_OBJECT": "このフィールドはオブジェクトでなければなりません",
"BASE_TYPE_ARRAY": "このフィールドは配列でなければなりません",
"UNKOWN_FIELD": "不明なキー: {{key}}",
"BASE_TYPE_CONSTANT": "このフィールドは {{value}} でなければなりません",
"EMAIL_TYPE_INVALID_EMAIL": "メールアドレスが正しくありません",
"DATE_TYPE_PARSE": "{{date}}を解析できませんでした。ISO8601である必要があります",
"BASE_TYPE_BAD_LENGTH": "{{length}} 以内でなければなりません"
}
}

18
api/locales/ja/ja Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/ko/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "이메일 또는 전화번호를 찾을 수 없습니다",
"INVALID_PASSWORD": "비밀번호가 틀렸습니다",
"ACCOUNT_DISABLED": "이 계정은 비활성화되었습니다"
},
"register": {
"REGISTRATION_DISABLED": "신규 사용자의 등록이 비활성화되었습니다",
"INVITE_ONLY": "초대받은 사람만 가입할 수 있습니다",
"EMAIL_INVALID": "이메일이 유효하지 않습니다",
"EMAIL_ALREADY_REGISTERED": "이미 등록된 이메일입니다",
"DATE_OF_BIRTH_UNDERAGE": "최소 {{years}} 이상이어야 합니다",
"CONSENT_REQUIRED": "서비스 약관 및 개인정보 취급방침에 동의하셔야 합니다.",
"USERNAME_TOO_MANY_USERS": "이 사용자명을 쓰는 사용자가 너무 많습니다. 다른 사용자명을 시도하세요"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "필수로 기입해야 합니다",
"BASE_TYPE_STRING": "문자열을 입력해야 합니다",
"BASE_TYPE_NUMBER": "숫자를 입력해야 합니다",
"BASE_TYPE_BIGINT": "bigint를 입력해야 합니다",
"BASE_TYPE_BOOLEAN": "논리값을 입력해야 합니다",
"BASE_TYPE_CHOICES": "값의 유형이 ({{types}}) 중 하나여야 합니다",
"BASE_TYPE_CLASS": "값의 유형이 {{type}}(이)여야 합니다",
"BASE_TYPE_OBJECT": "객체를 입력해야 합니다",
"BASE_TYPE_ARRAY": "배열을 입력해야 합니다",
"UNKOWN_FIELD": "알 수 없는 키: {{key}}",
"BASE_TYPE_CONSTANT": "{{value}}(을)를 입력해야 합니다",
"EMAIL_TYPE_INVALID_EMAIL": "올바른 이메일 주소 형식이 아닙니다",
"DATE_TYPE_PARSE": "{{date}} 형식을 분석할 수 없습니다. ISO8601을 따라야 합니다",
"BASE_TYPE_BAD_LENGTH": "길이가 {{length}} 사이여야 합니다"
}
}

15
api/locales/ko/ko Normal file
View File

@ -0,0 +1,15 @@
{
"login": {
"INVALID_LOGIN": "E-Mail or Phone not found",
"INVALID_PASSWORD": "Invalid Password"
},
"register": {
"REGISTRATION_DISABLED": "New user registration is disabled",
"INVITE_ONLY": "You must be invited to register",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Email is already registered",
"DATE_OF_BIRTH_UNDERAGE": "You need to be {{years}} years or older",
"CONSENT_REQUIRED": "You must agree to Terms of Service and Privacy Policy.",
"USERNAME_TOO_MANY_USERS": "Too many users have this username, please try another"
}
}

16
api/locales/lt/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "El. Paštas ar telefonas nerastas",
"INVALID_PASSWORD": "Neteisingas slaptažodis",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Naujų vartotojų registracija išjungta",
"INVITE_ONLY": "Jūs turite būti pakviesti registruotis",
"EMAIL_INVALID": "Netinkamas el. pašto adresas",
"EMAIL_ALREADY_REGISTERED": "El. pašto adresas jau užregistruotas",
"DATE_OF_BIRTH_UNDERAGE": "Jūs turite būti {{years}} metų ar vyresni",
"CONSENT_REQUIRED": "Jūs turite sutikti su paslaugos teikimo sąlygomis ir privatumo politika.",
"USERNAME_TOO_MANY_USERS": "Per daug vartotojų turi šį vartotojo vardą, prašome naudoti kitą"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Šis laukelis privalomas",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be an object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unknown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Neteisingai suformuotas el. pašto adresas",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/nl/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-mailadres of telefoon niet gevonden",
"INVALID_PASSWORD": "Ongeldig wachtwoord",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Registratie voor nieuwe gebruikers is uitgeschakeld",
"INVITE_ONLY": "U moet worden uitgenodigd om te registreren",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "Dit e-mailadres is al geregistreerd",
"DATE_OF_BIRTH_UNDERAGE": "Je moet {{years}} jaar of ouder zijn",
"CONSENT_REQUIRED": "U moet akkoord gaan met de Algemene Voorwaarden en het Privacybeleid.",
"USERNAME_TOO_MANY_USERS": "Te veel gebruikers hebben deze gebruikersnaam, probeer een andere"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Dit veld is verplicht",
"BASE_TYPE_STRING": "Dit veld moet een tekenreeks zijn",
"BASE_TYPE_NUMBER": "Dit veld moet een getal zijn",
"BASE_TYPE_BIGINT": "Dit veld moet een bigint zijn",
"BASE_TYPE_BOOLEAN": "Dit veld moet een Booleaanse waarde zijn",
"BASE_TYPE_CHOICES": "Dit veld moet een van ({{types}} ) zijn",
"BASE_TYPE_CLASS": "Dit veld moet een exemplaar zijn van {{type}}",
"BASE_TYPE_OBJECT": "Dit veld moet een object zijn",
"BASE_TYPE_ARRAY": "Dit veld moet een array zijn",
"UNKOWN_FIELD": "Onbekend sleutel: {{key}}",
"BASE_TYPE_CONSTANT": "Dit veld moet {{value}} zijn",
"EMAIL_TYPE_INVALID_EMAIL": "Niet een geldig e-mailadres",
"DATE_TYPE_PARSE": "Kan {{date}}niet parsen. Moet ISO8601 zijn",
"BASE_TYPE_BAD_LENGTH": "Moet tussen {{length}} in lengte zijn"
}
}

18
api/locales/nl/nl Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/no/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "Fant ikke e-postadresse eller telefon",
"INVALID_PASSWORD": "Ugyldig passord",
"ACCOUNT_DISABLED": "This account is disabled"
},
"register": {
"REGISTRATION_DISABLED": "Ny brukerregistrering er deaktivert",
"INVITE_ONLY": "Du må bli invitert for å registrere deg",
"EMAIL_INVALID": "Invalid Email",
"EMAIL_ALREADY_REGISTERED": "E-postadressen er allerede registrert",
"DATE_OF_BIRTH_UNDERAGE": "Du må være {{years}} eller eldre",
"CONSENT_REQUIRED": "Du må godta vilkårene for bruk og personvernerklæringen.",
"USERNAME_TOO_MANY_USERS": "For mange brukere har dette brukernavnet, prøv et annet"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "Dette feltet er obligatorisk",
"BASE_TYPE_STRING": "Dette feltet må være en streng",
"BASE_TYPE_NUMBER": "Dette feltet må være et tall",
"BASE_TYPE_BIGINT": "Dette feltet må være en stor",
"BASE_TYPE_BOOLEAN": "Dette feltet må være en boolsk verdi",
"BASE_TYPE_CHOICES": "Dette feltet må være ett av ({{types}})",
"BASE_TYPE_CLASS": "Dette feltet må være en forekomst av {{type}}",
"BASE_TYPE_OBJECT": "Dette feltet må være et objekt",
"BASE_TYPE_ARRAY": "Dette feltet må være en liste",
"UNKOWN_FIELD": "Ukjent nøkkel: {{key}}",
"BASE_TYPE_CONSTANT": "Dette feltet må være {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Ikke et gyldig e-postadresse format",
"DATE_TYPE_PARSE": "Kunne ikke analysere {{date}}. Skal være ISO8601",
"BASE_TYPE_BAD_LENGTH": "Må være mellom {{length}} i lengde"
}
}

18
api/locales/no/no Normal file
View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "This field is required",
"BASE_TYPE_STRING": "This field must be a string",
"BASE_TYPE_NUMBER": "This field must be a number",
"BASE_TYPE_BIGINT": "This field must be a bigint",
"BASE_TYPE_BOOLEAN": "This field must be a boolean",
"BASE_TYPE_CHOICES": "This field must be one of ({{types}})",
"BASE_TYPE_CLASS": "This field must be an instance of {{type}}",
"BASE_TYPE_OBJECT": "This field must be a object",
"BASE_TYPE_ARRAY": "This field must be an array",
"UNKOWN_FIELD": "Unkown key: {{key}}",
"BASE_TYPE_CONSTANT": "This field must be {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Not a well formed email address",
"DATE_TYPE_PARSE": "Could not parse {{date}}. Should be ISO8601",
"BASE_TYPE_BAD_LENGTH": "Must be between {{length}} in length"
}
}

16
api/locales/pl/auth.json Normal file
View File

@ -0,0 +1,16 @@
{
"login": {
"INVALID_LOGIN": "E-mail lub telefon nie znaleziony",
"INVALID_PASSWORD": "Nieprawidłowe hasło",
"ACCOUNT_DISABLED": "Konto jest zablokowane"
},
"register": {
"REGISTRATION_DISABLED": "Rejestracja nowego użytkownika jest wyłączona",
"INVITE_ONLY": "Musisz być zaproszony do rejestracji",
"EMAIL_INVALID": "Nieprawidłowy email",
"EMAIL_ALREADY_REGISTERED": "E-mail jest już zarejestrowany",
"DATE_OF_BIRTH_UNDERAGE": "Musisz mieć {{years}} lat lub więcej",
"CONSENT_REQUIRED": "Musisz zaakceptować Regulamin i Politykę Prywatności.",
"USERNAME_TOO_MANY_USERS": "Zbyt wielu użytkowników ma tę nazwę użytkownika, spróbuj inną"
}
}

View File

@ -0,0 +1,18 @@
{
"field": {
"BASE_TYPE_REQUIRED": "To pole jest wymagane",
"BASE_TYPE_STRING": "To pole musi być ciągiem znaków",
"BASE_TYPE_NUMBER": "To pole musi być liczbą",
"BASE_TYPE_BIGINT": "To pole musi być bigint",
"BASE_TYPE_BOOLEAN": "To pole musi być wartością logiczną",
"BASE_TYPE_CHOICES": "To pole musi być jednym z ({{types}})",
"BASE_TYPE_CLASS": "To pole musi być instancją {{type}}",
"BASE_TYPE_OBJECT": "To pole musi być obiektem",
"BASE_TYPE_ARRAY": "To pole musi być tablicą",
"UNKOWN_FIELD": "Nieznany klucz: {{key}}",
"BASE_TYPE_CONSTANT": "To pole musi być {{value}}",
"EMAIL_TYPE_INVALID_EMAIL": "Źle sformułowany adres e-mail",
"DATE_TYPE_PARSE": "Nie można przetworzyć {{date}}. Powinno być ISO8601",
"BASE_TYPE_BAD_LENGTH": "Musi być pomiędzy {{length}}"
}
}

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