Compare commits

..
Author SHA1 Message Date
Bradley Schofield 4a6cbaf770 Continue work on OAuth Service Account generation 2023-08-04 15:37:37 +01:00
Bradley Schofield 845381ddf8 Merge remote-tracking branch 'origin/1.4.x' into feat-implement-transfers 2023-08-04 11:38:37 +01:00
Bradley Schofield 9bf6ed6829 Handle Jake's Suggestions 2023-08-04 11:32:47 +01:00
Bradley Schofield 009a41080a Update Route to fix it and remove secrets 2023-08-02 13:25:46 +01:00
Bradley Schofield 8eebb55ccd Add firebase Deauth 2023-08-01 15:27:46 +01:00
Bradley Schofield 2da76cdb59 Revert "Merge remote-tracking branch 'origin/1.4.x' into feat-implement-transfers"
This reverts commit c1c3f056b1, reversing
changes made to 43170855a2.
2023-07-27 16:29:45 +01:00
Bradley Schofield c1c3f056b1 Merge remote-tracking branch 'origin/1.4.x' into feat-implement-transfers 2023-07-27 15:06:14 +01:00
Bradley Schofield 43170855a2 Continue work on Firebase OAuth 2023-07-27 14:22:31 +01:00
Bradley Schofield 3fa99736a8 Start work on Firebase OAuth 2023-07-27 13:55:09 +01:00
Bradley Schofield 41d3ab1723 Update teams.php 2023-07-26 09:37:26 +01:00
Bradley Schofield 8fdcf5716a Implement Suggestions 2023-07-25 10:50:19 +01:00
1392d97da3 Update app/controllers/api/teams.php
Co-authored-by: Christy Jacob <christyjacob4@gmail.com>
2023-07-25 10:47:53 +01:00
Bradley Schofield 50bae853e6 Update Database 2023-07-24 11:59:23 +01:00
Bradley Schofield a1e4df666a Update migrations.php 2023-07-21 11:48:03 +01:00
Bradley Schofield badbc649a0 Update migrations.php 2023-07-21 11:47:12 +01:00
Bradley Schofield 7eb286ccd4 Update constants 2023-07-21 11:37:40 +01:00
Bradley Schofield cff7ba2bff Update status codes and docs 2023-07-21 11:32:30 +01:00
Bradley Schofield 463210f8db Add migration documentation and update service account param 2023-07-21 02:27:32 +01:00
Bradley Schofield 4261386e43 Update composer.json 2023-07-21 01:14:04 +01:00
Bradley Schofield dfb1b455e6 Update migrations.php 2023-07-21 01:06:54 +01:00
Bradley Schofield f693a43420 Implement Suggestions 2023-07-21 01:04:08 +01:00
7fb537f496 Update app/workers/migrations.php
Co-authored-by: Christy Jacob <christyjacob4@gmail.com>
2023-07-21 00:46:56 +01:00
Bradley Schofield f0416a299b Increment Version to 1.4.0 for autodetection reasons 2023-07-18 11:31:50 +01:00
Bradley Schofield 8db0ed11c3 Update Exception.php 2023-07-18 10:36:01 +01:00
Bradley Schofield eef8a1169e Update open-api3-1.2.x-client.json 2023-07-18 10:33:19 +01:00
Bradley Schofield bd34fe9394 Remove examples 2023-07-18 10:31:43 +01:00
Bradley Schofield e317e1a8e4 Use Whitelist again 2023-07-18 10:22:34 +01:00
Bradley Schofield 88b59295d1 Rename reason to errors 2023-07-17 15:17:06 +01:00
Bradley Schofield 94fe4f7189 Fix Reports 2023-07-14 12:05:16 +01:00
Bradley Schofield 79426088df Try to fix realtime 2023-07-12 12:12:26 +01:00
Bradley Schofield f34d40df48 Update Branch and add json filter to resourceData 2023-07-12 11:38:18 +01:00
Bradley Schofield 0c80fa1e2c Implement Reports 2023-07-10 14:51:41 +01:00
Bradley Schofield ff2c957d3f Continue work on migrations 2023-07-03 11:46:55 +01:00
Bradley Schofield 5cd149eafe Continue work on migrations 2023-06-16 19:20:52 +01:00
Bradley Schofield 7e0d153005 Fix Worker 2023-06-16 14:14:39 +01:00
Bradley Schofield 7e8d8e8f98 Finish Renaming to Migrations 2023-06-14 13:08:33 +01:00
Bradley Schofield c21a780a8c Rename Service to Migrations 2023-06-12 11:20:18 +01:00
Bradley Schofield 744640b4b8 Update imports.php 2023-05-16 14:18:06 +09:00
Bradley Schofield a9042e78b6 Run Linter 2023-05-16 14:08:28 +09:00
Bradley Schofield 3d7c209eb7 Begin API Rewrite 2023-05-15 19:11:22 +09:00
Bradley Schofield 217bde6998 Merge branch 'master' into feat-implement-transfers 2023-05-09 21:07:52 +09:00
Bradley Schofield 5f783b9fd7 Merge branch 'master' into feat-implement-transfers 2023-04-16 16:55:30 +09:00
Bradley Schofield def779e0e6 Update Audit Resource Label 2023-04-16 16:50:47 +09:00
Bradley Schofield acb3c250a4 Implement API Flow 2023-03-24 13:26:27 +09:00
Bradley Schofield fea2dd905c Update Event.php 2023-03-17 15:27:10 +09:00
Bradley Schofield 8f4e26fc49 Continue work on Transfers 2023-03-17 15:22:11 +09:00
Bradley Schofield 58725e5379 Implement LastCheck for Sources and Destinations 2023-03-15 14:58:14 +09:00
Bradley Schofield 0798a577c1 Continue Standardising Error Models 2023-03-14 09:31:10 +09:00
Bradley Schofield fbb489d7fe Update Dockerfile 2023-02-24 06:17:49 +00:00
Bradley Schofield bd65b96ecb Implement Transfer Validation 2023-02-24 06:16:07 +00:00
Bradley Schofield 666a17f83a Continuing implementing transfers 2023-02-20 12:02:19 +00:00
33439 changed files with 63406 additions and 1521547 deletions
-17
View File
@@ -1,17 +0,0 @@
reviews:
path_filters:
- "!app/config/specs/**"
- "!docs/examples/**"
- "!docs/references/**"
- "!docs/sdks/**"
auto_review:
base_branches:
- main
- 1.6.x
- 1.7.x
- 1.8.x
high_level_summary: false
poem: false
sequence_diagrams: false
collapse_walkthrough: true
changed_files_summary: false
+23 -60
View File
@@ -1,36 +1,18 @@
_APP_ENV=development
_APP_EDITION=self-hosted
_APP_LOCALE=en
_APP_WORKER_PER_CORE=6
_APP_COMPRESSION_MIN_SIZE_BYTES=1024
_APP_CONSOLE_WHITELIST_ROOT=disabled
_APP_CONSOLE_WHITELIST_EMAILS=
_APP_CONSOLE_SESSION_ALERTS=enabled
_APP_CONSOLE_WHITELIST_IPS=
_APP_CONSOLE_COUNTRIES_DENYLIST=AQ
_APP_CONSOLE_HOSTNAMES=localhost,appwrite.io,*.appwrite.io
_APP_SYSTEM_EMAIL_NAME=Appwrite
_APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io
_APP_SYSTEM_TEAM_EMAIL=team@appwrite.io
_APP_EMAIL_SECURITY=security@appwrite.io
_APP_EMAIL_CERTIFICATES=certificates@appwrite.io
_APP_SYSTEM_EMAIL_ADDRESS=team@appwrite.io
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS=security@appwrite.io
_APP_SYSTEM_RESPONSE_FORMAT=
_APP_CUSTOM_DOMAIN_DENY_LIST=
_APP_OPTIONS_ABUSE=disabled
_APP_OPTIONS_ROUTER_PROTECTION=disabled
_APP_OPTIONS_FORCE_HTTPS=disabled
_APP_OPTIONS_ROUTER_FORCE_HTTPS=disabled
_APP_OPENSSL_KEY_V1=your-secret-key
_APP_DNS=8.8.8.8
_APP_DOMAIN=traefik
_APP_CONSOLE_DOMAIN=localhost
_APP_DOMAIN_FUNCTIONS=functions.localhost
_APP_DOMAIN_SITES=sites.localhost
_APP_DOMAIN_TARGET_CNAME=test.localhost
_APP_DOMAIN_TARGET_A=127.0.0.1
_APP_DOMAIN_TARGET_AAAA=::1
_APP_DOMAIN_TARGET_CAA=digicert.com
_APP_RULES_FORMAT=md5
_APP_DOMAIN=demo.appwrite.io
_APP_DOMAIN_TARGET=demo.appwrite.io
_APP_REDIS_HOST=redis
_APP_REDIS_PORT=6379
_APP_REDIS_PASS=
@@ -46,7 +28,6 @@ _APP_STORAGE_S3_ACCESS_KEY=
_APP_STORAGE_S3_SECRET=
_APP_STORAGE_S3_REGION=us-east-1
_APP_STORAGE_S3_BUCKET=
_APP_STORAGE_S3_ENDPOINT=
_APP_STORAGE_DO_SPACES_ACCESS_KEY=
_APP_STORAGE_DO_SPACES_SECRET=
_APP_STORAGE_DO_SPACES_REGION=us-east-1
@@ -66,6 +47,10 @@ _APP_STORAGE_WASABI_BUCKET=
_APP_STORAGE_ANTIVIRUS=disabled
_APP_STORAGE_ANTIVIRUS_HOST=clamav
_APP_STORAGE_ANTIVIRUS_PORT=3310
_APP_INFLUXDB_HOST=influxdb
_APP_INFLUXDB_PORT=8086
_APP_STATSD_HOST=telegraf
_APP_STATSD_PORT=8125
_APP_SMTP_HOST=maildev
_APP_SMTP_PORT=1025
_APP_SMTP_SECURE=
@@ -73,54 +58,32 @@ _APP_SMTP_USERNAME=
_APP_SMTP_PASSWORD=
_APP_SMS_PROVIDER=sms://username:password@mock
_APP_SMS_FROM=+123456789
_APP_SMS_PROJECTS_DENY_LIST=
_APP_STORAGE_LIMIT=30000000
_APP_STORAGE_PREVIEW_LIMIT=20000000
_APP_COMPUTE_SIZE_LIMIT=30000000
_APP_FUNCTIONS_SIZE_LIMIT=30000000
_APP_FUNCTIONS_TIMEOUT=900
_APP_SITES_TIMEOUT=30
_APP_COMPUTE_BUILD_TIMEOUT=900
_APP_COMPUTE_CPUS=8
_APP_COMPUTE_MEMORY=8192
_APP_COMPUTE_INACTIVE_THRESHOLD=600
_APP_COMPUTE_MAINTENANCE_INTERVAL=600
_APP_COMPUTE_RUNTIMES_NETWORK=runtimes
_APP_FUNCTIONS_BUILD_TIMEOUT=900
_APP_FUNCTIONS_CONTAINERS=10
_APP_FUNCTIONS_CPUS=0
_APP_FUNCTIONS_MEMORY=0
_APP_FUNCTIONS_MEMORY_SWAP=0
_APP_FUNCTIONS_INACTIVE_THRESHOLD=60
OPEN_RUNTIMES_NETWORK=appwrite_runtimes
_APP_EXECUTOR_SECRET=your-secret-key
_APP_EXECUTOR_HOST=http://exc1/v1
_APP_BROWSER_HOST=http://appwrite-browser:3000/v1
_APP_FUNCTIONS_RUNTIMES=node-22
_APP_SITES_RUNTIMES=static-1,node-22
_APP_EXECUTOR_HOST=http://appwrite-executor/v1
_APP_MAINTENANCE_INTERVAL=86400
_APP_MAINTENANCE_START_TIME=12:00
_APP_MAINTENANCE_RETENTION_CACHE=2592000
_APP_MAINTENANCE_RETENTION_EXECUTION=1209600
_APP_MAINTENANCE_RETENTION_ABUSE=86400
_APP_MAINTENANCE_RETENTION_AUDIT=1209600
_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=15778800
_APP_USAGE_AGGREGATION_INTERVAL=30
_APP_STATS_RESOURCES_INTERVAL=30
_APP_USAGE_AGGREGATION_INTERVAL=5
_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000
_APP_MAINTENANCE_RETENTION_SCHEDULES=86400
_APP_USAGE_STATS=enabled
_APP_LOGGING_PROVIDER=
_APP_LOGGING_CONFIG=
_APP_GRAPHQL_MAX_BATCH_SIZE=10
_APP_GRAPHQL_MAX_COMPLEXITY=250
_APP_GRAPHQL_MAX_DEPTH=4
_APP_DOCKER_HUB_USERNAME=
_APP_DOCKER_HUB_PASSWORD=
_APP_VCS_GITHUB_APP_NAME=
_APP_VCS_GITHUB_PRIVATE_KEY=disabled
_APP_VCS_GITHUB_APP_ID=
_APP_VCS_GITHUB_CLIENT_ID=
_APP_VCS_GITHUB_CLIENT_SECRET=
_APP_VCS_GITHUB_WEBHOOK_SECRET=
_APP_MIGRATIONS_FIREBASE_CLIENT_ID=
_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=
_APP_ASSISTANT_OPENAI_API_KEY=
_APP_MESSAGE_SMS_TEST_DSN=
_APP_MESSAGE_EMAIL_TEST_DSN=
_APP_MESSAGE_PUSH_TEST_DSN=
_APP_WEBHOOK_MAX_FAILED_ATTEMPTS=10
_APP_PROJECT_REGIONS=default
_APP_FUNCTIONS_CREATION_ABUSE_LIMIT=5000
_APP_STATS_USAGE_DUAL_WRITING_DBS=database_db_main
_APP_GRAPHQL_MAX_DEPTH=3
DOCKERHUB_PULL_USERNAME=
DOCKERHUB_PULL_PASSWORD=
DOCKERHUB_PULL_EMAIL=
-2
View File
@@ -5,5 +5,3 @@ src/** linguist-detectable=false
tests/** linguist-detectable=false
public/scripts/** linguist-detectable=false
public/dist/scripts/** linguist-detectable=false
.github/workflows/*.lock.yml linguist-generated=true merge=ours
-83
View File
@@ -1,83 +0,0 @@
# Fixes and upgrades for the Appwrite Auth / Users / Teams services.
"product / auth":
- "(auth|session|login|logout|register|2fa|mfa|users|teams|memberships|invite|oauth|oauth2|sso|jwt)"
# Fixes and upgrades for the Appwrite Realtime API.
"api / realtime":
- "(realtime|subscribe|websockets)"
# Console, UI and UX issues
"product / console":
- "(console)"
# Fixes and upgrades for the Appwrite Storage.
"product / storage":
- "(storage|bucket|file|image|preview|download)"
# Fixes and upgrades for the Appwrite Database.
"product / databases":
- "(database|collection|tables|attribute|column|document|row|query|queries|indexes|search|filter|sort|pagination)"
# Fixes and upgrades for the Appwrite Functions.
"product / functions":
- "(function|runtime|deployment|execution|trigger|cron|schedule)"
# Fixes and upgrades for the Appwrite Docs.
# "product / docs":
# -
# Fixes and upgrades for the Appwrite Migrations.
"product / migrations":
- "(migrate|migration)"
# Fixes and upgrades for the Appwrite Messaging.
"product / messaging":
- "(messaging|email|sms|push|provider|topic|target|notification)"
# Fixes and upgrades for the Appwrite Platform.
# "product / platform":
# -
# Fixes and upgrades for database relationships
"feature / relationships":
- "(relationship)"
# Issues found only on Appwrite Cloud
# "product / cloud":
# -
# Fixes and upgrades for the Appwrite VCS.
"product / vcs":
- "(repo|push|vcs|repository)"
# Fixes and upgrades for the Appwrite GraphQL API.
"api / graphql":
- "(graphql|gql|mutation)"
# Fixes and upgrades for the Appwrite Assistant.
"product / assistant":
- "(assistant)"
# Fixes and upgrades for the Appwrite Domains.
"product / domains":
- "(domain|dns|ssl|certificate)"
# Fixes and upgrades for the Appwrite Locale.
"product / locale":
- "(locale|i18n|internationalization|localization|l10n|translation|timezone|country)"
# Fixes and upgrades for the Appwrite Avatars.
"product / avatars":
- "(avatar|initial|flag|icon)"
# Fixes and upgrades for Appwrite Sites.
"product / sites":
- "(site|web|hosting|domain|ssl|certificate|nextjs|nuxt|react|angular|vue|svelte|astro)"
# Fixes and upgrades for the Appwrite CLI.
"sdk / cli":
- "(cli|command line)"
# Issues only found when self-hosting Appwrite
"product / self-hosted":
- "(self-host|self host)"
-32
View File
@@ -1,32 +0,0 @@
name: AI Moderator
on:
issues:
types: [opened, edited]
issue_comment:
types: [created, edited]
pull_request:
types: [opened, edited]
pull_request_review:
types: [submitted, edited]
pull_request_review_comment:
types: [created, edited]
discussion:
types: [created, edited]
discussion_comment:
types: [created, edited]
permissions:
models: read
issues: write
pull-requests: write
discussions: write
jobs:
moderate:
runs-on: ubuntu-latest
steps:
- name: AI Moderator
uses: github/ai-moderator@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
-22
View File
@@ -1,22 +0,0 @@
name: Auto Label Issue
on:
issues:
types: [opened]
permissions:
issues: write
contents: read
jobs:
labeler:
runs-on: ubuntu-latest
steps:
- name: Issue Labeler
uses: github/issue-labeler@v3.4
with:
configuration-path: .github/labeler.yml
enable-versioned-regex: false
include-title: 1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-121
View File
@@ -1,121 +0,0 @@
name: Benchmark
concurrency:
group: '${{ github.workflow }}-${{ github.ref }}'
cancel-in-progress: true
env:
IMAGE: appwrite-dev
CACHE_KEY: 'appwrite-dev-${{ github.event.pull_request.head.sha }}'
'on':
- pull_request
jobs:
setup:
name: Setup & Build Appwrite Image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Appwrite
uses: docker/build-push-action@v6
with:
context: .
push: false
tags: '${{ env.IMAGE }}'
load: true
cache-from: type=gha
cache-to: 'type=gha,mode=max'
outputs: 'type=docker,dest=/tmp/${{ env.IMAGE }}.tar'
build-args: |
DEBUG=false
TESTING=true
VERSION=dev
- name: Cache Docker Image
uses: actions/cache@v4
with:
key: '${{ env.CACHE_KEY }}'
path: '/tmp/${{ env.IMAGE }}.tar'
benchmarking:
name: Benchmark
runs-on: ubuntu-latest
needs: setup
permissions:
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: '${{ env.CACHE_KEY }}'
path: '/tmp/${{ env.IMAGE }}.tar'
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
sed -i 's/traefik/localhost/g' .env
docker load --input /tmp/${{ env.IMAGE }}.tar
docker compose up -d
sleep 10
- name: Install Oha
run: |
echo "deb [signed-by=/usr/share/keyrings/azlux-archive-keyring.gpg] http://packages.azlux.fr/debian/ stable main" | sudo tee /etc/apt/sources.list.d/azlux.list
sudo wget -O /usr/share/keyrings/azlux-archive-keyring.gpg https://azlux.fr/repo.gpg
sudo apt update
sudo apt install oha
oha --version
- name: Benchmark PR
run: 'oha -z 180s http://localhost/v1/health/version --output-format json > benchmark.json'
- name: Cleaning
run: docker compose down -v
- name: Installing latest version
run: |
rm docker-compose.yml
rm .env
curl https://appwrite.io/install/compose -o docker-compose.yml
curl https://appwrite.io/install/env -o .env
sed -i 's/_APP_OPTIONS_ABUSE=enabled/_APP_OPTIONS_ABUSE=disabled/g' .env
docker compose up -d
sleep 10
- name: Benchmark Latest
run: oha -z 180s http://localhost/v1/health/version --output-format json > benchmark-latest.json
- name: Prepare comment
run: |
echo '## :sparkles: Benchmark results' > benchmark.txt
echo ' ' >> benchmark.txt
echo "- Requests per second: $(jq -r '.summary.requestsPerSec|tonumber?|floor|tostring|[while(length>0;.[:-3])|.[-3:]]|reverse|join(",")' benchmark.json)" >> benchmark.txt
echo "- Requests with 200 status code: $(jq -r '.statusCodeDistribution."200"|tostring|[while(length>0;.[:-3])|.[-3:]]|reverse|join(",")' benchmark.json)" >> benchmark.txt
echo "- P99 latency: $(jq -r '.latencyPercentiles.p99' benchmark.json )" >> benchmark.txt
echo " " >> benchmark.txt
echo " " >> benchmark.txt
echo "## :zap: Benchmark Comparison" >> benchmark.txt
echo " " >> benchmark.txt
echo "| Metric | This PR | Latest version | " >> benchmark.txt
echo "| --- | --- | --- | " >> benchmark.txt
echo "| RPS | $(jq -r '.summary.requestsPerSec|tonumber?|floor|tostring|[while(length>0;.[:-3])|.[-3:]]|reverse|join(",")' benchmark.json) | $(jq -r '.summary.requestsPerSec|tonumber|floor|tostring|[while(length>0;.[:-3])|.[-3:]]|reverse|join(",")' benchmark-latest.json) | " >> benchmark.txt
echo "| 200 | $(jq -r '.statusCodeDistribution."200"|tostring|[while(length>0;.[:-3])|.[-3:]]|reverse|join(",")' benchmark.json) | $(jq -r '.statusCodeDistribution."200"|tostring|[while(length>0;.[:-3])|.[-3:]]|reverse|join(",")' benchmark-latest.json) | " >> benchmark.txt
echo "| P99 | $(jq -r '.latencyPercentiles.p99' benchmark.json ) | $(jq -r '.latencyPercentiles.p99' benchmark-latest.json ) | " >> benchmark.txt
- name: Save results
uses: actions/upload-artifact@v4
if: '${{ !cancelled() }}'
with:
name: benchmark.json
path: benchmark.json
retention-days: 7
- name: Find Comment
if: github.event.pull_request.head.repo.full_name == github.repository
uses: peter-evans/find-comment@v3
id: fc
with:
issue-number: '${{ github.event.pull_request.number }}'
comment-author: 'github-actions[bot]'
body-includes: Benchmark results
- name: Comment on PR
if: github.event.pull_request.head.repo.full_name == github.repository
uses: peter-evans/create-or-update-comment@v4
with:
comment-id: '${{ steps.fc.outputs.comment-id }}'
issue-number: '${{ github.event.pull_request.number }}'
body-path: benchmark.txt
edit-mode: replace
-19
View File
@@ -1,19 +0,0 @@
name: Check dependencies
# Adapted from https://google.github.io/osv-scanner/github-action/#scan-on-pull-request
on:
pull_request:
branches: [main, 1.*.x]
merge_group:
branches: [main, 1.*.x]
permissions:
# Require writing security events to upload SARIF file to security tab
security-events: write
# Only need to read contents
contents: read
jobs:
scan-pr:
uses: "google/osv-scanner-action/.github/workflows/osv-scanner-reusable.yml@v1.7.1"
-39
View File
@@ -1,39 +0,0 @@
name: Cleanup Cache
on:
pull_request:
types:
- closed
jobs:
cleanup:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Cleanup
run: |
gh extension install actions/gh-actions-cache
REPO=${{ github.repository }}
BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge"
while true
do
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 )
if [ -z "$cacheKeysForPR" ]
then
break
fi
## Setting this to not fail the workflow while deleting cache keys.
set +e
for cacheKey in $cacheKeysForPR
do
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
done
done
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+1 -6
View File
@@ -13,13 +13,8 @@ on:
schedule:
- cron: '0 16 * * 0'
permissions:
contents: read
jobs:
analyze:
permissions:
security-events: write
name: Analyze
runs-on: ubuntu-latest
@@ -34,7 +29,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
File diff suppressed because it is too large Load Diff
-85
View File
@@ -1,85 +0,0 @@
---
on:
schedule:
- cron: '0 0 * * *' # Run daily at midnight UTC
workflow_dispatch: # Enable manual trigger
stop-after: +30d # workflow will no longer trigger after 30 days. Remove this and recompile to run indefinitely
reaction: eyes
permissions: read-all
network: defaults
safe-outputs:
add-labels:
max: 5
add-comment:
tools:
web-fetch:
web-search:
timeout_minutes: 10
source: githubnext/agentics/workflows/issue-triage.md@0837fb7b24c3b84ee77fb7c8cfa8735c48be347a
---
# Agentic Triage
<!-- Note - this file can be customized to your needs. Replace this section directly, or add further instructions here. After editing run 'gh aw compile' -->
You're a triage assistant for GitHub issues. Your task is to analyze issues created in the last 24 hours and perform initial triage tasks for each of them.
1. First, use the `list_issues` tool to retrieve all issues created in the last 24 hours. Filter issues by using the `since` parameter with a timestamp from 24 hours ago (calculate: current time minus 24 hours in ISO 8601 format).
2. For each issue found, perform the following triage tasks:
3. Select appropriate labels for the issue from the provided list.
4. Retrieve the issue content using the `get_issue` tool. If the issue is obviously spam, or generated by bot, or something else that is not an actual issue to be worked on, then add an issue comment to the issue with a one sentence analysis and move to the next issue.
5. Next, use the GitHub tools to gather additional context about the issue:
- Fetch the list of labels available in this repository. Use 'gh label list' bash command to fetch the labels. This will give you the labels you can use for triaging issues.
- Fetch any comments on the issue using the `get_issue_comments` tool
- **Search for duplicate and related issues**: Use the `search_issues` tool to find similar issues by searching for key terms from the issue title and description. Look for both open and closed issues that might be related or duplicates.
6. Analyze the issue content, considering:
- The issue title and description
- The type of issue (bug report, feature request, question, etc.)
- Technical areas mentioned
- Severity or priority indicators
- User impact
- Components affected
7. Write notes, ideas, nudges, resource links, debugging strategies and/or reproduction steps for the team to consider relevant to the issue.
8. Select appropriate labels from the available labels list provided above:
- Choose labels that accurately reflect the issue's nature
- Be specific but comprehensive
- Select priority labels if you can determine urgency (high-priority, med-priority, or low-priority)
- Consider platform labels (android, ios) if applicable
- Search for similar issues, and if you find similar issues consider using a "duplicate" label if appropriate. Only do so if the issue is a duplicate of another OPEN issue.
- Only select labels from the provided list above
- It's okay to not add any labels if none are clearly applicable
9. Apply the selected labels:
- Use the `update_issue` tool to apply the labels to the issue
- DO NOT communicate directly with users
- If no labels are clearly applicable, do not apply any labels
10. Add an issue comment to the issue with your analysis:
- Start with "ЁЯОп Agentic Issue Triage"
- Provide a brief summary of the issue
- **If duplicate or related issues were found**, add a section listing them with links (e.g., "### ЁЯФЧ Potentially Related Issues" followed by a bullet list of related issues with their titles and links)
- Mention any relevant details that might help the team understand the issue better
- Include any debugging strategies or reproduction steps if applicable
- Suggest resources or links that might be helpful for resolving the issue or learning skills related to the issue or the particular area of the codebase affected by it
- Mention any nudges or ideas that could help the team in addressing the issue
- If you have possible reproduction steps, include them in the comment
- If you have any debugging strategies, include them in the comment
- If appropriate break the issue down to sub-tasks and write a checklist of things to do.
- Use collapsed-by-default sections in the GitHub markdown to keep the comment tidy. Collapse all sections except the short main summary at the top.
11. After processing all issues, provide a summary of how many issues were triaged. If no issues were created in the last 24 hours, simply note that no new issues needed triage.
+1 -5
View File
@@ -12,16 +12,12 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
fetch-depth: 2
- run: git checkout HEAD^2
- name: Validate composer.json and composer.lock
run: |
docker run --rm -v $PWD:/app composer sh -c \
"composer validate"
- name: Run Linter
run: |
docker run --rm -v $PWD:/app composer sh -c \
-47
View File
@@ -1,47 +0,0 @@
name: Nightly Security Scan
on:
schedule:
- cron: '0 0 * * *' # 12am UTC daily runtime
workflow_dispatch:
jobs:
scan-image:
name: Scan Docker Image
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Build the Docker image
run: docker build . -t appwrite_image:latest
- name: Run Trivy vulnerability scanner on image
uses: aquasecurity/trivy-action@0.20.0
with:
image-ref: 'appwrite_image:latest'
format: 'sarif'
output: 'trivy-image-results.sarif'
ignore-unfixed: 'false'
severity: 'CRITICAL,HIGH'
- name: Upload Docker Image Scan Results
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-image-results.sarif'
scan-code:
name: Scan Code
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4
- name: Run Trivy vulnerability scanner on filesystem
uses: aquasecurity/trivy-action@0.20.0
with:
scan-type: 'fs'
format: 'sarif'
output: 'trivy-fs-results.sarif'
severity: 'CRITICAL,HIGH'
- name: Upload Code Scan Results
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: 'trivy-fs-results.sarif'
-105
View File
@@ -1,105 +0,0 @@
name: PR Security Scan
on:
pull_request_target:
types: [opened, synchronize, reopened]
jobs:
scan:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: Check out code
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
fetch-depth: 0
submodules: 'recursive'
- name: Build the Docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
load: true
tags: pr_image:${{ github.sha }}
- name: Run Trivy vulnerability scanner on image
uses: aquasecurity/trivy-action@0.20.0
with:
image-ref: 'pr_image:${{ github.sha }}'
format: 'json'
output: 'trivy-image-results.json'
severity: 'CRITICAL,HIGH'
- name: Run Trivy vulnerability scanner on source code
uses: aquasecurity/trivy-action@0.20.0
with:
scan-type: 'fs'
scan-ref: '.'
format: 'json'
output: 'trivy-fs-results.json'
severity: 'CRITICAL,HIGH'
- name: Process Trivy scan results
id: process-results
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
let commentBody = '## Security Scan Results for PR\n\n';
function processResults(results, title) {
let sectionBody = `### ${title}\n\n`;
if (results.Results && results.Results.some(result => result.Vulnerabilities && result.Vulnerabilities.length > 0)) {
sectionBody += '| Package | Version | Vulnerability | Severity |\n';
sectionBody += '|---------|---------|----------------|----------|\n';
const uniqueVulns = new Set();
results.Results.forEach(result => {
if (result.Vulnerabilities) {
result.Vulnerabilities.forEach(vuln => {
const vulnKey = `${vuln.PkgName}-${vuln.InstalledVersion}-${vuln.VulnerabilityID}`;
if (!uniqueVulns.has(vulnKey)) {
uniqueVulns.add(vulnKey);
sectionBody += `| ${vuln.PkgName} | ${vuln.InstalledVersion} | [${vuln.VulnerabilityID}](https://nvd.nist.gov/vuln/detail/${vuln.VulnerabilityID}) | ${vuln.Severity} |\n`;
}
});
}
});
} else {
sectionBody += 'ЁЯОЙ No vulnerabilities found!\n';
}
return sectionBody;
}
try {
const imageResults = JSON.parse(fs.readFileSync('trivy-image-results.json', 'utf8'));
const fsResults = JSON.parse(fs.readFileSync('trivy-fs-results.json', 'utf8'));
commentBody += processResults(imageResults, "Docker Image Scan Results");
commentBody += '\n';
commentBody += processResults(fsResults, "Source Code Scan Results");
} catch (error) {
commentBody += `There was an error while running the security scan: ${error.message}\n`;
commentBody += 'Please contact the core team for assistance.';
}
core.setOutput('comment-body', commentBody);
- name: Find Comment
uses: peter-evans/find-comment@v3
id: fc
with:
issue-number: ${{ github.event.pull_request.number }}
comment-author: 'github-actions[bot]'
body-includes: Security Scan Results for PR
- name: Create or update comment
uses: peter-evans/create-or-update-comment@v3
with:
issue-number: ${{ github.event.pull_request.number }}
comment-id: ${{ steps.fc.outputs.comment-id }}
body: ${{ steps.process-results.outputs.comment-body }}
edit-mode: replace
-51
View File
@@ -1,51 +0,0 @@
name: "Build and Publish Appwrite Images for Cloud"
on:
push:
tags:
- cl-*
jobs:
build-publish:
name: Build and Publish
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 2
submodules: recursive
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v4
with:
images: appwrite/cloud
tags: |
type=ref,event=tag
- name: Build & Publish to DockerHub
uses: docker/build-push-action@v4
with:
context: .
platforms: linux/amd64,linux/arm64
build-args: |
VERSION=${{ steps.meta.outputs.version }}
VITE_APPWRITE_GROWTH_ENDPOINT=https://growth.appwrite.io/v1
VITE_GA_PROJECT=G-L7G2B6PLDS
VITE_CONSOLE_MODE=cloud
push: true
tags: ${{ steps.meta.outputs.tags }}
+2 -2
View File
@@ -11,7 +11,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
@@ -28,7 +28,7 @@ jobs:
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ vars.DOCKERHUB_USERNAME }}
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
-54
View File
@@ -1,54 +0,0 @@
name: "SDK Preview"
on:
pull_request:
paths:
- 'app/config/specs/*-latest-console.json'
workflow_dispatch:
inputs:
platform:
type: choice
description: "Platform to build"
options:
- client
- server
jobs:
setup:
name: Setup & Build SDK
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Set SDK type
id: set-sdk
run: |
PLATFORM="${{ github.event.inputs.platform }}"
if [ -z "$PLATFORM" ]; then
PLATFORM="console"
fi
if [ "$PLATFORM" = "server" ]; then
echo "sdk_type=nodejs" >> $GITHUB_OUTPUT
else
echo "sdk_type=web" >> $GITHUB_OUTPUT
fi
echo "platform=$PLATFORM" >> $GITHUB_OUTPUT
- name: Load and Start Appwrite
run: |
docker compose build
docker compose up -d
docker compose exec appwrite sdks --platform=${{ steps.set-sdk.outputs.platform }} --sdk=${{ steps.set-sdk.outputs.sdk_type }} --version=latest --git=no
sudo chown -R $USER:$USER ./app/sdks/${{ steps.set-sdk.outputs.platform }}-${{ steps.set-sdk.outputs.sdk_type }}
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Build and Publish SDK
working-directory: ./app/sdks/console-web
run: |
npm install
npm run build
npx pkg-pr-new publish --comment=update
-23
View File
@@ -1,23 +0,0 @@
name: Mark stale issues
on:
schedule:
- cron: "0 0 * * *" # Midnight Runtime
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: "This issue has been labeled as a 'question', indicating that it requires additional information from the requestor. It has been inactive for 7 days. If no further activity occurs, this issue will be closed in 14 days."
stale-issue-label: "stale"
days-before-stale: 7
days-before-close: 14
remove-stale-when-updated: true
close-issue-message: "This issue has been closed due to inactivity. If you still require assistance, please provide the requested information."
close-issue-reason: "not_planned"
operations-per-run: 100
only-labels: "question"
-21
View File
@@ -1,21 +0,0 @@
name: "Static code analysis"
on: [pull_request]
jobs:
lint:
name: CodeQL
runs-on: ubuntu-latest
steps:
- name: Check out the repo
uses: actions/checkout@v4
- name: Run CodeQL
run: |
docker run --rm -v $PWD:/app composer:2.6 sh -c \
"composer install --profile --ignore-platform-reqs && composer check"
- name: Run Locale check
run: |
docker run --rm -v $PWD:/app node:24-alpine sh -c \
"cd /app/.github/workflows/static-analysis/locale && node index.js"
@@ -1,115 +0,0 @@
/*
* Look into all local files, and collect unique keys.
* Ensure fallback locale (English) has translation for all keys.
* If configured as `const strict = true`, all locales will be checked to include all keys.
*/
import { readdir, readFile } from "fs/promises";
import { join, dirname } from "path";
import { fileURLToPath } from "url";
const config = {
strict: false,
fallbackLocale: "en.json",
};
(async () => {
try {
// Prepare current directory equivalent in ES modules
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const translationsPath = join(
__dirname,
"../../../../app/config/locale/translations",
);
const files = (await readdir(translationsPath)).filter((file) =>
file.endsWith(".json"),
);
if (files.length === 0) {
console.error("No translation files found in ", translationsPath);
process.exit(1);
}
// Check if fallback locale exists
if (!files.includes(config.fallbackLocale)) {
console.error(`Fallback locale file ${config.fallbackLocale} not found`);
process.exit(1);
}
console.log(
`Found ${files.length} translation files in ${translationsPath}`,
);
// Collect all unique keys from all translation files
const allKeys = new Set();
for (const file of files) {
const filePath = join(translationsPath, file);
const content = await readFile(filePath, "utf8");
const translations = JSON.parse(content);
// Add all keys from this file
Object.keys(translations).forEach((key) => allKeys.add(key));
}
console.log(`Total unique keys found across all locales: ${allKeys.size}`);
const localesToCheck = [];
if (config.strict) {
localesToCheck.push(...files);
} else {
localesToCheck.push(config.fallbackLocale);
}
let errorsCount = 0;
let missingLocaleCount = 0;
for (const localeToCheck of localesToCheck) {
// Read locale
const path = join(translationsPath, localeToCheck);
const content = await readFile(path, "utf8");
const translations = JSON.parse(content);
// Check for missing keys in the locale
const keys = new Set(Object.keys(translations));
console.log(`Keys in locale (${localeToCheck}): ${keys.size}`);
const missingKeys = [];
for (const key of allKeys) {
if (!keys.has(key)) {
missingKeys.push(key);
}
}
if (missingKeys.length > 0) {
console.error(
`\nERROR: Fallback locale (${localeToCheck}) is missing ${missingKeys.length} key(s):`,
);
missingKeys.sort().forEach((key) => {
console.error(` - ${key}`);
});
console.error(
`\nTo fix this issue, add the missing keys to ${translationsPath}/${localeToCheck}`,
);
errorsCount++;
missingLocaleCount += missingKeys.length;
} else {
console.log(
`\nSUCCESS: Fallback locale (${localeToCheck}) contains all ${allKeys.size} keys.`,
);
}
}
if (errorsCount > 0) {
console.log(`\n${missingLocaleCount} locales missing found across ${errorsCount} locales.`);
process.exit(1);
}
} catch (error) {
console.error("Unexpected error.");
console.error(error);
process.exit(1);
}
})();
@@ -1,13 +0,0 @@
{
"name": "static-analysis-locale",
"version": "1.0.0",
"type": "module",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": ""
}
+41 -504
View File
@@ -4,518 +4,55 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
IMAGE: appwrite-dev
CACHE_KEY: appwrite-dev-${{ github.event.pull_request.head.sha }}
on:
pull_request:
workflow_dispatch:
inputs:
response_format:
description: 'Response format version to test (e.g., 1.5.0, 1.4.0)'
required: false
type: string
default: ''
on: [pull_request]
jobs:
check_database_changes:
name: Check if utopia-php/database changed
tests:
name: Unit & E2E
runs-on: ubuntu-latest
outputs:
database_changed: ${{ steps.check.outputs.database_changed }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Fetch base branch
run: git fetch origin ${{ github.event.pull_request.base.ref }}
- name: Check for utopia-php/database changes
id: check
run: |
if git diff origin/${{ github.event.pull_request.base.ref }} HEAD -- composer.lock | grep -q '"name": "utopia-php/database"'; then
echo "Database version changed, going to run all mode tests."
echo "database_changed=true" >> "$GITHUB_ENV"
echo "database_changed=true" >> "$GITHUB_OUTPUT"
else
echo "database_changed=false" >> "$GITHUB_ENV"
echo "database_changed=false" >> "$GITHUB_OUTPUT"
fi
setup:
name: Setup & Build Appwrite Image
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build Appwrite
uses: docker/build-push-action@v6
with:
context: .
push: false
tags: ${{ env.IMAGE }}
load: true
cache-from: type=gha
cache-to: type=gha,mode=max
outputs: type=docker,dest=/tmp/${{ env.IMAGE }}.tar
build-args: |
DEBUG=false
TESTING=true
VERSION=dev
- name: Cache Docker Image
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
unit_test:
name: Unit Test
runs-on: ubuntu-latest
needs: setup
steps:
- name: checkout
uses: actions/checkout@v4
- name: Checkout repository
uses: actions/checkout@v3
with:
# We must fetch at least the immediate parents so that if this is
# a pull request then we can checkout the head.
fetch-depth: 2
# Fetch submodules
submodules: recursive
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
# If this run was triggered by a pull request event, then checkout
# the head of the pull request instead of the merge commit.
- run: git checkout HEAD^2
if: ${{ github.event_name == 'pull_request' }}
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
docker compose up -d
sleep 10
# This is a separate action that sets up buildx runner
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Logs
run: docker compose logs appwrite
- name: Build Appwrite
uses: docker/build-push-action@v3
with:
context: .
push: false
tags: appwrite-dev
load: true
cache-from: type=gha
cache-to: type=gha,mode=max
build-args: |
DEBUG=false
TESTING=true
VERSION=dev
- name: Doctor
run: docker compose exec -T appwrite doctor
- name: Start Appwrite
run: |
docker compose up -d
sleep 30
- name: Environment Variables
run: docker compose exec -T appwrite vars
- name: Doctor
run: docker compose exec -T appwrite doctor
- name: Run Unit Tests
run: |
docker compose exec \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/unit
- name: Environment Variables
run: docker compose exec -T appwrite vars
e2e_general_test:
name: E2E General Test
runs-on: ubuntu-latest
needs: setup
steps:
- name: checkout
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
docker compose up -d
sleep 10
- name: Wait for Open Runtimes
timeout-minutes: 3
run: |
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
echo "Waiting for Executor to come online"
sleep 1
done
- name: Run General Tests
run: |
docker compose exec -T \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/General --debug
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
e2e_service_test:
name: E2E Service Test
runs-on: ubuntu-latest
needs: setup
strategy:
fail-fast: false
matrix:
service: [
Account,
Avatars,
Console,
Databases/Legacy,
Databases/TablesDB,
Functions,
FunctionsSchedule,
GraphQL,
Health,
Locale,
Projects,
Realtime,
Sites,
Proxy,
Storage,
Tokens,
Teams,
Users,
Webhooks,
VCS,
Messaging,
Migrations
]
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
sed -i 's|^_APP_BROWSER_HOST=.*|_APP_BROWSER_HOST=http://invalid-browser/v1|' .env
docker compose up -d
sleep 30
- name: Wait for Open Runtimes
timeout-minutes: 3
run: |
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
echo "Waiting for Executor to come online"
sleep 1
done
- name: Run ${{ matrix.service }} tests with Project table mode
run: |
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude-group devKeys,screenshots
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
e2e_shared_mode_test:
name: E2E Shared Mode Service Test
runs-on: ubuntu-latest
needs: [ setup, check_database_changes ]
if: needs.check_database_changes.outputs.database_changed == 'true'
strategy:
fail-fast: false
matrix:
service:
[
Account,
Avatars,
Console,
Databases/Legacy,
Databases/TablesDB,
Functions,
FunctionsSchedule,
GraphQL,
Health,
Locale,
Projects,
Realtime,
Sites,
Proxy,
Storage,
Teams,
Users,
Webhooks,
VCS,
Messaging,
Migrations,
Tokens
]
tables-mode: [
'Shared V1',
'Shared V2',
]
steps:
- name: checkout
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
docker compose up -d
sleep 30
- name: Wait for Open Runtimes
timeout-minutes: 3
run: |
while ! docker compose logs openruntimes-executor | grep -q "Executor is ready."; do
echo "Waiting for Executor to come online"
sleep 1
done
- name: Run ${{ matrix.service }} tests with ${{ matrix.tables-mode }} table mode
run: |
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude-group devKeys,screenshots
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
e2e_dev_keys:
name: E2E Service Test (Dev Keys)
runs-on: ubuntu-latest
needs: setup
steps:
- name: checkout
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
sed -i 's/_APP_OPTIONS_ABUSE=disabled/_APP_OPTIONS_ABUSE=enabled/' .env
docker compose up -d
sleep 30
- name: Run Projects tests with dev keys in dedicated table mode
run: |
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=devKeys
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
e2e_dev_keys_shared_mode:
name: E2E Shared Mode Service Test (Dev Keys)
runs-on: ubuntu-latest
needs: [ setup, check_database_changes ]
if: needs.check_database_changes.outputs.database_changed == 'true'
strategy:
fail-fast: false
matrix:
tables-mode: [
'Shared V1',
'Shared V2',
]
steps:
- name: checkout
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
sed -i 's/_APP_OPTIONS_ABUSE=disabled/_APP_OPTIONS_ABUSE=enabled/' .env
docker compose up -d
sleep 30
- name: Run Projects tests with dev keys in ${{ matrix.tables-mode }} table mode
run: |
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Projects --debug --group=devKeys
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
e2e_screenshots_keys:
name: E2E Service Test (Site Screenshots)
runs-on: ubuntu-latest
needs: setup
steps:
- name: checkout
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
sed -i 's/_APP_OPTIONS_ABUSE=disabled/_APP_OPTIONS_ABUSE=enabled/' .env
docker compose up -d
sleep 30
- name: Run Site tests with browser connected in dedicated table mode
run: |
echo "Keeping original value of _APP_BROWSER_HOST"
echo "Using project tables"
export _APP_DATABASE_SHARED_TABLES=
export _APP_DATABASE_SHARED_TABLES_V1=
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
e2e_screenshots_shared_mode:
name: E2E Shared Mode Service Test (Site Screenshots)
runs-on: ubuntu-latest
needs: [ setup, check_database_changes ]
if: needs.check_database_changes.outputs.database_changed == 'true'
strategy:
fail-fast: false
matrix:
tables-mode: [
'Shared V1',
'Shared V2',
]
steps:
- name: checkout
uses: actions/checkout@v4
- name: Load Cache
uses: actions/cache@v4
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
sed -i 's/_APP_OPTIONS_ABUSE=disabled/_APP_OPTIONS_ABUSE=enabled/' .env
docker compose up -d
sleep 30
- name: Run Site tests with browser connected in ${{ matrix.tables-mode }} table mode
run: |
echo "Keeping original value of _APP_BROWSER_HOST"
if [ "${{ matrix.tables-mode }}" == "Shared V1" ]; then
echo "Using shared tables V1"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=database_db_main
elif [ "${{ matrix.tables-mode }}" == "Shared V2" ]; then
echo "Using shared tables V2"
export _APP_DATABASE_SHARED_TABLES=database_db_main
export _APP_DATABASE_SHARED_TABLES_V1=
fi
docker compose exec -T \
-e _APP_DATABASE_SHARED_TABLES \
-e _APP_DATABASE_SHARED_TABLES_V1 \
-e _APP_E2E_RESPONSE_FORMAT="${{ github.event.inputs.response_format }}" \
appwrite test /usr/src/code/tests/e2e/Services/Sites --debug --group=screenshots
- name: Failure Logs
if: failure()
run: |
echo "=== Appwrite Worker Builds Logs ==="
docker compose logs appwrite-worker-builds
echo "=== OpenRuntimes Executor Logs ==="
docker compose logs openruntimes-executor
- name: Run Tests
run: docker compose exec -T appwrite test --debug
-5
View File
@@ -3,18 +3,13 @@
/node_modules/
/tests/resources/storage/
/tests/resources/functions/**/code.tar.gz
/tests/resources/sites/**/code.tar.gz
/app/sdks/*
/.idea/
!/.idea/workspace.xml
!/.idea/php.xml
.DS_Store
.php_cs.cache
.phpactor.json
debug/
app/sdks
dev/yasd_init.php
.phpunit.result.cache
Makefile
appwrite.config.json
/.zed/
+4
View File
@@ -0,0 +1,4 @@
[submodule "app/console"]
path = app/console
url = https://github.com/appwrite/console
branch = 2.3.4
+10 -2
View File
@@ -7,9 +7,8 @@ tasks:
docker pull composer
command: |
docker run --rm --interactive --tty \
--user "$(id -u):$(id -g)" \
--volume $PWD:/app \
composer install \
composer update \
--ignore-platform-reqs \
--optimize-autoloader \
--no-plugins \
@@ -18,9 +17,18 @@ tasks:
ports:
- port: 8080
onOpen: open-preview
visibility: public
vscode:
extensions:
- ms-azuretools.vscode-docker
- zobo.php-intellisense
github:
# https://www.gitpod.io/docs/prebuilds#github-specific-configuration
prebuilds:
# enable for pull requests coming from forks (defaults to false)
pullRequestsFromForks: true
# add a check to pull requests (defaults to true)
addCheck: false
+3 -1788
View File
File diff suppressed because it is too large Load Diff
+20 -248
View File
@@ -1,45 +1,16 @@
# Contributing
We would :heart: you to contribute to Appwrite and help make it better! We want contributing to Appwrite to be fun, enjoyable, and educational for anyone and everyone. All contributions are welcome, including issues, and new docs, as well as updates and tweaks, blog posts, workshops, and more.
## Here for Hacktoberfest?
If you're here to contribute during Hacktoberfest, we're so happy to see you here. Appwrite has been a long-time participant of Hacktoberfest and we welcome you, whatever your experience level. This year, we're **only taking contributions for issues tagged** `hacktoberfest`, so we can focus our resources to support your contributions.
You can [find issues using this query](https://github.com/search?q=org%3Aappwrite+is%3Aopen+type%3Aissue+label%3Ahacktoberfest&type=issues).
We would тЭдя╕П you to contribute to Appwrite and help make it better! We want contributing to Appwrite to be fun, enjoyable, and educational for anyone and everyone. All contributions are welcome, including issues, and new docs, as well as updates and tweaks, blog posts, workshops, and more.
## How to Start?
Welcome! We're excited that you're interested in contributing to Appwrite. To make sure your time is valued and your contributions are successful, please follow these steps before writing any code:
### ЁЯФН Step 1: Find an Issue
Browse open issues and look for ones labeled [good first issue](https://github.com/search?q=org%3Aappwrite+is%3Aopen+type%3Aissue+label%3A%22good+first+issue%22&type=issues) or [help wanted](https://github.com/search?q=org%3Aappwrite+is%3Aopen+type%3Aissue+label%3A%22help+wanted%22&type=issues).
If you're not sure which issue to pick, ask in our тБа[maintainers channel](https://discord.com/channels/564160730845151244/636852860709240842) on Discord.
### ЁЯУЭ Step 2: Ask to Be Assigned
Before working on an issue, comment on the GitHub issue asking to be assigned. This prevents multiple people working on the same task.
Then, create a thread in the тБа[maintainers channel](https://discord.com/channels/564160730845151244/636852860709240842) on Discord with a link to the issue.
Our team is small and may not see your GitHub comment right away - posting in the тБа[maintainers channel](https://discord.com/channels/564160730845151244/636852860709240842) ensures it gets seen.
### ЁЯТм Step 3: DonтАЩt Submit Random PRs
If you're not working on an assigned issue, create a GitHub issue first.
PRs submitted without context or discussion may not align with our roadmap and may be closed without review.
### тЪая╕П Please Note
WeтАЩre a very small team managing a large project. Many PRs are submitted, and while we appreciate every effort, we can only review contributions that follow the process above. This helps us keep things fair and organized.
If you are worried or donтАЩt know where to start, check out the next section that explains what kind of help we could use and where you can get involved. You can send your questions to [@appwrite](https://twitter.com/appwrite) on Twitter or to anyone from the [Appwrite team on Discord](https://appwrite.io/discord). You can also submit an issue, and a maintainer can guide you!
## Code of Conduct
Help us keep Appwrite open and inclusive. Please read and follow our [Code of Conduct](https://github.com/appwrite/.github/blob/main/CODE_OF_CONDUCT.md).
## Submit a Pull Request :rocket:
## Submit a Pull Request ЁЯЪА
Branch naming convention is as following
@@ -89,13 +60,13 @@ Now, go a step further by running the linter using the following command to manu
composer lint <your file path>
```
This will give you a list of errors to rectify. If you need more information on the errors, you can pass in additional command line arguments to get more verbose information. More lists of available arguments can be found [on PHP_Codesniffer usage Wiki](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Usage). A very useful command line argument is `--report=diff`. This will give you the expected changes by the linter for easy fixing of formatting issues.
This will give you a list of errors to rectify. If you need more information on the errors, you can pass in additional command line arguments to get more verbose information. More lists of available arguments can be found [here](https://github.com/squizlabs/PHP_CodeSniffer/wiki/Usage). A very useful command line argument is `--report=diff`. This will give you the expected changes by the linter for easy fixing of formatting issues.
```bash
composer lint --report=diff <your file path>
```
5. Push changes to GitHub
5. Push changes to GitHub.
```
$ git push origin [name_of_your_new_branch]
@@ -113,7 +84,7 @@ $ git push origin [name_of_your_new_branch]
To set up a working **development environment**, just fork the project git repository and install the backend and frontend dependencies using the proper package manager and create run the docker-compose stack.
> If you just want to install Appwrite for day-to-day use and not as a contributor, you can reference the [installation guide](https://github.com/appwrite/appwrite#installation), the [getting started guide](https://appwrite.io/docs/quick-starts), or the main [README](README.md) file.
> If you just want to install Appwrite for day-to-day use and not as a contributor, you can reference the [installation guide](https://github.com/appwrite/appwrite#installation), the [getting started guide](https://appwrite.io/docs/getting-started-for-web), or the main [README](README.md) file.
```bash
git clone git@github.com:[YOUR_FORK_HERE]/appwrite.git
@@ -138,9 +109,7 @@ docker run --rm --interactive --tty \
### User Interface
Appwrite's UI is built with [Svelte](https://svelte.dev/), [Svelte Kit](https://kit.svelte.dev/), and the [Pink Design](https://github.com/appwrite/pink) component library. You can find the source code in the [Appwrite Console](https://github.com/appwrite/console) repository.
To contribute to the UI, head to the [Contribution Guide](https://github.com/appwrite/console/blob/main/CONTRIBUTING.md) of Appwrite Console.
Appwrite uses an internal micro-framework called Litespeed.js to build simple UI components in vanilla JS and [less](http://lesscss.org/) for compiling CSS code. To apply any of your changes to the UI, use the `gulp build` or `gulp less` commands, and restart the Appwrite main container to load the new static files to memory using `docker compose restart appwrite`.
### Get Started
@@ -172,14 +141,6 @@ Learn more at our [Technology Stack](#technology-stack) section.
- [Microservices vs Monolithic](https://www.mulesoft.com/resources/api/microservices-vs-monolithic#:~:text=Microservices%20architecture%20vs%20monolithic%20architecture&text=A%20monolithic%20application%20is%20built%20as%20a%20single%20unit.&text=To%20make%20any%20alterations%20to,formally%20with%20business%2Doriented%20APIs.)
- [MVVM](https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel) - Appwrite console architecture
##### Container Namespace Conventions
To keep our services easy to understand within Docker we follow a naming convention for all our containers depending on it's intended use.
`appwrite-worker-X` - Workers (`src/Appwrite/Platform/Workers/*`)
`appwrite-task-X` - Tasks (`src/Appwrite/Platform/Tasks/*`)
Other containes should be named the same as their service, for example `redis` should just be called `redis`.
##### Security
- [Appwrite Auth and ACL](https://github.com/appwrite/appwrite/blob/master/docs/specs/authentication.drawio.svg)
@@ -187,28 +148,6 @@ Other containes should be named the same as their service, for example `redis` s
- [Encryption](https://medium.com/searchencrypt/what-is-encryption-how-does-it-work-e8f20e340537#:~:text=Encryption%20is%20a%20process%20that,%2C%20or%20decrypt%2C%20the%20information.)
- [Hashing](https://searchsqlserver.techtarget.com/definition/hashing#:~:text=Hashing%20is%20the%20transformation%20of,it%20using%20the%20original%20value.)
## Modules
As Appwrite grows, we noticed approach of having all service endpoints in `app/controllers/api/[service].php` is not maintainable. Not only it creates massive files, it also doesnt contain all product's features such as workers or tasks. While there might still be some occurances of those controller files, we avoid it in all new development, and gradually migrate existing controllers to **HTTP modules**.
### HTTP Endpoints
Every endpoint file follows below structure, making it consistent with HTTP REST endpoint path:
```
src/Appwrite/Platform/Modules/[service]/Http/[resource]/[action].php
```
Tips and tricks:
1. If endpoint doesn't have resource, use service name as resource name too
> Example: `Modules/Sites/Http/Sites/Get.php`
2. If there are multiple resources, use then all in folder structure
> Example: `Modules/Sites/Http/Deployments/Builds/Create.php`
3. Action can only be `Get`, `Create`, `Update`, `Delete`┬аor `XList`
## Architecture
Appwrite's current structure is a combination of both [Monolithic](https://en.wikipedia.org/wiki/Monolithic_application) and [Microservice](https://en.wikipedia.org/wiki/Microservices) architectures.
@@ -260,10 +199,12 @@ Appwrite's current structure is a combination of both [Monolithic](https://en.wi
тФВ тФЬтФАтФА Network
тФВ тФЬтФАтФА OpenSSL
тФВ тФЬтФАтФА Promises
тФВ тФЬтФАтФА Resque
тФВ тФЬтФАтФА Specification
тФВ тФЬтФАтФА Task
тФВ тФЬтФАтФА Template
тФВ тФЬтФАтФА URL
тФВ тФЬтФАтФА Usage
тФВ тФФтФАтФА Utopia
тФФтФАтФА tests # End to end & unit tests
тФЬтФАтФА e2e
@@ -297,12 +238,13 @@ Appwrite stack is a combination of a variety of open-source technologies and too
- Redis - for managing cache and in-memory data (currently, we do not use Redis for persistent data).
- MariaDB - for database storage and queries.
- InfluxDB - for managing stats and time-series based data
- Statsd - for sending data over UDP protocol (using Telegraf)
- InfluxDB - for managing stats and time-series based data.
- Statsd - for sending data over UDP protocol (using Telegraf).
- ClamAV - for validating and scanning storage files.
- Imagemagick - for manipulating and managing image media files.
- Webp - for better compression of images on supporting clients.
- SMTP - for sending email messages and alerts.
- Resque - for managing data queues and scheduled tasks over a Redis server.
## Package Managers
@@ -347,7 +289,7 @@ Adding a new dependency should have vital value for the product with minimum pos
## Introducing New Features
We would :sparkling_heart: you to contribute to Appwrite, but we also want to ensure Appwrite is loyal to its vision and mission statement :pray:.
We would ЁЯТЦ you to contribute to Appwrite, but we also want to ensure Appwrite is loyal to its vision and mission statement ЁЯЩП.
For us to find the right balance, please open an issue explaining your ideas before introducing a new pull request.
@@ -355,146 +297,6 @@ This will allow the Appwrite community to sufficiently discuss the new feature v
This is also important for the Appwrite lead developers to be able to provide technical input and potentially a different emphasis regarding the feature design and architecture. Some bigger features might need to go through our [RFC process](https://github.com/appwrite/rfc).
## Adding New Usage Metrics
These are the current metrics we collect usage stats for:
| Metric | Description |
|--------|-------------------------------------------------|
| teams | Total number of teams per project |
| users | Total number of users per project|
| executions | Total number of executions per project |
| databases | Total number of databases per project |
| databases.storage | Total amount of storage used by all databases per project (in bytes) |
| collections | Total number of collections per project |
| {databaseInternalId}.collections | Total number of collections per database|
| {databaseInternalId}.storage | Sum of database storage (in bytes) |
| documents | Total number of documents per project |
| {databaseInternalId}.{collectionInternalId}.documents | Total number of documents per collection |
| {databaseInternalId}.{collectionInternalId}.storage | Sum of database storage used by the collection (in bytes) |
| buckets | Total number of buckets per project |
| files | Total number of files per project |
| {bucketInternalId}.files.storage | Sum of files.storage per bucket (in bytes) |
| functions | Total number of functions per project |
| deployments | Total number of deployments per project |
| builds | Total number of builds per project |
| {resourceType}.{resourceInternalId}.deployments | Total number of deployments per function |
| executions | Total number of executions per project |
| {functionInternalId}.executions | Total number of executions per function |
| files.storage | Sum of files storage per project (in bytes) |
| deployments.storage | Sum of deployments storage per project (in bytes) |
| {resourceType}.{resourceInternalId}.deployments.storage | Sum of deployments storage per function (in bytes) |
| builds.storage | Sum of builds storage per project (in bytes) |
| builds.compute | Sum of compute duration per project (in seconds) |
| {functionInternalId}.builds.storage | Sum of builds storage per function (in bytes) |
| {functionInternalId}.builds.compute | Sum of compute duration per function (in seconds) |
| network.requests | Total number of network requests per project |
| executions.compute | Sum of compute duration per project (in seconds) |
| network.inbound | Sum of network inbound traffic per project (in bytes)|
| network.outbound | Sum of network outbound traffic per project (in bytes)|
> Note: The curly brackets in the metric name represents a template and is replaced with a value when the metric is processed.
Metrics are collected within 3 scopes Daily, monthly, an infinity. Adding new usage metric in order to aggregate usage stats is very simple, but very much dependent on where do you want to collect
statistics ,via API or via background worker. For both cases you will need to add a `const` variable in `app/init.php` under the usage metrics list using the naming convention `METRIC_<RESOURCE_NAME>` as shown below.
```php
// Usage metrics
const METRIC_FUNCTIONS = 'functions';
const METRIC_DEPLOYMENTS = 'deployments';
const METRIC_DEPLOYMENTS_STORAGE = 'deployments.storage';
```
Next follow the appropriate steps below depending on whether you're adding the metric to the API or the worker.
**API**
In file `app/controllers/shared/api.php` On the database listener, add to an existing or create a new switch case. Add a call to the usage worker with your new metric const like so:
```php
case $document->getCollection() === 'teams':
$queueForStatsUsage
->addMetric(METRIC_TEAMS, $value); // per project
break;
```
There are cases when you need to handle metric that has a parent entity, like buckets.
Files are linked to a parent bucket, you should verify you remove the files stats when you delete a bucket.
In that case you need also to handle children removal using addReduce() method call.
```php
case $document->getCollection() === 'buckets': //buckets
$queueForStatsUsage
->addMetric(METRIC_BUCKETS, $value); // per project
if ($event === Database::EVENT_DOCUMENT_DELETE) {
$queueForStatsUsage
->addReduce($document);
}
break;
```
In addition, you will also need to add some logic to the `reduce()` method of the Usage worker located in `/src/Appwrite/Platform/Workers/Usage.php`, like so:
```php
case $document->getCollection() === 'buckets':
$files = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getSequence(), METRIC_BUCKET_ID_FILES)));
$storage = $dbForProject->getDocument('stats', md5(self::INFINITY_PERIOD . str_replace('{bucketInternalId}', $document->getSequence(), METRIC_BUCKET_ID_FILES_STORAGE)));
if (!empty($files['value'])) {
$metrics[] = [
'key' => METRIC_FILES,
'value' => ($files['value'] * -1),
];
}
if (!empty($storage['value'])) {
$metrics[] = [
'key' => METRIC_FILES_STORAGE,
'value' => ($storage['value'] * -1),
];
}
break;
```
**Background worker**
You need to inject the usage queue in the desired worker on the constructor method
```php
/**
* @throws Exception
*/
public function __construct()
{
$this
->desc('Functions worker')
->groups(['functions'])
->inject('message')
->inject('dbForProject')
->inject('queueForFunctions')
->inject('queueForEvents')
->inject('queueForStatsUsage')
->inject('log')
->callback(fn (Message $message, Database $dbForProject, Func $queueForFunctions, Event $queueForEvents, StatsUsage $queueForStatsUsage, Log $log) => $this->action($message, $dbForProject, $queueForFunctions, $queueForEvents, $queueForStatsUsage, $log));
}
```
and then trigger the queue with the new metric like so:
```php
$queueForStatsUsage
->addMetric(METRIC_BUILDS, 1)
->addMetric(METRIC_BUILDS_STORAGE, $build->getAttribute('size', 0))
->addMetric(METRIC_BUILDS_COMPUTE, (int)$build->getAttribute('duration', 0) * 1000)
->addMetric(str_replace('{functionInternalId}', $function->getSequence(), METRIC_FUNCTION_ID_BUILDS), 1)
->addMetric(str_replace('{functionInternalId}', $function->getSequence(), METRIC_FUNCTION_ID_BUILDS_STORAGE), $build->getAttribute('size', 0))
->addMetric(str_replace('{functionInternalId}', $function->getSequence(), METRIC_FUNCTION_ID_BUILDS_COMPUTE), (int)$build->getAttribute('duration', 0) * 1000)
->setProject($project)
->trigger();
```
## Build
To build a new version of the Appwrite server, all you need to do is run the build.sh file like this:
@@ -538,25 +340,13 @@ Things to remember when releasing SDKs:
## Debug
Appwrite uses [XDebug](https://github.com/xdebug/xdebug) debugger, which can be made available during build of Appwrite. You can connect to the debugger using VS Code's [PHP Debug](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug) extension.
Appwrite uses [yasd](https://github.com/swoole/yasd) debugger, which can be made available during build of Appwrite. You can connect to the debugger using VS Code's [PHP Debug](https://marketplace.visualstudio.com/items?itemName=felixfbecker.php-debug) extension.
If you are in PHP Storm you don't need any plugin. Below are the settings required for remote debugger connection:
If you are in PHP Storm you don't need any plugin. Below are the settings required for remote debugger connection:
1. Set **DEBUG** build arg in **appwrite** service in **docker-compose.yml** file.
2. If needed edit the **dev/xdebug.ini** file to your needs.
3. Launch your Appwrite instance while your debugger is listening for connections.
## Profiling
Appwrite uses XDebug [Profiler](https://xdebug.org/docs/profiler) for generating **CacheGrind** files. The generated file would be located in each of the `appwrite` containers inside the `/tmp/xdebug` folder.
To disable the profiler while debugging remove the `,profiler` mode from the `xdebug.ini` file
```diff
zend_extension=xdebug
[xdebug]
-xdebug.mode=develop,debug,profile
+xdebug.mode=develop,debug
```
1. Create an init file.
2. Duplicate **dev/yasd_init.php.stub** file and name it **dev/yasd_init.php**.
3. Set **DEBUG** build arg in **appwrite** service in **docker-compose.yml** file.
### VS Code Launch Configuration
@@ -602,12 +392,6 @@ To run end-2-end tests for a specific service use:
docker compose exec appwrite test /usr/src/code/tests/e2e/Services/[ServiceName]
```
To run one specific test:
```bash
docker compose exec appwrite vendor/bin/phpunit --filter [FunctionName]
```
## Benchmarking
You can use WRK Docker image to benchmark the server performance. Benchmarking is extremely useful when you want to compare how the server behaves before and after a change has been applied. Replace [APPWRITE_HOSTNAME_OR_IP] with your Appwrite server hostname or IP. Note that localhost is not accessible from inside the WRK container.
@@ -659,25 +443,13 @@ If you need to clear the cache, you can do so by running the following command:
docker compose exec redis redis-cli FLUSHALL
```
## Using preview domains locally
Appwrite Functions are automatically given a domain you can visit to execute the function. This domain has format `[SOMETHING].functions.localhost` unless you changed `_APP_DOMAIN_FUNCTIONS` environment variable. This default value works great when running Appwrite locally, but it can be impossible to use preview domains with Cloud woekspaces such as Gitpod or GitHub Codespaces.
To use preview domains on Cloud workspaces, you can visit hostname provided by them, and supply function's preview domain as URL parameter:
```
https://8080-appwrite-appwrite-mjeb3ebilwv.ws-eu116.gitpod.io/ping?preview=672b3c7eab1ac523ccf5.functions.localhost
```
The path was set to `/ping` intentionally. Visiting `/` for preview domains might trigger Console background worker, and trigger redirect to Console without our preview URL param. Visiting different path ensures this doesnt happen.
## Tutorials
From time to time, our team will add tutorials that will help contributors find their way in the Appwrite source code. Below is a list of currently available tutorials:
- [Adding Support for a New OAuth2 Provider](./docs/tutorials/add-oauth2-provider.md)
- [Appwrite Environment Variables](./docs/tutorials/add-environment-variable.md)
- [Running in Production](https://appwrite.io/docs/advanced/self-hosting/production)
- [Running in Production](https://appwrite.io/docs/production)
- [Adding Storage Adapter](./docs/tutorials/add-storage-adapter.md)
## Other Ways to Help
@@ -686,7 +458,7 @@ Pull requests are great, but there are many other ways you can help Appwrite.
### Blogging & Speaking
Blogging, speaking about, or creating tutorials about one of AppwriteтАЩs many features are great ways to get the word out about Appwrite. Mention [@appwrite on Twitter](https://twitter.com/appwrite) and/or [email team@appwrite.io](mailto:team@appwrite.io) so we can give pointers and tips and help you spread the word by promoting your content on the different Appwrite communication channels. Please add your blog posts and videos of talks to our [Awesome Appwrite](https://github.com/appwrite/awesome-appwrite) repo on GitHub.
Blogging, speaking about, or creating tutorials about one of AppwriteтАЩs many features are great ways to get the word out about Appwrite. Mention [@appwrite](https://twitter.com/appwrite) on Twitter and/or [email team@appwrite.io](mailto:team@appwrite.io) so we can give pointers and tips and help you spread the word by promoting your content on the different Appwrite communication channels. Please add your blog posts and videos of talks to our [Awesome Appwrite](https://github.com/appwrite/awesome-appwrite) repo on GitHub.
### Presenting at Meetups
+128 -37
View File
@@ -1,4 +1,4 @@
FROM composer:2.0 AS composer
FROM composer:2.0 as composer
ARG TESTING=false
ENV TESTING=$TESTING
@@ -12,7 +12,24 @@ RUN composer install --ignore-platform-reqs --optimize-autoloader \
--no-plugins --no-scripts --prefer-dist \
`if [ "$TESTING" != "true" ]; then echo "--no-dev"; fi`
FROM appwrite/base:0.10.4 AS final
FROM --platform=$BUILDPLATFORM node:16.14.2-alpine3.15 as node
COPY app/console /usr/local/src/console
WORKDIR /usr/local/src/console
ARG VITE_GA_PROJECT
ARG VITE_CONSOLE_MODE
ARG VITE_APPWRITE_GROWTH_ENDPOINT=https://growth.appwrite.io/v1
ENV VITE_GA_PROJECT=$VITE_GA_PROJECT
ENV VITE_CONSOLE_MODE=$VITE_CONSOLE_MODE
ENV VITE_APPWRITE_GROWTH_ENDPOINT=$VITE_APPWRITE_GROWTH_ENDPOINT
RUN npm ci
RUN npm run build
FROM appwrite/base:0.4.2 as final
LABEL maintainer="team@appwrite.io"
@@ -20,88 +37,162 @@ ARG VERSION=dev
ARG DEBUG=false
ENV DEBUG=$DEBUG
ENV _APP_VERSION=$VERSION \
_APP_HOME=https://appwrite.io
ENV DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
ENV DOCKER_COMPOSE_VERSION=v2.5.0
ENV _APP_SERVER=swoole \
_APP_ENV=production \
_APP_LOCALE=en \
_APP_WORKER_PER_CORE= \
_APP_DOMAIN=localhost \
_APP_DOMAIN_TARGET=localhost \
_APP_HOME=https://appwrite.io \
_APP_EDITION=community \
_APP_CONSOLE_WHITELIST_ROOT=enabled \
_APP_CONSOLE_WHITELIST_EMAILS= \
_APP_CONSOLE_WHITELIST_IPS= \
_APP_SYSTEM_EMAIL_NAME= \
_APP_SYSTEM_EMAIL_ADDRESS= \
_APP_SYSTEM_RESPONSE_FORMAT= \
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS= \
_APP_OPTIONS_ABUSE=enabled \
_APP_OPTIONS_FORCE_HTTPS=disabled \
_APP_OPENSSL_KEY_V1=your-secret-key \
_APP_STORAGE_LIMIT=10000000 \
_APP_STORAGE_ANTIVIRUS=enabled \
_APP_STORAGE_ANTIVIRUS_HOST=clamav \
_APP_STORAGE_ANTIVIRUS_PORT=3310 \
_APP_STORAGE_DEVICE=Local \
_APP_STORAGE_S3_ACCESS_KEY= \
_APP_STORAGE_S3_SECRET= \
_APP_STORAGE_S3_REGION= \
_APP_STORAGE_S3_BUCKET= \
_APP_STORAGE_DO_SPACES_ACCESS_KEY= \
_APP_STORAGE_DO_SPACES_SECRET= \
_APP_STORAGE_DO_SPACES_REGION= \
_APP_STORAGE_DO_SPACES_BUCKET= \
_APP_STORAGE_BACKBLAZE_ACCESS_KEY= \
_APP_STORAGE_BACKBLAZE_SECRET= \
_APP_STORAGE_BACKBLAZE_REGION= \
_APP_STORAGE_BACKBLAZE_BUCKET= \
_APP_STORAGE_LINODE_ACCESS_KEY= \
_APP_STORAGE_LINODE_SECRET= \
_APP_STORAGE_LINODE_REGION= \
_APP_STORAGE_LINODE_BUCKET= \
_APP_STORAGE_WASABI_ACCESS_KEY= \
_APP_STORAGE_WASABI_SECRET= \
_APP_STORAGE_WASABI_REGION= \
_APP_STORAGE_WASABI_BUCKET= \
_APP_REDIS_HOST=redis \
_APP_REDIS_PORT=6379 \
_APP_DB_HOST=mariadb \
_APP_DB_PORT=3306 \
_APP_DB_USER=root \
_APP_DB_PASS=password \
_APP_DB_SCHEMA=appwrite \
_APP_INFLUXDB_HOST=influxdb \
_APP_INFLUXDB_PORT=8086 \
_APP_STATSD_HOST=telegraf \
_APP_STATSD_PORT=8125 \
_APP_SMTP_HOST= \
_APP_SMTP_PORT= \
_APP_SMTP_SECURE= \
_APP_SMTP_USERNAME= \
_APP_SMTP_PASSWORD= \
_APP_SMS_PROVIDER= \
_APP_SMS_FROM= \
_APP_FUNCTIONS_SIZE_LIMIT=30000000 \
_APP_FUNCTIONS_TIMEOUT=900 \
_APP_FUNCTIONS_CONTAINERS=10 \
_APP_FUNCTIONS_CPUS=1 \
_APP_FUNCTIONS_MEMORY=128 \
_APP_FUNCTIONS_MEMORY_SWAP=128 \
_APP_EXECUTOR_SECRET=a-random-secret \
_APP_EXECUTOR_HOST=http://appwrite-executor/v1 \
_APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes \
_APP_SETUP=self-hosted \
_APP_VERSION=$VERSION \
_APP_USAGE_STATS=enabled \
_APP_USAGE_AGGREGATION_INTERVAL=30 \
# 14 Days = 1209600 s
_APP_MAINTENANCE_RETENTION_EXECUTION=1209600 \
_APP_MAINTENANCE_RETENTION_AUDIT=1209600 \
# 1 Day = 86400 s
_APP_MAINTENANCE_RETENTION_ABUSE=86400 \
_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000 \
_APP_MAINTENANCE_INTERVAL=86400 \
_APP_LOGGING_PROVIDER= \
_APP_LOGGING_CONFIG=
RUN \
if [ "$DEBUG" == "true" ]; then \
apk add boost boost-dev; \
fi
RUN apk add libwebp
WORKDIR /usr/src/code
COPY --from=composer /usr/local/src/vendor /usr/src/code/vendor
COPY --from=node /usr/local/src/console/build /usr/src/code/console
# Add Source Code
COPY ./app /usr/src/code/app
COPY ./public /usr/src/code/public
COPY ./bin /usr/local/bin
COPY ./docs /usr/src/code/docs
COPY ./src /usr/src/code/src
COPY ./dev /usr/src/code/dev
# Set Volumes
RUN mkdir -p /storage/uploads && \
mkdir -p /storage/imports && \
mkdir -p /storage/cache && \
mkdir -p /storage/config && \
mkdir -p /storage/certificates && \
mkdir -p /storage/functions && \
mkdir -p /storage/debug && \
chown -Rf www-data:www-data /storage/uploads && chmod -Rf 0755 /storage/uploads && \
chown -Rf www-data:www-data /storage/imports && chmod -Rf 0755 /storage/imports && \
chown -Rf www-data:www-data /storage/cache && chmod -Rf 0755 /storage/cache && \
chown -Rf www-data:www-data /storage/config && chmod -Rf 0755 /storage/config && \
chown -Rf www-data:www-data /storage/certificates && chmod -Rf 0755 /storage/certificates && \
chown -Rf www-data:www-data /storage/functions && chmod -Rf 0755 /storage/functions && \
chown -Rf www-data:www-data /storage/debug && chmod -Rf 0755 /storage/debug
chown -Rf www-data.www-data /storage/uploads && chmod -Rf 0755 /storage/uploads && \
chown -Rf www-data.www-data /storage/cache && chmod -Rf 0755 /storage/cache && \
chown -Rf www-data.www-data /storage/config && chmod -Rf 0755 /storage/config && \
chown -Rf www-data.www-data /storage/certificates && chmod -Rf 0755 /storage/certificates && \
chown -Rf www-data.www-data /storage/functions && chmod -Rf 0755 /storage/functions && \
chown -Rf www-data.www-data /storage/debug && chmod -Rf 0755 /storage/debug
# Executables
RUN chmod +x /usr/local/bin/doctor && \
chmod +x /usr/local/bin/maintenance && \
chmod +x /usr/local/bin/usage && \
chmod +x /usr/local/bin/install && \
chmod +x /usr/local/bin/maintenance && \
chmod +x /usr/local/bin/migrate && \
chmod +x /usr/local/bin/realtime && \
chmod +x /usr/local/bin/schedule-functions && \
chmod +x /usr/local/bin/schedule-executions && \
chmod +x /usr/local/bin/schedule-messages && \
chmod +x /usr/local/bin/executor && \
chmod +x /usr/local/bin/schedule && \
chmod +x /usr/local/bin/sdks && \
chmod +x /usr/local/bin/specs && \
chmod +x /usr/local/bin/ssl && \
chmod +x /usr/local/bin/screenshot && \
chmod +x /usr/local/bin/test && \
chmod +x /usr/local/bin/upgrade && \
chmod +x /usr/local/bin/vars && \
chmod +x /usr/local/bin/queue-retry && \
chmod +x /usr/local/bin/queue-count-failed && \
chmod +x /usr/local/bin/queue-count-processing && \
chmod +x /usr/local/bin/queue-count-success && \
chmod +x /usr/local/bin/worker-audits && \
chmod +x /usr/local/bin/worker-builds && \
chmod +x /usr/local/bin/worker-certificates && \
chmod +x /usr/local/bin/worker-databases && \
chmod +x /usr/local/bin/worker-deletes && \
chmod +x /usr/local/bin/worker-functions && \
chmod +x /usr/local/bin/worker-builds && \
chmod +x /usr/local/bin/worker-mails && \
chmod +x /usr/local/bin/worker-messaging && \
chmod +x /usr/local/bin/worker-migrations && \
chmod +x /usr/local/bin/worker-webhooks && \
chmod +x /usr/local/bin/worker-stats-usage && \
chmod +x /usr/local/bin/stats-resources && \
chmod +x /usr/local/bin/worker-stats-resources
chmod +x /usr/local/bin/worker-migrations
# Letsencrypt Permissions
RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/
# Enable Extensions
RUN if [ "$DEBUG" = "true" ]; then cp /usr/src/code/dev/xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini; fi
RUN if [ "$DEBUG" = "true" ]; then mkdir -p /tmp/xdebug; fi
RUN if [ "$DEBUG" = "true" ]; then apk add --update --no-cache openssh-client github-cli; fi
RUN if [ "$DEBUG" = "false" ]; then rm -rf /usr/src/code/dev; fi
RUN if [ "$DEBUG" = "false" ]; then rm -f /usr/local/lib/php/extensions/no-debug-non-zts-20230831/xdebug.so; fi
RUN if [ "$DEBUG" == "true" ]; then printf "zend_extension=yasd \nyasd.debug_mode=remote \nyasd.init_file=/usr/src/code/dev/yasd_init.php \nyasd.remote_port=9005 \nyasd.log_level=-1" >> /usr/local/etc/php/conf.d/yasd.ini; fi
RUN if [ "$DEBUG" == "true" ]; then echo "opcache.enable=0" >> /usr/local/etc/php/conf.d/appwrite.ini; fi
RUN echo "opcache.preload_user=www-data" >> /usr/local/etc/php/conf.d/appwrite.ini
RUN echo "opcache.preload=/usr/src/code/app/preload.php" >> /usr/local/etc/php/conf.d/appwrite.ini
RUN echo "opcache.enable_cli=1" >> /usr/local/etc/php/conf.d/appwrite.ini
RUN echo "default_socket_timeout=-1" >> /usr/local/etc/php/conf.d/appwrite.ini
RUN echo "opcache.jit_buffer_size=100M" >> /usr/local/etc/php/conf.d/appwrite.ini
RUN echo "opcache.jit=1235" >> /usr/local/etc/php/conf.d/appwrite.ini
EXPOSE 80
CMD [ "php", "app/http.php" ]
CMD [ "php", "app/http.php", "-dopcache.preload=opcache.preload=/usr/src/code/app/preload.php" ]
-57
View File
@@ -1,57 +0,0 @@
# Appwrite hacktoberfest contribution
Welcome to the Appwrite Hacktoberfest contribution! We appreciate your interest in contributing to our open-source project. Please read this carefully to understand how to get started and make your contributions count.
## Familiarize with the project
Before you start contributing, familiarize yourself with our project by reading the [main README](https://github.com/appwrite/appwrite/blob/main/README.md).
## Code of conduct
Please ensure that you always follow our [Code of Conduct](https://github.com/appwrite/awesome-appwrite/blob/master/CODE_OF_CONDUCT.md). We aim to maintain a respectful and inclusive community.
## Contributing guide
Please review our [Contributing Guide](https://github.com/appwrite/appwrite/blob/main/CONTRIBUTING.md) before contributing. It will help you learn about the architecture, instructions on how to update code, run tests, and submit a PR.
## Hacktoberfest contribution guidelines
To participate in Hacktoberfest with Appwrite, follow these guidelines:
1. **Valid issues**: To make your contribution count, please look for issues labeled with `hacktoberfest`. Only issues labeled with `hacktoberfest` will count as a valid contribution.
2. **Wait for issue assignment**: After you have identified an issue to work on, please wait for it to be assigned to you by our team. We assign issues on a first-come, first-serve basis.
3. **Knowing about labels**: We do not have the `hacktoberfest` label in our repositories, but we use it on specific issues. For your pull request to be valid, our team will review and add the `hacktoberfest-accepted` label once it meets the criteria.
4. **Discuss new issues**: If you're interested in finding and adding new issues for Hacktoberfest, please discuss it with the team on our [Discord server](https://appwrite.io/discord) in the `#hacktoberfest` channel.
5. **Be patient with pull request reviews**: PR reviews may take up to 15 days due to the volume of contributions. However, we also host PR review parties every week where you can add your PRs for instant review.
6. **Regular updates**: If you've been assigned an issue, it's essential to share updates every 3 days. Failure to do so may result in being unassigned from the issue.
## Getting started
1. Fork the Appwrite repository you'd like to contribute to.
2. Clone your forked repository to your local machine.
```bash
git clone https://github.com/your-username/repository-name.git
```
3. Create a new branch for your contribution.
```bash
git checkout -b TYPE-ISSUE_ID-DESCRIPTION
```
4. Make your changes, commit them, and push them to your forked repository.
```bash
git commit -m "Add your commit message here"
git push origin TYPE-ISSUE_ID-DESCRIPTION
```
5. Create a Pull Request (PR) from your forked repository to the Appwrite repository. Be sure to reference the issue you are addressing in your PR description.
Thank you for contributing to Appwrite, and we look forward to your Hacktoberfest contributions! If you have any questions or need assistance, feel free to ask on our Discord server or in the issue discussion. Happy hacking!
+44 -103
View File
@@ -1,8 +1,8 @@
> хе╜ц╢ИцБпя╝БAppwrite ф║СчО░х╖▓ш┐ЫхЕехЕмх╝Ац╡ЛшпХчЙИя╝БчлЛхН│шо┐щЧо cloud.appwrite.io ц│ихЖМя╝Мф╜УщкМцЧах┐зчЪДцЙШчобцЬНхКбуАВф╗Кхдйх░▒хКахЕецИСф╗мчЪДф║СчлпхРзя╝Б:cloud: :tada:
> хе╜ц╢ИцБпя╝БAppwrite ф║СчО░х╖▓ш┐ЫхЕехЕмх╝Ац╡ЛшпХчЙИя╝БчлЛхН│шо┐щЧо cloud.appwrite.io ц│ихЖМя╝Мф╜УщкМцЧах┐зчЪДцЙШчобцЬНхКбуАВф╗Кхдйх░▒хКахЕецИСф╗мчЪДф║СчлпхРзя╝БтШБя╕ПЁЯОЙ
<br />
<p align="center">
<a href="https://appwrite.io" target="_blank"><img src="./public/images/banner.png" alt="Appwrite banner with logo and slogan build like a team of hundreds""></a>
<a href="https://appwrite.io" target="_blank"><img width="260" height="39" src="https://appwrite.io/images/appwrite.svg" alt="Appwrite Logo"></a>
<br />
<br />
<b>щАВчФиф║О[Flutter/Vue/Angular/React/iOS/Android/* чнЙчнЙх╣│хП░ *]чЪДхоМцХ┤хРОчлпцЬНхКб</b>
@@ -11,7 +11,6 @@
</p>
<!-- [![Build Status](https://img.shields.io/travis/com/appwrite/appwrite?style=flat-square)](https://travis-ci.com/appwrite/appwrite) -->
[![We're Hiring](https://img.shields.io/static/v1?label=We're&message=Hiring&color=blue&style=flat-square)](https://appwrite.io/company/careers)
[![Hacktoberfest](https://img.shields.io/static/v1?label=hacktoberfest&message=friendly&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io)
[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github)
@@ -26,7 +25,7 @@
[**Appwrite ф║СхЕмх╝Ац╡ЛшпХчЙИя╝БчлЛхН│ц│ихЖМя╝Б**](https://cloud.appwrite.io)
Appwrite цШпф╕Аф╕кхЯ║ф║О Docker чЪДчлпхИ░члпх╝АхПСшАЕх╣│хП░я╝МхЕ╢хо╣хЩихМЦчЪДх╛оцЬНхКбх║УхПпх║ФчФиф║Оч╜Сщб╡члпя╝Мчз╗хКичлпя╝МхОЯчФЯх║ФчФия╝Мф╗ехПКхРОчлпуАВхоГцЧвхМЕхРлхРОчлпцЬНхКбхЩия╝Мф╣ЯцПРф╛Ыф║ЖчФиф║ОщГич╜▓щЭЩцАБхТМцЬНхКбхЩичлпц╕▓цЯУхЙНчлпчЪДхоМхЕищЫЖцИРцЙШчобшзгхЖ│цЦ╣цбИуАВAppwrite щАЪш┐ЗшзЖшзЙхМЦчХМщЭвчоАхМЦф║Жф╗ОщЫ╢х╝АхзЛцЮДх╗║чО░ф╗гх║ФчФичЪДхдНцЭВцАзхТМщЗНхдНцАзя╝МшойцВишГ╜хдЯцЫ┤х┐лхЬ░цЮДх╗║хоЙхЕичЪДхЕицаИх║ФчФиуАВ
AppwriteцШпф╕Аф╕кхЯ║ф║ОDockerчЪДчлпхИ░члпх╝АхПСшАЕх╣│хП░я╝МхЕ╢хо╣хЩихМЦчЪДх╛оцЬНхКбх║УхПпх║ФчФиф║Оч╜Сщб╡члпя╝Мчз╗хКичлпя╝Мф╗ехПКхРОчлпуАВAppwrite щАЪш┐ЗшзЖшзЙхМЦчХМщЭвчоАхМЦф║Жф╗ОщЫ╢х╝АхзЛч╝ЦхЖЩ API чЪДч╣БчРРш┐ЗчиЛя╝МхЬиф┐ЭшпБш╜пф╗╢хоЙхЕичЪДхЙНцПРф╕Лф╕║х╝АхПСшАЕхИЫщАаф║Жф╕Аф╕кщлШцХИчЪДх╝АхПСчОпхвГуАВ
Appwrite хПпф╗ецПРф╛Ыч╗Щх╝АхПСшАЕчФицИ╖щкМшпБя╝МхдЦщГицОИцЭГя╝МчФицИ╖цХ░цНошп╗хЖЩцгАч┤вя╝МцЦЗф╗╢хВихнШя╝МхЫ╛хГПхдДчРЖя╝Мф║СхЗ╜цХ░шобчоЧя╝М[чнЙхдЪчзНцЬНхКб](https://appwrite.io/docs).
@@ -36,8 +35,6 @@ Appwrite хПпф╗ецПРф╛Ыч╗Щх╝АхПСшАЕчФицИ╖щкМшпБя╝МхдЦщГицОИцЭГя╝МчФицИ╖цХ░цНошп╗
хЖЕхо╣я╝Ъ
- [х╝АхзЛ](#х╝АхзЛ)
- [хоЙшгЕ](#хоЙшгЕ)
- [Unix](#unix)
- [Windows](#windows)
@@ -56,12 +53,9 @@ Appwrite хПпф╗ецПРф╛Ыч╗Щх╝АхПСшАЕчФицИ╖щкМшпБя╝МхдЦщГицОИцЭГя╝МчФицИ╖цХ░цНошп╗
- [шовщШЕцИСф╗м](#шовщШЕцИСф╗м)
- [чЙИцЭГшп┤цШО](#чЙИцЭГшп┤цШО)
## х╝АхзЛ
шжБш╜╗цЭ╛х╝АхзЛф╜┐чФиAppwriteя╝МцВихПпф╗е[**хЕНш┤╣ц│ихЖМAppwrite Cloud**](https://cloud.appwrite.io/)уАВхЬиAppwrite CloudхЕмх╝Ац╡ЛшпХчЙИцЬЯщЧ┤я╝МцВихПпф╗ехоМхЕихЕНш┤╣ф╜┐чФиAppwriteя╝МшАМф╕ФцИСф╗мф╕Нф╝ЪцФ╢щЫЖцВичЪДф┐бчФихНбф┐бцБпуАВ
## хоЙшгЕ
Appwrite чЪДхо╣хЩихМЦцЬНхКбхЩихПкщЬАшжБф╕АшбМцМЗф╗дх░▒хПпф╗еш┐РшбМуАВцВихПпф╗еф╜┐чФи docker-compose хЬицЬмхЬ░ф╕╗цЬ║ф╕Кш┐РшбМ Appwriteя╝Мф╣ЯхПпф╗ехЬиф╗╗ф╜ХхЕ╢ф╗Цхо╣хЩихМЦх╖ехЕ╖я╝ИхжВ [Kubernetes](https://kubernetes.io/docs/home/)уАБ[Docker Swarm](https://docs.docker.com/engine/swarm/) цИЦ [Rancher](https://rancher.com/docs/)я╝Йф╕Кш┐РшбМ AppwriteуАВ
Appwrite чЪДхо╣хЩихМЦцЬНхКбхЩихПкщЬАшжБф╕АшбМцМЗф╗дх░▒хПпф╗еш┐РшбМуАВцВихПпф╗еф╜┐чФи docker-compose хЬицЬмхЬ░ф╕╗цЬ║ф╕Кш┐РшбМ Appwriteя╝Мф╣ЯхПпф╗ехЬиф╗╗ф╜ХхЕ╢ф╗Цхо╣хЩихМЦх╖ехЕ╖я╝ИхжВ KubernetesуАБDocker Swarm цИЦ Rancherя╝Йф╕Кш┐РшбМ AppwriteуАВ
хРпхКи Appwrite цЬНхКбхЩичЪДцЬАчоАхНХцЦ╣ц│ХцШпш┐РшбМцИСф╗мчЪД docker-compose цЦЗф╗╢уАВхЬиш┐РшбМхоЙшгЕхС╜ф╗дф╣ЛхЙНя╝Мшп╖чбоф┐ЭцВичЪДцЬ║хЩиф╕КхоЙшгЕф║Ж [Docker](https://dockerdocs.cn/get-docker/index.html)я╝Ъ
@@ -72,7 +66,7 @@ docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite:1.8.0
appwrite/appwrite:1.3.4
```
### Windows
@@ -84,7 +78,7 @@ docker run -it --rm ^
--volume //var/run/docker.sock:/var/run/docker.sock ^
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
--entrypoint="install" ^
appwrite/appwrite:1.8.0
appwrite/appwrite:1.3.4
```
#### PowerShell
@@ -94,121 +88,68 @@ docker run -it --rm `
--volume /var/run/docker.sock:/var/run/docker.sock `
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw `
--entrypoint="install" `
appwrite/appwrite:1.8.0
appwrite/appwrite:1.3.4
```
ш┐РшбМхРОя╝МхПпф╗ехЬиц╡ПшзИхЩиф╕Кшо┐щЧо http://localhost цЙ╛хИ░ Appwrite цОзхИ╢хП░уАВхЬищЭЮ Linux чЪДцЬмцЬ║ф╕╗цЬ║ф╕КхоМцИРхоЙшгЕхРОя╝МцЬНхКбхЩихПпшГ╜щЬАшжБхЗахИЖщТЯцЙНшГ╜хРпхКиуАВ
щЬАшжБшЗкхоЪф╣Йхо╣хЩицЮДцЮ╢я╝Мшп╖цЯечЬЛцИСф╗мчЪД Docker [чОпхвГхПШщЗП](https://appwrite.io/docs/environment-variables) цЦЗцбгуАВцВиш┐ШхПпф╗ехПВшАГцИСф╗мчЪД [docker-compose.yml](https://appwrite.io/install/compose) хТМ [.env](https://appwrite.io/install/env) цЦЗф╗╢цЙЛхКишо╛ч╜очОпхвГуАВ
### ф╗ОцЧзчЙИцЬмхНЗч║з
хжВцЮЬцВиф╗ОцЧзчЙИцЬмхНЗч║з Appwrite цЬНхКбхЩия╝МхИЩх║ФхЬишо╛ч╜охоМцИРхРОф╜┐чФи Appwrite ш┐Бчз╗х╖ехЕ╖уАВцЬЙхЕ│ш┐ЩцЦ╣щЭвчЪДцЫ┤хдЪф┐бцБпя╝Мшп╖цЯечЬЛ [хоЙшгЕцЦЗцбг](https://appwrite.io/docs/self-hosting)уАВ
## ф╕АщФощЕНч╜о
щЩдф║ЖхЬицЬмхЬ░ш┐РшбМ Appwriteя╝МцВиш┐ШхПпф╗еф╜┐чФищвДщЕНч╜очЪДшо╛ч╜охРпхКи AppwriteуАВш┐Щца╖хПпф╗ешойцВих┐лщАЯхРпхКих╣╢ш┐РшбМ Appwriteя╝МшАМцЧащЬАхЬицЬмхЬ░шобчоЧцЬ║ф╕КхоЙшгЕ DockerуАВ
шп╖ф╗Оф╗еф╕ЛцПРф╛ЫхХЖф╕нщАЙцЛйф╕Аф╕кя╝Ъ
<table border="0">
<tr>
<td align="center" width="100" height="100">
<a href="https://marketplace.digitalocean.com/apps/appwrite">
<img width="50" height="39" src="public/images/integrations/digitalocean-logo.svg" alt="DigitalOcean Logo" />
<br /><sub><b>DigitalOcean</b></sub></a>
</a>
</td>
<td align="center" width="100" height="100">
<a href="https://gitpod.io/#https://github.com/appwrite/integration-for-gitpod">
<img width="50" height="39" src="public/images/integrations/gitpod-logo.svg" alt="Gitpod Logo" />
<br /><sub><b>Gitpod</b></sub></a>
</a>
</td>
<td align="center" width="100" height="100">
<a href="https://www.linode.com/marketplace/apps/appwrite/appwrite/">
<img width="50" height="39" src="public/images/integrations/akamai-logo.svg" alt="Akamai Logo" />
<br /><sub><b>Akamai Compute</b></sub></a>
</a>
</td>
<td align="center" width="100" height="100">
<a href="https://aws.amazon.com/marketplace/pp/prodview-2hiaeo2px4md6">
<img width="50" height="39" src="public/images/integrations/aws-logo.svg" alt="AWS Logo" />
<br /><sub><b>AWS Marketplace</b></sub></a>
</a>
</td>
</tr>
</table>
хжВцЮЬцВиф╗ОцЧзчЙИцЬмхНЗч║з Appwrite цЬНхКбхЩия╝МхИЩх║ФхЬишо╛ч╜охоМцИРхРОф╜┐чФи Appwrite ш┐Бчз╗х╖ехЕ╖уАВцЬЙхЕ│ш┐ЩцЦ╣щЭвчЪДцЫ┤хдЪф┐бцБпя╝Мшп╖цЯечЬЛ [хоЙшгЕцЦЗцбг](https://appwrite.io/docs/installation)уАВ
## хЕещЧи
х╝АхзЛф╜┐чФи Appwrite хПкщЬАшжБхЬицОзхИ╢хП░хИЫх╗║ф╕Аф╕кцЦ░щб╣чЫоя╝МщАЙцЛйх╝АхПСх╣│хП░я╝МчД╢хРОцКУхПЦцИСф╗мчЪДх╝АхПСхеЧф╗╢уАВцВихПпф╗еф╗Оф╗еф╕ЛчЪДцХЩчиЛф╕нцЙ╛хИ░ф╜ахЦЬцмвчЪДх╣│хП░х╝АхзЛф╜┐чФи AppwriteуАВ
| ч▒╗хИл | цКАцЬп |
| ------------------ | --------------------------------------------------------------------------- |
| **Web х║ФчФи** | [Web х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/web) |
| | [Next.js х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/nextjs) |
| | [React х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/react) |
| | [Vue.js х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/vue) |
| | [Nuxt х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/nuxt) |
| | [SvelteKit х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/sveltekit) |
| | [Refine х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/refine) |
| | [Angular х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/angular) |
| **шЛ╣цЮЬф║ОхоЙхНУх║ФчФи** | [React Native х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/react-native) |
| | [Flutter х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/flutter) |
| | [Apple х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/apple) |
| | [Android х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/android) |
| **цЬНхКбхЩи** | [Node.js х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/node) |
| | [Python х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/python) |
| | [.NET х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/dotnet) |
| | [Dart х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/dart) |
| | [Ruby х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/ruby) |
| | [Deno х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/deno) |
| | [PHP х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/php) |
| | [Kotlin х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/kotlin) |
| | [Swift х┐лщАЯх╝АхзЛ](https://appwrite.io/docs/quick-starts/swift) |
* [х╝АхзЛф╜┐чФи Web](https://appwrite.io/docs/getting-started-for-web)
* [х╝АхзЛф╜┐чФи Flutter](https://appwrite.io/docs/getting-started-for-flutter)
* [х╝АхзЛф╜┐чФи Apple](https://appwrite.io/docs/getting-started-for-apple)
* [х╝АхзЛф╜┐чФи Android](https://appwrite.io/docs/getting-started-for-android)
* [х╝АхзЛф╜┐чФи Server](https://appwrite.io/docs/getting-started-for-server)
* [х╝АхзЛф╜┐чФи CLI](https://appwrite.io/docs/command-line)
### ш╜пф╗╢цЬНхКб
- [**х╕РцИ╖**](https://appwrite.io/docs/references/cloud/client-web/account) -чобчРЖх╜УхЙНчФицИ╖чЪДх╕РцИ╖хТМчЩ╗х╜ХцЦ╣х╝ПуАВш╖Яш╕кхТМчобчРЖчФицИ╖ Sessionя╝МчЩ╗х╜Хшо╛хдЗя╝МчЩ╗х╜ХцЦ╣ц│ХхТМцЯечЬЛчЫ╕хЕ│шо░х╜ХуАВ
- [**чФицИ╖**](https://appwrite.io/docs/server/users) - хЬиф╗ечобчРЖхСШцибх╝ПчЩ╗х╜ХцЧ╢чобчРЖхТМхИЧхЗ║цЙАцЬЙчФицИ╖уАВ
- [**хЫвщШЯ**](https://appwrite.io/docs/references/cloud/client-web/teams) - чобчРЖчФицИ╖хИЖч╗ДуАВщВАшп╖цИРхСШя╝МчобчРЖхЫвщШЯф╕нчЪДчФицИ╖цЭГщЩРхТМчФицИ╖шзТшЙ▓уАВ
- [**цХ░цНох║У**](https://appwrite.io/docs/references/cloud/client-web/databases) - чобчРЖцХ░цНох║УцЦЗцбгхТМцЦЗцбгщЫЖуАВчФицгАч┤вчХМщЭвцЭехп╣цЦЗцбгхТМцЦЗцбгщЫЖш┐ЫшбМшп╗хПЦя╝МхИЫх╗║я╝МцЫ┤цЦ░я╝МхТМхИащЩдуАВ
- [**ш┤охнШ**](https://appwrite.io/docs/references/cloud/client-web/storage) - чобчРЖцЦЗф╗╢чЪДщШЕшп╗уАБхИЫх╗║уАБхИащЩдхТМщвДшзИуАВшо╛ч╜оцЦЗф╗╢чЪДщвДшзИцЭец╗бш╢│чиЛх║ПчЪДф╕кцАзхМЦщЬАц▒ВуАВцЙАцЬЙцЦЗф╗╢щГ╜чФ▒ ClamAV цЙлцППх╣╢хоЙхЕихнШхВихТМхКахпЖуАВ
- [**ф║СхЗ╜цХ░**](https://appwrite.io/docs/server/functions) - хЬихоЙхЕия╝МщЪФчж╗чЪДчОпхвГф╕нш┐РшбМшЗкхоЪф╣Йф╗гчаБуАВш┐Щф║Ыф╗гчаБхПпф╗ешвлф║Лф╗╢я╝МCRONя╝МцИЦшАЕцЙЛхКицУНф╜ЬшзжхПСуАВ
- [**ц╢ИцБпф╝ащАТ**](https://appwrite.io/docs/references/cloud/client-web/messaging) - ф╜┐чФи Appwrite ц╢ИцБпф╝ащАТхКЯшГ╜щАЪш┐ЗцОищАБщАЪчЯеуАБчФ╡хнРщВоф╗╢хТМчЯнф┐бф╕ОчФицИ╖ш┐ЫшбМщАЪф┐буАВ
- [**шпншиАщАВщЕН**](https://appwrite.io/docs/references/cloud/client-web/locale) - ца╣цНочФицИ╖цЙАхЬичЪДчЪДхЫ╜хо╢хТМхЬ░хМ║хБЪхЗ║хРИщАВчЪДшпншиАщАВщЕНуАВ
- [**хд┤хГП**](https://appwrite.io/docs/references/cloud/client-web/avatars) -чобчРЖчФицИ╖хд┤хГПуАБхЫ╜хо╢цЧЧх╕ЬуАБц╡ПшзИхЩихЫ╛цаЗуАБф┐бчФихНбчмжхП╖я╝МхТМчФЯцИРф║Мч╗┤чаБуАВ
- [**MCP**](https://appwrite.io/docs/tooling/mcp) - ф╜┐чФи Appwrite чЪДцибхЮЛф╕Кф╕ЛцЦЗхНПшооя╝ИModel Context Protocolя╝ЙцЬНхКбхЩия╝МхЕБшо╕хдзшпншиАцибхЮЛя╝ИLLMя╝ЙхТМ AI х╖ехЕ╖я╝ИхжВ Claude DesktopуАБCursor хТМ Windsurf Editorя╝ЙщАЪш┐ЗшЗкчД╢шпншиАчЫ┤цОеф╕ОцВичЪД Appwrite щб╣чЫоф║дф║ТуАВ
- [**члЩчВ╣**](https://appwrite.io/docs/products/sites) - чЫ┤цОеф╗О Appwrite х╝АхПСуАБщГич╜▓хТМцЙйх▒ХцВичЪД Web х║ФчФичиЛх║Пя╝Мф╕ОцВичЪДхРОчлпф╕Аш╡╖уАВ
хжВщЬАхоМцХ┤чЪД API чХМщЭвцЦЗцбгя╝Мшп╖шо┐щЧо [https://appwrite.io/docs](https://appwrite.io/docs)уАВхжВщЬАцЫ┤хдЪцХЩчиЛуАБцЦ░щЧ╗хТМхЕмхСКя╝Мшп╖шовщШЕцИСф╗мчЪД [хНЪхов](https://medium.com/appwrite-io) хТМ хКахЕецИСф╗мчЪД[Discord чд╛хМ║](https://discord.gg/GSeTUeA)уАВ
* [**х╕РцИ╖**](https://appwrite.io/docs/client/account) -чобчРЖх╜УхЙНчФицИ╖чЪДх╕РцИ╖хТМчЩ╗х╜ХцЦ╣х╝ПуАВш╖Яш╕кхТМчобчРЖчФицИ╖ Sessionя╝МчЩ╗х╜Хшо╛хдЗя╝МчЩ╗х╜ХцЦ╣ц│ХхТМцЯечЬЛчЫ╕хЕ│шо░х╜ХуАВ
* [**чФицИ╖**](https://appwrite.io/docs/server/users) - хЬиф╗ечобчРЖхСШцибх╝ПчЩ╗х╜ХцЧ╢чобчРЖхТМхИЧхЗ║цЙАцЬЙчФицИ╖уАВ
* [**хЫвщШЯ**](https://appwrite.io/docs/client/teams) - чобчРЖчФицИ╖хИЖч╗ДуАВщВАшп╖цИРхСШя╝МчобчРЖхЫвщШЯф╕нчЪДчФицИ╖цЭГщЩРхТМчФицИ╖шзТшЙ▓уАВ
* [**цХ░цНох║У**](https://appwrite.io/docs/client/databases) - чобчРЖцХ░цНох║УцЦЗцбгхТМцЦЗцбгщЫЖуАВчФицгАч┤вчХМщЭвцЭехп╣цЦЗцбгхТМцЦЗцбгщЫЖш┐ЫшбМшп╗хПЦя╝МхИЫх╗║я╝МцЫ┤цЦ░я╝МхТМхИащЩдуАВ
* [**ш┤охнШ**](https://appwrite.io/docs/client/storage) - чобчРЖцЦЗф╗╢чЪДщШЕшп╗уАБхИЫх╗║уАБхИащЩдхТМщвДшзИуАВшо╛ч╜оцЦЗф╗╢чЪДщвДшзИцЭец╗бш╢│чиЛх║ПчЪДф╕кцАзхМЦщЬАц▒ВуАВцЙАцЬЙцЦЗф╗╢щГ╜чФ▒ ClamAV цЙлцППх╣╢хоЙхЕихнШхВихТМхКахпЖуАВ
* [**ф║СхЗ╜цХ░**](https://appwrite.io/docs/server/functions) - хЬихоЙхЕия╝МщЪФчж╗чЪДчОпхвГф╕нш┐РшбМшЗкхоЪф╣Йф╗гчаБуАВш┐Щф║Ыф╗гчаБхПпф╗ешвлф║Лф╗╢я╝МCRONя╝МцИЦшАЕцЙЛхКицУНф╜ЬшзжхПСуАВ
* [**шпншиАщАВщЕН**](https://appwrite.io/docs/client/locale) - ца╣цНочФицИ╖цЙАхЬичЪДчЪДхЫ╜хо╢хТМхЬ░хМ║хБЪхЗ║хРИщАВчЪДшпншиАщАВщЕНуАВ
* [**хд┤хГП**](https://appwrite.io/docs/client/avatars) -чобчРЖчФицИ╖хд┤хГПуАБхЫ╜хо╢цЧЧх╕ЬуАБц╡ПшзИхЩихЫ╛цаЗуАБф┐бчФихНбчмжхП╖я╝МхТМчФЯцИРф║Мч╗┤чаБуАВ
хжВщЬАхоМцХ┤чЪД API чХМщЭвцЦЗцбгя╝Мшп╖шо┐щЧо [https://appwrite.io/docs](https://appwrite.io/docs)уАВхжВщЬАцЫ┤хдЪцХЩчиЛуАБцЦ░щЧ╗хТМхЕмхСКя╝Мшп╖шовщШЕцИСф╗мчЪД [хНЪхов](https://medium.com/appwrite-io) хТМ хКахЕецИСф╗мчЪД[Discord чд╛хМ║](https://discord.gg/GSeTUeA)уАВ
### х╝АхПСхеЧф╗╢
ф╗еф╕ЛцШпх╜УхЙНцФпцМБчЪДх╣│хП░хТМшпншиАхИЧшбиуАВхжВцЮЬцВицГ│х╕охКйцИСф╗мф╕║цВищАЙцЛйчЪДх╣│хП░ц╖╗хКацФпцМБя╝МцВихПпф╗ешо┐щЧоцИСф╗мчЪД [SDK чФЯцИРхЩи](https://github.com/appwrite/sdk-generator) щб╣чЫох╣╢цЯечЬЛцИСф╗мчЪД [ш┤бчМоцМЗхНЧ](https://github.com/appwrite/sdk-generator/blob/master/CONTRIBUTING.md)уАВ
#### ховцИ╖члп
* :white_check_mark: &nbsp; [Web](https://github.com/appwrite/sdk-for-web) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Flutter](https://github.com/appwrite/sdk-for-flutter) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Android](https://github.com/appwrite/sdk-for-android) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Web](https://github.com/appwrite/sdk-for-web) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Flutter](https://github.com/appwrite/sdk-for-flutter) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Android](https://github.com/appwrite/sdk-for-android) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
#### цЬНхКбхЩи
* :white_check_mark: &nbsp; [NodeJS](https://github.com/appwrite/sdk-for-node) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [PHP](https://github.com/appwrite/sdk-for-php) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Dart](https://github.com/appwrite/sdk-for-dart) - (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Deno](https://github.com/appwrite/sdk-for-deno) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Ruby](https://github.com/appwrite/sdk-for-ruby) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Python](https://github.com/appwrite/sdk-for-python) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Kotlin](https://github.com/appwrite/sdk-for-kotlin) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* :white_check_mark: &nbsp; [.NET](https://github.com/appwrite/sdk-for-dotnet) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [NodeJS](https://github.com/appwrite/sdk-for-node) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [PHP](https://github.com/appwrite/sdk-for-php) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Dart](https://github.com/appwrite/sdk-for-dart) - (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Deno](https://github.com/appwrite/sdk-for-deno) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Ruby](https://github.com/appwrite/sdk-for-ruby) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Python](https://github.com/appwrite/sdk-for-python) (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Kotlin](https://github.com/appwrite/sdk-for-kotlin) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
* тЬЕ &nbsp; [.NET](https://github.com/appwrite/sdk-for-dotnet) - **хЕмц╡Л** (чФ▒ Appwrite хЫвщШЯч╗┤цКд)
#### х╝АхПСшАЕчд╛хМ║
* :white_check_mark: &nbsp; [Appcelerator Titanium](https://github.com/m1ga/ti.appwrite) (ч╗┤цКдшАЕ [Michael Gangolf](https://github.com/m1ga/))
* :white_check_mark: &nbsp; [Godot Engine](https://github.com/GodotNuts/appwrite-sdk) (ч╗┤цКдшАЕ [fenix-hub @GodotNuts](https://github.com/fenix-hub))
* тЬЕ &nbsp; [Appcelerator Titanium](https://github.com/m1ga/ti.appwrite) (ч╗┤цКдшАЕ [Michael Gangolf](https://github.com/m1ga/))
* тЬЕ &nbsp; [Godot Engine](https://github.com/GodotNuts/appwrite-sdk) (ч╗┤цКдшАЕ [fenix-hub @GodotNuts](https://github.com/fenix-hub))
цЙ╛ф╕НхИ░щЬАшжБчЪДчЪД SDKя╝Я - цмвш┐ОщАЪш┐ЗхПСш╡╖PRцЭех╕охКйцИСф╗мхоМхЦДAppwriteчЪДш╜пф╗╢чФЯцАБчОпхвГ [SDK чФЯцИРхЩи](https://github.com/appwrite/sdk-generator)!
цЙ╛ф╕НхИ░щЬАшжБчЪДчЪД SDKя╝Я - цмвш┐ОщАЪш┐ЗхПСш╡╖ PR цЭех╕охКйцИСф╗мхоМхЦД Appwrite чЪДш╜пф╗╢чФЯцАБчОпхвГ [SDK чФЯцИРхЩи](https://github.com/appwrite/sdk-generator)!
## ш╜пф╗╢цЮ╢цЮД
@@ -220,13 +161,13 @@ Appwrite API чХМщЭвх▒ВхИйчФихРОхП░ч╝УхнШхТМф╗╗хКбхзФц┤╛цЭецПРф╛ЫцЮБщАЯчЪДхУНх║Ф
## ш┤бчМоф╗гчаБ
ф╕║ф║Жчбоф┐ЭцнгчбохобцЯея╝МцЙАцЬЙф╗гчаБш┤бчМо - хМЕцЛмцЭешЗкхЕ╖цЬЙчЫ┤цОецПРф║дцЫ┤цФ╣цЭГщЩРчЪДш┤бчМошАЕ - щГ╜х┐Ещб╗цПРф║д PR шп╖ц▒Вх╣╢хЬихРИх╣╢хИЖцФпф╣ЛхЙНх╛ЧхИ░ца╕х┐Гх╝АхПСф║║хСШчЪДцЙ╣хЗЖуАВ
ф╕║ф║Жчбоф┐ЭцнгчбохобцЯея╝МцЙАцЬЙф╗гчаБш┤бчМо - хМЕцЛмцЭешЗкхЕ╖цЬЙчЫ┤цОецПРф║дцЫ┤цФ╣цЭГщЩРчЪДш┤бчМошАЕ - щГ╜х┐Ещб╗цПРф║дPRшп╖ц▒Вх╣╢хЬихРИх╣╢хИЖцФпф╣ЛхЙНх╛ЧхИ░ца╕х┐Гх╝АхПСф║║хСШчЪДцЙ╣хЗЖуАВ
цИСф╗мцмвш┐ОцЙАцЬЙф║║цПРф║д PRя╝БхжВцЮЬцВицД┐цДПцПРф╛Ых╕охКйя╝МхПпф╗ехЬи [ш┤бчМоцМЗхНЧ](CONTRIBUTING.md) ф╕нф║ЖшзгцЬЙхЕ│хжВф╜Хф╕║щб╣чЫохБЪхЗ║ш┤бчМочЪДцЫ┤хдЪф┐бцБпуАВ
цИСф╗мцмвш┐ОцЙАцЬЙф║║цПРф║дPRя╝БхжВцЮЬцВицД┐цДПцПРф╛Ых╕охКйя╝МхПпф╗ехЬи [ш┤бчМоцМЗхНЧ](CONTRIBUTING.md) ф╕нф║ЖшзгцЬЙхЕ│хжВф╜Хф╕║щб╣чЫохБЪхЗ║ш┤бчМочЪДцЫ┤хдЪф┐бцБпуАВ
## хоЙхЕи
ф╕║ф║Жф┐ЭцКдцВичЪДщЪРчзБя╝Мшп╖щБ┐хЕНхЬи GitHub ф╕КхПСх╕ГхоЙхЕищЧощвШуАВхПСщАБщЧощвШшЗ│ security@appwrite.ioя╝МцИСф╗мх░Жф╕║цВихБЪцЫ┤ч╗ЖшЗ┤чЪДшзгчнФуАВ
ф╕║ф║Жф┐ЭцКдцВичЪДщЪРчзБя╝Мшп╖щБ┐хЕНхЬиGitHub ф╕КхПСх╕ГхоЙхЕищЧощвШуАВхПСщАБщЧощвШшЗ│ security@appwrite.ioя╝МцИСф╗мх░Жф╕║цВихБЪцЫ┤ч╗ЖшЗ┤чЪДшзгчнФуАВ
## шовщШЕцИСф╗м
+57 -97
View File
@@ -1,26 +1,22 @@
> We just announced DB operators for Appwrite Databases - [Learn more](https://appwrite.io/blog/post/announcing-db-operators)
> Appwrite Cloud is now Generally Available - [Learn more](https://appwrite.io/cloud-ga)
> [Get started with Appwrite](https://apwr.dev/appcloud)
> Great news! Appwrite Cloud is now in public beta! Sign up at [cloud.appwrite.io](https://cloud.appwrite.io) for a hassle-free, hosted experience. Join us in the Cloud today! тШБя╕ПЁЯОЙ
<br />
<p align="center">
<a href="https://appwrite.io" target="_blank"><img src="./public/images/banner.png" alt="Appwrite banner, with logo and text saying "Build Like a Team of Hundreds"></a>
<a href="https://appwrite.io" target="_blank"><img width="260" height="39" src="https://appwrite.io/images/appwrite.svg" alt="Appwrite Logo"></a>
<br />
<br />
<b>Appwrite is an all-in-one development platform for Web, Mobile, and Flutter applications. Use built-in backend infrastructure and web hosting, all from a single place. Built with the open source community and optimized for developer experience in the coding languages you love.</b>
<b>Appwrite is a backend platform for developing Web, Mobile, and Flutter applications. Built with the open source community and optimized for developer experience in the coding languages you love.</b>
<br />
<br />
</p>
<!-- [![Build Status](https://img.shields.io/travis/com/appwrite/appwrite?style=flat-square)](https://travis-ci.com/appwrite/appwrite) -->
[![We're Hiring label](https://img.shields.io/static/v1?label=We're&message=Hiring&color=blue&style=flat-square)](https://appwrite.io/company/careers)
[![Hacktoberfest label](https://img.shields.io/static/v1?label=hacktoberfest&message=ready&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io)
[![Discord label](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github)
[![Build Status label](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions)
[![X Account label](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite)
[![We're Hiring](https://img.shields.io/static/v1?label=We're&message=Hiring&color=blue&style=flat-square)](https://appwrite.io/company/careers)
[![Hacktoberfest](https://img.shields.io/static/v1?label=hacktoberfest&message=ready&color=191120&style=flat-square)](https://hacktoberfest.appwrite.io)
[![Discord](https://img.shields.io/discord/564160730845151244?label=discord&style=flat-square)](https://appwrite.io/discord?r=Github)
[![Build Status](https://img.shields.io/github/actions/workflow/status/appwrite/appwrite/tests.yml?branch=master&label=tests&style=flat-square)](https://github.com/appwrite/appwrite/actions)
[![Twitter Account](https://img.shields.io/twitter/follow/appwrite?color=00acee&label=twitter&style=flat-square)](https://twitter.com/appwrite)
<!-- [![Docker Pulls](https://img.shields.io/docker/pulls/appwrite/appwrite?color=f02e65&style=flat-square)](https://hub.docker.com/r/appwrite/appwrite) -->
<!-- [![Translate](https://img.shields.io/badge/translate-f02e65?style=flat-square)](docs/tutorials/add-translations.md) -->
@@ -28,9 +24,11 @@
English | [чоАф╜Уф╕нцЦЗ](README-CN.md)
Appwrite is an end-to-end platform for building Web, Mobile, Native, or Backend apps, packaged as a set of Docker microservices. It includes both a backend server and a fully integrated hosting solution for deploying static and server-side rendered frontends. Appwrite abstracts the complexity and repetitiveness required to build modern apps from scratch and allows you to build secure, full-stack applications faster.
[**Announcing Appwrite Cloud Public Beta! Sign up today!**](https://cloud.appwrite.io)
Using Appwrite, you can easily integrate your app with user authentication and multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, Cloud Functions, messaging, and [more services](https://appwrite.io/docs).
Appwrite is an end-to-end backend server for Web, Mobile, Native, or Backend apps packaged as a set of Docker<nobr> microservices. Appwrite abstracts the complexity and repetitiveness required to build a modern backend API from scratch and allows you to build secure apps faster.
Using Appwrite, you can easily integrate your app with user authentication and multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, Cloud Functions, and [more services](https://appwrite.io/docs).
<p align="center">
<br />
@@ -39,14 +37,13 @@ Using Appwrite, you can easily integrate your app with user authentication and m
<br />
</p>
![Appwrite project dashboard showing various Appwrite features](public/images/github.png)
![Appwrite](public/images/github.png)
Find out more at: [https://appwrite.io](https://appwrite.io).
Find out more at: [https://appwrite.io](https://appwrite.io)
Table of Contents:
- [Installation \& Setup](#installation--setup)
- [Self-Hosting](#self-hosting)
- [Installation](#installation)
- [Unix](#unix)
- [Windows](#windows)
- [CMD](#cmd)
@@ -54,7 +51,7 @@ Table of Contents:
- [Upgrade from an Older Version](#upgrade-from-an-older-version)
- [One-Click Setups](#one-click-setups)
- [Getting Started](#getting-started)
- [Products](#products)
- [Services](#services)
- [SDKs](#sdks)
- [Client](#client)
- [Server](#server)
@@ -65,15 +62,11 @@ Table of Contents:
- [Follow Us](#follow-us)
- [License](#license)
## Installation & Setup
## Installation
The easiest way to get started with Appwrite is by [signing up for Appwrite Cloud](https://cloud.appwrite.io/). While Appwrite Cloud is in public beta, you can build with Appwrite completely free, and we won't collect your credit card information.
Appwrite is designed to run in a containerized environment. Running your server is as easy as running one command from your terminal. You can either run Appwrite on your localhost using docker-compose or on any other container orchestration tool, such as Kubernetes, Docker Swarm, or Rancher.
## Self-Hosting
Appwrite is designed to run in a containerized environment. Running your server is as easy as running one command from your terminal. You can either run Appwrite on your localhost using docker-compose or on any other container orchestration tool, such as [Kubernetes](https://kubernetes.io/docs/home/), [Docker Swarm](https://docs.docker.com/engine/swarm/), or [Rancher](https://rancher.com/docs/).
Before running the installation command, make sure you have [Docker](https://www.docker.com/products/docker-desktop) installed on your machine:
The easiest way to start running your Appwrite server is by running our docker-compose file. Before running the installation command, make sure you have [Docker](https://www.docker.com/products/docker-desktop) installed on your machine:
### Unix
@@ -82,7 +75,7 @@ docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite:1.8.0
appwrite/appwrite:1.3.4
```
### Windows
@@ -94,7 +87,7 @@ docker run -it --rm ^
--volume //var/run/docker.sock:/var/run/docker.sock ^
--volume "%cd%"/appwrite:/usr/src/code/appwrite:rw ^
--entrypoint="install" ^
appwrite/appwrite:1.8.0
appwrite/appwrite:1.3.4
```
#### PowerShell
@@ -104,7 +97,7 @@ docker run -it --rm `
--volume /var/run/docker.sock:/var/run/docker.sock `
--volume ${pwd}/appwrite:/usr/src/code/appwrite:rw `
--entrypoint="install" `
appwrite/appwrite:1.8.0
appwrite/appwrite:1.3.4
```
Once the Docker installation is complete, go to http://localhost to access the Appwrite console from your browser. Please note that on non-Linux native hosts, the server might take a few minutes to start after completing the installation.
@@ -113,7 +106,7 @@ For advanced production and custom installation, check out our Docker [environme
### Upgrade from an Older Version
If you are upgrading your Appwrite server from an older version, you should use the Appwrite migration tool once your setup is completed. For more information regarding this, check out the [Installation Docs](https://appwrite.io/docs/self-hosting).
If you are upgrading your Appwrite server from an older version, you should use the Appwrite migration tool once your setup is completed. For more information regarding this, check out the [Installation Docs](https://appwrite.io/docs/installation).
## One-Click Setups
@@ -132,19 +125,7 @@ Choose from one of the providers below:
<td align="center" width="100" height="100">
<a href="https://gitpod.io/#https://github.com/appwrite/integration-for-gitpod">
<img width="50" height="39" src="public/images/integrations/gitpod-logo.svg" alt="Gitpod Logo" />
<br /><sub><b>Gitpod</b></sub></a>
</a>
</td>
<td align="center" width="100" height="100">
<a href="https://www.linode.com/marketplace/apps/appwrite/appwrite/">
<img width="50" height="39" src="public/images/integrations/akamai-logo.svg" alt="Akamai Logo" />
<br /><sub><b>Akamai Compute</b></sub></a>
</a>
</td>
<td align="center" width="100" height="100">
<a href="https://aws.amazon.com/marketplace/pp/prodview-2hiaeo2px4md6">
<img width="50" height="39" src="public/images/integrations/aws-logo.svg" alt="AWS Logo" />
<br /><sub><b>AWS Marketplace</b></sub></a>
<br /><sub><b>Gitpod</b></sub></a>
</a>
</td>
</tr>
@@ -154,44 +135,24 @@ Choose from one of the providers below:
Getting started with Appwrite is as easy as creating a new project, choosing your platform, and integrating its SDK into your code. You can easily get started with your platform of choice by reading one of our Getting Started tutorials.
| Platform | Technology |
| --------------------- | ---------------------------------------------------------------------------------- |
| **Web app** | [Quick start for Web](https://appwrite.io/docs/quick-starts/web) |
| | [Quick start for Next.js](https://appwrite.io/docs/quick-starts/nextjs) |
| | [Quick start for React](https://appwrite.io/docs/quick-starts/react) |
| | [Quick start for Vue.js](https://appwrite.io/docs/quick-starts/vue) |
| | [Quick start for Nuxt](https://appwrite.io/docs/quick-starts/nuxt) |
| | [Quick start for SvelteKit](https://appwrite.io/docs/quick-starts/sveltekit) |
| | [Quick start for Refine](https://appwrite.io/docs/quick-starts/refine) |
| | [Quick start for Angular](https://appwrite.io/docs/quick-starts/angular) |
| **Mobile and Native** | [Quick start for React Native](https://appwrite.io/docs/quick-starts/react-native) |
| | [Quick start for Flutter](https://appwrite.io/docs/quick-starts/flutter) |
| | [Quick start for Apple](https://appwrite.io/docs/quick-starts/apple) |
| | [Quick start for Android](https://appwrite.io/docs/quick-starts/android) |
| **Server** | [Quick start for Node.js](https://appwrite.io/docs/quick-starts/node) |
| | [Quick start for Python](https://appwrite.io/docs/quick-starts/python) |
| | [Quick start for .NET](https://appwrite.io/docs/quick-starts/dotnet) |
| | [Quick start for Dart](https://appwrite.io/docs/quick-starts/dart) |
| | [Quick start for Ruby](https://appwrite.io/docs/quick-starts/ruby) |
| | [Quick start for Deno](https://appwrite.io/docs/quick-starts/deno) |
| | [Quick start for PHP](https://appwrite.io/docs/quick-starts/php) |
| | [Quick start for Kotlin](https://appwrite.io/docs/quick-starts/kotlin) |
| | [Quick start for Swift](https://appwrite.io/docs/quick-starts/swift) |
- [Getting Started for Web](https://appwrite.io/docs/getting-started-for-web)
- [Getting Started for Flutter](https://appwrite.io/docs/getting-started-for-flutter)
- [Getting Started for Apple](https://appwrite.io/docs/getting-started-for-apple)
- [Getting Started for Android](https://appwrite.io/docs/getting-started-for-android)
- [Getting Started for Server](https://appwrite.io/docs/getting-started-for-server)
- [Getting Started for CLI](https://appwrite.io/docs/command-line)
### Products
### Services
- [**Account**](https://appwrite.io/docs/references/cloud/client-web/account) - Manage current user authentication and account. Track and manage the user sessions, devices, sign-in methods, and security logs.
- [**Account**](https://appwrite.io/docs/client/account) - Manage current user authentication and account. Track and manage the user sessions, devices, sign-in methods, and security logs.
- [**Users**](https://appwrite.io/docs/server/users) - Manage and list all project users when building backend integrations with Server SDKs.
- [**Teams**](https://appwrite.io/docs/references/cloud/client-web/teams) - Manage and group users in teams. Manage memberships, invites, and user roles within a team.
- [**Databases**](https://appwrite.io/docs/references/cloud/client-web/databases) - Manage databases, collections, and documents. Read, create, update, and delete documents and filter lists of document collections using advanced filters.
- [**Storage**](https://appwrite.io/docs/references/cloud/client-web/storage) - Manage storage files. Read, create, delete, and preview files. Manipulate the preview of your files to perfectly fit your app. All files are scanned by ClamAV and stored in a secure and encrypted way.
- [**Functions**](https://appwrite.io/docs/references/cloud/server-nodejs/functions) - Customize your Appwrite project by executing your custom code in a secure, isolated environment. You can trigger your code on any Appwrite system event either manually or using a CRON schedule.
- [**Messaging**](https://appwrite.io/docs/references/cloud/client-web/messaging) - Communicate with your users through push notifications, emails, and SMS text messages using Appwrite Messaging.
- [**Teams**](https://appwrite.io/docs/client/teams) - Manage and group users in teams. Manage memberships, invites, and user roles within a team.
- [**Databases**](https://appwrite.io/docs/client/databases) - Manage databases, collections, and documents. Read, create, update, and delete documents and filter lists of document collections using advanced filters.
- [**Storage**](https://appwrite.io/docs/client/storage) - Manage storage files. Read, create, delete, and preview files. Manipulate the preview of your files to perfectly fit your app. All files are scanned by ClamAV and stored in a secure and encrypted way.
- [**Functions**](https://appwrite.io/docs/server/functions) - Customize your Appwrite server by executing your custom code in a secure, isolated environment. You can trigger your code on any Appwrite system event either manually or using a CRON schedule.
- [**Realtime**](https://appwrite.io/docs/realtime) - Listen to real-time events for any of your Appwrite services including users, storage, functions, databases, and more.
- [**Locale**](https://appwrite.io/docs/references/cloud/client-web/locale) - Track your user's location and manage your app locale-based data.
- [**Avatars**](https://appwrite.io/docs/references/cloud/client-web/avatars) - Manage your users' avatars, countries' flags, browser icons, and credit card symbols. Generate QR codes from links or plaintext strings.
- [**MCP**](https://appwrite.io/docs/tooling/mcp) - Use Appwrite's Model Context Protocol (MCP) server to allow LLMs and AI tools like Claude Desktop, Cursor, and Windsurf Editor to directly interact with your Appwrite project through natural language.
- [**Sites**](https://appwrite.io/docs/products/sites) - Develop, deploy, and scale your web applications directly from Appwrite, alongside your backend.
- [**Locale**](https://appwrite.io/docs/client/locale) - Track your user's location and manage your app locale-based data.
- [**Avatars**](https://appwrite.io/docs/client/avatars) - Manage your users' avatars, countries' flags, browser icons, and credit card symbols. Generate QR codes from links or plaintext strings.
For the complete API documentation, visit [https://appwrite.io/docs](https://appwrite.io/docs). For more tutorials, news and announcements check out our [blog](https://medium.com/appwrite-io) and [Discord Server](https://discord.gg/GSeTUeA).
@@ -201,34 +162,33 @@ Below is a list of currently supported platforms and languages. If you would lik
#### Client
- :white_check_mark: &nbsp; [Web](https://github.com/appwrite/sdk-for-web) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Flutter](https://github.com/appwrite/sdk-for-flutter) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Android](https://github.com/appwrite/sdk-for-android) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [React Native](https://github.com/appwrite/sdk-for-react-native) - **Beta** (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Web](https://github.com/appwrite/sdk-for-web) (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Flutter](https://github.com/appwrite/sdk-for-flutter) (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **Beta** (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Android](https://github.com/appwrite/sdk-for-android) (Maintained by the Appwrite Team)
#### Server
- :white_check_mark: &nbsp; [NodeJS](https://github.com/appwrite/sdk-for-node) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [PHP](https://github.com/appwrite/sdk-for-php) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Dart](https://github.com/appwrite/sdk-for-dart) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Deno](https://github.com/appwrite/sdk-for-deno) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Ruby](https://github.com/appwrite/sdk-for-ruby) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Python](https://github.com/appwrite/sdk-for-python) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Kotlin](https://github.com/appwrite/sdk-for-kotlin) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [Swift](https://github.com/appwrite/sdk-for-swift) (Maintained by the Appwrite Team)
- :white_check_mark: &nbsp; [.NET](https://github.com/appwrite/sdk-for-dotnet) - **Beta** (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [NodeJS](https://github.com/appwrite/sdk-for-node) (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [PHP](https://github.com/appwrite/sdk-for-php) (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Dart](https://github.com/appwrite/sdk-for-dart) - (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Deno](https://github.com/appwrite/sdk-for-deno) - **Beta** (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Ruby](https://github.com/appwrite/sdk-for-ruby) (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Python](https://github.com/appwrite/sdk-for-python) (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Kotlin](https://github.com/appwrite/sdk-for-kotlin) - **Beta** (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [Apple](https://github.com/appwrite/sdk-for-apple) - **Beta** (Maintained by the Appwrite Team)
- тЬЕ &nbsp; [.NET](https://github.com/appwrite/sdk-for-dotnet) - **Experimental** (Maintained by the Appwrite Team)
#### Community
- :white_check_mark: &nbsp; [Appcelerator Titanium](https://github.com/m1ga/ti.appwrite) (Maintained by [Michael Gangolf](https://github.com/m1ga/))
- :white_check_mark: &nbsp; [Godot Engine](https://github.com/GodotNuts/appwrite-sdk) (Maintained by [fenix-hub @GodotNuts](https://github.com/fenix-hub))
- тЬЕ &nbsp; [Appcelerator Titanium](https://github.com/m1ga/ti.appwrite) (Maintained by [Michael Gangolf](https://github.com/m1ga/))
- тЬЕ &nbsp; [Godot Engine](https://github.com/GodotNuts/appwrite-sdk) (Maintained by [fenix-hub @GodotNuts](https://github.com/fenix-hub))
Looking for more SDKs? - Help us by contributing a pull request to our [SDK Generator](https://github.com/appwrite/sdk-generator)!
## Architecture
![Appwrite Architecture showing how Appwrite is built and the services and tools it uses](docs/specs/overview.drawio.svg)
![Appwrite Architecture](docs/specs/overview.drawio.svg)
Appwrite uses a microservices architecture that was designed for easy scaling and delegation of responsibilities. In addition, Appwrite supports multiple APIs, such as REST, WebSocket, and GraphQL to allow you to interact with your resources by leveraging your existing knowledge and protocols of choice.
@@ -238,7 +198,7 @@ The Appwrite API layer was designed to be extremely fast by leveraging in-memory
All code contributions, including those of people having commit access, must go through a pull request and be approved by a core developer before being merged. This is to ensure a proper review of all the code.
We truly :heart: pull requests! If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md).
We truly тЭдя╕П pull requests! If you wish to help, you can learn more about how you can contribute to this project in the [contribution guide](CONTRIBUTING.md).
## Security
@@ -246,7 +206,7 @@ For security issues, kindly email us at [security@appwrite.io](mailto:security@a
## Follow Us
Join our growing community around the world! Check out our official [Blog](https://appwrite.io/blog). Follow us on [X](https://twitter.com/appwrite), [LinkedIn](https://www.linkedin.com/company/appwrite/), [Dev Community](https://dev.to/appwrite) or join our live [Discord server](https://appwrite.io/discord) for more help, ideas, and discussions.
Join our growing community around the world! Check out our official [Blog](https://medium.com/appwrite-io). Follow us on [Twitter](https://twitter.com/appwrite), [Facebook Page](https://www.facebook.com/appwrite.io), [Facebook Group](https://www.facebook.com/groups/appwrite.developers/), [Dev Community](https://dev.to/appwrite) or join our live [Discord server](https://discord.gg/GSeTUeA) for more help, ideas, and discussions.
## License
-3
View File
@@ -9,9 +9,6 @@
| 1.1.x | :white_check_mark: |
| 1.2.x | :white_check_mark: |
| 1.3.x | :white_check_mark: |
| 1.4.x | :white_check_mark: |
| 1.5.x | :white_check_mark: |
| 1.6.x | :white_check_mark: |
## Reporting a Vulnerability
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+17 -292
View File
@@ -1,307 +1,32 @@
<?php
require_once __DIR__ . '/init.php';
require_once __DIR__ . '/controllers/general.php';
use Appwrite\Event\Certificate;
use Appwrite\Event\Delete;
use Appwrite\Event\Func;
use Appwrite\Event\StatsResources;
use Appwrite\Event\StatsUsage;
use Appwrite\Platform\Appwrite;
use Appwrite\Runtimes\Runtimes;
use Executor\Executor;
use Swoole\Runtime;
use Swoole\Timer;
use Utopia\Cache\Adapter\Pool as CachePool;
use Utopia\Cache\Adapter\Sharding;
use Utopia\Cache\Cache;
use Utopia\App;
use Utopia\CLI\CLI;
use Utopia\CLI\Console;
use Utopia\Config\Config;
use Utopia\Database\Adapter\Pool as DatabasePool;
use Utopia\Database\Database;
use Utopia\Database\Document;
use Utopia\Database\Validator\Authorization;
use Utopia\DSN\DSN;
use Utopia\Logger\Log;
use Utopia\Platform\Service;
use Utopia\Pools\Group;
use Utopia\Queue\Broker\Pool as BrokerPool;
use Utopia\Queue\Publisher;
use Utopia\Registry\Registry;
use Utopia\System\System;
use Utopia\Telemetry\Adapter\None as NoTelemetry;
use function Swoole\Coroutine\run;
// overwriting runtimes to be architecture agnostic for CLI
Config::setParam('runtimes', (new Runtimes('v5'))->getAll(supported: false));
// require controllers after overwriting runtimes
require_once __DIR__ . '/controllers/general.php';
Authorization::disable();
CLI::setResource('register', fn () => $register);
$cli = new CLI();
CLI::setResource('cache', function ($pools) {
$list = Config::getParam('pools-cache', []);
$adapters = [];
foreach ($list as $value) {
$adapters[] = new CachePool($pools->get($value));
}
return new Cache(new Sharding($adapters));
}, ['pools']);
CLI::setResource('pools', function (Registry $register) {
return $register->get('pools');
}, ['register']);
CLI::setResource('dbForPlatform', function ($pools, $cache) {
$sleep = 3;
$maxAttempts = 5;
$attempts = 0;
$ready = false;
do {
$attempts++;
try {
// Prepare database connection
$adapter = new DatabasePool($pools->get('console'));
$dbForPlatform = new Database($adapter, $cache);
$dbForPlatform
->setNamespace('_console')
->setMetadata('host', \gethostname())
->setMetadata('project', 'console');
// Ensure tables exist
$collections = Config::getParam('collections', [])['console'];
$last = \array_key_last($collections);
if (!($dbForPlatform->exists($dbForPlatform->getDatabase(), $last))) { /** TODO cache ready variable using registry */
throw new Exception('Tables not ready yet.');
}
$ready = true;
} catch (\Throwable $err) {
Console::warning($err->getMessage());
sleep($sleep);
}
} while ($attempts < $maxAttempts && !$ready);
if (!$ready) {
throw new Exception("Console is not ready yet. Please try again later.");
}
return $dbForPlatform;
}, ['pools', 'cache']);
CLI::setResource('console', function () {
return new Document(Config::getParam('console'));
}, []);
CLI::setResource(
'isResourceBlocked',
fn () => fn (Document $project, string $resourceType, ?string $resourceId) => false
);
CLI::setResource('getProjectDB', function (Group $pools, Database $dbForPlatform, $cache) {
$databases = []; // TODO: @Meldiron This should probably be responsibility of utopia-php/pools
return function (Document $project) use ($pools, $dbForPlatform, $cache, &$databases) {
if ($project->isEmpty() || $project->getId() === 'console') {
return $dbForPlatform;
}
try {
$dsn = new DSN($project->getAttribute('database'));
} catch (\InvalidArgumentException) {
// TODO: Temporary until all projects are using shared tables
$dsn = new DSN('mysql://' . $project->getAttribute('database'));
}
if (isset($databases[$dsn->getHost()])) {
$database = $databases[$dsn->getHost()];
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setNamespace($dsn->getParam('namespace'));
} else {
$database
->setSharedTables(false)
->setTenant(null)
->setNamespace('_' . $project->getSequence());
}
return $database;
}
$adapter = new DatabasePool($pools->get($dsn->getHost()));
$database = new Database($adapter, $cache);
$databases[$dsn->getHost()] = $database;
$sharedTables = \explode(',', System::getEnv('_APP_DATABASE_SHARED_TABLES', ''));
if (\in_array($dsn->getHost(), $sharedTables)) {
$database
->setSharedTables(true)
->setTenant((int)$project->getSequence())
->setNamespace($dsn->getParam('namespace'));
} else {
$database
->setSharedTables(false)
->setTenant(null)
->setNamespace('_' . $project->getSequence());
}
$database
->setMetadata('host', \gethostname())
->setMetadata('project', $project->getId());
return $database;
};
}, ['pools', 'dbForPlatform', 'cache']);
CLI::setResource('getLogsDB', function (Group $pools, Cache $cache) {
$database = null;
return function (?Document $project = null) use ($pools, $cache, $database) {
if ($database !== null && $project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int)$project->getSequence());
return $database;
}
$adapter = new DatabasePool($pools->get('logs'));
$database = new Database($adapter, $cache);
$database
->setSharedTables(true)
->setNamespace('logsV1')
->setTimeout(APP_DATABASE_TIMEOUT_MILLISECONDS_TASK)
->setMaxQueryValues(APP_DATABASE_QUERY_MAX_VALUES);
// set tenant
if ($project !== null && !$project->isEmpty() && $project->getId() !== 'console') {
$database->setTenant((int)$project->getSequence());
}
return $database;
};
}, ['pools', 'cache']);
CLI::setResource('publisher', function (Group $pools) {
return new BrokerPool(publisher: $pools->get('publisher'));
}, ['pools']);
CLI::setResource('publisherDatabases', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherFunctions', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherMigrations', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherStatsUsage', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('publisherMessaging', function (BrokerPool $publisher) {
return $publisher;
}, ['publisher']);
CLI::setResource('queueForStatsUsage', function (Publisher $publisher) {
return new StatsUsage($publisher);
}, ['publisher']);
CLI::setResource('queueForStatsResources', function (Publisher $publisher) {
return new StatsResources($publisher);
}, ['publisher']);
CLI::setResource('queueForFunctions', function (Publisher $publisher) {
return new Func($publisher);
}, ['publisher']);
CLI::setResource('queueForDeletes', function (Publisher $publisher) {
return new Delete($publisher);
}, ['publisher']);
CLI::setResource('queueForCertificates', function (Publisher $publisher) {
return new Certificate($publisher);
}, ['publisher']);
CLI::setResource('logError', function (Registry $register) {
return function (Throwable $error, string $namespace, string $action) use ($register) {
Console::error('[Error] Timestamp: ' . date('c', time()));
Console::error('[Error] Type: ' . get_class($error));
Console::error('[Error] Message: ' . $error->getMessage());
Console::error('[Error] File: ' . $error->getFile());
Console::error('[Error] Line: ' . $error->getLine());
Console::error('[Error] Trace: ' . $error->getTraceAsString());
$logger = $register->get('logger');
if ($logger) {
$version = System::getEnv('_APP_VERSION', 'UNKNOWN');
$log = new Log();
$log->setNamespace($namespace);
$log->setServer(System::getEnv('_APP_LOGGING_SERVICE_IDENTIFIER', \gethostname()));
$log->setVersion($version);
$log->setType(Log::TYPE_ERROR);
$log->setMessage($error->getMessage());
$log->addTag('code', $error->getCode());
$log->addTag('verboseType', get_class($error));
$log->addExtra('file', $error->getFile());
$log->addExtra('line', $error->getLine());
$log->addExtra('trace', $error->getTraceAsString());
$log->addExtra('detailedTrace', $error->getTrace());
$log->setAction($action);
$isProduction = System::getEnv('_APP_ENV', 'development') === 'production';
$log->setEnvironment($isProduction ? Log::ENVIRONMENT_PRODUCTION : Log::ENVIRONMENT_STAGING);
try {
$responseCode = $logger->addLog($log);
Console::info('Error log pushed with status code: ' . $responseCode);
} catch (Throwable $th) {
Console::error('Error pushing log: ' . $th->getMessage());
}
}
};
}, ['register']);
CLI::setResource('executor', fn () => new Executor());
CLI::setResource('telemetry', fn () => new NoTelemetry());
$platform = new Appwrite();
$args = $platform->getEnv('argv');
if (!isset($args[0])) {
Console::error('Missing task name');
Console::exit(1);
}
\array_shift($args);
$taskName = $args[0];
$platform->init(Service::TYPE_TASK);
$cli = $platform->getCli();
include 'tasks/doctor.php';
include 'tasks/maintenance.php';
include 'tasks/install.php';
include 'tasks/migrate.php';
include 'tasks/sdks.php';
include 'tasks/specs.php';
include 'tasks/ssl.php';
include 'tasks/vars.php';
include 'tasks/usage.php';
$cli
->error()
->inject('error')
->inject('logError')
->action(function (Throwable $error, callable $logError) use ($taskName) {
call_user_func_array($logError, [
$error,
'Task',
$taskName,
]);
Timer::clearAll();
->task('version')
->desc('Get the server version')
->action(function () {
Console::log(App::getEnv('_APP_VERSION', 'UNKNOWN'));
});
$cli->shutdown()->action(fn () => Timer::clearAll());
Runtime::enableCoroutine(SWOOLE_HOOK_ALL);
run($cli->run(...));
$cli->run();
-16
View File
@@ -1,16 +0,0 @@
<?php
return [
'rest' => [
'key' => 'rest',
'name' => 'REST',
],
'graphql' => [
'key' => 'graphql',
'name' => 'GraphQL',
],
'realtime' => [
'key' => 'realtime',
'name' => 'Realtime',
],
];
+4 -11
View File
@@ -7,28 +7,21 @@ return [
'name' => 'Email/Password',
'key' => 'emailPassword',
'icon' => '/images/users/email.png',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateEmailPasswordSession',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreateEmailSession',
'enabled' => true,
],
'magic-url' => [
'name' => 'Magic URL',
'key' => 'usersAuthMagicURL',
'icon' => '/images/users/magic-url.png',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateMagicURLToken',
'enabled' => true,
],
'email-otp' => [
'name' => 'Email (OTP)',
'key' => 'emailOtp',
'icon' => '/images/users/email.png',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateEmailToken',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreateMagicURLSession',
'enabled' => true,
],
'anonymous' => [
'name' => 'Anonymous',
'key' => 'anonymous',
'icon' => '/images/users/anonymous.png',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateAnonymousSession',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreateAnonymousSession',
'enabled' => true,
],
'invites' => [
@@ -49,7 +42,7 @@ return [
'name' => 'Phone',
'key' => 'phone',
'icon' => '/images/users/phone.png',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreatePhoneToken',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreatePhoneSession',
'enabled' => true,
],
];
+14 -15
View File
@@ -2,21 +2,20 @@
return [
// Codes based on: https://github.com/matomo-org/device-detector/blob/master/Parser/Client/Browser.php
'aa' => ['name' => 'Avant Browser', 'path' => __DIR__ . '/browsers/avant.png'],
'an' => ['name' => 'Android WebView Beta', 'path' => __DIR__ . '/browsers/android-webview-beta.png'],
'ch' => ['name' => 'Google Chrome', 'path' => __DIR__ . '/browsers/chrome.png'],
'ci' => ['name' => 'Google Chrome (iOS)', 'path' => __DIR__ . '/browsers/chrome.png'],
'cm' => ['name' => 'Google Chrome (Mobile)', 'path' => __DIR__ . '/browsers/chrome.png'],
'cr' => ['name' => 'Chromium', 'path' => __DIR__ . '/browsers/chromium.png'],
'ff' => ['name' => 'Mozilla Firefox', 'path' => __DIR__ . '/browsers/firefox.png'],
'sf' => ['name' => 'Safari', 'path' => __DIR__ . '/browsers/safari.png'],
'mf' => ['name' => 'Mobile Safari', 'path' => __DIR__ . '/browsers/safari.png'],
'ps' => ['name' => 'Microsoft Edge', 'path' => __DIR__ . '/browsers/edge.png'],
'oi' => ['name' => 'Microsoft Edge (iOS)', 'path' => __DIR__ . '/browsers/edge.png'],
'om' => ['name' => 'Opera Mini', 'path' => __DIR__ . '/browsers/opera-mini.png'],
'op' => ['name' => 'Opera', 'path' => __DIR__ . '/browsers/opera.png'],
'on' => ['name' => 'Opera (Next)', 'path' => __DIR__ . '/browsers/opera.png'],
'aa' => __DIR__ . '/browsers/avant.png',
'an' => __DIR__ . '/browsers/android-webview-beta.png',
'ch' => __DIR__ . '/browsers/chrome.png',
'ci' => __DIR__ . '/browsers/chrome.png', //Chrome Mobile iOS
'cm' => __DIR__ . '/browsers/chrome.png', //Chrome Mobile
'cr' => __DIR__ . '/browsers/chromium.png',
'ff' => __DIR__ . '/browsers/firefox.png',
'sf' => __DIR__ . '/browsers/safari.png',
'mf' => __DIR__ . '/browsers/safari.png',
'ps' => __DIR__ . '/browsers/edge.png',
'oi' => __DIR__ . '/browsers/edge.png',
'om' => __DIR__ . '/browsers/opera-mini.png',
'op' => __DIR__ . '/browsers/opera.png',
'on' => __DIR__ . '/browsers/opera.png',
/*
'36' => '360 Phone Browser',
+16 -17
View File
@@ -1,21 +1,20 @@
<?php
return [
'amex' => ['name' => 'American Express', 'path' => __DIR__ . '/credit-cards/amex.png'],
'argencard' => ['name' => 'Argencard', 'path' => __DIR__ . '/credit-cards/argencard.png'],
'cabal' => ['name' => 'Cabal', 'path' => __DIR__ . '/credit-cards/cabal.png'],
'cencosud' => ['name' => 'Cencosud', 'path' => __DIR__ . '/credit-cards/cencosud.png'],
'diners' => ['name' => 'Diners Club', 'path' => __DIR__ . '/credit-cards/diners.png'],
'discover' => ['name' => 'Discover', 'path' => __DIR__ . '/credit-cards/discover.png'],
'elo' => ['name' => 'Elo', 'path' => __DIR__ . '/credit-cards/elo.png'],
'hipercard' => ['name' => 'Hipercard', 'path' => __DIR__ . '/credit-cards/hipercard.png'],
'jcb' => ['name' => 'JCB', 'path' => __DIR__ . '/credit-cards/jcb.png'],
'mastercard' => ['name' => 'Mastercard', 'path' => __DIR__ . '/credit-cards/mastercard.png'],
'naranja' => ['name' => 'Naranja', 'path' => __DIR__ . '/credit-cards/naranja.png'],
'targeta-shopping' => ['name' => 'Tarjeta Shopping', 'path' => __DIR__ . '/credit-cards/tarjeta-shopping.png'],
'unionpay' => ['name' => 'Union Pay', 'path' => __DIR__ . '/credit-cards/unionpay.png'],
'visa' => ['name' => 'Visa', 'path' => __DIR__ . '/credit-cards/visa.png'],
'mir' => ['name' => 'MIR', 'path' => __DIR__ . '/credit-cards/mir.png'],
'maestro' => ['name' => 'Maestro', 'path' => __DIR__ . '/credit-cards/maestro.png'],
'rupay' => ['name' => 'Rupay', 'path' => __DIR__ . '/credit-cards/rupay.png']
'amex' => __DIR__ . '/credit-cards/amex.png',
'argencard' => __DIR__ . '/credit-cards/argencard.png',
'cabal' => __DIR__ . '/credit-cards/cabal.png',
'censosud' => __DIR__ . '/credit-cards/consosud.png',
'diners' => __DIR__ . '/credit-cards/diners.png',
'discover' => __DIR__ . '/credit-cards/discover.png',
'elo' => __DIR__ . '/credit-cards/elo.png',
'hipercard' => __DIR__ . '/credit-cards/hipercard.png',
'jcb' => __DIR__ . '/credit-cards/jcb.png',
'mastercard' => __DIR__ . '/credit-cards/mastercard.png',
'naranja' => __DIR__ . '/credit-cards/naranja.png',
'targeta-shopping' => __DIR__ . '/credit-cards/tarjeta-shopping.png',
'union-china-pay' => __DIR__ . '/credit-cards/union-china-pay.png',
'visa' => __DIR__ . '/credit-cards/visa.png',
'mir' => __DIR__ . '/credit-cards/mir.png',
'maestro' => __DIR__ . '/credit-cards/maestro.png',
];

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 78 KiB

+194 -195
View File
@@ -1,199 +1,198 @@
<?php
return [
'af' => ['name' => 'Afghanistan', 'path' => __DIR__ . '/flags/af.png'],
'ao' => ['name' => 'Angola', 'path' => __DIR__ . '/flags/ao.png'],
'al' => ['name' => 'Albania', 'path' => __DIR__ . '/flags/al.png'],
'ad' => ['name' => 'Andorra', 'path' => __DIR__ . '/flags/ad.png'],
'ae' => ['name' => 'United Arab Emirates', 'path' => __DIR__ . '/flags/ae.png'],
'ar' => ['name' => 'Argentina', 'path' => __DIR__ . '/flags/ar.png'],
'am' => ['name' => 'Armenia', 'path' => __DIR__ . '/flags/am.png'],
'ag' => ['name' => 'Antigua and Barbuda', 'path' => __DIR__ . '/flags/ag.png'],
'au' => ['name' => 'Australia', 'path' => __DIR__ . '/flags/au.png'],
'at' => ['name' => 'Austria', 'path' => __DIR__ . '/flags/at.png'],
'az' => ['name' => 'Azerbaijan', 'path' => __DIR__ . '/flags/az.png'],
'bi' => ['name' => 'Burundi', 'path' => __DIR__ . '/flags/bi.png'],
'be' => ['name' => 'Belgium', 'path' => __DIR__ . '/flags/be.png'],
'bj' => ['name' => 'Benin', 'path' => __DIR__ . '/flags/bj.png'],
'bf' => ['name' => 'Burkina Faso', 'path' => __DIR__ . '/flags/bf.png'],
'bd' => ['name' => 'Bangladesh', 'path' => __DIR__ . '/flags/bd.png'],
'bg' => ['name' => 'Bulgaria', 'path' => __DIR__ . '/flags/bg.png'],
'bh' => ['name' => 'Bahrain', 'path' => __DIR__ . '/flags/bh.png'],
'bs' => ['name' => 'Bahamas', 'path' => __DIR__ . '/flags/bs.png'],
'ba' => ['name' => 'Bosnia and Herzegovina', 'path' => __DIR__ . '/flags/ba.png'],
'by' => ['name' => 'Belarus', 'path' => __DIR__ . '/flags/by.png'],
'bz' => ['name' => 'Belize', 'path' => __DIR__ . '/flags/bz.png'],
'bo' => ['name' => 'Bolivia', 'path' => __DIR__ . '/flags/bo.png'],
'br' => ['name' => 'Brazil', 'path' => __DIR__ . '/flags/br.png'],
'bb' => ['name' => 'Barbados', 'path' => __DIR__ . '/flags/bb.png'],
'bn' => ['name' => 'Brunei Darussalam', 'path' => __DIR__ . '/flags/bn.png'],
'bt' => ['name' => 'Bhutan', 'path' => __DIR__ . '/flags/bt.png'],
'bw' => ['name' => 'Botswana', 'path' => __DIR__ . '/flags/bw.png'],
'cf' => ['name' => 'Central African Republic', 'path' => __DIR__ . '/flags/cf.png'],
'ca' => ['name' => 'Canada', 'path' => __DIR__ . '/flags/ca.png'],
'ch' => ['name' => 'Switzerland', 'path' => __DIR__ . '/flags/ch.png'],
'cl' => ['name' => 'Chile', 'path' => __DIR__ . '/flags/cl.png'],
'cn' => ['name' => 'China', 'path' => __DIR__ . '/flags/cn.png'],
'ci' => ['name' => 'C├┤te d\'Ivoire', 'path' => __DIR__ . '/flags/ci.png'],
'cm' => ['name' => 'Cameroon', 'path' => __DIR__ . '/flags/cm.png'],
'cd' => ['name' => 'Democratic Republic of the Congo', 'path' => __DIR__ . '/flags/cd.png'],
'cg' => ['name' => 'Republic of the Congo', 'path' => __DIR__ . '/flags/cg.png'],
'co' => ['name' => 'Colombia', 'path' => __DIR__ . '/flags/co.png'],
'km' => ['name' => 'Comoros', 'path' => __DIR__ . '/flags/km.png'],
'cv' => ['name' => 'Cape Verde', 'path' => __DIR__ . '/flags/cv.png'],
'cr' => ['name' => 'Costa Rica', 'path' => __DIR__ . '/flags/cr.png'],
'cu' => ['name' => 'Cuba', 'path' => __DIR__ . '/flags/cu.png'],
'cy' => ['name' => 'Cyprus', 'path' => __DIR__ . '/flags/cy.png'],
'cz' => ['name' => 'Czech Republic', 'path' => __DIR__ . '/flags/cz.png'],
'de' => ['name' => 'Germany', 'path' => __DIR__ . '/flags/de.png'],
'dj' => ['name' => 'Djibouti', 'path' => __DIR__ . '/flags/dj.png'],
'dm' => ['name' => 'Dominica', 'path' => __DIR__ . '/flags/dm.png'],
'dk' => ['name' => 'Denmark', 'path' => __DIR__ . '/flags/dk.png'],
'do' => ['name' => 'Dominican Republic', 'path' => __DIR__ . '/flags/do.png'],
'dz' => ['name' => 'Algeria', 'path' => __DIR__ . '/flags/dz.png'],
'ec' => ['name' => 'Ecuador', 'path' => __DIR__ . '/flags/ec.png'],
'eg' => ['name' => 'Egypt', 'path' => __DIR__ . '/flags/eg.png'],
'er' => ['name' => 'Eritrea', 'path' => __DIR__ . '/flags/er.png'],
'es' => ['name' => 'Spain', 'path' => __DIR__ . '/flags/es.png'],
'ee' => ['name' => 'Estonia', 'path' => __DIR__ . '/flags/ee.png'],
'et' => ['name' => 'Ethiopia', 'path' => __DIR__ . '/flags/et.png'],
'fi' => ['name' => 'Finland', 'path' => __DIR__ . '/flags/fi.png'],
'fj' => ['name' => 'Fiji', 'path' => __DIR__ . '/flags/fj.png'],
'fr' => ['name' => 'France', 'path' => __DIR__ . '/flags/fr.png'],
'fm' => ['name' => 'Micronesia (Federated States of)', 'path' => __DIR__ . '/flags/fm.png'],
'ga' => ['name' => 'Gabon', 'path' => __DIR__ . '/flags/ga.png'],
'gb' => ['name' => 'United Kingdom', 'path' => __DIR__ . '/flags/gb.png'],
'ge' => ['name' => 'Georgia', 'path' => __DIR__ . '/flags/ge.png'],
'gh' => ['name' => 'Ghana', 'path' => __DIR__ . '/flags/gh.png'],
'gn' => ['name' => 'Guinea', 'path' => __DIR__ . '/flags/gn.png'],
'gm' => ['name' => 'Gambia', 'path' => __DIR__ . '/flags/gm.png'],
'gw' => ['name' => 'Guinea-Bissau', 'path' => __DIR__ . '/flags/gw.png'],
'gq' => ['name' => 'Equatorial Guinea', 'path' => __DIR__ . '/flags/gq.png'],
'gr' => ['name' => 'Greece', 'path' => __DIR__ . '/flags/gr.png'],
'gd' => ['name' => 'Grenada', 'path' => __DIR__ . '/flags/gd.png'],
'gt' => ['name' => 'Guatemala', 'path' => __DIR__ . '/flags/gt.png'],
'gy' => ['name' => 'Guyana', 'path' => __DIR__ . '/flags/gy.png'],
'hn' => ['name' => 'Honduras', 'path' => __DIR__ . '/flags/hn.png'],
'hr' => ['name' => 'Croatia', 'path' => __DIR__ . '/flags/hr.png'],
'ht' => ['name' => 'Haiti', 'path' => __DIR__ . '/flags/ht.png'],
'hu' => ['name' => 'Hungary', 'path' => __DIR__ . '/flags/hu.png'],
'id' => ['name' => 'Indonesia', 'path' => __DIR__ . '/flags/id.png'],
'in' => ['name' => 'India', 'path' => __DIR__ . '/flags/in.png'],
'ie' => ['name' => 'Ireland', 'path' => __DIR__ . '/flags/ie.png'],
'ir' => ['name' => 'Iran (Islamic Republic of)', 'path' => __DIR__ . '/flags/ir.png'],
'iq' => ['name' => 'Iraq', 'path' => __DIR__ . '/flags/iq.png'],
'is' => ['name' => 'Iceland', 'path' => __DIR__ . '/flags/is.png'],
'il' => ['name' => 'Israel', 'path' => __DIR__ . '/flags/il.png'],
'it' => ['name' => 'Italy', 'path' => __DIR__ . '/flags/it.png'],
'jm' => ['name' => 'Jamaica', 'path' => __DIR__ . '/flags/jm.png'],
'jo' => ['name' => 'Jordan', 'path' => __DIR__ . '/flags/jo.png'],
'jp' => ['name' => 'Japan', 'path' => __DIR__ . '/flags/jp.png'],
'kz' => ['name' => 'Kazakhstan', 'path' => __DIR__ . '/flags/kz.png'],
'ke' => ['name' => 'Kenya', 'path' => __DIR__ . '/flags/ke.png'],
'kg' => ['name' => 'Kyrgyzstan', 'path' => __DIR__ . '/flags/kg.png'],
'kh' => ['name' => 'Cambodia', 'path' => __DIR__ . '/flags/kh.png'],
'ki' => ['name' => 'Kiribati', 'path' => __DIR__ . '/flags/ki.png'],
'kn' => ['name' => 'Saint Kitts and Nevis', 'path' => __DIR__ . '/flags/kn.png'],
'kr' => ['name' => 'South Korea', 'path' => __DIR__ . '/flags/kr.png'],
'kw' => ['name' => 'Kuwait', 'path' => __DIR__ . '/flags/kw.png'],
'la' => ['name' => 'Lao People\'s Democratic Republic', 'path' => __DIR__ . '/flags/la.png'],
'lb' => ['name' => 'Lebanon', 'path' => __DIR__ . '/flags/lb.png'],
'lr' => ['name' => 'Liberia', 'path' => __DIR__ . '/flags/lr.png'],
'ly' => ['name' => 'Libya', 'path' => __DIR__ . '/flags/ly.png'],
'lc' => ['name' => 'Saint Lucia', 'path' => __DIR__ . '/flags/lc.png'],
'li' => ['name' => 'Liechtenstein', 'path' => __DIR__ . '/flags/li.png'],
'lk' => ['name' => 'Sri Lanka', 'path' => __DIR__ . '/flags/lk.png'],
'ls' => ['name' => 'Lesotho', 'path' => __DIR__ . '/flags/ls.png'],
'lt' => ['name' => 'Lithuania', 'path' => __DIR__ . '/flags/lt.png'],
'lu' => ['name' => 'Luxembourg', 'path' => __DIR__ . '/flags/lu.png'],
'lv' => ['name' => 'Latvia', 'path' => __DIR__ . '/flags/lv.png'],
'ma' => ['name' => 'Morocco', 'path' => __DIR__ . '/flags/ma.png'],
'mc' => ['name' => 'Monaco', 'path' => __DIR__ . '/flags/mc.png'],
'md' => ['name' => 'Moldova', 'path' => __DIR__ . '/flags/md.png'],
'mg' => ['name' => 'Madagascar', 'path' => __DIR__ . '/flags/mg.png'],
'mv' => ['name' => 'Maldives', 'path' => __DIR__ . '/flags/mv.png'],
'mx' => ['name' => 'Mexico', 'path' => __DIR__ . '/flags/mx.png'],
'mh' => ['name' => 'Marshall Islands', 'path' => __DIR__ . '/flags/mh.png'],
'mk' => ['name' => 'North Macedonia', 'path' => __DIR__ . '/flags/mk.png'],
'ml' => ['name' => 'Mali', 'path' => __DIR__ . '/flags/ml.png'],
'mt' => ['name' => 'Malta', 'path' => __DIR__ . '/flags/mt.png'],
'mm' => ['name' => 'Myanmar', 'path' => __DIR__ . '/flags/mm.png'],
'me' => ['name' => 'Montenegro', 'path' => __DIR__ . '/flags/me.png'],
'mn' => ['name' => 'Mongolia', 'path' => __DIR__ . '/flags/mn.png'],
'mz' => ['name' => 'Mozambique', 'path' => __DIR__ . '/flags/mz.png'],
'mr' => ['name' => 'Mauritania', 'path' => __DIR__ . '/flags/mr.png'],
'mu' => ['name' => 'Mauritius', 'path' => __DIR__ . '/flags/mu.png'],
'mw' => ['name' => 'Malawi', 'path' => __DIR__ . '/flags/mw.png'],
'my' => ['name' => 'Malaysia', 'path' => __DIR__ . '/flags/my.png'],
'na' => ['name' => 'Namibia', 'path' => __DIR__ . '/flags/na.png'],
'ne' => ['name' => 'Niger', 'path' => __DIR__ . '/flags/ne.png'],
'ng' => ['name' => 'Nigeria', 'path' => __DIR__ . '/flags/ng.png'],
'ni' => ['name' => 'Nicaragua', 'path' => __DIR__ . '/flags/ni.png'],
'nl' => ['name' => 'Netherlands', 'path' => __DIR__ . '/flags/nl.png'],
'no' => ['name' => 'Norway', 'path' => __DIR__ . '/flags/no.png'],
'np' => ['name' => 'Nepal', 'path' => __DIR__ . '/flags/np.png'],
'nr' => ['name' => 'Nauru', 'path' => __DIR__ . '/flags/nr.png'],
'nz' => ['name' => 'New Zealand', 'path' => __DIR__ . '/flags/nz.png'],
'om' => ['name' => 'Oman', 'path' => __DIR__ . '/flags/om.png'],
'pk' => ['name' => 'Pakistan', 'path' => __DIR__ . '/flags/pk.png'],
'pa' => ['name' => 'Panama', 'path' => __DIR__ . '/flags/pa.png'],
'pe' => ['name' => 'Peru', 'path' => __DIR__ . '/flags/pe.png'],
'ph' => ['name' => 'Philippines', 'path' => __DIR__ . '/flags/ph.png'],
'pw' => ['name' => 'Palau', 'path' => __DIR__ . '/flags/pw.png'],
'pg' => ['name' => 'Papua New Guinea', 'path' => __DIR__ . '/flags/pg.png'],
'pl' => ['name' => 'Poland', 'path' => __DIR__ . '/flags/pl.png'],
'pf' => ['name' => 'French Polynesia', 'path' => __DIR__ . '/flags/pf.png'],
'kp' => ['name' => 'North Korea', 'path' => __DIR__ . '/flags/kp.png'],
'pt' => ['name' => 'Portugal', 'path' => __DIR__ . '/flags/pt.png'],
'py' => ['name' => 'Paraguay', 'path' => __DIR__ . '/flags/py.png'],
'qa' => ['name' => 'Qatar', 'path' => __DIR__ . '/flags/qa.png'],
'ro' => ['name' => 'Romania', 'path' => __DIR__ . '/flags/ro.png'],
'ru' => ['name' => 'Russia', 'path' => __DIR__ . '/flags/ru.png'],
'rw' => ['name' => 'Rwanda', 'path' => __DIR__ . '/flags/rw.png'],
'sa' => ['name' => 'Saudi Arabia', 'path' => __DIR__ . '/flags/sa.png'],
'sd' => ['name' => 'Sudan', 'path' => __DIR__ . '/flags/sd.png'],
'sn' => ['name' => 'Senegal', 'path' => __DIR__ . '/flags/sn.png'],
'sg' => ['name' => 'Singapore', 'path' => __DIR__ . '/flags/sg.png'],
'sb' => ['name' => 'Solomon Islands', 'path' => __DIR__ . '/flags/sb.png'],
'sl' => ['name' => 'Sierra Leone', 'path' => __DIR__ . '/flags/sl.png'],
'sv' => ['name' => 'El Salvador', 'path' => __DIR__ . '/flags/sv.png'],
'sm' => ['name' => 'San Marino', 'path' => __DIR__ . '/flags/sm.png'],
'so' => ['name' => 'Somalia', 'path' => __DIR__ . '/flags/so.png'],
'rs' => ['name' => 'Serbia', 'path' => __DIR__ . '/flags/rs.png'],
'ss' => ['name' => 'South Sudan', 'path' => __DIR__ . '/flags/ss.png'],
'st' => ['name' => 'Sao Tome and Principe', 'path' => __DIR__ . '/flags/st.png'],
'sr' => ['name' => 'Suriname', 'path' => __DIR__ . '/flags/sr.png'],
'sk' => ['name' => 'Slovakia', 'path' => __DIR__ . '/flags/sk.png'],
'si' => ['name' => 'Slovenia', 'path' => __DIR__ . '/flags/si.png'],
'se' => ['name' => 'Sweden', 'path' => __DIR__ . '/flags/se.png'],
'sz' => ['name' => 'Eswatini', 'path' => __DIR__ . '/flags/sz.png'],
'sc' => ['name' => 'Seychelles', 'path' => __DIR__ . '/flags/sc.png'],
'sy' => ['name' => 'Syria', 'path' => __DIR__ . '/flags/sy.png'],
'td' => ['name' => 'Chad', 'path' => __DIR__ . '/flags/td.png'],
'tg' => ['name' => 'Togo', 'path' => __DIR__ . '/flags/tg.png'],
'th' => ['name' => 'Thailand', 'path' => __DIR__ . '/flags/th.png'],
'tj' => ['name' => 'Tajikistan', 'path' => __DIR__ . '/flags/tj.png'],
'tm' => ['name' => 'Turkmenistan', 'path' => __DIR__ . '/flags/tm.png'],
'tl' => ['name' => 'Timor-Leste', 'path' => __DIR__ . '/flags/tl.png'],
'to' => ['name' => 'Tonga', 'path' => __DIR__ . '/flags/to.png'],
'tt' => ['name' => 'Trinidad and Tobago', 'path' => __DIR__ . '/flags/tt.png'],
'tn' => ['name' => 'Tunisia', 'path' => __DIR__ . '/flags/tn.png'],
'tr' => ['name' => 'Turkey', 'path' => __DIR__ . '/flags/tr.png'],
'tv' => ['name' => 'Tuvalu', 'path' => __DIR__ . '/flags/tv.png'],
'tz' => ['name' => 'Tanzania', 'path' => __DIR__ . '/flags/tz.png'],
'ug' => ['name' => 'Uganda', 'path' => __DIR__ . '/flags/ug.png'],
'ua' => ['name' => 'Ukraine', 'path' => __DIR__ . '/flags/ua.png'],
'uy' => ['name' => 'Uruguay', 'path' => __DIR__ . '/flags/uy.png'],
'us' => ['name' => 'United States', 'path' => __DIR__ . '/flags/us.png'],
'uz' => ['name' => 'Uzbekistan', 'path' => __DIR__ . '/flags/uz.png'],
'va' => ['name' => 'Vatican City', 'path' => __DIR__ . '/flags/va.png'],
'vc' => ['name' => 'Saint Vincent and the Grenadines', 'path' => __DIR__ . '/flags/vc.png'],
've' => ['name' => 'Venezuela', 'path' => __DIR__ . '/flags/ve.png'],
'vn' => ['name' => 'Vietnam', 'path' => __DIR__ . '/flags/vn.png'],
'vu' => ['name' => 'Vanuatu', 'path' => __DIR__ . '/flags/vu.png'],
'ws' => ['name' => 'Samoa', 'path' => __DIR__ . '/flags/ws.png'],
'ye' => ['name' => 'Yemen', 'path' => __DIR__ . '/flags/ye.png'],
'za' => ['name' => 'South Africa', 'path' => __DIR__ . '/flags/za.png'],
'zm' => ['name' => 'Zambia', 'path' => __DIR__ . '/flags/zm.png'],
'zw' => ['name' => 'Zimbabwe', 'path' => __DIR__ . '/flags/zw.png'],
'af' => __DIR__ . '/flags/af.png',
'ao' => __DIR__ . '/flags/ao.png',
'al' => __DIR__ . '/flags/al.png',
'ad' => __DIR__ . '/flags/ad.png',
'ae' => __DIR__ . '/flags/ae.png',
'ar' => __DIR__ . '/flags/ar.png',
'am' => __DIR__ . '/flags/am.png',
'ag' => __DIR__ . '/flags/ag.png',
'au' => __DIR__ . '/flags/au.png',
'at' => __DIR__ . '/flags/at.png',
'az' => __DIR__ . '/flags/az.png',
'bi' => __DIR__ . '/flags/bi.png',
'be' => __DIR__ . '/flags/be.png',
'bj' => __DIR__ . '/flags/bj.png',
'bf' => __DIR__ . '/flags/bf.png',
'bd' => __DIR__ . '/flags/bd.png',
'bg' => __DIR__ . '/flags/bg.png',
'bh' => __DIR__ . '/flags/bh.png',
'bs' => __DIR__ . '/flags/bs.png',
'ba' => __DIR__ . '/flags/ba.png',
'by' => __DIR__ . '/flags/by.png',
'bz' => __DIR__ . '/flags/bz.png',
'bo' => __DIR__ . '/flags/bo.png',
'br' => __DIR__ . '/flags/br.png',
'bb' => __DIR__ . '/flags/bb.png',
'bn' => __DIR__ . '/flags/bn.png',
'bt' => __DIR__ . '/flags/bt.png',
'bw' => __DIR__ . '/flags/bw.png',
'cf' => __DIR__ . '/flags/cf.png',
'ca' => __DIR__ . '/flags/ca.png',
'ch' => __DIR__ . '/flags/ch.png',
'cl' => __DIR__ . '/flags/cl.png',
'cn' => __DIR__ . '/flags/cn.png',
'ci' => __DIR__ . '/flags/ci.png',
'cm' => __DIR__ . '/flags/cm.png',
'cd' => __DIR__ . '/flags/cd.png',
'cg' => __DIR__ . '/flags/cg.png',
'co' => __DIR__ . '/flags/co.png',
'km' => __DIR__ . '/flags/km.png',
'cv' => __DIR__ . '/flags/cv.png',
'cr' => __DIR__ . '/flags/cr.png',
'cu' => __DIR__ . '/flags/cu.png',
'cy' => __DIR__ . '/flags/cy.png',
'cz' => __DIR__ . '/flags/cz.png',
'de' => __DIR__ . '/flags/de.png',
'dj' => __DIR__ . '/flags/dj.png',
'dm' => __DIR__ . '/flags/dm.png',
'dk' => __DIR__ . '/flags/dk.png',
'do' => __DIR__ . '/flags/do.png',
'dz' => __DIR__ . '/flags/dz.png',
'ec' => __DIR__ . '/flags/ec.png',
'eg' => __DIR__ . '/flags/eg.png',
'er' => __DIR__ . '/flags/er.png',
'es' => __DIR__ . '/flags/es.png',
'ee' => __DIR__ . '/flags/ee.png',
'et' => __DIR__ . '/flags/et.png',
'fi' => __DIR__ . '/flags/fi.png',
'fj' => __DIR__ . '/flags/fj.png',
'fr' => __DIR__ . '/flags/fr.png',
'fm' => __DIR__ . '/flags/fm.png',
'ga' => __DIR__ . '/flags/ga.png',
'gb' => __DIR__ . '/flags/gb.png',
'ge' => __DIR__ . '/flags/ge.png',
'gh' => __DIR__ . '/flags/gh.png',
'gn' => __DIR__ . '/flags/gn.png',
'gm' => __DIR__ . '/flags/gm.png',
'gw' => __DIR__ . '/flags/gw.png',
'gq' => __DIR__ . '/flags/gq.png',
'gr' => __DIR__ . '/flags/gr.png',
'gd' => __DIR__ . '/flags/gd.png',
'gt' => __DIR__ . '/flags/gt.png',
'gy' => __DIR__ . '/flags/gy.png',
'hn' => __DIR__ . '/flags/hn.png',
'hr' => __DIR__ . '/flags/hr.png',
'ht' => __DIR__ . '/flags/ht.png',
'hu' => __DIR__ . '/flags/hu.png',
'id' => __DIR__ . '/flags/id.png',
'in' => __DIR__ . '/flags/in.png',
'ie' => __DIR__ . '/flags/ie.png',
'ir' => __DIR__ . '/flags/ir.png',
'iq' => __DIR__ . '/flags/iq.png',
'is' => __DIR__ . '/flags/is.png',
'il' => __DIR__ . '/flags/il.png',
'it' => __DIR__ . '/flags/it.png',
'jm' => __DIR__ . '/flags/jm.png',
'jo' => __DIR__ . '/flags/jo.png',
'jp' => __DIR__ . '/flags/jp.png',
'kz' => __DIR__ . '/flags/kz.png',
'ke' => __DIR__ . '/flags/ke.png',
'kg' => __DIR__ . '/flags/kg.png',
'kh' => __DIR__ . '/flags/kh.png',
'ki' => __DIR__ . '/flags/ki.png',
'kn' => __DIR__ . '/flags/kn.png',
'kr' => __DIR__ . '/flags/kr.png',
'kw' => __DIR__ . '/flags/kw.png',
'la' => __DIR__ . '/flags/la.png',
'lb' => __DIR__ . '/flags/lb.png',
'lr' => __DIR__ . '/flags/lr.png',
'ly' => __DIR__ . '/flags/ly.png',
'lc' => __DIR__ . '/flags/lc.png',
'li' => __DIR__ . '/flags/li.png',
'lk' => __DIR__ . '/flags/lk.png',
'ls' => __DIR__ . '/flags/ls.png',
'lt' => __DIR__ . '/flags/ls.png',
'lu' => __DIR__ . '/flags/lu.png',
'lv' => __DIR__ . '/flags/lv.png',
'ma' => __DIR__ . '/flags/ma.png',
'mc' => __DIR__ . '/flags/mc.png',
'md' => __DIR__ . '/flags/md.png',
'mg' => __DIR__ . '/flags/mg.png',
'mv' => __DIR__ . '/flags/mv.png',
'mx' => __DIR__ . '/flags/mx.png',
'mh' => __DIR__ . '/flags/mh.png',
'mk' => __DIR__ . '/flags/mk.png',
'ml' => __DIR__ . '/flags/ml.png',
'mt' => __DIR__ . '/flags/mt.png',
'mm' => __DIR__ . '/flags/mm.png',
'me' => __DIR__ . '/flags/me.png',
'mn' => __DIR__ . '/flags/mn.png',
'mz' => __DIR__ . '/flags/mz.png',
'mr' => __DIR__ . '/flags/mr.png',
'mu' => __DIR__ . '/flags/mu.png',
'mw' => __DIR__ . '/flags/mw.png',
'my' => __DIR__ . '/flags/my.png',
'na' => __DIR__ . '/flags/na.png',
'ne' => __DIR__ . '/flags/ne.png',
'ng' => __DIR__ . '/flags/ng.png',
'ni' => __DIR__ . '/flags/ni.png',
'nl' => __DIR__ . '/flags/nl.png',
'no' => __DIR__ . '/flags/no.png',
'np' => __DIR__ . '/flags/np.png',
'nr' => __DIR__ . '/flags/nr.png',
'nz' => __DIR__ . '/flags/nz.png',
'om' => __DIR__ . '/flags/om.png',
'pk' => __DIR__ . '/flags/pk.png',
'pa' => __DIR__ . '/flags/pa.png',
'pe' => __DIR__ . '/flags/pe.png',
'ph' => __DIR__ . '/flags/ph.png',
'pw' => __DIR__ . '/flags/pw.png',
'pg' => __DIR__ . '/flags/pg.png',
'pl' => __DIR__ . '/flags/pl.png',
'kp' => __DIR__ . '/flags/kp.png',
'pt' => __DIR__ . '/flags/pt.png',
'py' => __DIR__ . '/flags/py.png',
'qa' => __DIR__ . '/flags/qa.png',
'ro' => __DIR__ . '/flags/ro.png',
'ru' => __DIR__ . '/flags/ru.png',
'rw' => __DIR__ . '/flags/rw.png',
'sa' => __DIR__ . '/flags/sa.png',
'sd' => __DIR__ . '/flags/sd.png',
'sn' => __DIR__ . '/flags/sn.png',
'sg' => __DIR__ . '/flags/sg.png',
'sb' => __DIR__ . '/flags/sb.png',
'sl' => __DIR__ . '/flags/sl.png',
'sv' => __DIR__ . '/flags/sv.png',
'sm' => __DIR__ . '/flags/sm.png',
'so' => __DIR__ . '/flags/so.png',
'rs' => __DIR__ . '/flags/rs.png',
'ss' => __DIR__ . '/flags/ss.png',
'st' => __DIR__ . '/flags/st.png',
'sr' => __DIR__ . '/flags/sr.png',
'sk' => __DIR__ . '/flags/sk.png',
'si' => __DIR__ . '/flags/si.png',
'se' => __DIR__ . '/flags/se.png',
'sz' => __DIR__ . '/flags/sz.png',
'sc' => __DIR__ . '/flags/sc.png',
'sy' => __DIR__ . '/flags/sy.png',
'td' => __DIR__ . '/flags/td.png',
'tg' => __DIR__ . '/flags/tg.png',
'th' => __DIR__ . '/flags/th.png',
'tj' => __DIR__ . '/flags/tj.png',
'tm' => __DIR__ . '/flags/tm.png',
'tl' => __DIR__ . '/flags/tl.png',
'to' => __DIR__ . '/flags/to.png',
'tt' => __DIR__ . '/flags/tt.png',
'tn' => __DIR__ . '/flags/tn.png',
'tr' => __DIR__ . '/flags/tr.png',
'tv' => __DIR__ . '/flags/tv.png',
'tz' => __DIR__ . '/flags/tz.png',
'ug' => __DIR__ . '/flags/ug.png',
'ua' => __DIR__ . '/flags/ua.png',
'uy' => __DIR__ . '/flags/uy.png',
'us' => __DIR__ . '/flags/us.png',
'uz' => __DIR__ . '/flags/uz.png',
'va' => __DIR__ . '/flags/va.png',
'vc' => __DIR__ . '/flags/vc.png',
've' => __DIR__ . '/flags/ve.png',
'vn' => __DIR__ . '/flags/vn.png',
'vu' => __DIR__ . '/flags/vu.png',
'ws' => __DIR__ . '/flags/ws.png',
'ye' => __DIR__ . '/flags/ye.png',
'za' => __DIR__ . '/flags/za.png',
'zm' => __DIR__ . '/flags/zm.png',
'zw' => __DIR__ . '/flags/zw.png',
];
+3738 -17
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-126
View File
@@ -1,126 +0,0 @@
<?php
use Utopia\Database\Database;
use Utopia\Database\Helpers\ID;
return [
'collections' => [
'$collection' => ID::custom('databases'),
'$id' => ID::custom('collections'),
'name' => 'Collections',
'attributes' => [
[
'$id' => ID::custom('databaseInternalId'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => Database::LENGTH_KEY,
'signed' => true,
'required' => true,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('databaseId'),
'type' => Database::VAR_STRING,
'signed' => true,
'size' => Database::LENGTH_KEY,
'format' => '',
'filters' => [],
'required' => true,
'default' => null,
'array' => false,
],
[
'$id' => ID::custom('name'),
'type' => Database::VAR_STRING,
'size' => 256,
'required' => true,
'signed' => true,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('enabled'),
'type' => Database::VAR_BOOLEAN,
'signed' => true,
'size' => 0,
'format' => '',
'filters' => [],
'required' => true,
'default' => null,
'array' => false,
],
[
'$id' => ID::custom('documentSecurity'),
'type' => Database::VAR_BOOLEAN,
'signed' => true,
'size' => 0,
'format' => '',
'filters' => [],
'required' => true,
'default' => null,
'array' => false,
],
[
'$id' => ID::custom('attributes'),
'type' => Database::VAR_STRING,
'size' => 1000000,
'required' => false,
'signed' => true,
'array' => false,
'filters' => ['subQueryAttributes'],
],
[
'$id' => ID::custom('indexes'),
'type' => Database::VAR_STRING,
'size' => 1000000,
'required' => false,
'signed' => true,
'array' => false,
'filters' => ['subQueryIndexes'],
],
[
'$id' => ID::custom('search'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => 16384,
'signed' => true,
'required' => false,
'default' => null,
'array' => false,
'filters' => [],
],
],
'indexes' => [
[
'$id' => ID::custom('_fulltext_search'),
'type' => Database::INDEX_FULLTEXT,
'attributes' => ['search'],
'lengths' => [],
'orders' => [],
],
[
'$id' => ID::custom('_key_name'),
'type' => Database::INDEX_KEY,
'attributes' => ['name'],
'lengths' => [256],
'orders' => [Database::ORDER_ASC],
],
[
'$id' => ID::custom('_key_enabled'),
'type' => Database::INDEX_KEY,
'attributes' => ['enabled'],
'lengths' => [],
'orders' => [Database::ORDER_ASC],
],
[
'$id' => ID::custom('_key_documentSecurity'),
'type' => Database::INDEX_KEY,
'attributes' => ['documentSecurity'],
'lengths' => [],
'orders' => [Database::ORDER_ASC],
],
],
]
];
-94
View File
@@ -1,94 +0,0 @@
<?php
use Utopia\Database\Database;
use Utopia\Database\Helpers\ID;
$logsCollection = [];
$logsCollection['stats'] = [
'$collection' => ID::custom(Database::METADATA),
'$id' => ID::custom('stats'),
'name' => 'stats',
'attributes' => [
[
'$id' => ID::custom('metric'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => 255,
'signed' => true,
'required' => true,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('region'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => 255,
'signed' => true,
'required' => true,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('value'),
'type' => Database::VAR_INTEGER,
'format' => '',
'size' => 8,
'signed' => true,
'required' => true,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('time'),
'type' => Database::VAR_DATETIME,
'format' => '',
'size' => 0,
'signed' => false,
'required' => false,
'default' => null,
'array' => false,
'filters' => ['datetime'],
],
[
'$id' => ID::custom('period'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => 4,
'signed' => true,
'required' => true,
'default' => null,
'array' => false,
'filters' => [],
],
],
'indexes' => [
[
'$id' => ID::custom('_key_time'),
'type' => Database::INDEX_KEY,
'attributes' => ['time'],
'lengths' => [],
'orders' => [Database::ORDER_DESC],
],
[
'$id' => ID::custom('_key_period_time'),
'type' => Database::INDEX_KEY,
'attributes' => ['period', 'time'],
'lengths' => [],
'orders' => [Database::ORDER_ASC],
],
[
'$id' => ID::custom('_key_metric_period_time'),
'type' => Database::INDEX_UNIQUE,
'attributes' => ['metric', 'period', 'time'],
'lengths' => [],
'orders' => [Database::ORDER_DESC],
],
],
];
return $logsCollection;
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-55
View File
@@ -1,55 +0,0 @@
<?php
/**
* Initializes console project document.
*/
use Appwrite\Auth\Auth;
use Appwrite\Network\Platform;
use Utopia\Database\Helpers\ID;
use Utopia\System\System;
$console = [
'$id' => ID::custom('console'),
'$sequence' => ID::custom('console'),
'name' => 'Appwrite',
'$collection' => ID::custom('projects'),
'description' => 'Appwrite core engine',
'logo' => '',
'teamId' => null,
'webhooks' => [],
'keys' => [],
'platforms' => [
[
'$collection' => ID::custom('platforms'),
'name' => 'Localhost',
'type' => Platform::TYPE_WEB,
'hostname' => 'localhost',
], // Current host is added on app init
],
'region' => 'fra',
'legalName' => '',
'legalCountry' => '',
'legalState' => '',
'legalCity' => '',
'legalAddress' => '',
'legalTaxId' => '',
'auths' => [
'mockNumbers' => [],
'invites' => System::getEnv('_APP_CONSOLE_INVITES', 'enabled') === 'enabled',
'limit' => (System::getEnv('_APP_CONSOLE_WHITELIST_ROOT', 'enabled') === 'enabled') ? 1 : 0, // limit signup to 1 user
'duration' => Auth::TOKEN_EXPIRATION_LOGIN_LONG, // 1 Year in seconds
'sessionAlerts' => System::getEnv('_APP_CONSOLE_SESSION_ALERTS', 'disabled') === 'enabled',
'invalidateSessions' => true
],
'authWhitelistEmails' => (!empty(System::getEnv('_APP_CONSOLE_WHITELIST_EMAILS', null))) ? \explode(',', System::getEnv('_APP_CONSOLE_WHITELIST_EMAILS', null)) : [],
'authWhitelistIPs' => (!empty(System::getEnv('_APP_CONSOLE_WHITELIST_IPS', null))) ? \explode(',', System::getEnv('_APP_CONSOLE_WHITELIST_IPS', null)) : [],
'oAuthProviders' => [
'githubEnabled' => true,
'githubSecret' => System::getEnv('_APP_CONSOLE_GITHUB_SECRET', ''),
'githubAppid' => System::getEnv('_APP_CONSOLE_GITHUB_APP_ID', '')
],
'smtpBaseTemplate' => APP_BRANDED_EMAIL_BASE_TEMPLATE,
];
return $console;
+53 -762
View File
File diff suppressed because it is too large Load Diff
+17 -185
View File
@@ -44,28 +44,6 @@ return [
'$description' => 'This event triggers when a verification token for a user is validated.'
],
],
'targets' => [
'$model' => Response::MODEL_TARGET,
'$resource' => true,
'$description' => 'This event triggers on any user\'s target event.',
'create' => [
'$description' => 'This event triggers when a user\'s target is created.',
],
'update' => [
'$description' => 'This event triggers when a user\'s target is updated.',
],
'delete' => [
'$description' => 'This event triggers when a user\'s target is deleted.',
],
],
'tokens' => [
'$model' => Response::MODEL_TOKEN,
'$resource' => true,
'$description' => 'This event triggers on any user\'s token event.',
'create' => [
'$description' => 'This event triggers when a user\'s token is created.',
],
],
'create' => [
'$description' => 'This event triggers when a user is created.'
],
@@ -95,65 +73,6 @@ return [
'$model' => Response::MODEL_DATABASE,
'$resource' => true,
'$description' => 'This event triggers on any database event.',
'tables' => [
'$model' => Response::MODEL_TABLE,
'$resource' => true,
'$description' => 'This event triggers on any table event.',
'rows' => [
'$model' => Response::MODEL_ROW,
'$resource' => true,
'$description' => 'This event triggers on any rows event.',
'create' => [
'$description' => 'This event triggers when a row is created.',
],
'update' => [
'$description' => 'This event triggers when a row is updated.'
],
'upsert' => [
'$description' => 'This event triggers when a document is upserted.',
],
'delete' => [
'$description' => 'This event triggers when a row is deleted.'
],
],
'indexes' => [
'$model' => Response::MODEL_COLUMN_INDEX,
'$resource' => true,
'$description' => 'This event triggers on any indexes event.',
'create' => [
'$description' => 'This event triggers when an index is created.',
],
'update' => [
'$description' => 'This event triggers when an index is updated.',
],
'delete' => [
'$description' => 'This event triggers when an index is deleted.'
]
],
'columns' => [
'$model' => Response::MODEL_COLUMN,
'$resource' => true,
'$description' => 'This event triggers on any columns event.',
'create' => [
'$description' => 'This event triggers when a column is created.',
],
'delete' => [
'$description' => 'This event triggers when an column is deleted.'
],
'update' => [
'$description' => 'This event triggers when a column is created.',
],
],
'create' => [
'$description' => 'This event triggers when a table is created.'
],
'update' => [
'$description' => 'This event triggers when a table is updated.',
],
'delete' => [
'$description' => 'This event triggers when a table is deleted.',
],
],
'collections' => [
'$model' => Response::MODEL_COLLECTION,
'$resource' => true,
@@ -165,15 +84,12 @@ return [
'create' => [
'$description' => 'This event triggers when a document is created.',
],
'update' => [
'$description' => 'This event triggers when a document is updated.'
],
'upsert' => [
'$description' => 'This event triggers when a document is upserted.',
],
'delete' => [
'$description' => 'This event triggers when a document is deleted.'
],
'update' => [
'$description' => 'This event triggers when a document is updated.'
],
],
'indexes' => [
'$model' => Response::MODEL_INDEX,
@@ -184,10 +100,7 @@ return [
],
'delete' => [
'$description' => 'This event triggers when an index is deleted.'
],
'update' => [
'$description' => 'This event triggers when a column is created.',
],
]
],
'attributes' => [
'$model' => Response::MODEL_ATTRIBUTE,
@@ -196,9 +109,6 @@ return [
'create' => [
'$description' => 'This event triggers when an attribute is created.',
],
'update' => [
'$description' => 'This event triggers when a column is created.',
],
'delete' => [
'$description' => 'This event triggers when an attribute is deleted.'
]
@@ -206,22 +116,22 @@ return [
'create' => [
'$description' => 'This event triggers when a collection is created.'
],
'update' => [
'$description' => 'This event triggers when a collection is updated.',
],
'delete' => [
'$description' => 'This event triggers when a collection is deleted.',
],
'update' => [
'$description' => 'This event triggers when a collection is updated.',
]
],
'create' => [
'$description' => 'This event triggers when a database is created.'
],
'update' => [
'$description' => 'This event triggers when a database is updated.',
],
'delete' => [
'$description' => 'This event triggers when a database is deleted.',
],
'update' => [
'$description' => 'This event triggers when a database is updated.',
]
],
'buckets' => [
'$model' => Response::MODEL_BUCKET,
@@ -285,34 +195,6 @@ return [
],
]
],
'sites' => [
'$model' => Response::MODEL_SITE,
'$resource' => true,
'$description' => 'This event triggers on any sites event.',
'deployments' => [
'$model' => Response::MODEL_DEPLOYMENT,
'$resource' => true,
'$description' => 'This event triggers on any deployments event.',
'create' => [
'$description' => 'This event triggers when a deployment is created.',
],
'delete' => [
'$description' => 'This event triggers when a deployment is deleted.'
],
'update' => [
'$description' => 'This event triggers when a deployment is updated.'
],
],
'create' => [
'$description' => 'This event triggers when a site is created.'
],
'delete' => [
'$description' => 'This event triggers when a site is deleted.',
],
'update' => [
'$description' => 'This event triggers when a site is updated.',
]
],
'functions' => [
'$model' => Response::MODEL_FUNCTION,
'$resource' => true,
@@ -355,68 +237,18 @@ return [
'$description' => 'This event triggers when a function is updated.',
]
],
'messages' => [
'$model' => Response::MODEL_MESSAGE,
'migrations' => [
'$model' => Response::MODEL_MIGRATION,
'$resource' => true,
'$description' => 'This event triggers on any messaging event.',
'$description' => 'This event triggers on any migrations event.',
'create' => [
'$description' => 'This event triggers when a message is created.',
],
'update' => [
'$description' => 'This event triggers when a message is updated.',
],
],
'topics' => [
'$model' => Response::MODEL_TOPIC,
'$resource' => true,
'$description' => 'This event triggers on any topic event.',
'create' => [
'$description' => 'This event triggers when a topic is created.',
],
'update' => [
'$description' => 'This event triggers when a topic is updated.',
'$description' => 'This event triggers when an migration is created.'
],
'delete' => [
'$description' => 'This event triggers when a topic is deleted.'
],
'subscribers' => [
'$model' => Response::MODEL_SUBSCRIBER,
'$resource' => true,
'$description' => 'This event triggers on any subscriber event.',
'create' => [
'$description' => 'This event triggers when a subscriber is created.',
],
'delete' => [
'$description' => 'This event triggers when a subscriber is deleted.'
],
],
],
'providers' => [
'$model' => Response::MODEL_PROVIDER,
'$resource' => true,
'$description' => 'This event triggers on any provider event.',
'create' => [
'$description' => 'This event triggers when a provider is created.',
'$description' => 'This event triggers when an migration is deleted.',
],
'update' => [
'$description' => 'This event triggers when a provider is updated.',
],
'delete' => [
'$description' => 'This event triggers when a provider is deleted.'
],
],
'rules' => [
'$model' => Response::MODEL_PROXY_RULE,
'$resource' => true,
'$description' => 'This event triggers on any proxy rule event.',
'create' => [
'$description' => 'This event triggers when a proxy rule is created.'
],
'delete' => [
'$description' => 'This event triggers when a proxy rule is deleted.',
],
'update' => [
'$description' => 'This event triggers when a proxy rule is updated.',
'$description' => 'This event triggers when an migration is updated.',
]
]
],
];
-337
View File
@@ -1,337 +0,0 @@
<?php
/**
* List of Appwrite Sites supported frameworks
*/
use Utopia\Config\Config;
$templateRuntimes = Config::getParam('template-runtimes');
function getVersions(array $versions, string $prefix)
{
return array_map(function ($version) use ($prefix) {
return $prefix . '-' . $version;
}, $versions);
}
return [
'analog' => [
'key' => 'analog',
'name' => 'Analog',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/analog/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/analog/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist/analog',
'startCommand' => 'bash helpers/analog/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist/analog/public',
'startCommand' => 'bash helpers/server.sh',
'fallbackFile' => 'index.html'
]
]
],
'angular' => [
'key' => 'angular',
'name' => 'Angular',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/angular/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/angular/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist/angular',
'startCommand' => 'bash helpers/angular/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist/angular/browser',
'startCommand' => 'bash helpers/server.sh',
'fallbackFile' => 'index.csr.html'
]
]
],
'nextjs' => [
'key' => 'nextjs',
'name' => 'Next.js',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/next-js/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/next-js/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './.next',
'startCommand' => 'bash helpers/next-js/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './out',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'react' => [
'key' => 'react',
'name' => 'React',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/server.sh',
'fallbackFile' => 'index.html'
]
]
],
'nuxt' => [
'key' => 'nuxt',
'name' => 'Nuxt',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/nuxt/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/nuxt/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './.output',
'startCommand' => 'bash helpers/nuxt/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run generate',
'installCommand' => 'npm install',
'outputDirectory' => './output/public',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'vue' => [
'key' => 'vue',
'name' => 'Vue.js',
'screenshotSleep' => 5000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/server.sh',
'fallbackFile' => 'index.html'
]
]
],
'sveltekit' => [
'key' => 'sveltekit',
'name' => 'SvelteKit',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/sveltekit/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/sveltekit/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './build',
'startCommand' => 'bash helpers/sveltekit/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './build',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'astro' => [
'key' => 'astro',
'name' => 'Astro',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/astro/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/astro/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/astro/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'tanstack-start' => [
'key' => 'tanstack-start',
'name' => 'TanStack Start',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/tanstack-start/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/tanstack-start/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/tanstack-start/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist/client',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'remix' => [
'key' => 'remix',
'name' => 'Remix',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'bundleCommand' => 'bash /usr/local/server/helpers/remix/bundle.sh',
'envCommand' => 'source /usr/local/server/helpers/remix/env.sh',
'adapters' => [
'ssr' => [
'key' => 'ssr',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './build',
'startCommand' => 'bash helpers/remix/server.sh',
],
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './build/client',
'startCommand' => 'bash helpers/server.sh',
]
]
],
'lynx' => [
'key' => 'lynx',
'name' => 'Lynx',
'screenshotSleep' => 5000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/server.sh',
'fallbackFile' => 'index.html'
]
]
],
'flutter' => [
'key' => 'flutter',
'name' => 'Flutter',
'screenshotSleep' => 5000,
'buildRuntime' => 'flutter-3.29',
'runtimes' => getVersions($templateRuntimes['FLUTTER']['versions'], 'flutter'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => 'flutter build web --release -t lib/main.dart',
'installCommand' => 'flutter pub get',
'outputDirectory' => './build/web',
'startCommand' => 'bash helpers/server.sh',
],
],
],
'react-native' => [
'key' => 'react-native',
'name' => 'React Native',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/server.sh',
'fallbackFile' => 'index.html'
]
]
],
'vite' => [
'key' => 'vite',
'name' => 'Vite',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => 'npm run build',
'installCommand' => 'npm install',
'outputDirectory' => './dist',
'startCommand' => 'bash helpers/server.sh',
],
]
],
'other' => [
'key' => 'other',
'name' => 'Other',
'screenshotSleep' => 3000,
'buildRuntime' => 'node-22',
'runtimes' => getVersions($templateRuntimes['NODE']['versions'], 'node'),
'adapters' => [
'static' => [
'key' => 'static',
'buildCommand' => '',
'installCommand' => '',
'outputDirectory' => './',
'startCommand' => 'bash helpers/server.sh',
],
]
],
];
+72 -533
View File
@@ -1,537 +1,76 @@
<?php
/**
* ISO 639-1 standard language codes
* https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
*
* Source:
* https://www.andiamo.co.uk/resources/iso-language-codes/
*
*/
return [
[
"code" => "af",
"name" => "Afrikaans",
],
[
"code" => "ar-ae",
"name" => "Arabic (U.A.E.)",
],
[
"code" => "ar-bh",
"name" => "Arabic (Bahrain)",
],
[
"code" => "ar-dz",
"name" => "Arabic (Algeria)",
],
[
"code" => "ar-eg",
"name" => "Arabic (Egypt)",
],
[
"code" => "ar-iq",
"name" => "Arabic (Iraq)",
],
[
"code" => "ar-jo",
"name" => "Arabic (Jordan)",
],
[
"code" => "ar-kw",
"name" => "Arabic (Kuwait)",
],
[
"code" => "ar-lb",
"name" => "Arabic (Lebanon)",
],
[
"code" => "ar-ly",
"name" => "Arabic (Libya)",
],
[
"code" => "ar-ma",
"name" => "Arabic (Morocco)",
],
[
"code" => "ar-om",
"name" => "Arabic (Oman)",
],
[
"code" => "ar-qa",
"name" => "Arabic (Qatar)",
],
[
"code" => "ar-sa",
"name" => "Arabic (Saudi Arabia)",
],
[
"code" => "ar-sy",
"name" => "Arabic (Syria)",
],
[
"code" => "ar-tn",
"name" => "Arabic (Tunisia)",
],
[
"code" => "ar-ye",
"name" => "Arabic (Yemen)",
],
[
"code" => "as",
"name" => "Assamese",
],
[
"code" => "az",
"name" => "Azerbaijani",
],
[
"code" => "be",
"name" => "Belarusian",
],
[
"code" => "bg",
"name" => "Bulgarian",
],
[
"code" => "bh",
"name" => "Bihari",
],
[
"code" => "bn",
"name" => "Bengali",
],
[
"code" => "bs",
"name" => "Bosnian",
],
[
"code" => "ca",
"name" => "Catalan",
],
[
"code" => "cs",
"name" => "Czech",
],
[
"code" => "cy",
"name" => "Welsh",
],
[
"code" => "da",
"name" => "Danish",
],
[
"code" => "de",
"name" => "German (Standard)",
],
[
"code" => "de-at",
"name" => "German (Austria)",
],
[
"code" => "de-ch",
"name" => "German (Switzerland)",
],
[
"code" => "de-li",
"name" => "German (Liechtenstein)",
],
[
"code" => "de-lu",
"name" => "German (Luxembourg)",
],
[
"code" => "el",
"name" => "Greek",
],
[
"code" => "en",
"name" => "English",
],
[
"code" => "en-au",
"name" => "English (Australia)",
],
[
"code" => "en-bz",
"name" => "English (Belize)",
],
[
"code" => "en-ca",
"name" => "English (Canada)",
],
[
"code" => "en-gb",
"name" => "English (United Kingdom)",
],
[
"code" => "en-ie",
"name" => "English (Ireland)",
],
[
"code" => "en-jm",
"name" => "English (Jamaica)",
],
[
"code" => "en-nz",
"name" => "English (New Zealand)",
],
[
"code" => "en-tt",
"name" => "English (Trinidad)",
],
[
"code" => "en-us",
"name" => "English (United States)",
],
[
"code" => "en-za",
"name" => "English (South Africa)",
],
[
"code" => "eo",
"name" => "Esperanto",
],
[
"code" => "es",
"name" => "Spanish (Spain)",
],
[
"code" => "es-ar",
"name" => "Spanish (Argentina)",
],
[
"code" => "es-bo",
"name" => "Spanish (Bolivia)",
],
[
"code" => "es-cl",
"name" => "Spanish (Chile)",
],
[
"code" => "es-co",
"name" => "Spanish (Colombia)",
],
[
"code" => "es-cr",
"name" => "Spanish (Costa Rica)",
],
[
"code" => "es-do",
"name" => "Spanish (Dominican Republic)",
],
[
"code" => "es-ec",
"name" => "Spanish (Ecuador)",
],
[
"code" => "es-gt",
"name" => "Spanish (Guatemala)",
],
[
"code" => "es-hn",
"name" => "Spanish (Honduras)",
],
[
"code" => "es-mx",
"name" => "Spanish (Mexico)",
],
[
"code" => "es-ni",
"name" => "Spanish (Nicaragua)",
],
[
"code" => "es-pa",
"name" => "Spanish (Panama)",
],
[
"code" => "es-pe",
"name" => "Spanish (Peru)",
],
[
"code" => "es-pr",
"name" => "Spanish (Puerto Rico)",
],
[
"code" => "es-py",
"name" => "Spanish (Paraguay)",
],
[
"code" => "es-sv",
"name" => "Spanish (El Salvador)",
],
[
"code" => "es-uy",
"name" => "Spanish (Uruguay)",
],
[
"code" => "es-ve",
"name" => "Spanish (Venezuela)",
],
[
"code" => "et",
"name" => "Estonian",
],
[
"code" => "eu",
"name" => "Basque",
],
[
"code" => "fa",
"name" => "Farsi",
],
[
"code" => "fi",
"name" => "Finnish",
],
[
"code" => "fo",
"name" => "Faeroese",
],
[
"code" => "fr",
"name" => "French (Standard)",
],
[
"code" => "fr-be",
"name" => "French (Belgium)",
],
[
"code" => "fr-ca",
"name" => "French (Canada)",
],
[
"code" => "fr-ch",
"name" => "French (Switzerland)",
],
[
"code" => "fr-lu",
"name" => "French (Luxembourg)",
],
[
"code" => "ga",
"name" => "Irish",
],
[
"code" => "gd",
"name" => "Gaelic (Scotland)",
],
[
"code" => "he",
"name" => "Hebrew",
],
[
"code" => "hi",
"name" => "Hindi",
],
[
"code" => "hr",
"name" => "Croatian",
],
[
"code" => "hu",
"name" => "Hungarian",
],
[
"code" => "id",
"name" => "Indonesian",
],
[
"code" => "is",
"name" => "Icelandic",
],
[
"code" => "it",
"name" => "Italian (Standard)",
],
[
"code" => "it-ch",
"name" => "Italian (Switzerland)",
],
[
"code" => "ja",
"name" => "Japanese",
],
[
"code" => "ji",
"name" => "Yiddish",
],
[
"code" => "ko",
"name" => "Korean",
],
[
"code" => "ku",
"name" => "Kurdish",
],
[
"code" => "lt",
"name" => "Lithuanian",
],
[
"code" => "lv",
"name" => "Latvian",
],
[
"code" => "mk",
"name" => "Macedonian (FYROM)",
],
[
"code" => "ml",
"name" => "Malayalam",
],
[
"code" => "ms",
"name" => "Malaysian",
],
[
"code" => "mt",
"name" => "Maltese",
],
[
"code" => "nb",
"name" => "Norwegian (Bokm├еl)",
],
[
"code" => "ne",
"name" => "Nepali",
],
[
"code" => "nl",
"name" => "Dutch (Standard)",
],
[
"code" => "nl-be",
"name" => "Dutch (Belgium)",
],
[
"code" => "nn",
"name" => "Norwegian (Nynorsk)",
],
[
"code" => "no",
"name" => "Norwegian",
],
[
"code" => "pa",
"name" => "Punjabi",
],
[
"code" => "pl",
"name" => "Polish",
],
[
"code" => "pt",
"name" => "Portuguese (Portugal)",
],
[
"code" => "pt-br",
"name" => "Portuguese (Brazil)",
],
[
"code" => "rm",
"name" => "Rhaeto-Romanic",
],
[
"code" => "ro",
"name" => "Romanian",
],
[
"code" => "ro-md",
"name" => "Romanian (Republic of Moldova)",
],
[
"code" => "ru",
"name" => "Russian",
],
[
"code" => "ru-md",
"name" => "Russian (Republic of Moldova)",
],
[
"code" => "sb",
"name" => "Sorbian",
],
[
"code" => "sk",
"name" => "Slovak",
],
[
"code" => "sl",
"name" => "Slovenian",
],
[
"code" => "sq",
"name" => "Albanian",
],
[
"code" => "sr",
"name" => "Serbian",
],
[
"code" => "sv",
"name" => "Swedish",
],
[
"code" => "sv-fi",
"name" => "Swedish (Finland)",
],
[
"code" => "th",
"name" => "Thai",
],
[
"code" => "tn",
"name" => "Tswana",
],
[
"code" => "tr",
"name" => "Turkish",
],
[
"code" => "ts",
"name" => "Tsonga",
],
[
"code" => "ua",
"name" => "Ukrainian",
],
[
"code" => "ur",
"name" => "Urdu",
],
[
"code" => "ve",
"name" => "Venda",
],
[
"code" => "vi",
"name" => "Vietnamese",
],
[
"code" => "xh",
"name" => "Xhosa",
],
[
"code" => "zh-cn",
"name" => "Chinese (PRC)",
],
[
"code" => "zh-hk",
"name" => "Chinese (Hong Kong)",
],
[
"code" => "zh-sg",
"name" => "Chinese (Singapore)",
],
[
"code" => "zh-tw",
"name" => "Chinese (Taiwan)",
],
[
"code" => "zu",
"name" => "Zulu",
],
'af', // Afrikaans
'ar', // Arabic
'as', // Assamese
'az', // Azerbaijani
'be', // Belarusian
'bg', // Bulgarian
'bh', // Bihari
'bn', // Bengali
'bs', // Bosnian
'ca', // Catalan
'cs', // Czech
'da', // Danish
'de', // German
'en', // English
'eo', // Esperanto
'es', // Spanish
'fa', // Farsi/Persian
'fi', // Finnish
'fo', // Faroese
'fr', // French
'el', // Greek
'ga', // Irish
'gu', // Gujrati
'he', // Hebrew
'hi', // Hindi,
'hr', // Croatian
'hu', // Hungarian
'hy', // Armenian
'id', // Indonesian
'is', // Icelandic
'it', // Italian
'ja', // Japanese
'jv', // Javanese
'kn', // Kannada
'km', // Khmer
'ko', // Korean
'la', // Latin
'lb', // Luxembourgish
'lt', // Lithuanian
'lv', // Latvian
'ml', // Malayalam
'mr', // Marathi
'ms', // Malay
'nb', // Norwegian bokm├еl
'nl', // Dutch
'nn', // Norwegian nynorsk
'ne', // Nepali
'or', // Oriya
'tl', // Filipino
'pl', // Polish
'pt-br', // Portuguese - Brazil
'pt-pt', // Portuguese - Portugal
'pa', // Punjabi
'ro', // Romanian
'ru', // Russian
'sa', //Sanskrit
'sd', // Sindhi
'si', // Sinhala
'sk', // Slovakia
'sl', // Slovenian
'sn', // Shona
'sq', // Albanian
'sv', // Swedish
'ta', // Tamil
'te', // Telugu
'th', // Thai
'tr', // Turkish
'uk', // Ukrainian
'ur', // Urdu
'vi', // Vietnamese
'zh-cn', // Chinese - China
'zh-tw', // Chinese - Taiwan
];
+7 -42
View File
@@ -1,46 +1,11 @@
<?php
/**
* Continent codes with names and approximate central coordinates
*
* Coordinates represent approximate geographical centers of each continent
* Note: These are simplified centroids and may not represent the exact geographical center
*/
return [
'AF' => [
'name' => 'Africa',
'latitude' => 8.7832,
'longitude' => 34.5085
],
'AN' => [
'name' => 'Antarctica',
'latitude' => -82.8628,
'longitude' => 135.0000
],
'AS' => [
'name' => 'Asia',
'latitude' => 34.0479,
'longitude' => 100.6197
],
'EU' => [
'name' => 'Europe',
'latitude' => 54.5260,
'longitude' => 15.2551
],
'NA' => [
'name' => 'North America',
'latitude' => 54.5260,
'longitude' => -105.2551
],
'OC' => [
'name' => 'Oceania',
'latitude' => -22.7359,
'longitude' => 140.0188
],
'SA' => [
'name' => 'South America',
'latitude' => -8.7832,
'longitude' => -55.4915
],
'AF',
'AN',
'AS',
'EU',
'NA',
'OC',
'SA',
];
+194 -206
View File
@@ -1,210 +1,198 @@
<?php
/**
* ISO 3166 standard country codes with country names and coordinates
* https://www.iso.org/iso-3166-country-codes.html
*
* Source:
* https://www.iso.org/obp/ui/#search/code/
* Coordinates source: Natural Earth Data (approximate country centroids)
*/
return [
'AF' => ['name' => 'Afghanistan', 'latitude' => 33.0, 'longitude' => 66.0],
'AO' => ['name' => 'Angola', 'latitude' => -12.5, 'longitude' => 18.5],
'AL' => ['name' => 'Albania', 'latitude' => 41.0, 'longitude' => 20.0],
'AD' => ['name' => 'Andorra', 'latitude' => 42.5, 'longitude' => 1.6],
'AE' => ['name' => 'United Arab Emirates', 'latitude' => 24.0, 'longitude' => 54.0],
'AR' => ['name' => 'Argentina', 'latitude' => -34.0, 'longitude' => -64.0],
'AM' => ['name' => 'Armenia', 'latitude' => 40.0, 'longitude' => 45.0],
'AG' => ['name' => 'Antigua and Barbuda', 'latitude' => 17.05, 'longitude' => -61.8],
'AU' => ['name' => 'Australia', 'latitude' => -25.0, 'longitude' => 135.0],
'AT' => ['name' => 'Austria', 'latitude' => 47.3, 'longitude' => 13.3],
'AZ' => ['name' => 'Azerbaijan', 'latitude' => 40.5, 'longitude' => 47.5],
'BI' => ['name' => 'Burundi', 'latitude' => -3.5, 'longitude' => 30.0],
'BE' => ['name' => 'Belgium', 'latitude' => 50.8, 'longitude' => 4.0],
'BJ' => ['name' => 'Benin', 'latitude' => 9.5, 'longitude' => 2.25],
'BF' => ['name' => 'Burkina Faso', 'latitude' => 13.0, 'longitude' => -2.0],
'BD' => ['name' => 'Bangladesh', 'latitude' => 24.0, 'longitude' => 90.0],
'BG' => ['name' => 'Bulgaria', 'latitude' => 43.0, 'longitude' => 25.0],
'BH' => ['name' => 'Bahrain', 'latitude' => 26.0, 'longitude' => 50.5],
'BS' => ['name' => 'Bahamas', 'latitude' => 24.25, 'longitude' => -76.0],
'BA' => ['name' => 'Bosnia and Herzegovina', 'latitude' => 44.0, 'longitude' => 18.0],
'BY' => ['name' => 'Belarus', 'latitude' => 53.0, 'longitude' => 28.0],
'BZ' => ['name' => 'Belize', 'latitude' => 17.25, 'longitude' => -88.75],
'BO' => ['name' => 'Bolivia', 'latitude' => -17.0, 'longitude' => -65.0],
'BR' => ['name' => 'Brazil', 'latitude' => -10.0, 'longitude' => -55.0],
'BB' => ['name' => 'Barbados', 'latitude' => 13.17, 'longitude' => -59.53],
'BN' => ['name' => 'Brunei', 'latitude' => 4.5, 'longitude' => 114.67],
'BT' => ['name' => 'Bhutan', 'latitude' => 27.5, 'longitude' => 90.5],
'BW' => ['name' => 'Botswana', 'latitude' => -22.0, 'longitude' => 24.0],
'CF' => ['name' => 'Central African Republic', 'latitude' => 7.0, 'longitude' => 21.0],
'CA' => ['name' => 'Canada', 'latitude' => 60.0, 'longitude' => -95.0],
'CH' => ['name' => 'Switzerland', 'latitude' => 47.0, 'longitude' => 8.0],
'CL' => ['name' => 'Chile', 'latitude' => -30.0, 'longitude' => -71.0],
'CN' => ['name' => 'China', 'latitude' => 35.0, 'longitude' => 105.0],
'CI' => ['name' => 'C├┤te d\'Ivoire', 'latitude' => 8.0, 'longitude' => -5.0],
'CM' => ['name' => 'Cameroon', 'latitude' => 6.0, 'longitude' => 12.0],
'CD' => ['name' => 'Democratic Republic of the Congo', 'latitude' => -2.5, 'longitude' => 23.5],
'CG' => ['name' => 'Republic of the Congo', 'latitude' => -1.0, 'longitude' => 15.0],
'CO' => ['name' => 'Colombia', 'latitude' => 4.0, 'longitude' => -72.0],
'KM' => ['name' => 'Comoros', 'latitude' => -12.17, 'longitude' => 44.25],
'CV' => ['name' => 'Cape Verde', 'latitude' => 16.0, 'longitude' => -24.0],
'CR' => ['name' => 'Costa Rica', 'latitude' => 10.0, 'longitude' => -84.0],
'CU' => ['name' => 'Cuba', 'latitude' => 21.5, 'longitude' => -80.0],
'CY' => ['name' => 'Cyprus', 'latitude' => 35.0, 'longitude' => 33.0],
'CZ' => ['name' => 'Czech Republic', 'latitude' => 49.75, 'longitude' => 15.5],
'DE' => ['name' => 'Germany', 'latitude' => 51.0, 'longitude' => 9.0],
'DJ' => ['name' => 'Djibouti', 'latitude' => 11.5, 'longitude' => 43.0],
'DM' => ['name' => 'Dominica', 'latitude' => 15.42, 'longitude' => -61.33],
'DK' => ['name' => 'Denmark', 'latitude' => 56.0, 'longitude' => 10.0],
'DO' => ['name' => 'Dominican Republic', 'latitude' => 19.0, 'longitude' => -70.67],
'DZ' => ['name' => 'Algeria', 'latitude' => 28.0, 'longitude' => 3.0],
'EC' => ['name' => 'Ecuador', 'latitude' => -2.0, 'longitude' => -77.5],
'EG' => ['name' => 'Egypt', 'latitude' => 27.0, 'longitude' => 30.0],
'ER' => ['name' => 'Eritrea', 'latitude' => 15.0, 'longitude' => 39.0],
'ES' => ['name' => 'Spain', 'latitude' => 40.0, 'longitude' => -4.0],
'EE' => ['name' => 'Estonia', 'latitude' => 59.0, 'longitude' => 26.0],
'ET' => ['name' => 'Ethiopia', 'latitude' => 8.0, 'longitude' => 38.0],
'FI' => ['name' => 'Finland', 'latitude' => 64.0, 'longitude' => 26.0],
'FJ' => ['name' => 'Fiji', 'latitude' => -18.0, 'longitude' => 175.0],
'FR' => ['name' => 'France', 'latitude' => 46.0, 'longitude' => 2.0],
'FM' => ['name' => 'Micronesia', 'latitude' => 6.92, 'longitude' => 158.25],
'GA' => ['name' => 'Gabon', 'latitude' => -1.0, 'longitude' => 11.75],
'GB' => ['name' => 'United Kingdom', 'latitude' => 54.0, 'longitude' => -2.0],
'GE' => ['name' => 'Georgia', 'latitude' => 42.0, 'longitude' => 43.5],
'GH' => ['name' => 'Ghana', 'latitude' => 8.0, 'longitude' => -2.0],
'GN' => ['name' => 'Guinea', 'latitude' => 11.0, 'longitude' => -10.0],
'GM' => ['name' => 'Gambia', 'latitude' => 13.47, 'longitude' => -16.57],
'GW' => ['name' => 'Guinea-Bissau', 'latitude' => 12.0, 'longitude' => -15.0],
'GQ' => ['name' => 'Equatorial Guinea', 'latitude' => 2.0, 'longitude' => 10.0],
'GR' => ['name' => 'Greece', 'latitude' => 39.0, 'longitude' => 22.0],
'GD' => ['name' => 'Grenada', 'latitude' => 12.12, 'longitude' => -61.67],
'GT' => ['name' => 'Guatemala', 'latitude' => 15.5, 'longitude' => -90.25],
'GY' => ['name' => 'Guyana', 'latitude' => 5.0, 'longitude' => -59.0],
'HK' => ['name' => 'Hong Kong', 'latitude' => 22.25, 'longitude' => 114.17],
'HN' => ['name' => 'Honduras', 'latitude' => 15.0, 'longitude' => -86.5],
'HR' => ['name' => 'Croatia', 'latitude' => 45.17, 'longitude' => 15.5],
'HT' => ['name' => 'Haiti', 'latitude' => 19.0, 'longitude' => -72.42],
'HU' => ['name' => 'Hungary', 'latitude' => 47.0, 'longitude' => 20.0],
'ID' => ['name' => 'Indonesia', 'latitude' => -5.0, 'longitude' => 120.0],
'IN' => ['name' => 'India', 'latitude' => 20.0, 'longitude' => 77.0],
'IE' => ['name' => 'Ireland', 'latitude' => 53.0, 'longitude' => -8.0],
'IR' => ['name' => 'Iran', 'latitude' => 32.0, 'longitude' => 53.0],
'IQ' => ['name' => 'Iraq', 'latitude' => 33.0, 'longitude' => 44.0],
'IS' => ['name' => 'Iceland', 'latitude' => 65.0, 'longitude' => -18.0],
'IL' => ['name' => 'Israel', 'latitude' => 31.5, 'longitude' => 34.75],
'IT' => ['name' => 'Italy', 'latitude' => 42.83, 'longitude' => 12.83],
'JM' => ['name' => 'Jamaica', 'latitude' => 18.25, 'longitude' => -77.5],
'JO' => ['name' => 'Jordan', 'latitude' => 31.0, 'longitude' => 36.0],
'JP' => ['name' => 'Japan', 'latitude' => 36.0, 'longitude' => 138.0],
'KZ' => ['name' => 'Kazakhstan', 'latitude' => 48.0, 'longitude' => 68.0],
'KE' => ['name' => 'Kenya', 'latitude' => 1.0, 'longitude' => 38.0],
'KG' => ['name' => 'Kyrgyzstan', 'latitude' => 41.0, 'longitude' => 75.0],
'KH' => ['name' => 'Cambodia', 'latitude' => 13.0, 'longitude' => 105.0],
'KI' => ['name' => 'Kiribati', 'latitude' => 1.42, 'longitude' => 173.0],
'KN' => ['name' => 'Saint Kitts and Nevis', 'latitude' => 17.33, 'longitude' => -62.75],
'KR' => ['name' => 'South Korea', 'latitude' => 37.0, 'longitude' => 127.5],
'KW' => ['name' => 'Kuwait', 'latitude' => 29.34, 'longitude' => 47.66],
'LA' => ['name' => 'Laos', 'latitude' => 18.0, 'longitude' => 105.0],
'LB' => ['name' => 'Lebanon', 'latitude' => 33.83, 'longitude' => 35.83],
'LR' => ['name' => 'Liberia', 'latitude' => 6.5, 'longitude' => -9.5],
'LY' => ['name' => 'Libya', 'latitude' => 25.0, 'longitude' => 17.0],
'LC' => ['name' => 'Saint Lucia', 'latitude' => 13.88, 'longitude' => -61.13],
'LI' => ['name' => 'Liechtenstein', 'latitude' => 47.17, 'longitude' => 9.53],
'LK' => ['name' => 'Sri Lanka', 'latitude' => 7.0, 'longitude' => 81.0],
'LS' => ['name' => 'Lesotho', 'latitude' => -29.5, 'longitude' => 28.5],
'LT' => ['name' => 'Lithuania', 'latitude' => 56.0, 'longitude' => 24.0],
'LU' => ['name' => 'Luxembourg', 'latitude' => 49.75, 'longitude' => 6.17],
'LV' => ['name' => 'latitudevia', 'latitude' => 57.0, 'longitude' => 25.0],
'MA' => ['name' => 'Morocco', 'latitude' => 32.0, 'longitude' => -5.0],
'MC' => ['name' => 'Monaco', 'latitude' => 43.73, 'longitude' => 7.4],
'MD' => ['name' => 'Moldova', 'latitude' => 47.0, 'longitude' => 29.0],
'MG' => ['name' => 'Madagascar', 'latitude' => -20.0, 'longitude' => 47.0],
'MV' => ['name' => 'Maldives', 'latitude' => 3.25, 'longitude' => 73.0],
'MX' => ['name' => 'Mexico', 'latitude' => 23.0, 'longitude' => -102.0],
'MH' => ['name' => 'Marshall Islands', 'latitude' => 9.0, 'longitude' => 168.0],
'MK' => ['name' => 'North Macedonia', 'latitude' => 41.83, 'longitude' => 22.0],
'ML' => ['name' => 'Mali', 'latitude' => 17.0, 'longitude' => -4.0],
'MT' => ['name' => 'Malta', 'latitude' => 35.83, 'longitude' => 14.58],
'MM' => ['name' => 'Myanmar', 'latitude' => 22.0, 'longitude' => 98.0],
'ME' => ['name' => 'Montenegro', 'latitude' => 42.5, 'longitude' => 19.3],
'MN' => ['name' => 'Mongolia', 'latitude' => 46.0, 'longitude' => 105.0],
'MZ' => ['name' => 'Mozambique', 'latitude' => -18.25, 'longitude' => 35.0],
'MR' => ['name' => 'Mauritania', 'latitude' => 20.0, 'longitude' => -12.0],
'MU' => ['name' => 'Mauritius', 'latitude' => -20.28, 'longitude' => 57.55],
'MW' => ['name' => 'Malawi', 'latitude' => -13.5, 'longitude' => 34.0],
'MY' => ['name' => 'Malaysia', 'latitude' => 2.5, 'longitude' => 112.5],
'NA' => ['name' => 'Namibia', 'latitude' => -22.0, 'longitude' => 17.0],
'NE' => ['name' => 'Niger', 'latitude' => 16.0, 'longitude' => 8.0],
'NG' => ['name' => 'Nigeria', 'latitude' => 10.0, 'longitude' => 8.0],
'NI' => ['name' => 'Nicaragua', 'latitude' => 13.0, 'longitude' => -85.0],
'NL' => ['name' => 'Netherlands', 'latitude' => 52.5, 'longitude' => 5.75],
'NO' => ['name' => 'Norway', 'latitude' => 62.0, 'longitude' => 10.0],
'NP' => ['name' => 'Nepal', 'latitude' => 28.0, 'longitude' => 84.0],
'NR' => ['name' => 'Nauru', 'latitude' => -0.53, 'longitude' => 166.92],
'NZ' => ['name' => 'New Zealand', 'latitude' => -41.0, 'longitude' => 174.0],
'OM' => ['name' => 'Oman', 'latitude' => 21.0, 'longitude' => 57.0],
'PK' => ['name' => 'Pakistan', 'latitude' => 30.0, 'longitude' => 70.0],
'PS' => ['name' => 'Palestine', 'latitude' => 31.9, 'longitude' => 35.2],
'PA' => ['name' => 'Panama', 'latitude' => 9.0, 'longitude' => -80.0],
'PE' => ['name' => 'Peru', 'latitude' => -10.0, 'longitude' => -76.0],
'PH' => ['name' => 'Philippines', 'latitude' => 13.0, 'longitude' => 122.0],
'PW' => ['name' => 'Palau', 'latitude' => 7.5, 'longitude' => 134.5],
'PG' => ['name' => 'Papua New Guinea', 'latitude' => -6.0, 'longitude' => 147.0],
'PL' => ['name' => 'Poland', 'latitude' => 52.0, 'longitude' => 20.0],
'KP' => ['name' => 'North Korea', 'latitude' => 40.0, 'longitude' => 127.0],
'PT' => ['name' => 'Portugal', 'latitude' => 39.5, 'longitude' => -8.0],
'PY' => ['name' => 'Paraguay', 'latitude' => -23.0, 'longitude' => -58.0],
'QA' => ['name' => 'Qatar', 'latitude' => 25.5, 'longitude' => 51.25],
'RO' => ['name' => 'Romania', 'latitude' => 46.0, 'longitude' => 25.0],
'RU' => ['name' => 'Russia', 'latitude' => 60.0, 'longitude' => 100.0],
'RW' => ['name' => 'Rwanda', 'latitude' => -2.0, 'longitude' => 30.0],
'SA' => ['name' => 'Saudi Arabia', 'latitude' => 25.0, 'longitude' => 45.0],
'SD' => ['name' => 'Sudan', 'latitude' => 15.0, 'longitude' => 30.0],
'SN' => ['name' => 'Senegal', 'latitude' => 14.0, 'longitude' => -14.0],
'SG' => ['name' => 'Singapore', 'latitude' => 1.37, 'longitude' => 103.8],
'SB' => ['name' => 'Solomon Islands', 'latitude' => -8.0, 'longitude' => 159.0],
'SL' => ['name' => 'Sierra Leone', 'latitude' => 8.5, 'longitude' => -11.5],
'SV' => ['name' => 'El Salvador', 'latitude' => 13.83, 'longitude' => -88.92],
'SM' => ['name' => 'San Marino', 'latitude' => 43.77, 'longitude' => 12.42],
'SO' => ['name' => 'Somalia', 'latitude' => 10.0, 'longitude' => 49.0],
'RS' => ['name' => 'Serbia', 'latitude' => 44.0, 'longitude' => 21.0],
'SS' => ['name' => 'South Sudan', 'latitude' => 8.0, 'longitude' => 30.0],
'ST' => ['name' => 'S├гo Tom├й and Pr├нncipe', 'latitude' => 1.0, 'longitude' => 7.0],
'SR' => ['name' => 'Suriname', 'latitude' => 4.0, 'longitude' => -56.0],
'SK' => ['name' => 'Slovakia', 'latitude' => 48.67, 'longitude' => 19.5],
'SI' => ['name' => 'Slovenia', 'latitude' => 46.0, 'longitude' => 15.0],
'SE' => ['name' => 'Sweden', 'latitude' => 62.0, 'longitude' => 15.0],
'SZ' => ['name' => 'Eswatini', 'latitude' => -26.5, 'longitude' => 31.5],
'SC' => ['name' => 'Seychelles', 'latitude' => -4.58, 'longitude' => 55.67],
'SY' => ['name' => 'Syria', 'latitude' => 35.0, 'longitude' => 38.0],
'TD' => ['name' => 'Chad', 'latitude' => 15.0, 'longitude' => 19.0],
'TG' => ['name' => 'Togo', 'latitude' => 8.0, 'longitude' => 1.17],
'TH' => ['name' => 'Thailand', 'latitude' => 15.0, 'longitude' => 100.0],
'TJ' => ['name' => 'Tajikistan', 'latitude' => 39.0, 'longitude' => 71.0],
'TM' => ['name' => 'Turkmenistan', 'latitude' => 40.0, 'longitude' => 60.0],
'TL' => ['name' => 'Timor-Leste', 'latitude' => -8.83, 'longitude' => 125.92],
'TO' => ['name' => 'Tonga', 'latitude' => -20.0, 'longitude' => -175.0],
'TT' => ['name' => 'Trinidad and Tobago', 'latitude' => 11.0, 'longitude' => -61.0],
'TN' => ['name' => 'Tunisia', 'latitude' => 34.0, 'longitude' => 9.0],
'TR' => ['name' => 'Turkey', 'latitude' => 39.0, 'longitude' => 35.0],
'TV' => ['name' => 'Tuvalu', 'latitude' => -8.0, 'longitude' => 178.0],
'TZ' => ['name' => 'Tanzania', 'latitude' => -6.0, 'longitude' => 35.0],
'TW' => ['name' => 'Taiwan', 'latitude' => 23.5, 'longitude' => 121.0],
'UG' => ['name' => 'Uganda', 'latitude' => 1.0, 'longitude' => 32.0],
'UA' => ['name' => 'Ukraine', 'latitude' => 49.0, 'longitude' => 32.0],
'UY' => ['name' => 'Uruguay', 'latitude' => -33.0, 'longitude' => -56.0],
'US' => ['name' => 'United States', 'latitude' => 38.0, 'longitude' => -97.0],
'UZ' => ['name' => 'Uzbekistan', 'latitude' => 41.0, 'longitude' => 64.0],
'VA' => ['name' => 'Vatican City', 'latitude' => 41.9, 'longitude' => 12.45],
'VC' => ['name' => 'Saint Vincent and the Grenadines', 'latitude' => 13.25, 'longitude' => -61.2],
'VE' => ['name' => 'Venezuela', 'latitude' => 8.0, 'longitude' => -66.0],
'VN' => ['name' => 'Vietnam', 'latitude' => 16.0, 'longitude' => 106.0],
'VU' => ['name' => 'Vanuatu', 'latitude' => -16.0, 'longitude' => 167.0],
'WS' => ['name' => 'Samoa', 'latitude' => -13.58, 'longitude' => -172.33],
'YE' => ['name' => 'Yemen', 'latitude' => 15.0, 'longitude' => 48.0],
'ZA' => ['name' => 'South Africa', 'latitude' => -29.0, 'longitude' => 24.0],
'ZM' => ['name' => 'Zambia', 'latitude' => -15.0, 'longitude' => 30.0],
'ZW' => ['name' => 'Zimbabwe', 'latitude' => -20.0, 'longitude' => 30.0],
'AF',
'AO',
'AL',
'AD',
'AE',
'AR',
'AM',
'AG',
'AU',
'AT',
'AZ',
'BI',
'BE',
'BJ',
'BF',
'BD',
'BG',
'BH',
'BS',
'BA',
'BY',
'BZ',
'BO',
'BR',
'BB',
'BN',
'BT',
'BW',
'CF',
'CA',
'CH',
'CL',
'CN',
'CI',
'CM',
'CD',
'CG',
'CO',
'KM',
'CV',
'CR',
'CU',
'CY',
'CZ',
'DE',
'DJ',
'DM',
'DK',
'DO',
'DZ',
'EC',
'EG',
'ER',
'ES',
'EE',
'ET',
'FI',
'FJ',
'FR',
'FM',
'GA',
'GB',
'GE',
'GH',
'GN',
'GM',
'GW',
'GQ',
'GR',
'GD',
'GT',
'GY',
'HN',
'HR',
'HT',
'HU',
'ID',
'IN',
'IE',
'IR',
'IQ',
'IS',
'IL',
'IT',
'JM',
'JO',
'JP',
'KZ',
'KE',
'KG',
'KH',
'KI',
'KN',
'KR',
'KW',
'LA',
'LB',
'LR',
'LY',
'LC',
'LI',
'LK',
'LS',
'LT',
'LU',
'LV',
'MA',
'MC',
'MD',
'MG',
'MV',
'MX',
'MH',
'MK',
'ML',
'MT',
'MM',
'ME',
'MN',
'MZ',
'MR',
'MU',
'MW',
'MY',
'NA',
'NE',
'NG',
'NI',
'NL',
'NO',
'NP',
'NR',
'NZ',
'OM',
'PK',
'PA',
'PE',
'PH',
'PW',
'PG',
'PL',
'KP',
'PT',
'PY',
'QA',
'RO',
'RU',
'RW',
'SA',
'SD',
'SN',
'SG',
'SB',
'SL',
'SV',
'SM',
'SO',
'RS',
'SS',
'ST',
'SR',
'SK',
'SI',
'SE',
'SZ',
'SC',
'SY',
'TD',
'TG',
'TH',
'TJ',
'TM',
'TL',
'TO',
'TT',
'TN',
'TR',
'TV',
'TZ',
'UG',
'UA',
'UY',
'US',
'UZ',
'VA',
'VC',
'VE',
'VN',
'VU',
'WS',
'YE',
'ZA',
'ZM',
'ZW',
];
+3 -13
View File
@@ -654,15 +654,10 @@ return [
"nativeName" => "┘╛┌Ъ╪к┘И"
],
[
"code" => "pt-pt",
"code" => "pt",
"name" => "Portuguese",
"nativeName" => "Portugu├кs"
],
[
"code" => "pt-br",
"name" => "Portuguese (Brazilian)",
"nativeName" => "Portugu├кs"
],
[
"code" => "qu",
"name" => "Quechua",
@@ -924,13 +919,8 @@ return [
"nativeName" => "Cuengh / T├┤├┤ / хгошпн"
],
[
"code" => "zh-cn",
"name" => "Chinese (Simplified)",
"nativeName" => "ф╕нцЦЗ"
],
[
"code" => "zh-tw",
"name" => "Chinese (Traditional)",
"code" => "zh",
"name" => "Chinese",
"nativeName" => "ф╕нцЦЗ"
],
[
-2
View File
@@ -136,7 +136,6 @@ return [
'NZ' => '64',
'OM' => '968',
'PK' => '92',
'PS' => '970',
'PA' => '507',
'PE' => '51',
'PH' => '63',
@@ -180,7 +179,6 @@ return [
'TN' => '216',
'TR' => '90',
'TV' => '688',
'TW' => '886',
'TZ' => '255',
'UG' => '256',
'UA' => '380',
-19
View File
@@ -1,19 +0,0 @@
<?php
return [
'email' => [
'verification',
'magicSession',
'recovery',
'invitation',
'mfaChallenge',
'sessionAlert',
'otpSession'
],
'sms' => [
'verification',
'login',
'invitation',
'mfaChallenge'
]
];
@@ -1,268 +0,0 @@
<!doctype html>
<html>
<head>
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<style type="text/css">
:root {
color-scheme: light dark;
supported-color-schemes: light dark;
}
@media (prefers-color-scheme: dark ) {
body {
color: #616b7c !important;
background-color: #ffffff !important;
}
a {
color: currentColor !important;
}
a.button {
color: #ffffff !important;
background-color: {{accentColor}} !important;
border-color: {{accentColor}} !important;
}
h1, h2, h3 {
color: #373b4d !important;
}
h4 {
color: #4f5769 !important;
}
p.security-phrase:not(:empty), hr {
border-color: #e8e9f0 !important;
}
}
</style>
<style>
@font-face {
font-family: 'Inter';
src: url('https://assets.appwrite.io/fonts/inter/Inter-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'DM Sans';
src: url('https://assets.appwrite.io/fonts/dm-sans/dm-sans-v16-latin-600.woff2') format('woff2');
font-weight: 600;
font-style: normal;
font-display: swap;
}
</style>
<style>
@media (max-width:500px) {
.mobile-full-width {
width: 100%;
}
}
.main a {
color: currentColor;
}
.main {
padding: 32px;
line-height: 1.5;
color: #616b7c;
font-size: 15px;
font-weight: 400;
font-family: "Inter", sans-serif;
background-color: #ffffff;
margin: 0;
}
a {
color: currentColor;
word-break: break-all;
}
table {
width: 100%;
border-spacing: 0 !important;
}
table, tr, th, td {
margin: 0;
padding: 0;
}
td {
vertical-align: top;
}
.main {
max-width: 650px;
margin: 0 auto;
margin-top: 32px;
}
h1 {
font-size: 22px;
margin-bottom: 0px;
margin-top: 0px;
color: #373b4d;
}
h2 {
font-size: 20px;
font-weight: 600;
color: #373b4d;
}
h3 {
font-size: 14px;
font-weight: 500;
color: #373b4d;
line-height: 21px;
margin: 0;
padding: 0;
}
h4 {
font-family: "DM Sans", sans-serif;
font-weight: 600;
font-size: 12px;
color: #4f5769;
margin: 0;
padding: 0;
}
hr {
border: none;
border-top: 1px solid #e8e9f0;
}
</style>
<style>
a.button {
display: inline-block;
background: {{accentColor}};
color: #ffffff;
border-radius: 8px;
height: 48px;
line-height: 24px;
padding: 12px 20px;
box-sizing: border-box;
cursor: pointer;
text-align: center;
text-decoration: none;
border-color: {{accentColor}};
border-style: solid;
border-width: 1px;
margin-right: 24px;
margin-top: 8px;
}
a.button:hover,
a.button:focus {
opacity: 0.8;
}
@media only screen and (max-width: 600px) {
.button {
width: 100%;
}
}
.social-icon {
border-radius: 6px;
background: rgba(216, 216, 219, 0.1);
width: 32px;
height: 32px;
line-height: 32px;
display: flex;
align-items: center;
justify-content: center;
}
.social-icon > img {
margin: auto;
}
p.security-phrase:not(:empty) {
opacity: 0.7;
margin: 0;
padding: 0;
margin-top: 32px;
padding-top: 32px;
border-top: 1px solid #e8e9f0;
}
</style>
</head>
<body>
<div style="display: none; overflow: hidden; max-height: 0; max-width: 0; opacity: 0; line-height: 1px;">
{{preview}}
<div>{{previewWhitespace}}</div>
</div>
<div class="main">
<table>
<tr>
<td>
<img
height="26px"
src="{{logoUrl}}"
alt="Appwrite logo"
/>
</td>
</tr>
</table>
<table style="margin-top: 32px">
<tr>
<td>
<h1>{{heading}}</h1>
</td>
</tr>
</table>
<table style="margin-top: 16px">
<tr>
<td>
{{body}}
</td>
</tr>
</table>
<table
style="
padding-top: 32px;
margin-top: 32px;
border-top: solid 1px #e8e9f0;
"
>
<tr>
<td></td>
</tr>
</table>
<table style="width: auto; margin: 0 auto">
<tr>
<td style="padding-left: 4px; padding-right: 4px">
<a
href="{{twitterUrl}}"
class="social-icon"
title="Twitter"
>
<img src="https://cloud.appwrite.io/images/mails/x.png" height="24" width="24" />
</a>
</td>
<td style="padding-left: 4px; padding-right: 4px">
<a
href="{{discordUrl}}"
class="social-icon"
>
<img src="https://cloud.appwrite.io/images/mails/discord.png" height="24" width="24" />
</a>
</td>
<td style="padding-left: 4px; padding-right: 4px">
<a
href="{{githubUrl}}"
class="social-icon"
>
<img src="https://cloud.appwrite.io/images/mails/github.png" height="24" width="24" />
</a>
</td>
</tr>
</table>
<table style="width: auto; margin: 0 auto; margin-top: 60px">
<tr>
<td><a href="{{termsUrl}}">Terms</a></td>
<td style="color: #e8e9f0">
<div style="margin: 0 8px">|</div>
</td>
<td><a href="{{privacyUrl}}">Privacy</a></td>
</tr>
</table>
<p style="text-align: center" align="center">
&copy; {{year}} Appwrite | 251 Little Falls Drive, Wilmington 19808,
Delaware, United States
</p>
</div>
</body>
</html>
+157 -167
View File
@@ -1,175 +1,165 @@
<!doctype html>
<html>
<head>
<link rel="preconnect" href="https://assets.appwrite.io/" crossorigin>
<meta name="color-scheme" content="light dark">
<meta name="supported-color-schemes" content="light dark">
<style type="text/css">
:root {
color-scheme: light dark;
supported-color-schemes: light dark;
}
@media (prefers-color-scheme: dark ) {
body {
color: #616b7c !important;
background-color: #ffffff !important;
}
a {
color: currentColor !important;
}
a.button {
color: #ffffff !important;
background-color: #2D2D31 !important;
border-color: #414146 !important;
}
h1, h2, h3 {
color: #373b4d !important;
}
h4 {
color: #4f5769 !important;
}
p.security-phrase:not(:empty), hr {
border-color: #e8e9f0 !important;
}
}
</style>
<style>
@font-face {
font-family: 'Inter';
src: url('https://assets.appwrite.io/fonts/inter/Inter-Regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'DM Sans';
src: url('https://assets.appwrite.io/fonts/dm-sans/dm-sans-v16-latin-600.woff2') format('woff2');
font-weight: 600;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: 'Poppins';
src: url('https://assets.appwrite.io/fonts/poppins/poppins-v23-latin-regular.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;
}
</style>
<style>
body {
padding: 32px;
line-height: 1.5;
color: #616b7c;
font-size: 15px;
font-weight: 400;
font-family: "Inter", sans-serif;
background-color: #ffffff;
margin: 0;
padding: 0;
line-height: 150%;
}
a {
color: currentColor;
word-break: break-all;
}
a.button {
box-sizing: border-box;
display: inline-block;
text-align: center;
text-decoration: none;
padding: 9px 14px;
color: #ffffff;
background-color: #2D2D31;
border: 1px solid #414146;
border-radius: 8px;
}
a.button:hover,
a.button:focus {
opacity: 0.8;
}
table {
width: 100%;
border-spacing: 0 !important;
}
table, tr, th, td {
margin: 0;
padding: 0;
}
td {
vertical-align: top;
}
.main {
max-width: 650px;
margin: 0 auto;
margin-top: 32px;
}
h1 {
font-size: 22px;
margin-bottom: 0px;
margin-top: 0px;
color: #373b4d;
}
h2 {
font-size: 20px;
font-weight: 600;
color: #373b4d;
}
h3 {
font-size: 14px;
font-weight: 500;
color: #373b4d;
line-height: 21px;
margin: 0;
padding: 0;
}
h4 {
font-family: "DM Sans", sans-serif;
font-weight: 600;
font-size: 12px;
color: #4f5769;
margin: 0;
padding: 0;
}
hr {
border: none;
border-top: 1px solid #e8e9f0;
}
h* {
font-family: 'Poppins', sans-serif;
}
p {
margin-bottom: 10px;
}
p.security-phrase:not(:empty) {
opacity: 0.7;
margin-top: 32px;
padding-top: 32px;
border-top: 1px solid #e8e9f0;
}
</style>
</head>
<head>
<meta name="viewport" content="width=device-width" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{{subject}}</title>
<style>
body {
background-color: {{bg-body}};
color: {{text-content}};
font-family: sans-serif;
-webkit-font-smoothing: antialiased;
font-size: 14px;
line-height: 1.4;
margin: 0;
padding: 0;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
}
table {
border-collapse: separate;
mso-table-lspace: 0pt;
mso-table-rspace: 0pt;
width: 100%;
}
table td {
font-family: sans-serif;
font-size: 14px;
vertical-align: top;
}
.body {
background-color: {{bg-body}};
width: 100%;
}
.container {
display: block;
margin: 0 auto !important;
max-width: 580px;
padding: 10px;
width: 580px;
}
.content {
box-sizing: border-box;
display: block;
margin: 0 auto;
max-width: 580px;
padding: 10px;
color: {{text-content}};
}
.main {
background: {{bg-content}};
border-radius: 10px;
width: 100%;
}
.wrapper {
box-sizing: border-box;
padding: 30px 30px 15px 30px;
}
.content-block {
padding-bottom: 10px;
padding-top: 10px;
}
p {
font-family: sans-serif;
font-size: 14px;
font-weight: normal;
margin: 0;
margin-bottom: 15px;
}
a {
word-break: break-all;
}
@media only screen and (max-width: 620px) {
.container {
padding: 0;
width: 100%;
}
}
@media all {
.ExternalClass {
width: 100%;
}
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%;
}
.apple-link a {
color: inherit !important;
font-family: inherit !important;
font-size: inherit !important;
font-weight: inherit !important;
line-height: inherit !important;
text-decoration: none !important;
}
#MessageViewBody a {
color: inherit;
text-decoration: none;
font-size: inherit;
font-family: inherit;
font-weight: inherit;
line-height: inherit;
}
}
</style>
</head>
<body style="direction: {{direction}}">
<table role="presentation" border="0" cellpadding="0" cellspacing="0" class="body">
<tr>
<td>&nbsp;</td>
<td class="container">
<div class="content">
<table role="presentation" class="main">
<tr>
<td class="wrapper">
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>
<p>{{hello}}</p>
<p>{{body}}</p>
<a href="{{redirect}}" target="_blank">{{redirect}}</a>
<p></br>{{footer}}</p>
<p>{{thanks}}
</br>
{{signature}}
</p>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div style="display: none; overflow: hidden; max-height: 0; max-width: 0; opacity: 0; line-height: 1px;">
{{preview}}
<div>{{previewWhitespace}}</div>
</div>
<div style="max-width:650px; word-wrap: break-word; overflow-wrap: break-word;
word-break: normal; margin:0 auto;">
<table style="margin-top: 32px">
<tr>
<td>
{{body}}
</td>
</tr>
</table>
</div>
<!-- <div style="text-align: center; line-height: 25px; margin: 15px 0; font-size: 12px; color: #40404c;">
<a href="https://appwrite.io" style="text-decoration: none; color: #40404c;">Powered by <img src="https://appwrite.io/images/appwrite-footer-light.svg" height="15" style="margin: -3px 0" /></a>
</div> -->
</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>
@@ -1,22 +0,0 @@
<p>Hello,</p>
<p>Your domain <strong>{{domain}}</strong> failed to generate certificate after <strong>{{attempts}}</strong> consecutive attempts with the following error:</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; display: inline-block;">
<tr>
<td align="center" style="border-radius: 8px; background-color: #ffffff;">
<p style="text-align: start; font-size: 14px; font-family: Inter; color: #414146; text-decoration: none; border-radius: 8px; padding: 32px; border: 1px solid #EDEDF0; display: inline-block; word-break: break-word;">
{{error}}
</p>
</td>
</tr>
</table>
<p>We suggest to follow the below steps:</p>
<ol>
<li>Examine the logs above to try and identify the issue</li>
<li>Ensure your domain has not expired</li>
<li>Check your DNS configuration for any unexpected values</li>
<li>Manually re-trigger a certificate generation from the Appwrite Console</li>
</ol>
<p>The existing certificate will remain valid for 30 days from the initial failure. It is highly recommended to investigate this issue; failing to do so will lead to security vulnerabilities.</p>
@@ -1,8 +0,0 @@
<p>{{hello}}</p>
<p>{{body}}</p>
<p>{{footer}}</p>
<p style="margin-bottom: 32px">
{{thanks}}
<br/>
{{signature}}
</p>
@@ -1,9 +0,0 @@
<p>{{hello}}</p>
<p>{{body}}</p>
<p><a href="{{redirect}}" target="_blank" class="button">{{buttonText}}</a></p>
<p>{{footer}}</p>
<p style="margin-bottom: 32px">
{{thanks}}
<br/>
{{signature}}
</p>
@@ -1,24 +0,0 @@
<p>{{hello}}</p>
<p>{{optionButton}}</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; display: inline-block;">
<tr>
<td align="center" style="border-radius: 8px; background-color: #19191D;">
<a rel="noopener" target="_blank" href="{{redirect}}" class="button">{{buttonText}}</a>
</td>
</tr>
</table>
<p>{{optionUrl}}</p>
<a href="{{redirect}}" target="_blank" style="font-size: 12px; line-height: 100%;">{{redirect}}</a>
<p>{{clientInfo}}</p>
<p style="margin-bottom: 0px;">{{thanks}}</p>
<p style="margin-top: 0px;">{{signature}}</p>
<hr style="margin-block-start: 1rem; margin-block-end: 1rem;">
<p style="opacity: 0.7;">{{securityPhrase}}</p>
@@ -1,16 +0,0 @@
<p>{{hello}}</p>
<p>{{description}}</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; display: inline-block;">
<tr>
<td align="center" style="border-radius: 8px; background-color: #ffffff;">
<p style="font-size: 24px; text-indent: 18px; letter-spacing: 18px; font-family: 'Inter', sans-serif; color: #414146; text-decoration: none; border-radius: 8px; margin-top: 0px; margin-bottom: 0px; padding: 24px 12px; border: 1px solid #EDEDF0; display: inline-block; font-weight: bold;">{{otp}}</p>
</td>
</tr>
</table>
<p>{{clientInfo}}</p>
<p style="margin-bottom: 0px;">{{thanks}}</p>
<p style="margin-top: 0px;">{{signature}}</p>
-18
View File
@@ -1,18 +0,0 @@
<p>{{hello}}</p>
<p>{{description}}</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; display: inline-block;">
<tr>
<td align="center" style="border-radius: 8px; background-color: #ffffff;">
<p style="font-size: 24px; text-indent: 18px; letter-spacing: 18px; font-family: 'Inter', sans-serif; color: #414146; text-decoration: none; border-radius: 8px; margin-top: 0px; margin-bottom: 0px; padding: 24px 12px; border: 1px solid #EDEDF0; display: inline-block; font-weight: bold; ">{{otp}}</p>
</td>
</tr>
</table>
<p>{{clientInfo}}</p>
<p style="margin-bottom: 0px;">{{thanks}}</p>
<p style="margin-top: 0px;">{{signature}}</p>
<p class="security-phrase">{{securityPhrase}}</p>
@@ -1,14 +0,0 @@
<p>{{hello}}</p>
<p>{{body}}</p>
<ol>
<li>{{listDevice}}</li>
<li>{{listIpAddress}}</li>
<li>{{listCountry}}</li>
</ol>
<p>{{footer}}</p>
<p style="margin-bottom: 0px;">{{thanks}}</p>
<p style="margin-top: 0px;">{{signature}}</p>
@@ -1,12 +0,0 @@
<p style="margin-block-start: 0;">Hello,</p>
<p>This email ensures your custom SMTP configuration is working correctly. Please review your sender Information details:</p>
<p style="margin-block-end: 0;">From: <strong>{{from}}</strong></p>
<p style="margin-block-start: 0;">Reply-To: <strong>{{replyTo}}</strong></p>
<p>If this email was labeled as spam, please check your SMTP server settings to ensure they meet your provider's requirements. Often, missing DNS configurations or security checks mandated by your SMTP provider affect email delivery.</p>
<p>If you have trouble with the sender's image, ensure it is set in the <a href="https://gravatar.com/">Gravatar database</a>.</p>
<p style="margin-block-end: 0;">Best regards,</p>
<p style="margin-block-start: 0;">Appwrite team</p>
@@ -1,20 +0,0 @@
<p>Hi <strong>{{user}}</strong>,</p>
<p>Your webhook <strong>{{webhook}}</strong> on project <strong>{{project}}</strong> has been paused after {{attempts}} consecutive failures.</p>
<p>Webhook Endpoint: <strong>{{url}}</strong></p>
<p>Error: <strong>{{error}}</strong></p>
<p>To restore your webhook's functionality and reset attempts, we suggest to follow the below steps:</p>
<ol>
<li>Examine the logs of both Appwrite Console and your webhook server to identify the issue.</li>
<li>Investigate potential network issues and use webhook testing tools to verify expected behaviour.</li>
<li>Ensure the webhook endpoint is reachable and configured to accept incoming POST requests.</li>
<li>Confirm that the webhook doesn't return error status codes such as 400 or 500.</li>
</ol>
<p>After the issue is resolved, please make sure to re-enable the webhook directly through the webhook settings.</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; margin-top: 32px">
<tr>
<td style="border-radius: 8px; display: block; width: 100%;">
<a class="mobile-full-width" rel="noopener" target="_blank" href="{{host}}{{path}}" style="font-size: 14px; font-family: Inter; color: #ffffff; text-decoration: none; background-color: #2D2D31; border-radius: 8px; padding: 9px 14px; border: 1px solid #414146; display: inline-block; text-align:center; box-sizing: border-box;">Webhook settings</a>
</td>
</tr>
</table>
-1
View File
@@ -1 +0,0 @@
{{token}}
+12 -29
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"Wie nie waag nie, sal nie wen nie.\"",
"settings.locale": "af",
"settings.direction": "ltr",
"emails.sender": "{{project}} span",
"emails.sender": "%s span",
"emails.verification.subject": "Rekening Bevestiging",
"emails.verification.hello": "Goeie dag {{user}},",
"emails.verification.hello": "Goeie dag {{name}}",
"emails.verification.body": "Volg hierdie skakel om u e-pos adres te bevestig.",
"emails.verification.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om u adres te bevestig nie.",
"emails.verification.thanks": "Baie dankie,",
"emails.verification.buttonText": "Bevestig e-posadres",
"emails.verification.thanks": "Baie dankie",
"emails.verification.signature": "Die {{project}} span",
"emails.magicSession.subject": "Teken aan",
"emails.magicSession.hello": "Goeie dag,",
"emails.magicSession.thanks": "Baie dankie,",
"emails.magicSession.body": "Volg hierdie skakel om in te teken.",
"emails.magicSession.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om met die' adres in te teken nie.",
"emails.magicSession.thanks": "Baie dankie",
"emails.magicSession.signature": "Die {{project}} span",
"emails.recovery.subject": "Herstel Wagwoord",
"emails.recovery.hello": "Goeie dag {{user}},",
"emails.recovery.hello": "Goeie dag {{name}}",
"emails.recovery.body": "Volg hierdie skakel om u {{project}} wagwoord te herstel.",
"emails.recovery.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om u wagwoord te herstel nie.",
"emails.recovery.thanks": "Baie dankie,",
"emails.recovery.buttonText": "Stel wagwoord terug",
"emails.recovery.thanks": "Baie dankie",
"emails.recovery.signature": "Die {{project}} span",
"emails.invitation.subject": "Uitnodiging om by die {{team}} span aan te sluit by {{project}}",
"emails.invitation.subject": "Uitnodiging om by die %s span aan te sluit by %s",
"emails.invitation.hello": "Goeie dag,",
"emails.invitation.body": "Hierdie boodskap is aan u gestuur omdat {{owner}} u uitnooi om 'n lid van die {{team}} groep by die {{project}} projek te wees.",
"emails.invitation.footer": "As u nie belang stel nie, kan u gerus hierdie boodskap ignoreer.",
"emails.invitation.thanks": "Baie dankie,",
"emails.invitation.buttonText": "Aanvaar uitnodiging na {{team}}",
"emails.invitation.thanks": "Baie dankie",
"emails.invitation.signature": "Die {{project}} span",
"locale.country.unknown": "Onbekend",
"countries.af": "Afghanistan",
@@ -101,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Kroasi├л",
"countries.ht": "Haiti",
@@ -165,7 +163,6 @@
"countries.nz": "Nieu-Seeland",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestine",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filippyne",
@@ -209,7 +206,6 @@
"countries.tn": "Tunisi├л",
"countries.tr": "Turkye",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzani├л",
"countries.ug": "Uganda",
"countries.ua": "Oekra├пne",
@@ -232,18 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Noord-Amerika",
"continents.oc": "Oseani├л",
"continents.sa": "Suid-Amerika",
"emails.magicSession.optionButton": "Klik op die knoppie hieronder om veilig aan te meld by jou {{project}} rekening. Dit sal oor 1 uur verval.",
"emails.magicSession.buttonText": "Meld aan by {{project}}",
"emails.magicSession.clientInfo": "Hierdie teken-in is aangevra met behulp van {{agentClient}} op {{agentDevice}} {{agentOs}}. As jy nie die teken-in versoek het nie, kan jy hierdie e-pos veilig ignoreer.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Die sekuriteitsfrase vir hierdie e-pos is {{phrase}}. Jy kan hierdie e-pos vertrou as hierdie frase ooreenstem met die frase wat tydens aanmelding getoon is.",
"emails.magicSession.optionUrl": "As u nie met die knoppie hierbo kan aanmeld nie, besoek asseblief die volgende skakel:",
"emails.otpSession.subject": "{{project}} Aanteken",
"emails.otpSession.hello": "Hallo,",
"emails.otpSession.description": "Voer die volgende verifikasiekode in wanneer daar versoek word om veilig aan te meld by jou {{project}} rekening. Dit sal verval oor 15 minute.",
"emails.otpSession.clientInfo": "Hierdie aanmelding is versoek met behulp van {{agentClient}} op {{agentDevice}} {{agentOs}}. As jy nie die aanmelding versoek het nie, kan jy hierdie e-pos veilig ignoreer.",
"emails.otpSession.securityPhrase": "Die veiligheidsfrase vir hierdie e-pos is {{phrase}}. Jy kan hierdie e-pos vertrou as hierdie frase ooreenstem met die frase wat gewys is tydens aanmelding.",
"emails.otpSession.thanks": "Dankie,",
"emails.otpSession.signature": "{{project}} span"
}
"continents.sa": "Suid-Amerika"
}
-239
View File
@@ -1,239 +0,0 @@
{
"settings.inspire": "\"╪з┘Д┘Б┘Ж ╪п┘К╪з┘Д ╪з┘Д╪н┘Г┘Е╪й ┘З┘И ╪з┘Д┘Б┘Ж ╪п┘К╪з┘Д ╪г┘Ж┘Г ╪к╪╣╪▒┘Б ╪г╪┤ ╪к┘Ж╪о┘С┘Д.\"",
"settings.locale": "ar-ma",
"settings.direction": "rtl",
"emails.sender": "┘Б╪▒┘В╪й {{project}}",
"emails.verification.subject": "╪з┘Д╪к┘К┘Т┘В╪з┘Ж ╪п┘К╪з┘Д ╪з┘Д╪н╪│╪з╪и",
"emails.verification.hello": "╪з┘Д╪│┘Д╪з┘Е {{user}}╪М",
"emails.verification.body": "╪к╪и┘С╪╣ ┘З╪з╪п ╪з┘Д┘И╪╡┘Д╪й ╪и╪з╪┤ ╪к┘К┘В┘С┘Ж ┘Д╪з╪п╪▒┘К╪│╪й ╪к╪з╪╣ ┘Д┘К┘Е┘К┘Д ╪п┘К╪з┘Д┘Г.",
"emails.verification.footer": "╪е┘Д╪з ┘Е╪з╪┤┘К ┘Ж╪к╪з ╪з┘Д┘Д┘К ╪╖┘Д╪и╪к┘К ╪к┘К┘В┘С┘Ж ┘З╪з╪п ┘Д╪з╪п╪▒┘К╪│╪й ╪к╪з╪╣ ┘Д┘К┘Е┘К┘Д╪М ┘Е┘Е┘Г┘Ж ╪к┘Ж╪о┘С┘Д ┘З╪з╪п ╪з┘Д╪и╪▒┘К╪й.",
"emails.verification.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.verification.buttonText": "╪к╪г┘Г┘К╪п ╪╣┘Ж┘И╪з┘Ж ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К",
"emails.verification.signature": "┘Б╪▒┘В╪й {{project}}",
"emails.magicSession.subject": "╪к┘Г┘И┘Ж┘К┘Г╪╖╪з",
"emails.magicSession.hello": "╪з┘Д╪│┘Д╪з┘Е╪М",
"emails.magicSession.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.magicSession.signature": "┘Б╪▒┘В╪й {{project}}",
"emails.recovery.subject": "╪к╪и╪п╪з┘Д ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒",
"emails.recovery.hello": "╪з┘Д╪│┘Д╪з┘Е {{user}}╪М",
"emails.recovery.body": "╪к╪и┘С╪╣ ┘З╪з╪п ╪з┘Д┘И╪╡┘Д╪й ╪и╪з╪┤ ╪к╪и╪п┘С┘Д ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒ ╪к╪з╪╣ {{project}}.",
"emails.recovery.footer": "╪е┘Д╪з ┘Е╪з╪┤┘К ┘Ж╪к╪з ╪з┘Д┘Д┘К ╪╖┘Д╪и╪к┘К ╪к╪и╪п┘С┘Д ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒╪М ┘Е┘Е┘Г┘Ж ╪к┘Ж╪о┘С┘Д ┘З╪з╪п ╪з┘Д╪и╪▒┘К╪й.",
"emails.recovery.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.recovery.buttonText": "╪е╪╣╪з╪п╪й ╪к╪╣┘К┘К┘Ж ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒",
"emails.recovery.signature": "┘Б╪▒┘В╪й {{project}}",
"emails.invitation.subject": "╪╣╪▒╪з╪╢╪й ┘Д ┘Б╪▒┘В╪й {{team}} ┘Б {{project}}",
"emails.invitation.hello": "╪з┘Д╪│┘Д╪з┘Е╪М",
"emails.invitation.body": "┘З╪з╪п ╪з┘Д╪и╪▒┘К╪й ╪к╪╡┘К┘Б╪╖╪з╪к ┘Д┘К┘Г ╪н┘К╪к {{owner}} ╪и╪║┘Й ┘К╪╣╪▒╪╢ ╪╣┘Д┘К┘Г ╪к┘И┘Д┘С┘К ╪╣╪╢┘И ┘Б ┘Б╪▒┘В╪й {{team}} ╪╣┘Ж╪п {{project}}.",
"emails.invitation.footer": "╪е┘Д╪з ┘Г┘Ж╪к┘К ┘Е╪з ┘Е╪│┘И┘С┘В╪┤, ┘Е┘Е┘Г┘Ж ╪к┘Ж╪о┘С┘Д ┘З╪з╪п ╪з┘Д╪и╪▒┘К╪й.",
"emails.invitation.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.invitation.buttonText": "╪з┘В╪и┘Д ╪з┘Д╪п╪╣┘И╪й ╪е┘Д┘Й {{team}}",
"emails.invitation.signature": "┘Б╪▒┘В╪й {{project}}",
"emails.certificate.subject": "╪з┘Д╪│╪▒╪к╪з┘Б┘К┘Г╪й ┘Б╪┤┘Д╪з╪к ┘Д {{domain}}",
"emails.certificate.hello": "╪з┘Д╪│┘Д╪з┘Е╪М",
"emails.certificate.body": "╪з┘Д╪│╪▒╪к╪з┘Б┘К┘Г╪й ╪п┘К╪з┘Д ╪з┘Д╪╢┘И┘Е┘К┘Ж ╪п┘К╪з┘Д┘Г '{{domain}}' ┘Е╪з ┘В╪п┘С╪з╪к╪┤ ╪к╪м┘К┘Ж┘К╪▒╪з. ┘З╪з╪п┘К ┘З┘К ╪з┘Д┘Е╪н╪з┘И┘Д╪й ┘Ж┘Е╪▒╪й {{attempt}}, ╪з┘Д╪│╪и╪и ╪п┘К╪з┘Д ┘З╪з╪п ╪з┘Д┘Б╪┤┘Д ┘З┘И: {{error}}",
"emails.certificate.footer": "╪з┘Д╪│╪▒╪к╪з┘Б┘К┘Г╪й ╪з┘Д┘Б╪з┘К╪к╪й ╪п┘К╪з┘Д┘Г ╪║╪з╪к╪и┘В┘Й ┘Е╪▓┘К╪з┘Ж╪й ┘Д┘Е╪п╪й 30 ┘К┘И┘Е ┘Е┘Ж ╪╣┘Ж╪п ╪г┘И┘Д ┘Б╪┤┘Д. ┘Г╪з┘Ж╪┤╪м╪╣┘И┘Г ╪и╪▓╪з┘Б ╪г┘Ж┘Г ╪к╪и┘В╪┤╪┤ ┘Б┘З╪з╪п ╪з┘Д┘Е┘И╪╢┘И╪╣, ┘И╪з ╪е┘Д┘С╪з ╪з┘Д╪╢┘И┘Е┘К┘Ж ╪п┘К╪з┘Д┘Г ┘Е╪з ╪║╪з┘К╪и┘В╪з╪┤ ╪о╪п┘С╪з┘Е ┘Б┘К┘З ╪з┘Д┘А SSL.",
"emails.certificate.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.certificate.signature": "┘Б╪▒┘В╪й {{project}}",
"locale.country.unknown": "┘Е╪з ┘Е╪╣╪▒┘И┘Б╪┤",
"countries.af": "╪г┘Б╪║╪з┘Ж╪│╪к╪з┘Ж",
"countries.ao": "╪г┘Ж┌н┘И┘Д╪з",
"countries.al": "╪г┘Д╪и╪з┘Ж┘К╪з",
"countries.ad": "╪г┘Ж╪п┘И╪▒╪з",
"countries.ae": "╪з┘Д╪е┘Е╪з╪▒╪з╪к ╪з┘Д╪╣╪▒╪и┘К╪й ╪з┘Д┘Е╪к┘С╪з╪н╪п╪й",
"countries.ar": "╪з┘Д╪г╪▒╪м┘Ж╪к┘К┘Ж",
"countries.am": "╪г╪▒┘Е┘К┘Ж┘К╪з",
"countries.ag": "╪г┘Ж╪к┘К┌н┘И╪з ┘И╪и╪▒╪и┘И╪п╪з",
"countries.au": "╪д╪│╪╖╪▒╪з┘Д┘К╪з",
"countries.at": "╪з┘Д┘Ж╪з┘Е╪│╪з",
"countries.az": "╪г╪п┘К╪▒╪и┘К╪м╪з┘Ж",
"countries.bi": "╪и┘И╪▒┘И┘Ж╪п┘К",
"countries.be": "╪и┘Д╪м┘К┘Г╪з",
"countries.bj": "╪и┘К┘Ж┘К┘Ж",
"countries.bf": "╪и┘И╪▒┘Г┘К┘Ж╪з ┘Б╪з╪╡┘И",
"countries.bd": "╪и┘Ж┌н┘Д╪з╪п┘К╪┤",
"countries.bg": "╪и┘Д┌н╪з╪▒┘К╪з",
"countries.bh": "╪з┘Д╪и╪н╪▒┘К┘Ж",
"countries.bs": "╪п╪▓┘К╪▒╪з╪к ╪з┘Д╪и┘З╪з┘Е╪з",
"countries.ba": "╪з┘Д╪и┘И╪│┘Ж╪й ╪д ╪з┘Д┘З╪▒╪│┘Г",
"countries.by": "╪и┘К┘Д╪з╪▒┘И╪│┘К╪з",
"countries.bz": "╪и┘К┘Д┘К╪▓",
"countries.bo": "╪и┘И┘Д┘К┌д┘К╪з",
"countries.br": "╪з┘Д╪и╪▒╪з╪▓┘К┘Д",
"countries.bb": "╪и╪з╪▒╪и╪з╪п┘И╪│",
"countries.bn": "╪и╪▒┘И┘Ж╪з┘К",
"countries.bt": "╪и┘И╪к╪з┘Ж",
"countries.bw": "╪и┘И╪к╪│┘И╪з┘Ж╪з",
"countries.cf": "╪м┘Е┘З┘И╪▒┘К╪й ╪е┘Б╪▒┘К┘В┘К╪з ╪з┘Д┘И╪│╪╖╪з┘Ж┘К╪й",
"countries.ca": "┘Г╪з┘Ж╪з╪п╪з",
"countries.ch": "╪│┘И┘К╪│╪▒╪з",
"countries.cl": "╪к╪┤┘К┘Д┘К",
"countries.cn": "╪з┘Д╪┤┘К┘Ж┘И╪з",
"countries.ci": "╪│╪з╪н┘Д ╪з┘Д╪╣╪з╪м",
"countries.cm": "╪з┘Д┘Г╪з┘Е┘К╪▒┘И┘Ж",
"countries.cd": "╪м┘Е┘З┘И╪▒┘К╪й ╪з┘Д┘Г┘И┘Ж┌н┘И ╪з┘Д╪п┘К┘Е┘В╪▒╪з╪╖┘К╪й",
"countries.cg": "╪м┘Е┘З┘И╪▒┘К╪й ╪з┘Д┘Г┘И┘Ж┌н┘И",
"countries.co": "┘Г┘И┘Д┘И┘Е╪и┘К╪з",
"countries.km": "╪п╪▓┘К╪▒╪з╪к ╪з┘Д┘В┘И┘Е┘И╪▒",
"countries.cv": "╪з┘Д╪▒╪з╪│ ╪з┘Д╪о╪╢╪▒",
"countries.cr": "┘Г┘И╪│╪╖╪з╪▒┘К┘Г╪з",
"countries.cu": "┘Г┘И╪и╪з",
"countries.cy": "┘В┘И╪и╪▒┘И╪╡",
"countries.cz": "╪з┘Д╪к╪┤┘К┘Г",
"countries.de": "╪г┘Д┘Е╪з┘Ж┘К╪з",
"countries.dj": "╪п╪м┘К╪и┘И╪к┘К",
"countries.dm": "╪╢┘И┘Е┘К┘Ж┘К┘Г╪з",
"countries.dk": "╪з┘Д╪п┘Ж┘Е╪з╪▒┘Г",
"countries.do": "╪м┘Е┘З┘И╪▒┘К╪й ╪з┘Д╪╢┘И┘Е┘К┘Ж┘К┘Г╪з┘Ж",
"countries.dz": "╪з┘Д╪п╪▓╪з┘К╪▒",
"countries.ec": "╪е┘Г┘И╪з╪п┘И╪▒",
"countries.eg": "┘Е╪╡╪▒",
"countries.er": "╪е╪▒┘К╪к╪▒┘К╪з",
"countries.es": "╪│╪и╪з┘Ж┘К╪з",
"countries.ee": "╪е╪│╪╖┘И┘Ж┘К╪з",
"countries.et": "╪е╪к┘К┘И┘╛┘К╪з",
"countries.fi": "┘Б┘К┘Ж┘Д╪з┘Ж╪п╪з",
"countries.fj": "┘Б┘К╪п╪м┘К",
"countries.fr": "┘Б╪▒╪з┘Ж╪│╪з",
"countries.fm": "┘Е┘К┘Г╪▒┘И┘Ж┘К╪▓┘К╪з",
"countries.ga": "╪з┘Д┌н╪з╪и┘И┘Ж",
"countries.gb": "╪з┘Д┘Е┘Е┘Д┘Г╪й ╪з┘Д┘Е╪к┘С╪з╪н╪п╪й",
"countries.ge": "╪к╪м┘И╪▒╪м┘К╪з",
"countries.gh": "╪║╪з┘Ж╪з",
"countries.gn": "╪║┘К┘Ж┘К╪з",
"countries.gm": "┌н╪з┘Е╪и┘К╪з",
"countries.gw": "╪║┘К┘Ж┘К╪з ╪и┘К╪│╪з┘И",
"countries.gq": "╪║┘К┘Ж┘К╪з ╪з┘Д╪│╪к┘И╪з╪ж┘К╪й",
"countries.gr": "╪з┘Д┘К┘И┘Ж╪з┘Ж",
"countries.gd": "┌н╪▒┘К┘Ж╪з╪п╪з",
"countries.gt": "┌н┘И╪з╪к┘К┘Е╪з┘Д╪з",
"countries.gy": "┌н┘К╪з┘Ж╪з",
"countries.hn": "┘З┘И┘Ж╪п┘И╪▒╪з╪│",
"countries.hr": "┘Г╪▒┘И╪з╪к┘К╪з",
"countries.ht": "┘З╪з┘К╪к┘К",
"countries.hu": "╪з┘Д┘Е╪з╪м╪▒",
"countries.id": "╪е┘Ж╪п┘И┘Ж┘К╪│┘К╪з",
"countries.in": "╪з┘Д┘З┘Ж╪п",
"countries.ie": "╪е╪▒┘Д╪з┘Ж╪п╪з",
"countries.ir": "╪е╪▒╪з┘Ж",
"countries.iq": "╪з┘Д╪╣╪▒╪з┘В",
"countries.is": "╪е╪│┘Д╪з┘Ж╪п╪з",
"countries.il": "╪е╪│╪▒╪з╪ж┘К┘Д",
"countries.it": "╪з┘Д╪╖╪з┘Д┘К╪з┘Ж",
"countries.jm": "╪м╪з┘Е╪з┘К┘Г╪з",
"countries.jo": "╪з┘Д╪г╪▒╪п┘Ж",
"countries.jp": "╪з┘Д╪м╪з┘╛┘И┘Ж",
"countries.kz": "┘Г╪з╪▓╪з╪о╪│╪к╪з┘Ж",
"countries.ke": "┘Г┘К┘Ж┘К╪з",
"countries.kg": "┘В┘К╪▒╪║┘К╪▓╪│╪к╪з┘Ж",
"countries.kh": "┘Г┘Е╪и┘И╪п┘К╪з",
"countries.ki": "┘Г┘К╪▒┘К╪и╪з╪к┘К",
"countries.kn": "╪│╪з┘Ж╪к ┘Г┘К╪к╪│ ╪д ┘Ж┘К┘Б┘К╪│",
"countries.kr": "┘Г┘И╪▒┘К╪з ╪з┘Д╪м┘Ж┘И╪и┘К╪й",
"countries.kw": "╪з┘Д┘Г┘И┘К╪к",
"countries.la": "┘Д╪з┘И╪│",
"countries.lb": "┘Д╪и┘Ж╪з┘Ж",
"countries.lr": "┘Д┘К╪и┘К╪▒┘К╪з",
"countries.ly": "┘Д┘К╪и┘К╪з",
"countries.lc": "╪│╪з┘Ж╪к ┘Д┘И╪│┘К╪з",
"countries.li": "┘Д┘К╪о╪к┘Ж╪┤╪к╪з┘К┘Ж",
"countries.lk": "╪│╪▒┘К ┘Д╪з┘Ж┘Г╪з",
"countries.ls": "┘Д┘К╪│┘И╪к┘И",
"countries.lt": "┘Д┘К╪к┘И╪з┘Ж┘К╪з",
"countries.lu": "┘Д┘И┘Г╪│┘Е╪и┘И╪▒┌н",
"countries.lv": "┘Д╪з╪к┘Б┘К╪з",
"countries.ma": "╪з┘Д┘Е╪║╪▒┘К╪и",
"countries.mc": "┘Е┘И┘Ж╪з┘Г┘И",
"countries.md": "┘Е┘И┘Д╪╢┘И┌д╪з",
"countries.mg": "┘Е╪з╪п╪з╪║╪┤┘В╪з╪▒",
"countries.mv": "╪п╪▓┘К╪▒╪з╪к ╪з┘Д┘Е╪з┘Д╪п┘К┌д",
"countries.mx": "╪з┘Д┘Е┘К┘Г╪│┘К┘Г",
"countries.mh": "╪п╪▓┘К╪▒╪з╪к ┘Е╪з╪▒╪┤╪з┘Д",
"countries.mk": "┘Е┘В╪п┘И┘Ж┘К╪з",
"countries.ml": "┘Е╪з┘Д┘К",
"countries.mt": "┘Е╪з┘Д╪╖╪з",
"countries.mm": "┘Е┘К╪з┘Ж┘Е╪з╪▒",
"countries.me": "┘Е┘И┘Ж╪╖┘К┘Ж┘К┌н╪▒┘И",
"countries.mn": "┘Е┘Ж╪║┘И┘Д┘К╪з",
"countries.mz": "╪з┘Д┘Е┘И╪▓┘Е╪и┘К┘В",
"countries.mr": "┘Е┘И╪▒┘К╪к╪з┘Ж┘К╪з",
"countries.mu": "┘Е┘И╪▒┘К╪┤┘К┘И╪│",
"countries.mw": "┘Е╪з┘Д╪з┘И┘К",
"countries.my": "┘Е╪з┘Д┘К╪▓┘К╪з",
"countries.na": "┘Ж╪з┘Е┘К╪и┘К╪з",
"countries.ne": "╪з┘Д┘Ж┘К╪м╪▒",
"countries.ng": "┘Ж┘К╪м┘К╪▒┘К╪з",
"countries.ni": "┘Ж┘К┘Г╪з╪▒╪з┌н┘И╪з",
"countries.nl": "┘З┘И┘Д╪з┘Ж╪п╪з",
"countries.no": "╪з┘Д┘Ж╪▒┘И┘К╪м",
"countries.np": "┘Ж┘К┘╛╪з┘Д",
"countries.nr": "┘Ж╪з┘И╪▒┘И",
"countries.nz": "┘Ж┘К┘И╪▓┘К┘Д╪з┘Ж╪п╪з",
"countries.om": "╪╣┘Е┘С╪з┘Ж",
"countries.pk": "┘╛╪з┘Г┘К╪│╪к╪з┘Ж",
"countries.pa": "┘╛╪з┘Ж╪з┘Е╪з",
"countries.pe": "╪з┘Д┘╛┘К╪▒┘И",
"countries.ph": "╪з┘Д┘Б┘К┘Д┘К┘╛┘К┘Ж",
"countries.pw": "┘╛╪з┘Д╪з┘И",
"countries.pg": "┘╛╪з┘╛┘И╪з ╪║┘К┘Ж┘К╪з ╪з┘Д╪м╪п┘К╪п╪й",
"countries.pl": "┘╛┘И┘Д╪з┘Ж╪п╪з",
"countries.kp": "┘Г┘И╪▒┘К╪з ╪з┘Д╪┤┘Е╪з┘Д┘К╪й",
"countries.pt": "╪з┘Д╪и╪▒╪╖┘В┘К╪▓",
"countries.py": "╪з┘Д┘╛╪з╪▒╪з┌н┘И╪з┘К",
"countries.qa": "┘В╪╖╪▒",
"countries.ro": "╪▒┘И┘Е╪з┘Ж┘К╪з",
"countries.ru": "╪▒┘И╪│┘К╪з",
"countries.rw": "╪▒┘И┘С╪з┘Ж╪п╪з",
"countries.sa": "╪з┘Д┘Е┘Е┘Д┘Г╪й ╪з┘Д╪╣╪▒╪и┘К╪й ╪з┘Д╪│╪╣┘И╪п┘К╪й",
"countries.sd": "╪з┘Д╪│┘И╪п╪з┘Ж",
"countries.sn": "╪з┘Д╪│┘К┘Ж┘К┌н╪з┘Д",
"countries.sg": "╪│┘Ж╪║╪з┘Б┘И╪▒╪й",
"countries.sb": "╪п╪▓┘К╪▒╪з╪к ╪│┘Д┘К┘Е╪з┘Ж",
"countries.sl": "╪╡┘К┘К╪▒╪з┘Д┘К┘И┘Ж",
"countries.sv": "╪з┘Д╪│╪з┘Д┌д╪з╪╢┘И╪▒",
"countries.sm": "╪│╪з┘Ж ┘Е╪з╪▒┘К┘Ж┘И",
"countries.so": "╪з┘Д╪╡┘И┘Е╪з┘Д",
"countries.rs": "╪╡┘К╪▒╪и┘К╪з",
"countries.ss": "╪м┘Ж┘И╪и ╪з┘Д╪│┘И╪п╪з┘Ж",
"countries.st": "╪╡╪з┘И ╪╖┘И┘Е┘К ╪д ┘╛╪▒┘К┘Ж╪│┘К┘╛┘К",
"countries.sr": "╪│┘И╪▒┘К┘Ж╪з┘Е",
"countries.sk": "╪╡┘Д┘И┌д╪з┘Г┘К╪з",
"countries.si": "╪╡┘Д┘И┌д┘К┘Ж┘К╪з",
"countries.se": "╪з┘Д╪│┘И┘К╪п",
"countries.sz": "╪│┘И╪з╪▓┘К┘Д╪з┘Ж╪п",
"countries.sc": "╪з┘Д╪│┘К╪┤┘К┘Д",
"countries.sy": "╪│┘И╪▒┘К╪з",
"countries.td": "╪к╪┤╪з╪п",
"countries.tg": "╪з┘Д╪╖┘И┌н┘И",
"countries.th": "╪з┘Д╪╖╪з┘К┘Д┘И┘Ж╪п",
"countries.tj": "╪╖╪з╪п╪м┘К┘Г┘К╪│╪к╪з┘Ж",
"countries.tm": "╪к╪▒┘Г┘Е╪з┘Ж┘К╪│╪к╪з┘Ж",
"countries.tl": "╪к┘К┘Е┘И╪▒ ╪з┘Д╪┤╪▒┘В┘К╪й",
"countries.to": "╪к┘И┘Ж┌н╪з",
"countries.tt": "╪к╪▒┘К┘Ж┘К╪п╪з╪п ╪д ╪╖┘И╪и╪з┌н┘И",
"countries.tn": "╪к┘И┘Ж╪│",
"countries.tr": "╪к┘И╪▒┘Г┘К╪з",
"countries.tv": "╪к┘И┌д╪з┘Д┘И",
"countries.tz": "╪╖┘Ж╪▓╪з┘Ж┘К╪з",
"countries.ug": "╪д┌н╪з┘Ж╪п╪з",
"countries.ua": "╪д┘Г╪▒╪з┘Ж┘К╪з",
"countries.uy": "╪д╪▒┘И┌н┘И╪з┘К",
"countries.us": "┘Е┘К╪▒┘К┘Г╪з┘Ж",
"countries.uz": "╪д╪▓╪и╪з┘Г┘К╪│╪к╪з┘Ж",
"countries.va": "┘Е╪п┘К┘Ж╪й ╪з┘Д┌д╪з╪к┘К┘Г╪з┘Ж",
"countries.vc": "╪│╪з┘Ж╪к ┌д╪з┘Ж╪│┘И┘Ж ╪д ╪п╪▓┘К╪▒╪з╪к ┌н╪▒┘К┘Ж╪з╪п┘К┘Ж",
"countries.ve": "┌д┘К┘Ж┘К╪▓┘И┘К┘Д╪з",
"countries.vn": "┌д┘К╪╖┘Ж╪з┘Е",
"countries.vu": "┌д╪з┘Ж┘И╪з╪к┘И",
"countries.ws": "╪│╪з┘Е┘И╪з",
"countries.ye": "╪з┘Д┘К┘Е┘Ж",
"countries.za": "╪м┘Ж┘И╪и ╪е┘Б╪▒┘К┘В┘К╪з",
"countries.zm": "╪▓╪з┘Е╪и┘К╪з",
"countries.zw": "╪▓┘К┘Е╪и╪з╪и┘И┘К",
"continents.af": "╪г┘Б╪▒┘К┘В┘К╪з",
"continents.an": "╪з┘Д┘В╪з╪▒╪й ╪з┘Д┘В╪╖╪и┘К╪й ╪з┘Д╪м┘Ж┘И╪и┘К╪й",
"continents.as": "╪г╪│┘К╪з",
"continents.eu": "╪д╪▒┘И┘╛╪з",
"continents.na": "┘Е┘К╪▒┘К┘Г╪з┘Ж ╪з┘Д╪┤┘Е╪з┘Д┘К╪й",
"continents.oc": "╪д┘В┘К╪з┘Ж┘И╪│┘К╪з",
"continents.sa": "┘Е┘К╪▒┘К┘Г╪з┘Ж ╪з┘Д╪м┘Ж┘И╪и┘К╪й"
}
+13 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"┘Б┘Ж ╪з┘Д╪н┘Г┘Е╪й ┘З┘И ┘Б┘Ж ┘Е╪╣╪▒┘Б╪й ┘Е╪з ┘К╪м╪и ╪з┘Д╪к╪║╪з╪╢┘К ╪╣┘Ж┘З.\"",
"settings.locale": "ar",
"settings.direction": "rtl",
"emails.sender": "┘Б╪▒┘К┘В {{project}}",
"emails.sender": "┘Б╪▒┘К┘В %s",
"emails.verification.subject": "╪к╪г┘Г┘К╪п ╪з┘Д╪н╪│╪з╪и",
"emails.verification.hello": "┘Е╪▒╪н╪и╪з {{user}}╪М",
"emails.verification.hello": "┘Е╪▒╪н╪и╪з {{name}}",
"emails.verification.body": "╪и╪▒╪м╪з╪б ╪з╪к╪и╪з╪╣ ╪з┘Д╪▒╪з╪и╪╖ ╪з┘Д╪к╪з┘Д┘К ┘Д╪к╪г┘Г┘К╪п ╪и╪▒┘К╪п┘Г ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К",
"emails.verification.footer": "┘Д┘И ┘Д┘Е ╪к╪╖┘Д╪и ╪к╪г┘Г┘К╪п ┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К╪М ┘К┘Е┘Г┘Ж┘Г ╪к╪м╪з┘З┘Д ┘З╪░┘З ╪з┘Д╪▒╪│╪з┘Д╪й",
"emails.verification.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.verification.buttonText": "╪к╪г┘Г┘К╪п ╪╣┘Ж┘И╪з┘Ж ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К",
"emails.verification.thanks": "╪┤┘Г╪▒╪з",
"emails.verification.signature": "┘Б╪▒┘К┘В {{project}}",
"emails.magicSession.subject": "╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д",
"emails.magicSession.hello": "╪г┘З┘Д╪з╪М",
"emails.magicSession.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.magicSession.body": "╪з╪к╪и╪╣ ┘З╪░╪з ╪з┘Д╪▒╪з╪и╪╖ ┘Д╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д",
"emails.magicSession.footer": "┘Д┘И ┘Д┘Е ╪к╪╖┘Д╪и ╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д ╪и┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪з┘Г╪к╪▒┘И┘Ж┘К ╪М ┘К┘Е┘Г┘Ж┘Г ╪к╪м╪з┘З┘Д ┘З╪░┘З ╪з┘Д╪▒╪│╪з┘Д╪й",
"emails.magicSession.thanks": "╪┤┘Г╪▒╪з",
"emails.magicSession.signature": "┘Б╪▒┘К┘В {{project}}",
"emails.recovery.subject": "╪к╪║┘К┘К╪▒ ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒",
"emails.recovery.hello": "╪г┘З┘Д╪з {{user}}╪М",
"emails.recovery.hello": "╪г┘З┘Д╪з {{name}}",
"emails.recovery.body": "╪и╪▒╪м╪з╪б ╪з╪к╪и╪з╪╣ ╪з┘Д╪▒╪з╪╖ ╪з┘Д╪к╪з┘Д┘К ┘Д╪к╪║┘К┘К╪▒ ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒ ╪з┘Д╪о╪з╪╡╪й ╪и┘А{{project}}",
"emails.recovery.footer": "┘Д┘И┘Д┘Е ╪к╪╖┘Д╪и ╪к╪║┘К┘К╪▒ ┘Г┘Д┘Е╪й ╪з┘Д╪│╪▒╪М ┘К┘Е┘Г┘Ж┘Г ╪к╪м╪з┘З┘Д ┘З╪░┘З ╪з┘Д╪▒╪│╪з┘Д╪й",
"emails.recovery.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.recovery.buttonText": "╪е╪╣╪з╪п╪й ╪к╪╣┘К┘К┘Ж ┘Г┘Д┘Е╪й ╪з┘Д┘Е╪▒┘И╪▒",
"emails.recovery.thanks": "╪┤┘Г╪▒╪з",
"emails.recovery.signature": "┘Б╪▒┘К┘В {{project}}",
"emails.invitation.subject": "╪п╪╣┘И╪й ┘Д┘Б╪▒┘К┘В {{team}} ┘Б┘К {{project}}",
"emails.invitation.hello": "╪г┘З┘Д╪з╪М",
"emails.invitation.subject": "╪п╪╣┘И╪й ┘Д┘Б╪▒┘К┘В %s ┘Б┘К %s",
"emails.invitation.hello": "╪г┘З┘Д╪з",
"emails.invitation.body": "┘З╪░╪й ╪з┘Д╪▒╪│╪з┘Д╪й ╪к┘Е ╪з╪▒╪│╪з┘Д┘З╪з ┘Д┘Г ┘Д╪г┘Ж {{owner}} ╪з╪▒╪│┘Д ┘Д┘Г ╪п╪╣┘И╪й ┘Д╪к┘Г┘И┘Ж ╪╣╪╢┘И╪з ╪и┘Б╪▒┘К┘В {{team}} ┘Б┘К {{project}}",
"emails.invitation.footer": "╪з╪░╪з ┘Г┘Ж╪к ╪║┘К╪▒ ┘Е┘З╪к┘Е╪М ┘К┘Е┘Г┘Ж┘Г ╪к╪м╪з┘З┘Д ┘З╪░┘З ╪з┘Д╪▒╪│╪з┘Д╪й",
"emails.invitation.thanks": "╪┤┘Г╪▒╪з╪М",
"emails.invitation.buttonText": "┘В╪и┘И┘Д ╪з┘Д╪п╪╣┘И╪й ╪е┘Д┘Й {{team}}",
"emails.invitation.thanks": "╪┤┘Г╪▒╪з",
"emails.invitation.signature": "┘Б╪▒┘К┘В {{project}}",
"locale.country.unknown": "┘Е╪м┘З┘И┘Д",
"countries.af": "╪г┘Б╪║╪з┘Ж╪│╪к╪з┘Ж",
@@ -101,7 +100,6 @@
"countries.gd": "╪║╪▒┘К┘Ж╪з╪п╪з",
"countries.gt": "╪║┘И╪з╪к┘К┘Е╪з┘Д╪з",
"countries.gy": "╪║┘К╪з┘Ж╪з",
"countries.hk": "┘З┘И┘Ж╪║ ┘Г┘И┘Ж╪║",
"countries.hn": "┘З┘Ж╪п┘И╪▒╪з╪│",
"countries.hr": "┘Г╪▒┘И╪з╪к┘К╪з",
"countries.ht": "┘З╪з┘К╪к┘К",
@@ -165,7 +163,6 @@
"countries.nz": "┘Ж┘К┘И╪▓┘К┘Д┘Ж╪п╪з",
"countries.om": "╪╣┘Е╪з┘Ж",
"countries.pk": "╪и╪з┘Г╪│╪к╪з┘Ж",
"countries.ps": "┘Б┘Д╪│╪╖┘К┘Ж",
"countries.pa": "╪и┘Ж┘Е╪з",
"countries.pe": "╪и┘К╪▒┘И",
"countries.ph": "╪з┘Д┘Б┘Д╪и┘К┘Ж",
@@ -209,7 +206,6 @@
"countries.tn": "╪к┘И┘Ж╪│",
"countries.tr": "╪к╪▒┘Г┘К╪з",
"countries.tv": "╪к┘И┘Б╪з┘Д┘И",
"countries.tw": "╪к╪з┘К┘И╪з┘Ж",
"countries.tz": "╪к┘Ж╪▓╪з┘Ж┘К╪з",
"countries.ug": "╪г┘И╪║┘Ж╪п╪з",
"countries.ua": "╪г┘И┘Г╪▒╪з┘Ж┘К╪з",
@@ -232,18 +228,5 @@
"continents.eu": "╪г┘И╪▒┘И╪и╪з",
"continents.na": "╪з┘Е╪▒┘К┘Г╪з ╪з┘Д╪┤┘Е╪з┘Д┘К╪й",
"continents.oc": "╪г┘И┘В┘К╪з┘Ж┘И╪│┘К╪з",
"continents.sa": "╪з┘Е╪▒┘К┘Г╪з ╪з┘Д╪м┘Ж┘И╪и┘К╪й",
"emails.magicSession.optionButton": "╪з┘Ж┘В╪▒ ╪╣┘Д┘Й ╪з┘Д╪▓╪▒ ╪г╪п┘Ж╪з┘З ┘Д╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д ╪и╪г┘Е╪з┘Ж ╪е┘Д┘Й ╪н╪│╪з╪и {{project}} ╪з┘Д╪о╪з╪╡ ╪и┘Г. ╪│┘К┘Ж╪к┘З┘К ┘Б┘К ╪║╪╢┘И┘Ж ╪│╪з╪╣╪й ┘И╪з╪н╪п╪й.",
"emails.magicSession.buttonText": "╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д ╪е┘Д┘Й {{project}}",
"emails.magicSession.clientInfo": "╪к┘Е ╪╖┘Д╪и ┘З╪░╪з ╪з┘Д╪п╪о┘И┘Д ╪и╪з╪│╪к╪о╪п╪з┘Е {{agentClient}} ╪╣┘Д┘Й {{agentDevice}} {{agentOs}}. ╪е╪░╪з ┘Д┘Е ╪к╪╖┘Д╪и ╪з┘Д╪п╪о┘И┘Д╪М ┘К┘Е┘Г┘Ж┘Г ╪к╪м╪з┘З┘Д ┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К ╪и╪г┘Е╪з┘Ж.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "╪╣╪и╪з╪▒╪й ╪з┘Д╪г┘Е╪з┘Ж ┘Д┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К ┘З┘К {{phrase}}. ┘К┘Е┘Г┘Ж┘Г ╪з┘Д┘И╪л┘И┘В ╪и┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К ╪е╪░╪з ┘Г╪з┘Ж╪к ┘З╪░┘З ╪з┘Д╪╣╪и╪з╪▒╪й ╪к╪╖╪з╪и┘В ╪з┘Д╪╣╪и╪з╪▒╪й ╪з┘Д╪к┘К ╪к╪╕┘З╪▒ ╪г╪л┘Ж╪з╪б ╪з┘Д╪к╪│╪м┘К┘Д.",
"emails.magicSession.optionUrl": "╪е╪░╪з ┘Д┘Е ╪к╪к┘Е┘Г┘Ж ┘Е┘Ж ╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д ╪и╪з╪│╪к╪о╪п╪з┘Е ╪з┘Д╪▓╪▒ ╪г╪╣┘Д╪з┘З╪М ┘К╪▒╪м┘Й ╪▓┘К╪з╪▒╪й ╪з┘Д╪▒╪з╪и╪╖ ╪з┘Д╪к╪з┘Д┘К:",
"emails.otpSession.subject": "╪к╪│╪м┘К┘Д ╪п╪о┘И┘Д {{project}}",
"emails.otpSession.hello": "┘Е╪▒╪н╪и╪з╪М",
"emails.otpSession.description": "╪г╪п╪о┘Д ╪▒┘Е╪▓ ╪з┘Д╪к╪н┘В┘В ╪з┘Д╪к╪з┘Д┘К ╪╣┘Ж╪п┘Е╪з ┘К┘П╪╖┘Д╪и ┘Е┘Ж┘Г ┘Д╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д ╪и╪г┘Е╪з┘Ж ╪е┘Д┘Й ╪н╪│╪з╪и {{project}} ╪з┘Д╪о╪з╪╡ ╪и┘Г. ╪│┘К┘Ж╪к┘З┘К ╪╡┘Д╪з╪н┘К╪к┘З ┘Б┘К ╪║╪╢┘И┘Ж 15 ╪п┘В┘К┘В╪й.",
"emails.otpSession.clientInfo": "╪к┘Е ╪╖┘Д╪и ┘З╪░╪з ╪з┘Д╪п╪о┘И┘Д ╪и╪з╪│╪к╪о╪п╪з┘Е {{agentClient}} ╪╣┘Д┘Й ╪м┘З╪з╪▓ {{agentDevice}} {{agentOs}}. ╪е╪░╪з ┘Д┘Е ╪к╪╖┘Д╪и ╪з┘Д╪п╪о┘И┘Д╪М ┘К┘Е┘Г┘Ж┘Г ╪к╪м╪з┘З┘Д ┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К ╪и╪г┘Е╪з┘Ж.",
"emails.otpSession.securityPhrase": "╪╣╪и╪з╪▒╪й ╪з┘Д╪г┘Е╪з┘Ж ┘Д┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К ┘З┘К {{phrase}}. ┘К┘Е┘Г┘Ж┘Г ╪з┘Д┘И╪л┘И┘В ╪и┘З╪░╪з ╪з┘Д╪и╪▒┘К╪п ╪з┘Д╪е┘Д┘Г╪к╪▒┘И┘Ж┘К ╪е╪░╪з ┘Г╪з┘Ж╪к ┘З╪░┘З ╪з┘Д╪╣╪и╪з╪▒╪й ╪к╪к╪╖╪з╪и┘В ┘Е╪╣ ╪з┘Д╪╣╪и╪з╪▒╪й ╪з┘Д┘Е╪╣╪▒┘И╪╢╪й ╪г╪л┘Ж╪з╪б ╪к╪│╪м┘К┘Д ╪з┘Д╪п╪о┘И┘Д.",
"emails.otpSession.thanks": "╪┤┘Г╪▒┘Л╪з╪М",
"emails.otpSession.signature": "┘Б╪▒┘К┘В {{project}}"
}
"continents.sa": "╪з┘Е╪▒┘К┘Г╪з ╪з┘Д╪м┘Ж┘И╪и┘К╪й"
}
+13 -36
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"ржЬрзНржЮрж╛ржирзА рж╣рзЛрз▒рж╛рз░ ржХрж▓рж╛ рж╣рзИржЫрзЗ ржХрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрз░рж┐ржм рж▓рж╛ржЧрзЗ ржЬржирж╛рз░ ржХрж▓рж╛ред\"",
"settings.locale": "as",
"settings.direction": "ltr",
"emails.sender": "{{project}} ржжрж▓",
"emails.sender": "%s ржжрж▓",
"emails.verification.subject": "ржПржХрж╛ржЙржгрзНржЯ ржкрзНрз░ржорж╛ржгрзАржХрз░ржг",
"emails.verification.hello": "ржиржорж╕рзНржХрж╛рз░ {{user}},",
"emails.verification.hello": "ржиржорж╕рзНржХрж╛рз░ {{name}}",
"emails.verification.body": "ржЖржкрзЛржирж╛рз░ ржЗржорзЗржЗрж▓ ржарж┐ржХржирж╛ ржкрзНрз░ржорж╛ржгрж┐ржд ржХрз░рж┐ржмрж▓рзИ ржПржЗ рж▓рж┐ржВржХржЯрзЛ ржЕржирзБрж╕рз░ржг ржХрз░ржХред",
"emails.verification.footer": "ржпржжрж┐ ржЖржкрзБржирж┐ ржПржЗ ржарж┐ржХржирж╛ржЯрзЛ рж╕рждрзНржпрж╛ржкрж┐ржд ржХрз░рж┐ржмрж▓рзИ ржХрзЛрз▒рж╛ ржирж╛ржЗ, ржЖржкрзБржирж┐ ржПржЗ ржмрж╛рз░рзНрждрж╛ржЯрзЛ ржЙржкрзЗржХрзНрж╖рж╛ ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.verification.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.verification.buttonText": "ржЗржорзЗржЗрж▓ ржарж┐ржХржирж╛ ржирж┐рж╢рзНржЪрж┐ржд ржХрз░ржХ",
"emails.verification.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.verification.signature": "{{project}} ржжрж▓",
"emails.magicSession.subject": "рж▓ржЧржЗржи",
"emails.magicSession.hello": "ржиржорж╕рзНржХрж╛рз░,",
"emails.magicSession.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.magicSession.body": "рж▓ржЧржЗржи ржХрз░рж┐ржмрж▓рзИ ржПржЗ рж▓рж┐ржВржХржЯрзЛ ржЕржирзБрж╕рз░ржг ржХрз░ржХред",
"emails.magicSession.footer": "ржпржжрж┐ ржЖржкрзБржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ ржмрзНржпрз▒рж╣рж╛рз░ ржХрз░рж┐ рж▓ржЧржЗржи ржХрз░рж┐ржмрж▓рзИ ржХрзЛрз▒рж╛ ржирж╛ржЫрж┐рж▓, ржЖржкрзБржирж┐ ржПржЗ ржмрж╛рз░рзНрждрж╛ржЯрзЛ ржЙржкрзЗржХрзНрж╖рж╛ ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.magicSession.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.magicSession.signature": "{{project}} ржжрж▓",
"emails.recovery.subject": "ржкрж╛ржЫрз▒рж╛рз░рзНржб рз░рж┐ржЫрзЗржЯ",
"emails.recovery.hello": "ржзржирзНржпржмрж╛ржж {{user}},",
"emails.recovery.hello": "ржзржирзНржпржмрж╛ржж {{name}}",
"emails.recovery.body": "ржЖржкрзЛржирж╛рз░ {{project}} ржкрж╛ржЫрз▒рз░рзНржб рз░рж┐ржЫрзЗржЯ ржХрз░рж┐ржмрж▓рзИ ржПржЗ рж▓рж┐ржВржХржЯрзЛ ржЕржирзБрж╕рз░ржг ржХрз░ржХред.",
"emails.recovery.footer": "ржпржжрж┐ ржЖржкрзБржирж┐ ржЖржкрзЛржирж╛рз░ ржкрж╛ржЫрз▒рз░рзНржб рз░рж┐ржЫрзЗржЯ ржХрз░рж┐ржмрж▓рзИ ржХрзЛрз▒рж╛ ржирж╛ржЫрж┐рж▓, ржЖржкрзБржирж┐ ржПржЗ ржмрж╛рз░рзНрждрж╛ржЯрзЛ ржЙржкрзЗржХрзНрж╖рж╛ ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.recovery.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.recovery.buttonText": "ржкрж╛ржЫрз▒рз░рзНржб рз░рж┐ржЫрзЗржЯ ржХрз░ржХ",
"emails.recovery.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.recovery.signature": "{{project}} ржжрж▓",
"emails.invitation.subject": "{{team}} ржмржЫрз░ржд {{project}} ржжрж▓рж▓рзИ ржирж┐ржоржирзНрждрзНрз░ржг",
"emails.invitation.hello": "ржиржорж╕рзНржХрж╛рз░,",
"emails.invitation.subject": "%s ржмржЫрз░ржд %s ржжрж▓рж▓рзИ ржирж┐ржоржирзНрждрзНрз░ржг",
"emails.invitation.hello": "ржиржорж╕рзНржХрж╛рз░",
"emails.invitation.body": "ржПржЗ ржорзЗржЗрж▓ржЯрзЛ ржЖржкрзЛржирж╛рж▓рзИ ржкрзНрз░рзЗрз░ржг ржХрз░рж╛ рж╣рзИржЫрж┐рж▓ ржХрж╛рз░ржг {{owner}} ржЬржирзЗ ржЖржкрзЛржирж╛ржХ {{project}} ржмржЫрз░ржмржпрж╝рж╕ржд {{team}} ржжрж▓рз░ рж╕ржжрж╕рзНржп рж╣'ржмрж▓рзИ ржЖржоржирзНрждрзНрз░ржг ржЬржирж╛ржм ржмрж┐ржЪрж╛рз░рж┐ржЫрж┐рж▓ред",
"emails.invitation.footer": "ржпржжрж┐ ржЖржкрзБржирж┐ ржЖржЧрзНрз░рж╣рзА ржирж╣ржпрж╝, ржЖржкрзБржирж┐ ржПржЗ ржмрж╛рз░рзНрждрж╛ржЯрзЛ ржЙржкрзЗржХрзНрж╖рж╛ ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.invitation.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.invitation.buttonText": "{{team}}-рж▓рзИ ржирж┐ржоржирзНрждрзНрз░ржг ржЧрзНрз░рж╣ржг ржХрз░ржХ",
"emails.invitation.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.invitation.signature": "{{project}} ржжрж▓",
"locale.country.unknown": "ржЕржЬрзНржЮрж╛ржд ",
"countries.af": "ржЖржлржЧрж╛ржирж┐рж╕рзНрждрж╛ржи ",
@@ -101,7 +100,6 @@
"countries.gd": "ржЧрзНрз░рзЗржирж╛ржбрж╛",
"countries.gt": "ржЧрзБржпрж╝рж╛рждрзЗржорж╛рж▓рж╛",
"countries.gy": "ржЧрж╛ржпрж╝рж╛ржирж╛",
"countries.hk": "рж╣ржВ ржХржВ",
"countries.hn": "рж╣ржгрзНржбрзБрз░рж╛ржЫ",
"countries.hr": "ржХрзНрз░рзЛрз▒рзЗржЫрж┐ржпрж╝рж╛",
"countries.ht": "рж╣рж╛ржЗрждрж┐",
@@ -165,7 +163,6 @@
"countries.nz": "ржирж┐ржЙржЬрж┐рж▓рзЗржгрзНржб",
"countries.om": "ржУржорж╛ржи",
"countries.pk": "ржкрж╛ржХрж┐рж╕рзНрждрж╛ржи",
"countries.ps": "ржкрзНржпрж╛рж▓рзЗрж╕рзНржЯрж╛ржЗржи",
"countries.pa": "ржкрж╛ржирж╛ржорж╛",
"countries.pe": "ржкрзЗрз░рзБ",
"countries.ph": "ржлрж┐рж▓рж┐ржкрж╛ржЗржиржЪ",
@@ -209,7 +206,6 @@
"countries.tn": "ржЯрж┐ржЙржирж┐ржЪрж┐ржпрж╝рж╛",
"countries.tr": "рждрзБрз░рзНржХрзА",
"countries.tv": "ржЯрзБржнрж╛рж▓рзБ",
"countries.tw": "рждрж╛ржЗржУржпрж╝рж╛ржи",
"countries.tz": "рждрж╛ржЮрзНржЬрж╛ржирж┐ржпрж╝рж╛",
"countries.ug": "ржЙржЧрж╛ржгрзНржбрж╛",
"countries.ua": "ржЗржЙржХрзНрз░рзЗржЗржи",
@@ -232,24 +228,5 @@
"continents.eu": "ржЗржЙрз░рзЛржк",
"continents.na": "ржЙрждрзНрждрз░ ржЖржорзЗрз░рж┐ржХрж╛",
"continents.oc": "ржУржЪрзЗржирж┐ржпрж╝рж╛",
"continents.sa": "ржжржХрзНрж╖рж┐ржг ржЖржорзЗрз░рж┐ржХрж╛",
"emails.magicSession.optionButton": "рждрж▓рз░ ржмрзБржЯрж╛ржоржЯрзЛ ржХрзНрж▓рж┐ржХ ржХрз░рж┐ ржЖржкрзЛржирж╛рз░ {{project}} ржПржХрж╛ржЙржгрзНржЯржд ржирж┐рз░рж╛ржкржжрзЗ ржЪрж╛ржЗржи ржЗржи ржХрз░ржХред ржЗ ржПржШржгрзНржЯрж╛рз░ ржнрж┐рждрз░ржд ржЕржмрзИржз рж╣'ржмред",
"emails.magicSession.buttonText": "{{project}}ржд ржкрзНрз░рз▒рзЗрж╢ ржХрз░ржХ",
"emails.magicSession.optionUrl": "ржЖржкрзБржирж┐ ржУржкрз░ржд ржжрж┐ржпрж╝рж╛ ржмрзБржЯрж╛ржо ржмрзНржпрз▒рж╣рж╛рз░ ржХрз░рж┐ рж╕рж╛ржЗржи ржЗржи ржХрз░рж┐ржм ржирзЛрз▒рж╛рз░рж┐рж▓рзЗ, ржЕржирзБржЧрзНрз░рж╣ ржХрз░рж┐ рждрж▓рз░ рж▓рж┐ржВржХржЯрзЛ ржнрзНрз░ржоржг ржХрз░ржХ:",
"emails.magicSession.clientInfo": "ржПржЗ ржЪрж╛ржЗржи ржЗржиржЯрзЛ {{agentClient}} ржмрзНржпрз▒рж╣рж╛рз░ ржХрз░рж┐ {{agentDevice}} {{agentOs}}ржд ржЕржирзБрз░рзЛржз ржХрз░рж╛ рж╣рзИржЫрж┐рж▓ред ржЖржкрзБржирж┐ ржпржжрж┐ ржЪрж╛ржЗржи ржЗржирз░ ржЕржирзБрз░рзЛржз ржиржХрз░рж╛ ржирж╛ржЗ, рждрзЗржирзНрждрзЗ ржЖржкрзБржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ржЦржи ржирж┐рз░рж╛ржкржжрзЗ ржЙржкрзЗржХрзНрж╖рж╛ ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.magicSession.securityPhrase": "ржПржЗ ржЗржорзЗржЗрж▓рз░ ржмрж╛ржмрзЗ ржирж┐рж░рж╛ржкрждрзНрждрж╛ ржмрж╛ржХрзНржп рж╣рзИржЫрзЗ {{phrase}}ред ржпржжрж┐ ржПржЗ ржмрж╛ржХрзНржпржЯрзЛ рж╕рж╛ржЗржи ржЗржи ржХрз░рж╛рз░ рж╕ржорзЯржд ржжрзЗржЦрзБржУрз▒рж╛ ржмрж╛ржХрзНржпржЯрзЛрз░ рж╕рзИрждрзЗ ржорж┐рж▓рзЗ, рждрзЗржирзНрждрзЗ ржЖржкрзБржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ржЯрзЛржд ржмрж┐рж╢рзНржмрж╛рж╕ ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.otpSession.subject": "{{project}} рж▓ржЧржЗржи",
"emails.otpSession.hello": "ржиржорж╕рзНржХрж╛рз░,",
"emails.otpSession.description": "ржирж┐рз░рж╛ржкржжрзЗ ржЖржкрзЛржирж╛рз░ {{project}} ржПржХрж╛ржЙржгрзНржЯржд ржЪрж╛ржЗржи ржЗржи ржХрз░рж╛рз░ рж╕ржоржпрж╝ржд ржЕржирзБрз░рзЛржз ржХрз░рж╛ рж╣'рж▓рзЗ рждрж▓рз░ ржкрзНрз░ржорж╛ржгрзАржХрз░ржг ржХрзЛржбржЯрзЛ ржкрзНрз░ржмрзЗрж╢ ржХрз░ржХред ржЗ рззрзл ржорж┐ржирж┐ржЯржд ржЕржмрзИржз рж╣рзИ ржкрз░рж┐ржмред",
"emails.otpSession.clientInfo": "ржПржЗ ржЪрж┐ржирж╛ржХрзНрждржХрз░ржгрз░ ржЕржирзБрз░рзЛржз {{agentClient}} рз░ ржЬрз░рж┐ржпрж╝рждрзЗ {{agentDevice}} {{agentOs}} ржд ржХрз░рж╛ рж╣рзИржЫрж┐рж▓ред ржЖржкрзБржирж┐ ржпржжрж┐ ржЪрж┐ржирж╛ржХрзНрждржХрз░ржгрз░ ржЕржирзБрз░рзЛржз ржХрз░рж╛ ржирж╛ржЗ, рждрзЗржирзНрждрзЗ ржЖржкрзБржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ржЯрзЛ ржирж┐рз░рж╛ржкржжрзЗ ржЕржЧрзНрз░рж╛рж╣рзНржп ржХрз░рж┐ржм ржкрж╛рз░рзЗред",
"emails.otpSession.securityPhrase": "ржПржЗ ржЗржорзЗржЗрж▓рз░ рж╕рзБрз░ржХрзНрж╖рж╛ ржмрж╛ржХрзНржпржЯрзЛ рж╣рзИржЫрзЗ {{phrase}}ред ржЖржкрзБржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ржЯрзЛржд ржЖрж╕рзНржерж╛ рз░рж╛ржЦрж┐ржм ржкрж╛рз░рзЗ ржпржжрж┐ ржкрзНрз░ржмрзЗрж╢рз░ рж╕ржоржпрж╝ржд ржжрзЗржЦрзБрз▒рж╛ржЗ ржержХрж╛ ржмрж╛ржХрзНржпржЯрзЛрз░ рж▓ржЧржд ржПржЗ ржмрж╛ржХрзНржпржЯрзЛ ржорзЗрж▓рзЗред",
"emails.otpSession.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.otpSession.signature": "{{project}} ржжрж▓",
"emails.certificate.subject": "{{domain}}рз░ ржмрж╛ржмрзЗ ржкрзНрз░ржорж╛ржгржкрждрзНрз░ ржмрзНржпрз░рзНржерждрж╛",
"emails.certificate.hello": "ржиржорж╕рзНржХрж╛рз░,",
"emails.certificate.body": "ржЖржкрзЛржирж╛рз░ ржбрзЛржорзЗржЗржи '{{domain}}' рз░ ржмрж╛ржмрзЗ ржкрзНрз░ржорж╛ржгржкрждрзНрз░ржЯрзЛ ржЙрждрзНтАМржкржирзНржи ржХрз░рж┐ржм ржкрз░рж╛ ржиржЧ'рж▓ред ржПржпрж╝рж╛ ржкрзНрз░ржЪрзЗрж╖рзНржЯрж╛ ржиржорзНржмрз░ {{attempt}}, ржЖрз░рзБ ржмрж┐ржлрж▓рждрж╛рз░ ржХрж╛рз░ржг рж╣'рж▓: {{error}}",
"emails.certificate.footer": "ржЖржкрзЛржирж╛рз░ ржкрзВрз░рзНржмрз░ ржкрзНрз░ржорж╛ржгржкрждрзНрз░ржЯрзЛ ржкрзНрз░ржержо ржмрзНрз░рж┐ржлрж▓ рж╣рзЛрз▒рж╛рз░ ржжрж┐ржирз░ ржкрз░рж╛ рзйрзж ржжрж┐ржирж▓рзИ ржмрзИржз ржерж╛ржХрж┐ржмред ржЖржорж┐ ржПржЗ ржШржЯржирж╛ржЯрзЛрз░ рждржжржирзНржд ржХрз░рж┐ржмрж▓рзИ ржЙржЪрзНржЪ ржкрз░рж╛ржорз░рзНрж╢ ржжрж┐ржпрж╝рзЗ, ржЕржирзНржпржерж╛ ржЖржкрзЛржирж╛рз░ ржбрзЛржорзЗржЗржиржЯрзЛ ржЕржмрзИржз SSL ржпрзЛржЧрж╛ржпрзЛржЧ ржЕржмрж┐рж╣ржирзЗ ржерж╛ржХрж┐ржмред",
"emails.certificate.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.certificate.signature": "{{project}} ржжрж▓",
"sms.verification.body": "{{secret}}"
}
"continents.sa": "ржжржХрзНрж╖рж┐ржг ржЖржорзЗрз░рж┐ржХрж╛"
}
+12 -36
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"A─Я─▒ll─▒ olmaq s╔Щn╔Щti, n╔Щyi g├╢zd╔Щn qa├з─▒raca─Я─▒n─▒ bilm╔Щk s╔Щn╔Щtidir.\"",
"settings.locale": "az",
"settings.direction": "ltr",
"emails.sender": "{{project}} Komandas─▒",
"emails.sender": "%s Komandas─▒",
"emails.verification.subject": "Hesab Do─Яrulama",
"emails.verification.hello": "Salam {{user}},",
"emails.verification.hello": "Salam {{name}}",
"emails.verification.body": "E-po├зt ├╝nvan─▒n─▒z─▒ t╔Щsdiq etm╔Щk ├╝├з├╝n bu linki izl╔Щyin.",
"emails.verification.footer": "Bu ├╝nvan─▒ do─Яrulama─Я─▒ xahi┼Я etm╔Щmisinizs╔Щ, bu mesaj─▒ g├╢zard─▒ ed╔Щ bil╔Щrsiniz.",
"emails.verification.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr,",
"emails.verification.buttonText": "E-po├зt ├╝nvan─▒n─▒ t╔Щsdiql╔Щ",
"emails.verification.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr",
"emails.verification.signature": "{{project}} komandas─▒",
"emails.magicSession.subject": "Daxil Olmaq",
"emails.magicSession.hello": "Salam,",
"emails.magicSession.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr,",
"emails.magicSession.body": "Daxil olmaq ├╝├з├╝n bu linki izl╔Щyin.",
"emails.magicSession.footer": "Bu e-po├зtdan istifad╔Щ ed╔Щr╔Щk giri┼Я ist╔Щm╔Щmisinizs╔Щ, bu mesaj─▒ g├╢rm╔Щm╔Щzlikd╔Щn g╔Щl╔Щ bil╔Щrsiniz.",
"emails.magicSession.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr",
"emails.magicSession.signature": "{{project}} komandas─▒",
"emails.recovery.subject": "┼Юifr╔Щ S─▒f─▒rlanmas─▒",
"emails.recovery.hello": "Salam {{user}},",
"emails.recovery.hello": "Salam {{name}}",
"emails.recovery.body": "{{project}} ┼Яifr╔Щnizi s─▒f─▒rlamaq ├╝├з├╝n bu linki izl╔Щyin.",
"emails.recovery.footer": "┼Юifr╔Щnizi s─▒f─▒rlama─Я─▒ xahi┼Я etm╔Щmisinizs╔Щ, bu mesaj─▒ g├╢zard─▒ ed╔Щ bil╔Щrsiniz.",
"emails.recovery.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr,",
"emails.recovery.buttonText": "┼Юifr╔Щni s─▒f─▒rla",
"emails.recovery.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr",
"emails.recovery.signature": "{{project}} komandas─▒",
"emails.invitation.subject": "{{team}} Komandas─▒na D╔Щv╔Щt {{project}}d╔Щ",
"emails.invitation.hello": "Salam,",
"emails.invitation.subject": "%s Komandas─▒na D╔Щv╔Щt %sd╔Щ",
"emails.invitation.hello": "Salam",
"emails.invitation.body": "{{owner}}, {{project}}d╔Щ {{team}} komandas─▒na ├╝zv olma─Яa d╔Щv╔Щt etm╔Щk ist╔Щdiyi ├╝├з├╝n bu m╔Щktub siz╔Щ g├╢nd╔Щrildi.",
"emails.invitation.footer": "╞Пg╔Щr maraqlanm─▒rs─▒n─▒zsa, bu mesaj─▒ g├╢zard─▒ ed╔Щ bil╔Щrsiniz.",
"emails.invitation.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr,",
"emails.invitation.buttonText": "{{team}} d╔Щv╔Щtini q╔Щbul et",
"emails.invitation.thanks": "T╔Щ┼Я╔Щkk├╝rl╔Щr",
"emails.invitation.signature": "{{project}} komandas─▒",
"locale.country.unknown": "Nam╔Щlum",
"countries.af": "╞Пfqan─▒stan",
@@ -101,7 +100,6 @@
"countries.gd": "Qrenada",
"countries.gt": "Qvatemala",
"countries.gy": "Guyana",
"countries.hk": "Honq Konq",
"countries.hn": "Honduras",
"countries.hr": "Xorvatiya",
"countries.ht": "Haiti",
@@ -165,7 +163,6 @@
"countries.nz": "Yeni Zelandiya",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "F╔Щl╔Щstin",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filippin",
@@ -209,7 +206,6 @@
"countries.tn": "Tunis",
"countries.tr": "T├╝rkiy╔Щ",
"countries.tv": "Tuvalu",
"countries.tw": "Tayvan",
"countries.tz": "Tanzaniya",
"countries.ug": "Uqanda",
"countries.ua": "Ukrayna",
@@ -225,25 +221,5 @@
"countries.ye": "Y╔Щm╔Щn",
"countries.za": "C╔Щnubi Afrika",
"countries.zm": "Zambiya",
"countries.zw": "Zimbabve",
"emails.magicSession.optionButton": "A┼Яa─Я─▒daki d├╝ym╔Щy╔Щ basaraq {{project}} hesab─▒n─▒za t╔Щhl├╝k╔Щsiz ┼Я╔Щkild╔Щ daxil olun. Bu, 1 saat sonra m├╝dd╔Щti bit╔Щc╔Щk.",
"emails.magicSession.buttonText": "{{project}} layih╔Щsin╔Щ daxil olun",
"emails.magicSession.clientInfo": "Bu giri┼Я, {{agentClient}} vasit╔Щsi il╔Щ {{agentDevice}} {{agentOs}} istifad╔Щ ed╔Щr╔Щk t╔Щl╔Щb olunmu┼Яdur. ╞Пg╔Щr siz giri┼Яi t╔Щl╔Щb etm╔Щmisinizs╔Щ, bu e-po├зtu t╔Щhl├╝k╔Щsiz ┼Я╔Щkild╔Щ yoksayabilirsiniz.",
"continents.af": "Afrika",
"continents.an": "Antarktida",
"continents.as": "Asiya",
"continents.eu": "Avropa",
"continents.na": "┼Юimali Amerika",
"continents.oc": "Okeaniya",
"continents.sa": "C╔Щnubi Amerika",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Bu e-po├зt ├╝├з├╝n t╔Щhl├╝k╔Щsizlik ifad╔Щsi {{phrase}}-dir. ╞Пg╔Щr bu ifad╔Щ daxil olark╔Щn g├╢st╔Щril╔Щn ifad╔Щ il╔Щ ├╝st-├╝st╔Щ d├╝┼Я├╝rs╔Щ, bu e-po├зta etibar ed╔Щ bil╔Щrsiniz.",
"emails.magicSession.optionUrl": "╞Пg╔Щr yuxar─▒dak─▒ d├╝ym╔Щni istifad╔Щ ed╔Щr╔Щk daxil ola bilmirsizs╔Щ, z╔Щhm╔Щt olmasa a┼Яa─Я─▒dak─▒ link╔Щ daxil olun:",
"emails.otpSession.subject": "{{project}} Giri┼Я",
"emails.otpSession.hello": "Salam,",
"emails.otpSession.description": "─░stifad╔Щ├зi t╔Щl╔Щb olunan zaman {{project}} hesab─▒n─▒za t╔Щhl├╝k╔Щsiz daxil olmaq ├╝├з├╝n a┼Яa─Я─▒dak─▒ t╔Щsdiql╔Щm╔Щ kodunu daxil edin. Bu kod 15 d╔Щqiq╔Щ sonra etibars─▒z olacaq.",
"emails.otpSession.clientInfo": "Bu giri┼Я {{agentClient}} vasit╔Щsil╔Щ {{agentDevice}} {{agentOs}} istifad╔Щ ed╔Щr╔Щk ist╔Щnildi. ╞Пg╔Щr siz giri┼Я ist╔Щm╔Щmisinizs╔Щ, bu e-po├зtu laqeyd qoya bil╔Щrsiniz.",
"emails.otpSession.securityPhrase": "Bu e-po├зtun t╔Щhl├╝k╔Щsizlik ifad╔Щsi {{phrase}}-dir. ╞Пg╔Щr bu ifad╔Щ daxil olark╔Щn g├╢st╔Щril╔Щn ifad╔Щ il╔Щ ├╝st-├╝st╔Щ d├╝┼Я├╝rs╔Щ, bu e-po├зta etibar ed╔Щ bil╔Щrsiniz.",
"emails.otpSession.thanks": "Sa─Я olun,",
"emails.otpSession.signature": "{{project}} komandas─▒"
"countries.zw": "Zimbabve"
}
+12 -35
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"╨Ь╨░╤Б╤В╨░╤Ж╤В╨▓╨░ ╨▒╤Л╤Ж╤М ╨╝╤Г╨┤╤А╤Л╨╝ - ╨│╤Н╤В╨░ ╨╝╨░╤Б╤В╨░╤Ж╤В╨▓╨░ ╨▓╨╡╨┤╨░╤Ж╤М, ╨╜╨░ ╤И╤В╨╛ ╨╜╨╡╨╗╤М╨│╨░ ╨╖╨▓╤П╤А╨╜╤Г╤Ж╤М ╤Г╨▓╨░╨│╤Г.\"",
"settings.locale": "be",
"settings.direction": "ltr",
"emails.sender": "╨Ъ╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"emails.sender": "╨Ъ╨░╨╝╨░╨╜╨┤╨░ %s",
"emails.verification.subject": "╨Т╨╡╤А╤Л╤Д╤Ц╨║╨░╤Ж╤Л╤П ╨░╨║╨░╤Ю╨╜╤В╨░",
"emails.verification.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡ {{user}},",
"emails.verification.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡ {{name}}",
"emails.verification.body": "╨Я╨╡╤А╨░╨╣╨┤╨╖╤Ц╤Ж╨╡ ╨┐╨░ ╨│╤Н╤В╨░╨╣ ╤Б╨┐╨░╤Б╤Л╨╗╤Ж╤Л, ╨║╨░╨▒ ╨┐╨░╤Ж╨▓╨╡╤А╨┤╨╖╤Ц╤Ж╤М ╤Б╨▓╨╛╨╣ ╨░╨┤╤А╨░╤Б ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨░╨╣ ╨┐╨╛╤И╤В╤Л",
"emails.verification.footer": "╨Ъ╨░╨╗╤Ц ╨▓╤Л ╨╜╨╡ ╨╖╨░╨┐╤Л╤В╨▓╨░╨╗╤Ц ╨┐╨░╤Ж╨▓╤П╤А╨┤╨╢╤Н╨╜╨╜╨╡ ╨│╤Н╤В╨░╨│╨░ ╨░╨┤╤А╨░╤Б╤Г, ╨┐╤А╨░╤Ц╨│╨╜╨░╤А╤Г╨╣╤Ж╨╡ ╨│╤Н╤В╨░╨╡ ╨┐╨░╨▓╨╡╨┤╨░╨╝╨╗╨╡╨╜╨╜╨╡.",
"emails.verification.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝,",
"emails.verification.buttonText": "╨Я╨░╤Ж╨▓╨╡╤А╨┤╨╖╤Ц╤Ж╤М ╨░╨┤╤А╨░╤Б ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨░╨╣ ╨┐╨╛╤И╤В╤Л",
"emails.verification.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝",
"emails.verification.signature": "╨║╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"emails.magicSession.subject": "╨Ы╨░╨│╤Ц╨╜",
"emails.magicSession.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡,",
"emails.magicSession.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝,",
"emails.magicSession.body": "╨Я╨╡╤А╨░╨╣╨┤╨╖╤Ц╤Ж╨╡ ╨┐╨░ ╤Б╨┐╨░╤Б╤Л╨╗╤Ж╤Л, ╨║╨░╨▒ ╤Г╨▓╨░╨╣╤Б╤Ж╤Ц.",
"emails.magicSession.footer": "╨Ъ╨░╨╗╤Ц ╨▓╤Л ╨╜╨╡ ╨┐╤А╨░╤Б╤Ц╨╗╤Ц ╤Ю╨▓╨░╨╣╤Б╤Ж╤Ц, ╨▓╤Л╨║╨░╤А╤Л╤Б╤В╨╛╤Ю╨▓╨░╤О╤З╤Л ╨│╤Н╤В╤Л ╨░╨┤╤А╨░╤Б ╤Н╨╗╨╡╨║╤В╤А╨╛╨╜╨╜╨░╨╣ ╨┐╨╛╤И╤В╤Л, ╨┐╤А╨░╤Ц╨│╨╜╨░╤А╤Г╨╣╤Ж╨╡ ╨│╤Н╤В╨░╨╡ ╨┐╨░╨▓╨╡╨┤╨░╨╝╨╗╨╡╨╜╨╜╨╡.",
"emails.magicSession.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝",
"emails.magicSession.signature": "╨║╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"emails.recovery.subject": "╨б╨║╤Ц╨┤ ╨┐╨░╤А╨╛╨╗╤П",
"emails.recovery.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡, {{user}},",
"emails.recovery.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡, {{name}}",
"emails.recovery.body": "╨Я╨╡╤А╨░╨╣╨┤╨╖╤Ц╤Ж╨╡ ╨┐╨░ ╨│╤Н╤В╨░╨╣ ╤Б╨┐╨░╤Б╤Л╨╗╤Ж╤Л, ╨║╨░╨▒ ╤Б╨║╤Ц╨╜╤Г╤Ж╤М ╨┐╨░╤А╨╛╨╗╤М ╨┤╨╗╤П ╨┐╤А╨░╨╡╨║╤В╨░ {{project}}.",
"emails.recovery.footer": "╨Ъ╨░╨╗╤Ц ╨▓╤Л ╨╜╨╡ ╨┐╤А╨░╤Б╤Ц╨╗╤Ц ╤Б╨║╤Ц╨╜╤Г╤Ж╤М ╨┐╨░╤А╨╛╨╗╤М, ╨▓╤Л ╨╝╨╛╨╢╨░╤Ж╨╡ ╨┐╤А╨░╤Ц╨│╨╜╨░╤А╨░╨▓╨░╤Ж╤М ╨│╤Н╤В╨░ ╨┐╨░╨▓╨╡╨┤╨░╨╝╨╗╨╡╨╜╨╜╨╡.",
"emails.recovery.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝,",
"emails.recovery.buttonText": "╨Р╨┤╨╜╨░╨▓╤Ц╤Ж╤М ╨┐╨░╤А╨╛╨╗╤М",
"emails.recovery.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝",
"emails.recovery.signature": "╨║╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"emails.invitation.subject": "╨Ч╨░╨┐╤А╨╛╤И╨╡╨╜╨╜╤П ╨┤╨╛ ╨Ъ╨╛╨╝╨░╨╜╨┤╨╕ {{team}} ╤Г {{project}}",
"emails.invitation.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡,",
"emails.invitation.subject": "╨Ч╨░╨┐╤А╨╛╤И╨╡╨╜╨╜╤П ╨┤╨╛ ╨Ъ╨╛╨╝╨░╨╜╨┤╨╕ %s ╤Г %s",
"emails.invitation.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡",
"emails.invitation.body": "╨У╤Н╤В╨░ ╨┐╨░╨▓╨╡╨┤╨░╨╝╨╗╨╡╨╜╨╜╨╡ ╨▒╤Л╨╗╨╛ ╨░╨┤╨┐╤А╨░╤Ю╨╗╨╡╨╜╨░ ╨▓╨░╨╝, ╤В╨░╨╝╤Г ╤И╤В╨╛ {{owner}} ╤Е╨░╤Ж╨╡╤Ю ╨╖╨░╨┐╤А╨░╤Б╤Ц╤Ж╤М ╨▓╨░╤Б ╤Б╤В╨░╤Ж╤М ╤З╨╗╨╡╨╜╨░╨╝ ╨║╨░╨╝╨░╨╜╨┤╤Л {{team}} ╤Г {{project}}.",
"emails.invitation.footer": "╨Ъ╨░╨╗╤Ц ╨▓╨░╨╝ ╨│╤Н╤В╨░ ╨╜╨╡ ╤Ж╤Ц╨║╨░╨▓╨░, ╨▓╤Л ╨╝╨╛╨╢╨░╤Ж╨╡ ╨┐╤А╨░╤Ц╨│╨╜╨░╤А╨░╨▓╨░╤Ж╤М ╨│╤Н╤В╨░╨╡ ╨┐╨░╨▓╨╡╨┤╨░╨╝╨╗╨╡╨╜╨╜╨╡.",
"emails.invitation.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝,",
"emails.invitation.buttonText": "╨Я╤А╤Л╨╜╤П╤Ж╤М ╨╖╨░╨┐╤А╨░╤И╤Н╨╜╨╜╨╡ ╤Ю {{team}}",
"emails.invitation.thanks": "╨Ф╨╖╤П╨║╤Г╨╡╨╝",
"emails.invitation.signature": "╨║╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"locale.country.unknown": "╨Э╨╡╨▓╤П╨┤╨╛╨╝╤Л",
"countries.af": "╨Р╤Д╨│╨░╨╜╤Ц╤Б╤В╨░╨╜",
@@ -101,7 +100,6 @@
"countries.gd": "╨У╤А╤Н╨╜╨░╨┤╨░",
"countries.gt": "╨У╨▓╨░╤В╤Н╨╝╨░╨╗╨░",
"countries.gy": "╨У╨░╤П╨╜╨░",
"countries.hk": "╨У╨╛╨╜╨║╨╛╨╜╨│",
"countries.hn": "╨У╨░╨╜╨┤╤Г╤А╨░╤Б",
"countries.hr": "╨е╨░╤А╨▓╨░╤В╤Л╤П",
"countries.ht": "╨У╨░╤Ц╤Ж╤Ц",
@@ -165,7 +163,6 @@
"countries.nz": "╨Э╨╛╨▓╨░╤П ╨Ч╨╡╨╗╨░╨╜╨┤╤Л╤П",
"countries.om": "╨Р╨╝╨░╨╜",
"countries.pk": "╨Я╨░╨║╤Ц╤Б╤В╨░╨╜",
"countries.ps": "╨Я╨░╨╗╨╡╤Б╤В╨╕╨╜╨░",
"countries.pa": "╨Я╨░╨╜╨░╨╝╨░",
"countries.pe": "╨Я╨╡╤А╤Г",
"countries.ph": "╨д╤Ц╨╗╤Ц╨┐╤Ц╨╜╤Л",
@@ -209,7 +206,6 @@
"countries.tn": "╨в╤Г╨╜╤Ц╤Б",
"countries.tr": "╨в╤Г╤А╤Ж╤Л╤П",
"countries.tv": "╨в╤Г╨▓╨░╨╗╤Г",
"countries.tw": "╨в╨░╨╣╨▓╨░╨╜╤М",
"countries.tz": "╨в╨░╨╜╨╖╨░╨╜╤Ц╤П",
"countries.ug": "╨г╨│╨░╨╜╨┤╨░",
"countries.ua": "╨г╨║╤А╨░╤Ц╨╜╨░",
@@ -232,24 +228,5 @@
"continents.eu": "╨Х╤Ю╤А╨╛╨┐╨░",
"continents.na": "╨Я╨░╤Ю╨╜╨╛╤З╨╜╨░╤П ╨Р╨╝╨╡╤А╤Л╨║╨░",
"continents.oc": "╨Р╨║╤Ц╤П╨╜╤Ц╤П",
"continents.sa": "╨Я╨░╤Ю╨┤╨╜╤С╨▓╨░╤П ╨Р╨╝╨╡╤А╤Л╨║╨░",
"emails.magicSession.optionButton": "╨Э╨░╤Ж╤Ц╤Б╨╜╤Ц╤Ж╨╡ ╨║╨╜╨╛╨┐╨║╤Г ╨╜╤Ц╨╢╤Н╨╣, ╨║╨░╨▒ ╨▒╤П╤Б╨┐╨╡╤З╨╜╨░ ╤Ю╨▓╨░╨╣╤Б╤Ж╤Ц ╤Ю ╤Б╨▓╨╛╨╣ ╤А╨░╤Е╤Г╨╜╨░╨║ {{project}}. ╨п╨╜╨░ ╤Б╨┐╤Л╨╜╤Ц╤Ж╤М ╨┤╨╖╨╡╤П╨╜╨╜╨╡ ╨┐╤А╨░╨╖ 1 ╨│╨░╨┤╨╖╤Ц╨╜╤Г.",
"emails.magicSession.buttonText": "╨г╨▓╨░╨╣╨┤╨╖╤Ц╤Ж╨╡ ╤Ю {{project}}",
"emails.magicSession.optionUrl": "╨Ъ╨░╨╗╤Ц ╤Ю ╨▓╨░╤Б ╨╜╨╡ ╨░╤В╤А╤Л╨╝╨╗╤Ц╨▓╨░╨╡╤Ж╤Ж╨░ ╤Ю╨▓╨░╨╣╤Б╤Ж╤Ц, ╨▓╤Л╨║╨░╤А╤Л╤Б╤В╨╛╤Ю╨▓╨░╤О╤З╤Л ╨║╨╜╨╛╨┐╨║╤Г ╨▓╤Л╤И╤Н╨╣, ╨║╨░╨╗╤Ц ╨╗╨░╤Б╨║╨░, ╨╜╨░╨▓╨╡╨┤╨░╨╣╤Ж╨╡ ╨╜╨░╤Б╤В╤Г╨┐╨╜╤Г╤О ╤Б╨┐╨░╤Б╤Л╨╗╨║╤Г:",
"emails.magicSession.clientInfo": "╨У╤Н╤В╤Л ╤Ю╨▓╨░╤Е╨╛╨┤ ╨▒╤Л╤Ю ╨╖╨░╨┐╤Л╤В╨░╨╜╤Л ╨┐╤А╨░╨╖ {{agentClient}} ╨╜╨░ {{agentDevice}} {{agentOs}}. ╨Ъ╨░╨╗╤Ц ╨▓╤Л ╨╜╨╡ ╨╖╨░╨┐╤Л╤В╨▓╨░╨╗╤Ц ╤Ю╨▓╨░╤Е╨╛╨┤, ╨▓╤Л ╨╝╨╛╨╢╨░╤Ж╨╡ ╨▒╤П╤Б╨┐╨╡╤З╨╜╨░ ╤Ц╨│╨╜╨░╤А╨░╨▓╨░╤Ж╤М ╨│╤Н╤В╤Л ╨╗╤Ц╤Б╤В.",
"emails.magicSession.securityPhrase": "╨д╤А╨░╨╖╨░ ╨▒╤П╤Б╨┐╨╡╨║╤Ц ╨┤╨╗╤П ╨│╤Н╤В╨░╨│╨░ ╨╗╤Ц╤Б╤В╨░ - {{phrase}}. ╨Т╤Л ╨╝╨╛╨╢╨░╤Ж╨╡ ╨┤╨░╨▓╤П╤А╨░╤Ж╤М ╨│╤Н╤В╨░╨╝╤Г ╨╗╤Ц╤Б╤В╤Г, ╨║╨░╨╗╤Ц ╨│╤Н╤В╨░╤П ╤Д╤А╨░╨╖╨░ ╤Б╤Г╨┐╨░╨┤╨░╨╡ ╨╖ ╤Д╤А╨░╨╖╨░╨╣, ╤П╨║╨░╤П ╨▒╤Л╨╗╨░ ╨┐╨░╨║╨░╨╖╨░╨╜╨░ ╨┐╤А╤Л ╤Ю╨▓╨░╤Е╨╛╨┤╨╖╨╡ ╤Ю ╤Б╤Ц╤Б╤В╤Н╨╝╤Г.",
"emails.otpSession.subject": "{{project}} ╨г╨▓╨░╤Е╨╛╨┤",
"emails.otpSession.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡,",
"emails.otpSession.description": "╨г╨▓╤П╨┤╨╖╤Ц╤Ж╨╡ ╨╜╨░╤Б╤В╤Г╨┐╨╜╤Л ╨║╨╛╨┤ ╨┐╨░╤Ж╨▓╨╡╤А╨┤╨╢╨░╨╜╨╜╤П, ╨║╨░╨╗╤Ц ╨▒╤Г╨┤╨╖╨╡╤Ж╨╡ ╨╖╨░╨┐╤Л╤В╨░╨╜╤Л, ╨║╨░╨▒ ╨▒╤П╤Б╨┐╨╡╤З╨╜╨░ ╤Ю╨▓╨░╨╣╤Б╤Ж╤Ц ╤Ю ╨▓╨░╤И ╤Г╨╗╤Ц╨║╨╛╨▓╤Л ╨╖╨░╨┐╤Ц╤Б {{project}}. ╨Б╨╜ ╤Б╤В╤А╨░╤Ж╤Ц╤Ж╤М ╤Б╤Ц╨╗╤Г ╨┐╤А╨░╨╖ 15 ╤Е╨▓╤Ц╨╗╤Ц╨╜.",
"emails.otpSession.clientInfo": "╨У╤Н╤В╤Л ╤Ю╨▓╨░╤Е╨╛╨┤ ╨▒╤Л╤Ю ╨╖╨░╨┐╤Л╤В╨░╨╜╤Л ╨┐╤А╤Л ╨┤╨░╨┐╨░╨╝╨╛╨╖╨╡ {{agentClient}} ╨╜╨░ {{agentDevice}} {{agentOs}}. ╨Ъ╨░╨╗╤Ц ╨▓╤Л ╨╜╨╡ ╨╖╨░╨┐╤Л╤В╨▓╨░╨╗╤Ц ╤Ю╨▓╨░╤Е╨╛╨┤, ╨▓╤Л ╨╝╨╛╨╢╨░╤Ж╨╡ ╨▒╤П╤Б╨┐╨╡╤З╨╜╨░ ╤Ц╨│╨╜╨░╤А╨░╨▓╨░╤Ж╤М ╨│╤Н╤В╤Л ╨╗╤Ц╤Б╤В.",
"emails.otpSession.securityPhrase": "╨д╤А╨░╨╖╨░ ╨▒╤П╤Б╨┐╨╡╨║╤Ц ╨┤╨╗╤П ╨│╤Н╤В╨░╨│╨░ ╨╗╤Ц╤Б╤В╨░ - {{phrase}}. ╨Т╤Л ╨╝╨╛╨╢╨░╤Ж╨╡ ╨┤╨░╨▓╤П╤А╨░╤Ж╤М ╨│╤Н╤В╨░╨╝╤Г ╨╗╤Ц╤Б╤В╤Г, ╨║╨░╨╗╤Ц ╨│╤Н╤В╨░╤П ╤Д╤А╨░╨╖╨░ ╤Б╤Г╨┐╨░╨┤╨░╨╡ ╨╖ ╤Д╤А╨░╨╖╨░╨╣, ╨┐╨░╨║╨░╨╖╨░╨╜╨░╨╣ ╨┐╤А╤Л ╤Ю╨▓╨░╤Е╨╛╨┤╨╖╨╡.",
"emails.otpSession.thanks": "╨Ф╨╖╤П╨║╤Г╨╣,",
"emails.otpSession.signature": "╨║╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"emails.certificate.subject": "╨б╨▓╨╡╨┤╤З╨░╨╜╨╜╨╡ ╨╜╤П╤Ю╨┤╨░╨╗╨░╨╡ ╨┤╨╗╤П {{domain}}",
"emails.certificate.hello": "╨Я╤А╤Л╨▓╤Ц╤В╨░╨╜╨╜╨╡,",
"emails.certificate.body": "╨б╨╡╤А╤В╤Л╤Д╤Ц╨║╨░╤В ╨┤╨╗╤П ╨▓╨░╤И╨░╨│╨░ ╨┤╨░╨╝╨╡╨╜╨░ '{{domain}}' ╨╜╨╡ ╨╝╨╛╨╢╨░ ╨▒╤Л╤Ж╤М ╤Б╤В╨▓╨╛╤А╨░╨╜╤Л. ╨У╤Н╤В╨░ ╤Б╨┐╤А╨╛╨▒╨░ ╨╜╤Г╨╝╨░╤А {{attempt}}, ╤Ц ╨┐╤А╤Л╤З╤Л╨╜╨░╨╣ ╨╜╤П╤Ю╨┤╨░╤З╤Л ╨╖'╤П╤Ю╨╗╤П╨╡╤Ж╤Ж╨░: {{error}}",
"emails.certificate.footer": "╨Т╨░╤И ╨┐╨░╨┐╤П╤А╤Н╨┤╨╜╤Ц ╤Б╨╡╤А╤В╤Л╤Д╤Ц╨║╨░╤В ╨▒╤Г╨┤╨╖╨╡ ╨┤╨╖╨╡╨╣╨╜╤Ц╤З╨░╤Ж╤М 30 ╨┤╨╖╤С╨╜ ╨╖ ╨╝╨╛╨╝╨░╨╜╤В╤Г ╨┐╨╡╤А╤И╨░╨╣ ╨╜╤П╤Ю╨┤╨░╤З╤Л. ╨Ь╤Л ╨▓╤Л╤Б╨╛╨║╨░ ╤А╤Н╨║╨░╨╝╨╡╨╜╨┤╤Г╨╡╨╝ ╤А╨░╤Б╤Б╨╗╨╡╨┤╨░╨▓╨░╤Ж╤М ╨│╤Н╤В╤Г╤О ╤Б╤Ц╤В╤Г╨░╤Ж╤Л╤О, ╤Ц╨╜╨░╨║╤И ╨▓╨░╤И ╨┤╨░╨╝╨╡╨╜ ╨░╨┐╤Л╨╜╨╡╤Ж╤Ж╨░ ╨▒╨╡╨╖ ╨┤╨╖╨╡╨╣╨╜╨░╨│╨░ ╤Б╨╡╤А╤В╤Л╤Д╤Ц╨║╨░╤В╨░ SSL-╨╖╨╗╤Г╤З╤Н╨╜╨╜╤П.",
"emails.certificate.thanks": "╨Ф╨╖╤П╨║╤Г╨╣,",
"emails.certificate.signature": "╨║╨░╨╝╨░╨╜╨┤╨░ {{project}}",
"sms.verification.body": "{{secret}}"
"continents.sa": "╨Я╨░╤Ю╨┤╨╜╤С╨▓╨░╤П ╨Р╨╝╨╡╤А╤Л╨║╨░"
}
+13 -27
View File
@@ -2,28 +2,30 @@
"settings.inspire": "\"╨Ш╨╖╨║╤Г╤Б╤В╨▓╨╛╤В╨╛ ╨┤╨░ ╨▒╤К╨┤╨╡╤И ╨╝╤К╨┤╤К╤А ╨╡ ╨╕╨╖╨║╤Г╤Б╤В╨▓╨╛╤В╨╛ ╨┤╨░ ╨╖╨╜╨░╨╡╤И ╨║╨░╨║╨▓╨╛ ╨┤╨░ ╨┐╤А╨╡╨╜╨╡╨▒╤А╨╡╨│╨╜╨╡╤И.\"",
"settings.locale": "bg",
"settings.direction": "ltr",
"emails.sender": "{{project}} ╨Х╨║╨╕╨┐",
"emails.sender": "%s ╨Х╨║╨╕╨┐",
"emails.verification.subject": "",
"emails.verification.hello": ",",
"emails.verification.hello": "",
"emails.verification.body": "",
"emails.verification.footer": "",
"emails.verification.thanks": ",",
"emails.verification.thanks": "",
"emails.verification.signature": "",
"emails.magicSession.subject": "",
"emails.magicSession.hello": ",",
"emails.magicSession.thanks": ",",
"emails.magicSession.hello": "",
"emails.magicSession.body": "",
"emails.magicSession.footer": "",
"emails.magicSession.thanks": "",
"emails.magicSession.signature": "",
"emails.recovery.subject": "",
"emails.recovery.hello": ",",
"emails.recovery.hello": "",
"emails.recovery.body": "",
"emails.recovery.footer": "",
"emails.recovery.thanks": ",",
"emails.recovery.thanks": "",
"emails.recovery.signature": "",
"emails.invitation.subject": "",
"emails.invitation.hello": ",",
"emails.invitation.hello": "",
"emails.invitation.body": "",
"emails.invitation.footer": "",
"emails.invitation.thanks": ",",
"emails.invitation.thanks": "",
"emails.invitation.signature": "",
"locale.country.unknown": "╨Э╨╡╨╕╨╖╨▓╨╡╤Б╤В╨╜╨╛",
"countries.af": "╨Р╤Д╨│╨░╨╜╨╕╤Б╤В╨░╨╜",
@@ -98,7 +100,6 @@
"countries.gd": "╨У╤А╨╡╨╜╨░╨┤╨░",
"countries.gt": "╨У╨▓╨░╤В╨╡╨╝╨░╨╗╨░",
"countries.gy": "╨У╨▓╨╕╨░╨╜╨░",
"countries.hk": "╨е╨╛╨╜╨│ ╨Ъ╨╛╨╜╨│",
"countries.hn": "╨е╨╛╨╜╨┤╤Г╤А╨░╤Б",
"countries.hr": "╨е╤К╤А╨▓╨░╤В╨╕╤П",
"countries.ht": "╨е╨░╨╕╤В╨╕",
@@ -162,7 +163,6 @@
"countries.nz": "╨Э╨╛╨▓╨░ ╨Ч╨╡╨╗╨░╨╜╨┤╨╕╤П",
"countries.om": "╨Ю╨╝╨░╨╜",
"countries.pk": "╨Я╨░╨║╨╕╤Б╤В╨░╨╜",
"countries.ps": "╨Я╨░╨╗╨╡╤Б╤В╨╕╨╜╨░",
"countries.pa": "╨Я╨░╨╜╨░╨╝╨░",
"countries.pe": "╨Я╨╡╤А╤Г",
"countries.ph": "╨д╨╕╨╗╨╕╨┐╨╕╨╜╨╕",
@@ -206,7 +206,6 @@
"countries.tn": "╨в╤Г╨╜╨╕╤Б",
"countries.tr": "╨в╤Г╤А╤Ж╨╕╤П",
"countries.tv": "╨в╤Г╨▓╨░╨╗╤Г",
"countries.tw": "╨в╨░╨╣╨▓╨░╨╜",
"countries.tz": "╨в╨░╨╜╨╖╨░╨╜╨╕╤П",
"countries.ug": "╨г╨│╨░╨╜╨┤╨░",
"countries.ua": "╨г╨║╤А╨░╨╣╨╜╨░",
@@ -229,18 +228,5 @@
"continents.eu": "╨Х╨▓╤А╨╛╨┐╨░",
"continents.na": "╨б╨╡╨▓╨╡╤А╨╜╨░ ╨Р╨╝╨╡╤А╨╕╨║╨░",
"continents.oc": "╨Ю╨║╨╡╨░╨╜╨╕╤П",
"continents.sa": "╨о╨╢╨╜╨░ ╨Р╨╝╨╡╤А╨╕╨║╨░",
"emails.magicSession.optionButton": "╨Э╨░╤В╨╕╤Б╨╜╨╡╤В╨╡ ╨▒╤Г╤В╨╛╨╜╨░ ╨┐╨╛-╨┤╨╛╨╗╤Г, ╨╖╨░ ╨┤╨░ ╤Б╨╡ ╨▓╨┐╨╕╤И╨╡╤В╨╡ ╤Б╨╕╨│╤Г╤А╨╜╨╛ ╨▓╤К╨▓ ╨▓╨░╤И╨╕╤П {{project}} ╨░╨║╨░╤Г╨╜╤В. ╨в╨╛╨╣ ╤Й╨╡ ╨╕╨╖╤В╨╡╤З╨╡ ╤Б╨╗╨╡╨┤ 1 ╤З╨░╤Б.",
"emails.magicSession.buttonText": "╨Т╨╗╨╡╨╖╤В╨╡ ╨▓ {{project}}",
"emails.magicSession.clientInfo": "╨в╨╛╨╖╨╕ ╨▓╤Е╨╛╨┤ ╨▒╨╡╤И╨╡ ╨╖╨░╤П╨▓╨╡╨╜ ╤З╤А╨╡╨╖ {{agentClient}} ╨╜╨░ {{agentDevice}} {{agentOs}}. ╨Р╨║╨╛ ╨╜╨╡ ╤Б╤В╨╡ ╨┐╨╛╨╕╤Б╨║╨░╨╗╨╕ ╨▓╤Е╨╛╨┤╨░, ╨╝╨╛╨╢╨╡╤В╨╡ ╨▒╨╡╨╖╨╛╨┐╨░╤Б╨╜╨╛ ╨┤╨░ ╨╕╨│╨╜╨╛╤А╨╕╤А╨░╤В╨╡ ╤В╨╛╨╖╨╕ ╨╕╨╝╨╡╨╣╨╗.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "╨д╤А╨░╨╖╨░╤В╨░ ╨╖╨░ ╤Б╨╕╨│╤Г╤А╨╜╨╛╤Б╤В ╨╜╨░ ╤В╨╛╨╖╨╕ ╨╕╨╝╨╡╨╣╨╗ ╨╡ {{phrase}}. ╨Ь╨╛╨╢╨╡╤В╨╡ ╨┤╨░ ╤Б╨╡ ╨┤╨╛╨▓╨╡╤А╨╕╤В╨╡ ╨╜╨░ ╤В╨╛╨╖╨╕ ╨╕╨╝╨╡╨╣╨╗, ╨░╨║╨╛ ╤В╨░╨╖╨╕ ╤Д╤А╨░╨╖╨░ ╤Б╤К╨▓╨┐╨░╨┤╨░ ╤Б ╤Д╤А╨░╨╖╨░╤В╨░, ╨┐╨╛╨║╨░╨╖╨░╨╜╨░ ╨┐╨╛ ╨▓╤А╨╡╨╝╨╡ ╨╜╨░ ╨▓╨┐╨╕╤Б╨▓╨░╨╜╨╡╤В╨╛.",
"emails.magicSession.optionUrl": "╨Р╨║╨╛ ╨╜╨╡ ╨╝╨╛╨╢╨╡╤В╨╡ ╨┤╨░ ╨▓╨╗╨╡╨╖╨╡╤В╨╡ ╤З╤А╨╡╨╖ ╨│╨╛╤А╨╜╨╕╤П ╨▒╤Г╤В╨╛╨╜, ╨╝╨╛╨╗╤П, ╨┐╨╛╤Б╨╡╤В╨╡╤В╨╡ ╤Б╨╗╨╡╨┤╨╜╨╕╤П ╨╗╨╕╨╜╨║:",
"emails.otpSession.subject": "╨Т╤Е╨╛╨┤ ╨▓ {{project}}",
"emails.otpSession.hello": "╨Ч╨┤╤А╨░╨▓╨╡╨╣╤В╨╡,",
"emails.otpSession.description": "╨Т╤К╨▓╨╡╨┤╨╡╤В╨╡ ╤Б╨╗╨╡╨┤╨╜╨╕╤П ╨▓╨╡╤А╨╕╤Д╨╕╨║╨░╤Ж╨╕╨╛╨╜╨╡╨╜ ╨║╨╛╨┤, ╨║╨╛╨│╨░╤В╨╛ ╨▓╨╕ ╨▒╤К╨┤╨╡ ╨┐╨╛╨╕╤Б╨║╨░╨╜╨╛, ╨╖╨░ ╨┤╨░ ╤Б╨╡ ╨▓╨┐╨╕╤И╨╡╤В╨╡ ╤Б╨╕╨│╤Г╤А╨╜╨╛ ╨▓ ╤Б╨▓╨╛╤П╤В╨░ {{project}} ╤Б╨╝╨╡╤В╨║╨░. ╨й╨╡ ╨╕╨╖╤В╨╡╤З╨╡ ╤Б╨╗╨╡╨┤ 15 ╨╝╨╕╨╜╤Г╤В╨╕.",
"emails.otpSession.clientInfo": "╨в╨╛╨╖╨╕ ╨▓╤Е╨╛╨┤ ╨▒╨╡╤И╨╡ ╨╖╨░╤П╨▓╨╡╨╜ ╤З╤А╨╡╨╖ {{agentClient}} ╨╜╨░ {{agentDevice}} {{agentOs}}. ╨Р╨║╨╛ ╨╜╨╡ ╤Б╤В╨╡ ╨╖╨░╤П╨▓╨╕╨╗╨╕ ╨▓╤Е╨╛╨┤╨░, ╨╝╨╛╨╢╨╡╤В╨╡ ╤Б╨┐╨╛╨║╨╛╨╣╨╜╨╛ ╨┤╨░ ╨┐╤А╨╡╨╜╨╡╨▒╤А╨╡╨│╨╜╨╡╤В╨╡ ╤В╨╛╨╖╨╕ ╨╕╨╝╨╡╨╣╨╗.",
"emails.otpSession.securityPhrase": "╨д╤А╨░╨╖╨░╤В╨░ ╨╖╨░ ╤Б╨╕╨│╤Г╤А╨╜╨╛╤Б╤В ╨╖╨░ ╤В╨╛╨╖╨╕ ╨╕╨╝╨╡╨╣╨╗ ╨╡ {{phrase}}. ╨Ь╨╛╨╢╨╡╤В╨╡ ╨┤╨░ ╤Б╨╡ ╨┤╨╛╨▓╨╡╤А╨╕╤В╨╡ ╨╜╨░ ╤В╨╛╨╖╨╕ ╨╕╨╝╨╡╨╣╨╗, ╨░╨║╨╛ ╤В╨░╨╖╨╕ ╤Д╤А╨░╨╖╨░ ╤Б╤К╨▓╨┐╨░╨┤╨░ ╤Б ╤Д╤А╨░╨╖╨░╤В╨░, ╨┐╨╛╨║╨░╨╖╨░╨╜╨░ ╨┐╨╛ ╨▓╤А╨╡╨╝╨╡ ╨╜╨░ ╨▓╨┐╨╕╤Б╨▓╨░╨╜╨╡╤В╨╛.",
"emails.otpSession.thanks": "╨С╨╗╨░╨│╨╛╨┤╨░╤А╤П,",
"emails.otpSession.signature": "╨╡╨║╨╕╨┐ ╨╜╨░ {{project}}"
}
"continents.sa": "╨о╨╢╨╜╨░ ╨Р╨╝╨╡╤А╨╕╨║╨░"
}
+14 -37
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдЗрдд рдХ рдХрд▓рд╛ рдИ рдЬрд╛рдиреЗ рдХ рдХрд▓рд╛ рдЕрдЫрд┐ рдЬреЗ рдХреА рдЕрдирджреЗрдЦрд╛ рдХрд░реНрдорд╛ рдЪрд╛рд╣рд┐| \"",
"settings.locale": "bh",
"settings.direction": "ltr",
"emails.sender": "{{project}} рдЯреАрдо",
"emails.sender": "%s рдЯреАрдо",
"emails.verification.subject": "рдЦрд╛рддрд╛ рдкреНрд░рдорд╛рдгрд┐рдХрд░рдг",
"emails.verification.hello": "рдирдорд╕реНрддреЗ {{user}},",
"emails.verification.hello": "рдирдорд╕реНрддреЗ {{name}}",
"emails.verification.body": "рдИрдореЗрд▓ рдкреНрд░рдорд╛рдгрд┐рдХрд░рдг рдХрд░реЗ рдХ рд▓реЗрд▓ рджрд┐рд╣рд▓ рдЧрдЗрд▓ рд▓рд┐рдВрдХ рдлреЙрд▓реЛ рдХрд░реЗрдВ|",
"emails.verification.footer": "рдЕрдЧрд░ рдИ рдкрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗ рдХреЗ рд▓рд┐рдП рдирд╛ рдХрд╣рд╛рд▓реЗ, рддреЛ рдЖрдк рдИ рд╕рдВрджреЗрд╢ рдХ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрдд рдЕрдЫрд┐ред",
"emails.verification.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.verification.buttonText": "рдИрдореЗрд▓ рдкрддрд╛ рдХреЗ рдкреБрд╖реНрдЯрд┐ рдХрд░реАрдВ",
"emails.verification.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.verification.signature": "{{project}} рдЯреАрдо",
"emails.magicSession.subject": "рд▓реЙрдЧ рдЗрди рдХрд░реАрдВ|",
"emails.magicSession.hello": "рдкреНрд░рдгрд╛рдо,",
"emails.magicSession.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.magicSession.hello": "рдкреНрд░рдгрд╛рдо",
"emails.magicSession.body": "рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ рд▓реЗрд▓ рджрд┐рд╣рд▓ рдЧрдЗрд▓ рд▓рд┐рдВрдХ рдлреЙрд▓реЛ рдХрд░реЗрдВ|",
"emails.magicSession.footer": "рдЕрдЧрд░ рд▓реЙрдЧ рдЗрди рдХрд░реЗ рдХреЗ рд▓рд┐рдП рдирд╛ рдХрд╣рд╛рд▓реЗ, рддреЛ рдЖрдк рдИ рд╕рдВрджреЗрд╢ рдХ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрдд рдЕрдЫрд┐ред",
"emails.magicSession.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.magicSession.signature": "{{project}} рдЯреАрдо",
"emails.recovery.subject": "рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓ рдХ рд▓реЗрд▓|",
"emails.recovery.hello": "рдкреНрд░рдгрд╛рдо {{user}},",
"emails.recovery.hello": "рдкреНрд░рдгрд╛рдо {{name}}",
"emails.recovery.body": "рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓ рдХ рд▓реЗрд▓ рджрд┐рд╣рд▓ рдЧрдЗрд▓ рд▓рд┐рдВрдХ рдлреЙрд▓реЛ рдХрд░реЗрдВ|",
"emails.recovery.footer": "рдЕрдЧрд░ рдкрд╛рд╕рд╡рд░реНрдб рдмрджрд▓ рдХ рд▓реЗрд▓ рдирд╛ рдХрд╣рд╛рд▓реЗ, рддреЛ рдЖрдк рдИ рд╕рдВрджреЗрд╢ рдХ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрдд рдЕрдЫрд┐ред",
"emails.recovery.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.recovery.buttonText": "рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХрд░реАрдВ",
"emails.recovery.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.recovery.signature": "{{project}} рдЯреАрдо",
"emails.invitation.subject": "{{team}} рдЯреАрдо рдХ {{project}} рдкреЗ рдиреНрдпреЛрддрд╛ рджреЗрд╡реЗ рдХ рд▓реЗрд▓|",
"emails.invitation.hello": "рдкреНрд░рдгрд╛рдо,",
"emails.invitation.subject": "%s рдЯреАрдо рдХ %s рдкреЗ рдиреНрдпреЛрддрд╛ рджреЗрд╡реЗ рдХ рд▓реЗрд▓|",
"emails.invitation.hello": "рдкреНрд░рдгрд╛рдо",
"emails.invitation.body": "рдИ рдореЗрд▓ рдЖрдкрдХреЗ рдПрд╣реА рд▓реЗрд▓ рднреЗрдЬрд▓ рдЧрдИрд▓ рд░рд╣рд▓ рдХрд╛рд╣реЗ рдХ {{owner}} рдЖрдкрдХреЗ {{project}} рдХ {{team}} рдЯреАрдо рдХрд╛ рд╕рджрд╕реНрдп рдмрдирд╛рд╡реЗ рдЪрд╛рд╣рд┐рдд рд░рд╣реЗ|",
"emails.invitation.footer": "рдЕрдЧрд░ рдЖрд╡реЗ рдХ рдЗрдЪреНрдЫрд╛ рдирд╛ рд╣реЛрд╡рдд, рддреЛ рдЖрдк рдИ рд╕рдВрджреЗрд╢ рдХ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрдд рдЕрдЫрд┐ред",
"emails.invitation.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.invitation.buttonText": "{{team}} рдореЗрдВ рдиреЗрд╡рддрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реАрдВ",
"emails.invitation.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.invitation.signature": "{{project}} рдЯреАрдо",
"locale.country.unknown": "рдЕрдирдЬрд╛рди",
"countries.af": "рдЕрдлрд╝рдЧрд╝рд╛рдирд┐рд╕реНрддрд╛рди",
@@ -101,7 +100,6 @@
"countries.gd": "рдЧреНрд░реЗрдирд╛рдбрд╛",
"countries.gt": "рдЧреНрд╡рд╛рдЯреЗрдорд╛рд▓рд╛",
"countries.gy": "рдЧрдпрд╛рдирд╛",
"countries.hk": "рд╣рд╛рдВрдЧрдХрд╛рдВрдЧ",
"countries.hn": "рд╣реЛрдВрдбреБрд░рд╕",
"countries.hr": "рдХреНрд░реЛрдПрд╢рд┐рдпрд╛",
"countries.ht": "рд╣реИрддреА",
@@ -165,7 +163,6 @@
"countries.nz": "рдиреНрдпреВрдЬреАрд▓реИрдВрдб",
"countries.om": "рдУрдорд╛рди",
"countries.pk": "рдкрд╛рдХрд┐рд╕реНрддрд╛рди",
"countries.ps": "рдкреИрд▓рд┐рд╕реНрдЯрд╛рдЗрди",
"countries.pa": "рдкрдирд╛рдорд╛",
"countries.pe": "рдкреЗрд░реВ",
"countries.ph": "рдлрд┐рд▓реАрдкреАрдВрд╕",
@@ -209,7 +206,6 @@
"countries.tn": "рдЯреНрдпреВрдиреАрд╢рд┐рдпрд╛",
"countries.tr": "рддреБрд░реНрдХреА",
"countries.tv": "рддреБрд╡рд╛рд▓реВ",
"countries.tw": "рддрд╛рдЗрд╡рд╛рди",
"countries.tz": "рддрдВрдЬрд╛рдирд┐рдпрд╛",
"countries.ug": "рдпреБрдЧрд╛рдВрдбрд╛",
"countries.ua": "рдпреВрдХреНрд░реЗрди",
@@ -232,24 +228,5 @@
"continents.eu": "рдпреВрд░реЛрдк",
"continents.na": "рдЙрддреНрддрд░реА рдЕрдореЗрд░рд┐рдХрд╛",
"continents.oc": "рдУрд╢рд┐рдирд┐рдпрд╛",
"continents.sa": "рджрдХреНрд╖рд┐рдг рдЕрдореЗрд░рд┐рдХрд╛",
"emails.magicSession.optionButton": "рдиреАрдЪрд╛ рджреЗрд▓ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реАрдВ рдЕрдкрдирд╛ {{project}} рдЦрд╛рддрд╛ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗ рдЦрд╛рддрд┐рд░ред рдИ 1 рдШрдВрдЯрд╛ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдИред",
"emails.magicSession.buttonText": "{{project}} рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реАрдВ",
"emails.magicSession.optionUrl": "рдЕрдЧрд░ рд░рдЙрдЖ рдЙрдкрд░рдХрд╛ рдмрдЯрди рд╕реЗ рд╕рд╛рдЗрди рдЗрди рдирд╛ рдХрд░ рдкрд╛рдИрдВ рддs, рдХреГрдкрдпрд╛ рдирд┐рдЪреЗ рджрд┐рд╣рд▓ рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдИ:",
"emails.magicSession.clientInfo": "рдИ рд╕рд╛рдЗрди рдЗрди рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧреЗрд▓ {{agentClient}} рдкрд░ {{agentDevice}} {{agentOs}} рдкрд░. рдпрджрд┐ рдЕрд╣рд╛рдБ рдПрд╣рд┐ рд╕рд╛рдЗрди рдЗрди рдХреЗ рдЕрдиреБрд░реЛрдз рдиреИ рдХрдЗрдиреА рд╣реЛрдЦреА рддs рдЕрд╣рд╛рдБ рдИ рдИрдореЗрд▓ рдХреЗ рдЕрдирджреЗрдЦрд╛ рдХ рд╕рдХрд╜ рдЫреА.",
"emails.magicSession.securityPhrase": "рдПрд╣ рдИрдореЗрд▓ рдЦрд╛рддрд┐рд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рдХреНрдп {{phrase}} рд╣рд╜ред рдИ рдИрдореЗрд▓ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░реАрдВ рдЬрджрд┐ рдИ рд╡рд╛рдХреНрдп рд╕рд╛рдЗрди рдЗрди рдХрд░рдд рд╕рдордп рджреЗрдЦрд╛рд╡рд▓ рд╡рд╛рдХреНрдп рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реЛред",
"emails.otpSession.subject": "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд▓реЙрдЧрд┐рди",
"emails.otpSession.hello": "рдирдорд╕реНрддреЗ,",
"emails.otpSession.description": "рдЬрдм рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдирд╛ {{project}} рдЦрд╛рддрд╛ рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗ рдЦрд╛рддрд┐рд░ рдХрд╣рд▓ рдЬрд╛рдП рддрд╜ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рджрд░реНрдЬ рдХрд░реАрдВред рдИ 15 рдорд┐рдирдЯ рдореЗрдВ рдЦрддреНрдо рд╣реЛ рдЬрдИред",
"emails.otpSession.clientInfo": "рдПрд╣ рд╕рд╛рдЗрди рдЗрди рдХреЗ рдЕрдиреБрд░реЛрдз {{agentClient}} рдкрд░ {{agentDevice}} {{agentOs}} рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рд┐ рдХрд╜ рдХрдЗрд▓ рдЧрдЗрд▓ рдмрд╛ред рдпрджрд┐ рддреВрдБ рдПрд╣ рд╕рд╛рдЗрди рдЗрди рдХреЗ рдЕрдиреБрд░реЛрдз рдирд╛ рдХрдЗрд▓реЗ рд░рд╣реАрдВ, рдд рддреВрдБ рдПрд╣ рдИрдореЗрд▓ рдХреЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рд╕рдХреЗрд▓рд╛ред",
"emails.otpSession.securityPhrase": "рдПрд╣реА рдИрдореЗрд▓ рдЦрд╛рддрд┐рд░ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рдХреНрдп {{phrase}} рд╣рд╜ред рдЕрдЧрд░ рдИ рд╡рд╛рдХреНрдп рд╕рд╛рдЗрди рдЗрди рдХрдЗрд▓рд╛ рдХреЗ рд╕рдордп рджреЗрдЦрд╛рд╡рд▓ рдЧреЗрд▓ рд╡рд╛рдХреНрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛, рдд рдПрд╣ рдИрдореЗрд▓ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХреИрдд рдЫреАред",
"emails.otpSession.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.otpSession.signature": "{{project}} рдЯреАрдо",
"emails.certificate.subject": "{{domain}} рд▓реЗрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдЕрд╕рдлрд▓рддрд╛",
"emails.certificate.hello": "рдирдорд╕реНрддреЗ,",
"emails.certificate.body": "рдЖрдкрдХреЗ рдбреЛрдореЗрди '{{domain}}' рдХреЗ рд▓рд┐рдП рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрд╛ред рдИ рдкреНрд░рдпрд╛рд╕ рд╕рдВрдЦреНрдпрд╛ {{attempt}} рд╣реИ, рдФрд░ рдИ рдЕрд╕рдлрд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рд░рд╣реЗ: {{error}}",
"emails.certificate.footer": "рддреЛрд╣рд╛рд░ рдкрд┐рдЫрд▓рдХрд╛ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкрд╣рд┐рд▓ рдЕрд╕рдлрд▓рддрд╛ рд╕реЗ 30 рджрд┐рди рдзрд░реА рдорд╛рдиреНрдп рд╣реЛрдИрддред рд╣рдо рдмрд╣реБрдд рдЬреЛрд░ рджреЗрдХреЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛рдиреА рдХрд┐ рдПрд╣ рдорд╛рдорд▓рд╛ рдХреЗ рдЬрд╛рдВрдЪ рдХрд░реАрдВ, рдирд╣реАрдВ рдд рддреЛрд╣рд╛рд░ рдбреЛрдореЗрди рдмрд┐рдирд╛ рдХреЛрдиреЛ рдорд╛рдиреНрдп SSL рд╕рдВрд╡рд╛рдж рдХреЗ рд░рд╣рд┐ рдЬрд╛рдИрддред",
"emails.certificate.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.certificate.signature": "{{project}} рдЯреАрдо",
"sms.verification.body": "{{secret}}"
}
"continents.sa": "рджрдХреНрд╖рд┐рдг рдЕрдореЗрд░рд┐рдХрд╛"
}
+13 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"ржЬрзНржЮрж╛ржирзА рж╣ржУржпрж╝рж╛рж░ рж╢рж┐рж▓рзНржк рж╣рж▓рзЛ ржХрзЛржи ржмрж┐рж╖ржпрж╝ржЯрж┐ржХрзЗ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рж╛ ржЙржЪрж┐ржд рждрж╛ ржЬрж╛ржирж╛рж░ рж╢рж┐рж▓рзНржк\"",
"settings.locale": "bn",
"settings.direction": "ltr",
"emails.sender": "{{project}} ржЯрзАржо",
"emails.sender": "%s ржЯрзАржо",
"emails.verification.subject": "ржмрж┐рж╖ржпрж╝",
"emails.verification.hello": "ржиржорж╕рзНржХрж╛рж░ {{user}},",
"emails.verification.hello": "ржиржорж╕рзНржХрж╛рж░ {{name}}",
"emails.verification.body": "ржПржЗ рж▓рж┐ржЩрзНржХрзЗрж░ ржорж╛ржзрзНржпржорзЗ ржЗржорзЗржЗрж▓ ржпрж╛ржЪрж╛ржЗ ржХрж░рзБржиред",
"emails.verification.footer": "ржЖржкржирж┐ ржпржжрж┐ ржПржЗ ржарж┐ржХрж╛ржирж╛ ржпрж╛ржЪрж╛ржЗ ржХрж░рждрзЗ ржирж╛ ржмрж▓рзЗржи, рждрж╛рж╣рж▓рзЗ ржЖржкржирж┐ ржПржЗ ржмрж╛рж░рзНрждрж╛ржЯрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.verification.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.verification.buttonText": "ржЗржорзЗржЗрж▓ ржарж┐ржХрж╛ржирж╛ ржирж┐рж╢рзНржЪрж┐ржд ржХрж░рзБржи",
"emails.verification.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.verification.signature": "{{project}} ржЯрзАржо",
"emails.magicSession.subject": "рж▓ржЧ ржЗржи",
"emails.magicSession.hello": "ржиржорж╕рзНржХрж╛рж░,",
"emails.magicSession.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.magicSession.hello": "ржиржорж╕рзНржХрж╛рж░",
"emails.magicSession.body": "ржПржЗ рж▓рж┐ржЩрзНржХрзЗрж░ ржорж╛ржзрзНржпржорзЗ рж▓ржЧ ржЗржи ржХрж░рзБржиред",
"emails.magicSession.footer": "ржЖржкржирж┐ ржпржжрж┐ ржПржЗ ржЗржорзЗрж▓ржЯрж┐ ржмрзНржпржмрж╣рж╛рж░ ржХрж░рзЗ рж▓ржЧржЗржи ржХрж░рждрзЗ ржирж╛ ржмрж▓рзЗржи, рждрж╛рж╣рж▓рзЗ ржЖржкржирж┐ ржПржЗ ржмрж╛рж░рзНрждрж╛ржЯрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.magicSession.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.magicSession.signature": "{{project}} ржЯрзАржо",
"emails.recovery.subject": "ржкрж╛рж╕ржУржпрж╝рж╛рж░рзНржб рж░рж┐рж╕рзЗржЯ",
"emails.recovery.hello": "ржиржорж╕рзНржХрж╛рж░ {{user}},",
"emails.recovery.hello": "ржиржорж╕рзНржХрж╛рж░ {{name}}",
"emails.recovery.body": "ржПржЗ рж▓рж┐ржЩрзНржХрзЗрж░ ржорж╛ржзрзНржпржорзЗ ржЖржкржирж╛рж░ {{project}} ржкрж╛рж╕ржУржпрж╝рж╛рж░рзНржб ржкрзБржирж░рж╛ржпрж╝ рж╕рзЗржЯ ржХрж░рзБржиред",
"emails.recovery.footer": "ржЖржкржирж┐ ржпржжрж┐ ржЖржкржирж╛рж░ ржкрж╛рж╕ржУржпрж╝рж╛рж░рзНржб ржкрзБржирж░рж╛ржпрж╝ рж╕рзЗржЯ ржХрж░рждрзЗ ржирж╛ ржмрж▓рзЗржи, рждрж╛рж╣рж▓рзЗ ржЖржкржирж┐ ржПржЗ ржмрж╛рж░рзНрждрж╛ржЯрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.recovery.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.recovery.buttonText": "ржкрж╛рж╕ржУржпрж╝рж╛рж░рзНржб рж░рж┐рж╕рзЗржЯ ржХрж░рзБржи",
"emails.recovery.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.recovery.signature": "{{project}} ржЯрзАржо",
"emails.invitation.subject": "{{team}} ржЯрж┐ржоржХрзЗ {{project}} рждрзЗ ржЖржоржирзНрждрзНрж░ржг ржЬрж╛ржирж╛ржи",
"emails.invitation.hello": "ржиржорж╕рзНржХрж╛рж░,",
"emails.invitation.subject": "%s ржЯрж┐ржоржХрзЗ %s рждрзЗ ржЖржоржирзНрждрзНрж░ржг ржЬрж╛ржирж╛ржи",
"emails.invitation.hello": "ржиржорж╕рзНржХрж╛рж░",
"emails.invitation.body": "ржПржЗ ржорзЗржЗрж▓ржЯрж┐ ржЖржкржирж╛ржХрзЗ ржкрж╛ржарж╛ржирзЛ рж╣ржпрж╝рзЗржЫрзЗ ржХрж╛рж░ржг {{owner}} ржЖржкржирж╛ржХрзЗ {{project}} ржПрж░ рж╕рж╛ржерзЗ ржпрзБржХрзНржд {{team}} ржЯрж┐ржорзЗрж░ рж╕ржжрж╕рзНржп рж╣ржУржпрж╝рж╛рж░ ржЬржирзНржп ржЖржоржирзНрждрзНрж░ржг ржЬрж╛ржирж╛рждрзЗ ржЪрзЗржпрж╝рзЗржЫрж┐рж▓рзЗржиред",
"emails.invitation.footer": "ржпржжрж┐ ржПржЯрж┐ ржЖржкржирж╛рж░ ржЬржирзНржп ржкрзНрж░ржпрж╝рзЛржЬржирзАржпрж╝ ржирж╛ рж╣ржпрж╝, ржЖржкржирж┐ ржПржЗ ржмрж╛рж░рзНрждрж╛ржЯрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.invitation.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.invitation.buttonText": "{{team}}-ржПрж░ ржЖржоржирзНрждрзНрж░ржг ржЧрзНрж░рж╣ржг ржХрж░рзБржи",
"emails.invitation.thanks": "ржзржирзНржпржмрж╛ржж",
"emails.invitation.signature": "{{project}} ржЯрзАржо",
"locale.country.unknown": "ржЕржЬрж╛ржирж╛",
"countries.af": "ржЖржлржЧрж╛ржирж┐рж╕рзНрждрж╛ржи",
@@ -101,7 +100,6 @@
"countries.gd": "ржЧрзНрж░рзЗржирж╛ржбрж╛",
"countries.gt": "ржЧрзБржпрж╝рж╛рждрзЗржорж╛рж▓рж╛",
"countries.gy": "ржЧрж╛ржпрж╝рж╛ржирж╛",
"countries.hk": "рж╣ржВржХржВ",
"countries.hn": "рж╣ржирзНржбрзБрж░рж╛рж╕",
"countries.hr": "ржХрзНрж░рзЛржпрж╝рзЗрж╢рж┐ржпрж╝рж╛",
"countries.ht": "рж╣рж╛ржЗрждрж┐",
@@ -165,7 +163,6 @@
"countries.nz": "ржирж┐ржЙржЬрж┐рж▓рзНржпрж╛ржирзНржб",
"countries.om": "ржУржорж╛ржи",
"countries.pk": "ржкрж╛ржХрж┐рж╕рзНрждрж╛ржи",
"countries.ps": "ржкрзНржпрж╛рж▓рзЗрж╕рзНржЯрж╛ржЗржи",
"countries.pa": "ржкрж╛ржирж╛ржорж╛",
"countries.pe": "ржкрзЗрж░рзБ",
"countries.ph": "ржлрж┐рж▓рж┐ржкрж╛ржЗржи",
@@ -209,7 +206,6 @@
"countries.tn": "рждрж┐ржЙржирж┐рж╕рж┐ржпрж╝рж╛",
"countries.tr": "рждрзБрж░рж╕рзНржХ",
"countries.tv": "ржЯрзБржнрж╛рж▓рзБ",
"countries.tw": "рждрж╛ржЗржУржпрж╝рж╛ржи",
"countries.tz": "рждрж╛ржиржЬрж╛ржирж┐ржпрж╝рж╛",
"countries.ug": "ржЙржЧрж╛ржирзНржбрж╛",
"countries.ua": "ржЗржЙржХрзНрж░рзЗржи",
@@ -232,18 +228,5 @@
"continents.eu": "ржЗржЙрж░рзЛржк",
"continents.na": "ржЙрждрзНрждрж░ ржЖржорзЗрж░рж┐ржХрж╛",
"continents.oc": "ржУрж╢рзЗржирж┐рзЯрж╛",
"continents.sa": "ржжржХрзНрж╖рж┐ржг ржЖржорзЗрж░рж┐ржХрж╛",
"emails.magicSession.optionButton": "ржирзАржЪрзЗрж░ ржмрзЛрждрж╛ржорзЗ ржХрзНрж▓рж┐ржХ ржХрж░рзБржи ржЖржкржирж╛рж░ {{project}} ржЕрзНржпрж╛ржХрж╛ржЙржирзНржЯрзЗ ржирж┐рж░рж╛ржкржжрзЗ рж╕рж╛ржЗржи ржЗржи ржХрж░рждрзЗред ржПржЯрж┐ рзз ржШржирзНржЯрж╛ ржкрж░рзЗ ржорзЗрзЯрж╛ржж ржЙрждрзНрждрзАрж░рзНржг рж╣ржмрзЗред",
"emails.magicSession.buttonText": "{{project}}-ржП рж╕рж╛ржЗржи ржЗржи ржХрж░рзБржи",
"emails.magicSession.clientInfo": "ржПржЗ рж╕рж╛ржЗржи ржЗржиржЯрж┐ {{agentClient}} ржмрзНржпржмрж╣рж╛рж░ ржХрж░рзЗ {{agentDevice}} {{agentOs}}-ржП ржЕржирзБрж░рзЛржз ржХрж░рж╛ рж╣ржпрж╝рзЗржЫрж┐рж▓ред ржпржжрж┐ ржЖржкржирж┐ рж╕рж╛ржЗржи ржЗржирзЗрж░ ржЕржирзБрж░рзЛржз ржХрж░рзЗржиржирж┐, ржЖржкржирж┐ ржирж┐рж░рж╛ржкржжрзЗ ржПржЗ ржЗржорзЗржЗрж▓ржЯрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "ржПржЗ ржЗржорзЗрж▓рзЗрж░ ржЬржирзНржп ржирж┐рж░рж╛ржкрждрзНрждрж╛ ржмрж╛ржХрзНржпржЯрж┐ рж╣рж▓ {{phrase}}ред рж╕рж╛ржЗржи-ржЗржирзЗрж░ рж╕ржоржпрж╝ ржжрзЗржЦрж╛ржирзЛ ржмрж╛ржХрзНржпржЯрж┐рж░ рж╕рж╛ржерзЗ ржПржЗ ржмрж╛ржХрзНржпржЯрж┐ ржорж┐рж▓рзЗ ржЧрзЗрж▓рзЗ ржЖржкржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ржХрзЗ ржмрж┐рж╢рзНржмрж╛рж╕ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.magicSession.optionUrl": "ржЙржкрж░рзЗрж░ ржмрзЛрждрж╛ржоржЯрж┐ ржмрзНржпржмрж╣рж╛рж░ ржХрж░рзЗ ржЖржкржирж┐ ржпржжрж┐ рж╕рж╛ржЗржи ржЗржи ржХрж░рждрзЗ ржЕржХрзНрж╖ржо рж╣ржи, ржЕржирзБржЧрзНрж░рж╣ ржХрж░рзЗ ржирж┐ржорзНржирж▓рж┐ржЦрж┐ржд рж▓рж┐ржЩрзНржХржЯрж┐ ржжрзЗржЦрзБржи:",
"emails.otpSession.subject": "{{project}} рж▓ржЧржЗржи",
"emails.otpSession.hello": "ржиржорж╕рзНржХрж╛рж░,",
"emails.otpSession.description": "ржирж┐рж░рж╛ржкржжрзЗ ржЖржкржирж╛рж░ {{project}} ржЕрзНржпрж╛ржХрж╛ржЙржирзНржЯрзЗ рж╕рж╛ржЗржи ржЗржи ржХрж░рж╛рж░ ржЬржирзНржп ржпржЦржи ржмрж▓рж╛ рж╣ржмрзЗ, рждржЦржи ржирж┐ржорзНржирж▓рж┐ржЦрж┐ржд ржпрж╛ржЪрж╛ржЗржХрж░ржг ржХрзЛржбржЯрж┐ ржкрзНрж░ржмрзЗрж╢ ржХрж░рж╛ржиред ржПржЯрж┐ рззрзл ржорж┐ржирж┐ржЯрзЗрж░ ржоржзрзНржпрзЗ ржорзЗрзЯрж╛ржжрзЛрждрзНрждрзАрж░рзНржг рж╣рзЯрзЗ ржпрж╛ржмрзЗред",
"emails.otpSession.clientInfo": "ржПржЗ рж╕рж╛ржЗржи ржЗржиржЯрж┐ {{agentClient}} ржмрзНржпржмрж╣рж╛рж░ ржХрж░рзЗ {{agentDevice}} {{agentOs}}-ржП ржЕржирзБрж░рзЛржз ржХрж░рж╛ рж╣рзЯрзЗржЫрзЗред ржЖржкржирж┐ ржпржжрж┐ рж╕рж╛ржЗржи ржЗржирзЗрж░ ржЕржирзБрж░рзЛржз ржирж╛ ржХрж░рзЗ ржерж╛ржХрзЗржи, ржЖржкржирж┐ ржирж┐рж░рж╛ржкржжрзЗ ржПржЗ ржЗржорзЗрж▓ржЯрж┐ ржЙржкрзЗржХрзНрж╖рж╛ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.otpSession.securityPhrase": "ржПржЗ ржЗржорзЗржЗрж▓рзЗрж░ ржЬржирзНржп рж╕рзБрж░ржХрзНрж╖рж╛ ржмрж╛ржХрзНржп рж╣рж▓рзЛ {{phrase}}ред ржпржжрж┐ ржПржЗ ржмрж╛ржХрзНржпржЯрж┐ рж╕рж╛ржЗржи ржЗржирзЗрж░ рж╕ржорзЯ ржжрзЗржЦрж╛ржирзЛ ржмрж╛ржХрзНржпрзЗрж░ рж╕рж╛ржерзЗ ржорзЗрж▓рзЗ, рждрж╛рж╣рж▓рзЗ ржЖржкржирж┐ ржПржЗ ржЗржорзЗржЗрж▓ржЯрж┐ржХрзЗ ржмрж┐рж╢рзНржмрж╛рж╕ ржХрж░рждрзЗ ржкрж╛рж░рзЗржиред",
"emails.otpSession.thanks": "ржзржирзНржпржмрж╛ржж,",
"emails.otpSession.signature": "{{project}} ржжрж▓"
"continents.sa": "ржжржХрзНрж╖рж┐ржг ржЖржорзЗрж░рж┐ржХрж╛"
}
+13 -27
View File
@@ -2,28 +2,30 @@
"settings.inspire": "\"Umjetnost mudrosti je umjetnost znanja o tome ┼бta zanemariti.\"",
"settings.locale": "bs",
"settings.direction": "ltr",
"emails.sender": "{{project}} Tim",
"emails.sender": "%s Tim",
"emails.verification.subject": "",
"emails.verification.hello": ",",
"emails.verification.hello": "",
"emails.verification.body": "",
"emails.verification.footer": "",
"emails.verification.thanks": ",",
"emails.verification.thanks": "",
"emails.verification.signature": "",
"emails.magicSession.subject": "",
"emails.magicSession.hello": ",",
"emails.magicSession.thanks": ",",
"emails.magicSession.hello": "",
"emails.magicSession.body": "",
"emails.magicSession.footer": "",
"emails.magicSession.thanks": "",
"emails.magicSession.signature": "",
"emails.recovery.subject": "",
"emails.recovery.hello": ",",
"emails.recovery.hello": "",
"emails.recovery.body": "",
"emails.recovery.footer": "",
"emails.recovery.thanks": ",",
"emails.recovery.thanks": "",
"emails.recovery.signature": "",
"emails.invitation.subject": "",
"emails.invitation.hello": ",",
"emails.invitation.hello": "",
"emails.invitation.body": "",
"emails.invitation.footer": "",
"emails.invitation.thanks": ",",
"emails.invitation.thanks": "",
"emails.invitation.signature": "",
"locale.country.unknown": "Nepoznat",
"countries.af": "Afganistan",
@@ -98,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Gvajana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Hrvatska",
"countries.ht": "Haiti",
@@ -162,7 +163,6 @@
"countries.nz": "Novi Zeland",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestina",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filipini",
@@ -206,7 +206,6 @@
"countries.tn": "Tunis",
"countries.tr": "Turska",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukrajina",
@@ -229,18 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Sjeverna Amerika",
"continents.oc": "Okeanija",
"continents.sa": "Ju┼╛na Amerika",
"emails.magicSession.optionButton": "Kliknite na dugme ispod kako biste se sigurno prijavili na svoj {{project}} ra─Нun. Istek ─Зe se dogoditi za 1 sat.",
"emails.magicSession.buttonText": "Prijavi se na {{project}}",
"emails.magicSession.clientInfo": "Ova prijava je zatra┼╛ena kori┼бtenjem {{agentClient}} na {{agentDevice}} {{agentOs}}. Ako niste zahtjevali prijavu, mo┼╛ete sigurno ignorirati ovaj e-mail.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Sigurnosna fraza za ovaj email je {{phrase}}. Ovom emailu mo┼╛ete vjerovati ako se fraza poklapa sa frazom prikazanom prilikom prijave.",
"emails.magicSession.optionUrl": "Ako ne mo┼╛ete da se prijavite koriste─Зi gornje dugme, molimo posetite slede─Зi link:",
"emails.otpSession.subject": "{{project}} Prijava",
"emails.otpSession.hello": "Zdravo,",
"emails.otpSession.description": "Unesite sljede─Зi verifikacijski kod kada budete upitani kako biste sigurno pristupili va┼бem {{project}} ra─Нunu. Istje─Зi ─Зe za 15 minuta.",
"emails.otpSession.clientInfo": "Ovaj zahtjev za prijavom je poslan koriste─Зi {{agentClient}} na {{agentDevice}} {{agentOs}}. Ako niste zatra┼╛ili prijavu, mo┼╛ete sigurno ignorisati ovaj email.",
"emails.otpSession.securityPhrase": "Sigurnosna fraza za ovaj email je {{phrase}}. Mo┼╛ete vjerovati ovom emailu ako se ova fraza podudara sa frazom prikazanom prilikom prijave.",
"emails.otpSession.thanks": "Hvala,",
"emails.otpSession.signature": "tim {{project}}"
}
"continents.sa": "Ju┼╛na Amerika"
}
+13 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"L'art de ser savi ├йs l'art de saber qu├и passar per alt\"",
"settings.locale": "ca",
"settings.direction": "ltr",
"emails.sender": "{{project}} Equip",
"emails.sender": "%s Equip",
"emails.verification.subject": "Verificaci├│ del compte",
"emails.verification.hello": "Hola {{user}},",
"emails.verification.hello": "Hola {{name}}",
"emails.verification.body": "Accedeix a aquest enlla├з per tal de verificar la teva adre├зa electr├▓nica.",
"emails.verification.footer": "Si no has sol┬╖licitat la verificaci├│ d'aquesta adre├зa electr├▓nica, pots ignorar aquest missatge.",
"emails.verification.thanks": "Gr├аcies,",
"emails.verification.buttonText": "Confirma l'adre├зa electr├▓nica",
"emails.verification.thanks": "Gr├аcies",
"emails.verification.signature": "Equip {{project}}",
"emails.magicSession.subject": "Entrar",
"emails.magicSession.hello": "Hola,",
"emails.magicSession.thanks": "Gr├аcies,",
"emails.magicSession.body": "Accedeix a aquest enlla├з per a entrar.",
"emails.magicSession.footer": "Si no has sol┬╖licitat entrar amb aquesta adre├зa electr├▓nica, pots ignorar aquest missatge.",
"emails.magicSession.thanks": "Gr├аcies",
"emails.magicSession.signature": "Equip {{project}}",
"emails.recovery.subject": "Reinicialitzar contrasenya",
"emails.recovery.hello": "Hola {{user}},",
"emails.recovery.hello": "Hola {{name}}",
"emails.recovery.body": "Accedeix a aquest enlla├з per a reinicialitzar la teva contrasenya de {{project}}.",
"emails.recovery.footer": "Si no has sol┬╖licitat reinicialitzar la teva contrasenya, pots ignorar aquest missatge.",
"emails.recovery.thanks": "Gr├аcies,",
"emails.recovery.buttonText": "Restableix la contrasenya",
"emails.recovery.thanks": "Gr├аcies",
"emails.recovery.signature": "Equip {{project}}",
"emails.invitation.subject": "Invitaci├│ a l'equip {{team}} a {{project}}",
"emails.invitation.hello": "Hola,",
"emails.invitation.subject": "Invitaci├│ a l'equip %s a s%",
"emails.invitation.hello": "Hola",
"emails.invitation.body": "Aquest correu se t'ha enviat perqu├и {{owner}} vol convidar-te a formar part de l'equip {{team}} al {{project}}.",
"emails.invitation.footer": "Si no ├йs del teu inter├иs, pots ignorar aquest missatge.",
"emails.invitation.thanks": "Gr├аcies,",
"emails.invitation.buttonText": "Accepta la invitaci├│ a {{team}}",
"emails.invitation.thanks": "Gr├аcies",
"emails.invitation.signature": "Equip {{project}}",
"locale.country.unknown": "Desconegut",
"countries.af": "Afganistan",
@@ -101,7 +100,6 @@
"countries.gd": "Granada",
"countries.gt": "Guatemala",
"countries.gy": "Guaiana",
"countries.hk": "Hong Kong",
"countries.hn": "Hondures",
"countries.hr": "Cro├аcia",
"countries.ht": "Hait├н",
@@ -165,7 +163,6 @@
"countries.nz": "Nova Zelanda",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestina",
"countries.pa": "Panam├а",
"countries.pe": "Per├║",
"countries.ph": "Filipines",
@@ -209,7 +206,6 @@
"countries.tn": "Tun├нsia",
"countries.tr": "Turquia",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanz├аnia",
"countries.ug": "Uganda",
"countries.ua": "Ucra├пna",
@@ -232,18 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Am├иrica del Nord",
"continents.oc": "Oceania",
"continents.sa": "Am├иrica del Sud",
"emails.magicSession.optionButton": "Feu clic al bot├│ de sota per iniciar sessi├│ de manera segura al vostre compte {{project}}. Caducar├а en 1 hora.",
"emails.magicSession.buttonText": "Inicia sessi├│ a {{project}}",
"emails.magicSession.clientInfo": "Aquest inici de sessi├│ s'ha sol┬╖licitat utilitzant {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no has sol┬╖licitat l'inici de sessi├│, pots ignorar aquest correu electr├▓nic amb seguretat.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "La frase de seguretat d'aquest correu electr├▓nic ├йs {{phrase}}. Podeu confiar en aquest correu si aquesta frase coincideix amb la frase mostrada durant l'inici de sessi├│.",
"emails.magicSession.optionUrl": "Si no podeu iniciar sessi├│ utilitzant el bot├│ de dalt, visiteu l'enlla├з seg├╝ent:",
"emails.otpSession.subject": "Inici de sessi├│ de {{project}}",
"emails.otpSession.hello": "Hola,",
"emails.otpSession.description": "Introdu├пu el seg├╝ent codi de verificaci├│ quan us ho sol┬╖licitin per iniciar sessi├│ de manera segura al vostre compte {{project}}. Caducar├а en 15 minuts.",
"emails.otpSession.clientInfo": "Aquest inici de sessi├│ s'ha sol┬╖licitat utilitzant {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no has sol┬╖licitat l'inici de sessi├│, pots ignorar aquest correu electr├▓nic sense cap problema.",
"emails.otpSession.securityPhrase": "La frase de seguretat d'aquest correu electr├▓nic ├йs {{phrase}}. Podeu confiar en aquest correu electr├▓nic si aquesta frase coincideix amb la frase mostrada durant l'inici de sessi├│.",
"emails.otpSession.thanks": "Gr├аcies,",
"emails.otpSession.signature": "equip {{project}}"
}
"continents.sa": "Am├иrica del Sud"
}
+13 -27
View File
@@ -2,28 +2,30 @@
"settings.inspire": "\"Um─Ыn├н moudrosti je um─Ыn├н v─Ыd─Ыt, co p┼Щehl├йdnout.\"",
"settings.locale": "cs",
"settings.direction": "ltr",
"emails.sender": "{{project}} t├╜m",
"emails.sender": "%s t├╜m",
"emails.verification.subject": "",
"emails.verification.hello": ",",
"emails.verification.hello": "",
"emails.verification.body": "",
"emails.verification.footer": "",
"emails.verification.thanks": ",",
"emails.verification.thanks": "",
"emails.verification.signature": "",
"emails.magicSession.subject": "",
"emails.magicSession.hello": ",",
"emails.magicSession.thanks": ",",
"emails.magicSession.hello": "",
"emails.magicSession.body": "",
"emails.magicSession.footer": "",
"emails.magicSession.thanks": "",
"emails.magicSession.signature": "",
"emails.recovery.subject": "",
"emails.recovery.hello": ",",
"emails.recovery.hello": "",
"emails.recovery.body": "",
"emails.recovery.footer": "",
"emails.recovery.thanks": ",",
"emails.recovery.thanks": "",
"emails.recovery.signature": "",
"emails.invitation.subject": "",
"emails.invitation.hello": ",",
"emails.invitation.hello": "",
"emails.invitation.body": "",
"emails.invitation.footer": "",
"emails.invitation.thanks": ",",
"emails.invitation.thanks": "",
"emails.invitation.signature": "",
"locale.country.unknown": "Nezn├бm├╜",
"countries.af": "Afgh├бnist├бn",
@@ -98,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Chorvatsko",
"countries.ht": "Haiti",
@@ -162,7 +163,6 @@
"countries.nz": "Nov├╜ Z├йland",
"countries.om": "Om├бn",
"countries.pk": "P├бkist├бn",
"countries.ps": "Palestina",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filip├нny",
@@ -206,7 +206,6 @@
"countries.tn": "Tunisko",
"countries.tr": "Turecko",
"countries.tv": "Tuvalu",
"countries.tw": "Tchaj-wan",
"countries.tz": "Tanzanie",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
@@ -229,18 +228,5 @@
"continents.eu": "Evropa",
"continents.na": "Severn├н Amerika",
"continents.oc": "Oce├бnie",
"continents.sa": "Ji┼╛n├н Amerika",
"emails.magicSession.optionButton": "Klikn─Ыte na tla─Н├нtko n├н┼╛e pro bezpe─Нn├й p┼Щihl├б┼бen├н do va┼бeho ├║─Нtu {{project}}. Platnost vypr┼б├н za 1 hodinu.",
"emails.magicSession.buttonText": "P┼Щihlaste se k {{project}}",
"emails.magicSession.clientInfo": "Toto p┼Щihl├б┼бen├н bylo po┼╛adov├бno prost┼Щednictv├нm {{agentClient}} na {{agentDevice}} {{agentOs}}. Pokud jste se nep┼Щihla┼бovali, m┼п┼╛ete tento e-mail bezpe─Нn─Ы ignorovat.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Bezpe─Нnostn├н fr├бze pro tento e-mail je {{phrase}}. Tomuto e-mailu m┼п┼╛ete d┼пv─Ы┼Щovat, pokud tato fr├бze odpov├нd├б fr├бzi zobrazen├й p┼Щi p┼Щihl├б┼бen├н.",
"emails.magicSession.optionUrl": "Pokud se nem┼п┼╛ete p┼Щihl├бsit pomoc├н v├╜┼бe uveden├йho tla─Н├нtka, pros├нm nav┼бtivte n├бsleduj├нc├н odkaz:",
"emails.otpSession.subject": "{{project}} P┼Щihl├б┼бen├н",
"emails.otpSession.hello": "Ahoj,",
"emails.otpSession.description": "Zadejte n├бsleduj├нc├н ov─Ы┼Щovac├н k├│d, kdy┼╛ budete vyzv├бni, abyste se bezpe─Нn─Ы p┼Щihl├бsili ke sv├йmu ├║─Нtu {{project}}. Platnost k├│du vypr┼б├н za 15 minut.",
"emails.otpSession.clientInfo": "Tento p┼Щihla┼бovac├н pokus byl proveden pomoc├н {{agentClient}} na za┼Щ├нzen├н {{agentDevice}} {{agentOs}}. Pokud jste se nep┼Щihla┼бovali, tento e-mail m┼п┼╛ete bezpe─Нn─Ы ignorovat.",
"emails.otpSession.securityPhrase": "Bezpe─Нnostn├н fr├бze pro tento e-mail je {{phrase}}. Tomuto e-mailu m┼п┼╛ete d┼пv─Ы┼Щovat, pokud se tato fr├бze shoduje s fr├бz├н zobrazenou p┼Щi p┼Щihl├б┼бen├н.",
"emails.otpSession.thanks": "D─Ыkuji,",
"emails.otpSession.signature": "t├╜m {{project}}"
}
"continents.sa": "Ji┼╛n├н Amerika"
}
+13 -30
View File
@@ -1,32 +1,31 @@
{
"settings.inspire": "\"Kunsten at v├жre klog er kunsten at vide, hvad man skal overse.\"",
"settings.inspire": "\"Kunsten at v├жre klog er kunsten at vide, hvad man skal overse.\"",
"settings.locale": "da",
"settings.direction": "ltr",
"emails.sender": "{{project}} Team",
"emails.sender": "%s Team",
"emails.verification.subject": "Konto Verifikation",
"emails.verification.hello": "Hej {{user}},",
"emails.verification.hello": "Hej {{name}}",
"emails.verification.body": "F├╕lg dette link, for at verificere din email adresse.",
"emails.verification.footer": "Hvis du ikke har bedt om at verificere denne adresse, ignorer venligst denne besked.",
"emails.verification.thanks": "Tak,",
"emails.verification.buttonText": "Bekr├жft e-mailadresse",
"emails.verification.thanks": "Tak",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hej,",
"emails.magicSession.thanks": "Tak,",
"emails.magicSession.body": "F├╕lg dette link for at logge ind.",
"emails.magicSession.footer": "Hvis du ikke har bedt om at logge ind med denne email, ignorer venligst denne besked.",
"emails.magicSession.thanks": "Tak",
"emails.magicSession.signature": "{{project}} team",
"emails.recovery.subject": "Nulstil Password",
"emails.recovery.hello": "Hej {{user}},",
"emails.recovery.hello": "Hej {{name}}",
"emails.recovery.body": "F├╕lg dette link for at nulstille koden til {{project}}.",
"emails.recovery.footer": "Hvis du ikke har bedt om at nulstille dit password, ignorer venligst denne besked.",
"emails.recovery.thanks": "Tak,",
"emails.recovery.buttonText": "Nulstil adgangskode",
"emails.recovery.thanks": "Tak",
"emails.recovery.signature": "{{project}} team",
"emails.invitation.subject": "Invitation til {{team}} Team p├е {{project}}",
"emails.invitation.hello": "Hej,",
"emails.invitation.subject": "Invitation til %s Team p├е %s",
"emails.invitation.hello": "Hej",
"emails.invitation.body": "Denne mail blev sendt til dig, fordi {{owner}} vil invitere dig til at blive medlem af {{team}} teamet p├е {{project}}.",
"emails.invitation.footer": "Hvis du ikke er interesseret, ignorer venligst denne besked.",
"emails.invitation.thanks": "Tak,",
"emails.invitation.buttonText": "Accepter invitation til {{team}}",
"emails.invitation.thanks": "Tak",
"emails.invitation.signature": "{{project}} team",
"locale.country.unknown": "Ukendt",
"countries.af": "Afghanistan",
@@ -101,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Kroatien",
"countries.ht": "Haiti",
@@ -165,7 +163,6 @@
"countries.nz": "New Zealand",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Pal├жstina",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filippinerne",
@@ -209,7 +206,6 @@
"countries.tn": "Tunisien",
"countries.tr": "Tyrkiet",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
@@ -232,18 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Nordamerica",
"continents.oc": "Oceanien",
"continents.sa": "Sydamerica",
"emails.magicSession.optionButton": "Klik p├е knappen nedenfor for sikkert at logge ind p├е din {{project}} konto. Den udl├╕ber om 1 time.",
"emails.magicSession.buttonText": "Log ind p├е {{project}}",
"emails.magicSession.clientInfo": "Denne log ind blev anmodet ved hj├жlp af {{agentClient}} p├е {{agentDevice}} {{agentOs}}. Hvis du ikke anmodede om log ind, kan du trygt ignorere denne e-mail.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Sikkerhedsfrasen for denne e-mail er {{phrase}}. Du kan stole p├е denne e-mail, hvis denne frase matcher den viste frase under log ind.",
"emails.magicSession.optionUrl": "Hvis du ikke kan logge ind ved at bruge knappen ovenfor, bes├╕g venligst f├╕lgende link:",
"emails.otpSession.subject": "{{project}} Login",
"emails.otpSession.hello": "Hej,",
"emails.otpSession.description": "Indtast f├╕lgende bekr├жftelseskode, n├еr du bliver bedt om det, for sikkert at logge ind p├е din {{project}} konto. Den udl├╕ber om 15 minutter.",
"emails.otpSession.clientInfo": "Denne indlogning blev anmodet om ved hj├жlp af {{agentClient}} p├е {{agentDevice}} {{agentOs}}. Hvis du ikke har anmodet om indlogningen, kan du trygt ignorere denne e-mail.",
"emails.otpSession.securityPhrase": "Sikkerhedsfrasen for denne e-mail er {{phrase}}. Du kan stole p├е denne e-mail, hvis denne frase matcher frasen vist under login.",
"emails.otpSession.thanks": "Tak,",
"emails.otpSession.signature": "{{project}} team"
"continents.sa": "Sydamerica"
}
+12 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"Die Kunst, weise zu sein, ist die Kunst, zu wissen, was zu ├╝bersehen ist.\"",
"settings.locale": "de",
"settings.direction": "ltr",
"emails.sender": "{{project}} Team",
"emails.sender": "%s Team",
"emails.verification.subject": "Kontoverifizierung",
"emails.verification.hello": "Hey {{user}},",
"emails.verification.hello": "Hey {{name}}",
"emails.verification.body": "Folge diesem Link, um deine E-Mail-Adresse zu best├дtigen.",
"emails.verification.footer": "Solltest du keine Verifizierung dieser E-Mail-Adresse angefordert haben, kannst du diese Nachricht ignorieren.",
"emails.verification.thanks": "Danke,",
"emails.verification.buttonText": "E-Mail-Adresse best├дtigen",
"emails.verification.thanks": "Danke",
"emails.verification.signature": "{{project}}-Team",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.thanks": "Danke,",
"emails.magicSession.body": "Folge diesem Link, um dich einzuloggen.",
"emails.magicSession.footer": "Solltest du keinen Login f├╝r diese E-Mail-Adresse angefordert haben, kannst du diese Nachricht ignorieren.",
"emails.magicSession.thanks": "Danke",
"emails.magicSession.signature": "{{project}}-Team",
"emails.recovery.subject": "Kennwort zur├╝cksetzen",
"emails.recovery.hello": "Hallo {{user}},",
"emails.recovery.hello": "Hallo {{name}}",
"emails.recovery.body": "Folge diesem Link, um dein {{project}}-Kennwort zur├╝ckzusetzen.",
"emails.recovery.footer": "Solltest du keine Kennwort-Zur├╝cksetzung angefordert haben, kannst du diese Nachricht ignorieren.",
"emails.recovery.thanks": "Danke,",
"emails.recovery.buttonText": "Passwort zur├╝cksetzen",
"emails.recovery.thanks": "Danke",
"emails.recovery.signature": "{{project}}-Team",
"emails.invitation.subject": "Einladung zum {{team}}-Team auf {{project}}",
"emails.invitation.hello": "Hello,",
"emails.invitation.subject": "Einladung zum %s-Team auf %s",
"emails.invitation.hello": "Hello",
"emails.invitation.body": "Du erh├дlst diese E-Mail, weil {{owner}} dich in das Team {{team}} auf {{project}} eingeladen hat.",
"emails.invitation.footer": "Wenn du nicht interessiert bist, kannst du diese Nachricht ignorieren.",
"emails.invitation.thanks": "Danke,",
"emails.invitation.buttonText": "Einladung zu {{team}} annehmen",
"emails.invitation.thanks": "Danke",
"emails.invitation.signature": "{{project}}-Team",
"locale.country.unknown": "Unbekannt",
"countries.af": "Afghanistan",
@@ -101,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Kroatien",
"countries.ht": "Haiti",
@@ -165,7 +163,6 @@
"countries.nz": "Neuseeland",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Pal├дstina",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippinen",
@@ -209,7 +206,6 @@
"countries.tn": "Tunesien",
"countries.tr": "T├╝rkei",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tansania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
@@ -232,19 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Nordamerika",
"continents.oc": "Ozeanien",
"continents.sa": "S├╝damerika",
"emails.magicSession.optionButton": "Klicken Sie auf den unten stehenden Button, um sicher in Ihr {{project}}-Konto einzuloggen. Er verf├дllt in 1 Stunde.",
"emails.magicSession.buttonText": "Melden Sie sich bei {{project}} an",
"emails.magicSession.clientInfo": "Dieser Anmeldeversuch wurde ├╝ber {{agentClient}} auf {{agentDevice}} {{agentOs}} angefordert. Wenn Sie die Anmeldung nicht angefordert haben, k├╢nnen Sie diese E-Mail getrost ignorieren.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Die Sicherheitsphrase f├╝r diese E-Mail lautet {{phrase}}. Sie k├╢nnen dieser E-Mail vertrauen, wenn diese Phrase mit der Phrase ├╝bereinstimmt, die beim Anmelden angezeigt wurde.",
"emails.magicSession.optionUrl": "Wenn Sie sich nicht ├╝ber den obigen Button anmelden k├╢nnen, besuchen Sie bitte den folgenden Link:",
"emails.otpSession.subject": "{{project}} Anmeldung",
"emails.otpSession.hello": "Hallo,",
"emails.otpSession.description": "Geben Sie den folgenden Verifizierungscode ein, wenn Sie aufgefordert werden, um sich sicher in Ihrem {{project}} Konto anzumelden. Er verf├дllt in 15 Minuten.",
"emails.otpSession.clientInfo": "Diese Anmeldung wurde ├╝ber {{agentClient}} auf {{agentDevice}} {{agentOs}} angefordert. Wenn Sie die Anmeldung nicht angefordert haben, k├╢nnen Sie diese E-Mail getrost ignorieren.",
"emails.otpSession.securityPhrase": "Die Sicherheitsphrase f├╝r diese E-Mail lautet {{phrase}}. Sie k├╢nnen dieser E-Mail vertrauen, wenn diese Phrase mit der Phrase ├╝bereinstimmt, die beim Anmelden angezeigt wird.",
"emails.otpSession.thanks": "Danke,",
"emails.otpSession.signature": "{{project}} Team",
"mock": "Eine Beispiel├╝bersetzung f├╝r Testzwecke."
"continents.sa": "S├╝damerika"
}
+12 -29
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"╬Ч ╧Д╬н╧З╬╜╬╖ ╧Д╬┐╧Е ╬╜╬▒ ╬╡╬п╧Г╬▒╬╣ ╧Г╬┐╧Ж╧М╧В, ╬╡╬п╬╜╬▒╬╣ ╬╖ ╧Д╬н╧З╬╜╬╖ ╬╜╬▒ ╬╛╬н╧Б╬╡╬╣╧В ╧Д╬╣ ╧А╧Б╬н╧А╬╡╬╣ ╬╜╬▒ ╧А╬▒╧Б╬▒╬▓╬╗╬н╧И╬╡╬╣╧В.\"",
"settings.locale": "gr",
"settings.direction": "ltr",
"emails.sender": "╬Я╬╝╬м╬┤╬▒ {{project}}",
"emails.sender": "╬Я╬╝╬м╬┤╬▒ %s",
"emails.verification.subject": "╬Х╧А╬▒╬╗╬о╬╕╬╡╧Е╧Г╬╖ ╬Ы╬┐╬│╬▒╧Б╬╣╬▒╧Г╬╝╬┐╧Н",
"emails.verification.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е {{user}},",
"emails.verification.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е {{name}}",
"emails.verification.body": "╬С╬║╬┐╬╗╬┐╧Е╬╕╬о╧Г╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ link ╬│╬╣╬▒ ╬╜╬▒ ╬╡╧А╬▒╬╗╬╖╬╕╬╡╧Н╧Г╬╡╧Д╬╡ ╧Д╬╖ ╬┤/╬╜╧Г╬╖ ╧Д╬┐╧Е email ╧Г╬▒╧В",
"emails.verification.footer": "╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╢╬╖╧Д╬о╧Г╬▒╧Д╬╡ ╬╡╧А╬▒╬╗╬о╬╕╬╡╧Е╧Г╬╖ ╬▒╧Е╧Д╬о╧В ╧Д╬╖╧В ╬┤/╬╜╧Г╬╖╧В email, ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬▒╬│╬╜╬┐╬о╧Г╬╡╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ ╬╝╬о╬╜╧Е╬╝╬▒",
"emails.verification.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡,",
"emails.verification.buttonText": "╬Х╧А╬╣╬▓╬╡╬▓╬▒╬╣╧О╧Г╧Д╬╡ ╬┤╬╣╬╡╧Н╬╕╧Е╬╜╧Г╬╖ email",
"emails.verification.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡",
"emails.verification.signature": "╬Ч ╬┐╬╝╬м╬┤╬▒ ╧Д╬┐╧Е {{project}}",
"emails.magicSession.subject": "╬Х╬п╧Г╬┐╬┤╬┐╧В",
"emails.magicSession.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е,",
"emails.magicSession.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡,",
"emails.magicSession.body": "╬С╬║╬┐╬╗╬┐╧Е╬╕╬о╧Г╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ link ╬│╬╣╬▒ ╬╜╬▒ ╧Г╧Е╬╜╬┤╬╡╬╕╬╡╬п╧Д╬╡",
"emails.magicSession.footer": "╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╢╬╖╧Д╬о╧Г╬▒╧Д╬╡ ╬╜╬▒ ╧Г╧Е╬╜╬┤╬╡╬╕╬╡╬п╧Д╬╡ ╧З╧Б╬╖╧Г╬╣╬╝╬┐╧А╬┐╬╣╧О╬╜╧Д╬▒╧В ╬▒╧Е╧Д╧М ╧Д╬┐ email, ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬▒╬│╬╜╬┐╬о╧Г╬╡╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ ╬╝╬о╬╜╧Е╬╝╬▒.",
"emails.magicSession.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡",
"emails.magicSession.signature": "╬Ч ╬┐╬╝╬м╬┤╬▒ ╧Д╬┐╧Е {{project}}",
"emails.recovery.subject": "╬С╬╗╬╗╬▒╬│╬о ╬║╧Й╬┤╬╣╬║╬┐╧Н ╧А╧Б╧М╧Г╬▓╬▒╧Г╬╖╧В",
"emails.recovery.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е {{user}},",
"emails.recovery.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е {{name}}",
"emails.recovery.body": "╬С╬║╬┐╬╗╬┐╧Е╬╕╬о╧Г╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ link ╬│╬╣╬▒ ╬╜╬▒ ╬▒╬╗╬╗╬м╬╛╬╡╧Д╬╡ ╧Д╬┐╬╜ {{project}} ╬║╧Й╬┤╬╣╬║╧М ╧Г╬▒╧В",
"emails.recovery.footer": "╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╢╬╖╧Д╬о╧Г╬▒╧Д╬╡ ╬▒╬╗╬╗╬▒╬│╬о ╧Д╬┐╧Е ╬║╧Й╬┤╬╣╬║╬┐╧Н ╧Г╬▒╧В ╧А╧Б╧М╧Г╬▓╬▒╧Г╬╖╧В, ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬▒╬│╬╜╬┐╬о╧Г╬╡╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ ╬╝╬о╬╜╧Е╬╝╬▒",
"emails.recovery.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡,",
"emails.recovery.buttonText": "╬Х╧А╬▒╬╜╬▒╧Ж╬┐╧Б╬м ╬║╧Й╬┤╬╣╬║╬┐╧Н ╧А╧Б╧М╧Г╬▓╬▒╧Г╬╖╧В",
"emails.recovery.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡",
"emails.recovery.signature": "╬Ч ╬┐╬╝╬м╬┤╬▒ ╧Д╬┐╧Е {{project}}",
"emails.invitation.subject": "╬а╧Б╧М╧Г╬║╬╗╬╖╧Г╬╖ ╧Г╧Д╬╖╬╜ {{team}} ╬Я╬╝╬м╬┤╬▒ ╧Г╧Д╬┐╬╜ {{project}}",
"emails.invitation.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е,",
"emails.invitation.subject": "╬а╧Б╧М╧Г╬║╬╗╬╖╧Г╬╖ ╧Г╧Д╬╖╬╜ %s ╬Я╬╝╬м╬┤╬▒ ╧Г╧Д╬┐╬╜ %s",
"emails.invitation.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е",
"emails.invitation.body": "╬С╧Е╧Д╧М ╧Д╬┐ email ╧Г╧Д╬м╬╗╬╕╬╖╬║╬╡ ╬╡╧А╬╡╬╣╬┤╬о ╬┐/╬╖ {{owner}} ╬╕╬н╬╗╬╡╬╣ ╬╜╬▒ ╧Г╬▒╧В ╧А╧Б╬┐╧Г╬║╬▒╬╗╬н╧Г╬╡╬╣ ╬╜╬▒ ╬│╬п╬╜╬╡╧Д╬╡ ╬╝╬н╬╗╬┐╧В ╧Д╬╖╧В ╬┐╬╝╬м╬┤╬▒╧В {{team}} ╧Д╬┐╧Е {{project}}.",
"emails.invitation.footer": "╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╡╬╜╬┤╬╣╬▒╧Ж╬н╧Б╬╡╧Г╧Д╬╡, ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬▒╬│╬╜╬┐╬о╧Г╬╡╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ ╬╝╬о╬╜╧Е╬╝╬▒.",
"emails.invitation.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡,",
"emails.invitation.buttonText": "╬С╧А╬┐╬┤╬╡╧З╧М╬╝╬╡╬╜╬┐╧В ╧Д╬╖╬╜ ╧А╧Б╧М╧Г╬║╬╗╬╖╧Г╬╖ ╧Г╧Д╬╖╬╜ {{team}}",
"emails.invitation.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╬┐╧Н╬╝╬╡",
"emails.invitation.signature": "╬Ч ╬┐╬╝╬м╬┤╬▒ ╧Д╬┐╧Е {{project}}",
"locale.country.unknown": "╬Ж╬│╬╜╧Й╧Г╧Д╬┐",
"countries.af": "╬С╧Ж╬│╬▒╬╜╬╣╧Г╧Д╬м╬╜",
@@ -101,7 +100,6 @@
"countries.gd": "╬У╧Б╬╡╬╜╬м╬┤╬▒",
"countries.gt": "╬У╬┐╧Е╬▒╧Д╬╡╬╝╬м╬╗╬▒",
"countries.gy": "╬У╬┐╧Е╬╣╬м╬╜╬▒",
"countries.hk": "╬з╬┐╬╜╬│╬║ ╬Ъ╬┐╬╜╬│╬║",
"countries.hn": "╬Я╬╜╬┤╬┐╧Н╧Б╬▒",
"countries.hr": "╬Ъ╧Б╬┐╬▒╧Д╬п╬▒",
"countries.ht": "╬С╧К╧Д╬о",
@@ -165,7 +163,6 @@
"countries.nz": "╬Э╬н╬▒ ╬Ц╬╖╬╗╬▒╬╜╬┤╬п╬▒",
"countries.om": "╬Я╬╝╬м╬╜",
"countries.pk": "╬а╬▒╬║╬╣╧Г╧Д╬м╬╜",
"countries.ps": "╬а╬▒╬╗╬▒╬╣╧Г╧Д╬п╬╜╬╖",
"countries.pa": "╬а╬▒╬╜╬▒╬╝╬м╧В",
"countries.pe": "╬а╬╡╧Б╬┐╧Н",
"countries.ph": "╬ж╬╣╬╗╬╣╧А╧А╬п╬╜╬╡╧В",
@@ -209,7 +206,6 @@
"countries.tn": "╬д╧Е╬╜╬╖╧Г╬п╬▒",
"countries.tr": "╬д╬┐╧Е╧Б╬║╬п╬▒",
"countries.tv": "╬д╬┐╧Е╬▓╬▒╬╗╬┐╧Н",
"countries.tw": "╬д╬▒╧К╬▓╬м╬╜",
"countries.tz": "╬д╬▒╬╜╬╢╬▒╬╜╬п╬▒",
"countries.ug": "╬Я╧Е╬│╬║╬м╬╜╧Д╬▒",
"countries.ua": "╬Я╧Е╬║╧Б╬▒╬╜╬п╬▒",
@@ -232,18 +228,5 @@
"continents.eu": "╬Х╧Е╧Б╧О╧А╬╖",
"continents.na": "╬Т╧М╧Б╬╡╬╣╬▒ ╬С╬╝╬╡╧Б╬╣╬║╬о",
"continents.oc": "╬й╬║╬╡╬▒╬╜╬п╬▒",
"continents.sa": "╬Э╧М╧Д╬╣╬▒ ╬С╬╝╬╡╧Б╬╣╬║╬о",
"emails.magicSession.optionButton": "╬Ъ╬м╬╜╧Д╬╡ ╬║╬╗╬╣╬║ ╧Г╧Д╬┐ ╬║╬┐╧Е╬╝╧А╬п ╧А╬▒╧Б╬▒╬║╬м╧Д╧Й ╬│╬╣╬▒ ╬╜╬▒ ╧Г╧Е╬╜╬┤╬╡╬╕╬╡╬п╧Д╬╡ ╬╝╬╡ ╬▒╧Г╧Ж╬м╬╗╬╡╬╣╬▒ ╧Г╧Д╬┐╬╜ ╬╗╬┐╬│╬▒╧Б╬╣╬▒╧Г╬╝╧М ╧Г╬▒╧В ╧Г╧Д╬┐ {{project}}. ╬Ш╬▒ ╬╗╬о╬╛╬╡╬╣ ╧Г╬╡ 1 ╧О╧Б╬▒.",
"emails.magicSession.buttonText": "╬г╧Е╬╜╬┤╬╡╬╕╬╡╬п╧Д╬╡ ╧Г╧Д╬┐ {{project}}",
"emails.magicSession.clientInfo": "╬Ч ╧Г╧Н╬╜╬┤╬╡╧Г╬╖ ╬▒╧Е╧Д╬о ╬╢╬╖╧Д╬о╬╕╬╖╬║╬╡ ╧З╧Б╬╖╧Г╬╣╬╝╬┐╧А╬┐╬╣╧О╬╜╧Д╬▒╧В ╧Д╬┐ {{agentClient}} ╧Г╧Д╬┐ {{agentDevice}} {{agentOs}}. ╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╢╬╖╧Д╬о╧Г╬▒╧Д╬╡ ╧Д╬╖ ╧Г╧Н╬╜╬┤╬╡╧Г╬╖, ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬▒╬│╬╜╬┐╬о╧Г╬╡╧Д╬╡ ╬╝╬╡ ╬▒╧Г╧Ж╬м╬╗╬╡╬╣╬▒ ╬▒╧Е╧Д╧М ╧Д╬┐ email.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "╬Ч ╧Ж╧Б╬м╧Г╬╖ ╬▒╧Г╧Ж╬▒╬╗╬╡╬п╬▒╧В ╬│╬╣╬▒ ╬▒╧Е╧Д╧М ╧Д╬┐ email ╬╡╬п╬╜╬▒╬╣ {{phrase}}. ╬Ь╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬╡╬╝╧А╬╣╧Г╧Д╬╡╧Е╧Д╬╡╬п╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ email ╬▒╬╜ ╬▒╧Е╧Д╬о ╬╖ ╧Ж╧Б╬м╧Г╬╖ ╧Д╬▒╬╣╧Б╬╣╬м╬╢╬╡╬╣ ╬╝╬╡ ╧Д╬╖ ╧Ж╧Б╬м╧Г╬╖ ╧А╬┐╧Е ╬╡╬╝╧Ж╬▒╬╜╬п╬╢╬╡╧Д╬▒╬╣ ╬║╬▒╧Д╬м ╧Д╬╖╬╜ ╬╡╬п╧Г╬┐╬┤╬┐.",
"emails.magicSession.optionUrl": "╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╧Г╧Е╬╜╬┤╬╡╬╕╬╡╬п╧Д╬╡ ╧З╧Б╬╖╧Г╬╣╬╝╬┐╧А╬┐╬╣╧О╬╜╧Д╬▒╧В ╧Д╬┐ ╧А╬▒╧Б╬▒╧А╬м╬╜╧Й ╬║╬┐╧Е╬╝╧А╬п, ╧А╬▒╧Б╬▒╬║╬▒╬╗╧О ╬╡╧А╬╣╧Г╬║╬╡╧Ж╧Д╬╡╬п╧Д╬╡ ╧Д╬┐╬╜ ╧А╬▒╧Б╬▒╬║╬м╧Д╧Й ╧Г╧Н╬╜╬┤╬╡╧Г╬╝╬┐:",
"emails.otpSession.subject": "{{project}} ╬г╧Н╬╜╬┤╬╡╧Г╬╖",
"emails.otpSession.hello": "╬У╬╡╬╣╬▒ ╧Г╬┐╧Е,",
"emails.otpSession.description": "╬Х╬╣╧Г╬м╬│╬╡╧Д╬╡ ╧Д╬┐╬╜ ╬▒╬║╧М╬╗╬┐╧Е╬╕╬┐ ╬║╧Й╬┤╬╣╬║╧М ╬╡╧А╬▒╬╗╬о╬╕╬╡╧Е╧Г╬╖╧В ╧М╧Д╬▒╬╜ ╧Г╬▒╧В ╬╢╬╖╧Д╬╖╬╕╬╡╬п ╬│╬╣╬▒ ╬╜╬▒ ╧Г╧Е╬╜╬┤╬╡╬╕╬╡╬п╧Д╬╡ ╬╝╬╡ ╬▒╧Г╧Ж╬м╬╗╬╡╬╣╬▒ ╧Г╧Д╬┐╬╜ ╬╗╬┐╬│╬▒╧Б╬╣╬▒╧Г╬╝╧М ╧Г╬▒╧В {{project}}. ╬Ш╬▒ ╬╗╬о╬╛╬╡╬╣ ╧Г╬╡ 15 ╬╗╬╡╧А╧Д╬м.",
"emails.otpSession.clientInfo": "╬С╧Е╧Д╬о ╬╖ ╬╡╬п╧Г╬┐╬┤╬┐╧В ╬╢╬╖╧Д╬о╬╕╬╖╬║╬╡ ╬╝╬╡ ╧З╧Б╬о╧Г╬╖ {{agentClient}} ╧Г╬╡ {{agentDevice}} {{agentOs}}. ╬Х╬м╬╜ ╬┤╬╡╬╜ ╬╢╬╖╧Д╬о╧Г╬▒╧Д╬╡ ╧Д╬╖╬╜ ╬╡╬п╧Г╬┐╬┤╬┐, ╬╝╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬▒╬│╬╜╬┐╬о╧Г╬╡╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ email ╬╝╬╡ ╬▒╧Г╧Ж╬м╬╗╬╡╬╣╬▒.",
"emails.otpSession.securityPhrase": "╬Ч ╧Ж╧Б╬м╧Г╬╖ ╬▒╧Г╧Ж╬▒╬╗╬╡╬п╬▒╧В ╬│╬╣╬▒ ╬▒╧Е╧Д╧М ╧Д╬┐ email ╬╡╬п╬╜╬▒╬╣ {{phrase}}. ╬Ь╧А╬┐╧Б╬╡╬п╧Д╬╡ ╬╜╬▒ ╬╡╬╝╧А╬╣╧Г╧Д╬╡╧Е╧Д╬╡╬п╧Д╬╡ ╬▒╧Е╧Д╧М ╧Д╬┐ email ╬▒╬╜ ╬▒╧Е╧Д╬о ╬╖ ╧Ж╧Б╬м╧Г╬╖ ╧Д╬▒╬╣╧Б╬╣╬м╬╢╬╡╬╣ ╬╝╬╡ ╧Д╬╖ ╧Ж╧Б╬м╧Г╬╖ ╧А╬┐╧Е ╬╡╬╝╧Ж╬▒╬╜╬п╧Г╧Д╬╖╬║╬╡ ╬║╬▒╧Д╬м ╧Д╬╖╬╜ ╬╡╬п╧Г╬┐╬┤╬┐.",
"emails.otpSession.thanks": "╬Х╧Е╧З╬▒╧Б╬╣╧Г╧Д╧О,",
"emails.otpSession.signature": "╬┐╬╝╬м╬┤╬▒ {{project}}"
"continents.sa": "╬Э╧М╧Д╬╣╬▒ ╬С╬╝╬╡╧Б╬╣╬║╬о"
}
+23 -82
View File
@@ -2,92 +2,37 @@
"settings.inspire": "\"The art of being wise is the art of knowing what to overlook.\"",
"settings.locale": "en",
"settings.direction": "ltr",
"emails.sender": "{{project}} Team",
"emails.verification.subject": "Account Verification for {{project}}",
"emails.verification.preview": "Verify your email to activate your {{project}} account.",
"emails.verification.heading": "Verify your email to start using {{project}}",
"emails.verification.hello": "Hello {{user}},",
"emails.verification.body": "Follow this link to verify your email address to your {{b}}{{project}}{{/b}} account.",
"emails.sender": "%s Team",
"emails.verification.subject": "Account Verification",
"emails.verification.hello": "Hey {{name}}",
"emails.verification.body": "Follow this link to verify your email address.",
"emails.verification.footer": "If you didnтАЩt ask to verify this address, you can ignore this message.",
"emails.verification.thanks": "Thanks,",
"emails.verification.buttonText": "Confirm email address",
"emails.verification.thanks": "Thanks",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "{{project}} Login",
"emails.magicSession.preview": "Sign in to {{project}} with your secure link. Expires in 1 hour.",
"emails.magicSession.hello": "Hello {{user}},",
"emails.magicSession.optionButton": "Click the button below to securely sign in to your {{b}}{{project}}{{/b}} account. This link will expire in 1 hour.",
"emails.magicSession.buttonText": "Sign in to {{project}}",
"emails.magicSession.optionUrl": "If you are unable to sign in using the button above, please visit the following link:",
"emails.magicSession.clientInfo": "This sign in was requested using {{b}}{{agentClient}}{{/b}} on {{b}}{{agentDevice}}{{/b}} {{b}}{{agentOs}}{{/b}}. If you didn't request the sign in, you can safely ignore this email.",
"emails.magicSession.securityPhrase": "Security phrase for this email is {{b}}{{phrase}}{{/b}}. You can trust this email if this phrase matches the phrase shown during sign in.",
"emails.magicSession.thanks": "Thanks,",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.body": "Follow this link to login.",
"emails.magicSession.footer": "If you didnтАЩt ask to login using this email, you can ignore this message.",
"emails.magicSession.thanks": "Thanks",
"emails.magicSession.signature": "{{project}} team",
"emails.sessionAlert.subject": "Security alert: new session on your {{project}} account",
"emails.sessionAlert.preview": "New login detected on {{project}} at {{time}} UTC.",
"emails.sessionAlert.hello": "Hello {{user}},",
"emails.sessionAlert.body": "A new session has been created on your {{b}}{{project}}{{/b}} account, {{b}}on {{date}}, {{year}} at {{time}} UTC{{/b}}.\nHere are the details of the new session: ",
"emails.sessionAlert.listDevice": "Device: {{b}}{{device}}{{/b}}",
"emails.sessionAlert.listIpAddress": "IP Address: {{b}}{{ipAddress}}{{/b}}",
"emails.sessionAlert.listCountry": "Country: {{b}}{{country}}{{/b}}",
"emails.sessionAlert.footer": "If this was you, there's nothing more you need to do.\nIf you didn't initiate this session or suspect any unauthorized activity, please secure your account.",
"emails.sessionAlert.thanks": "Thanks,",
"emails.sessionAlert.signature": "{{project}} team",
"emails.otpSession.subject": "OTP for {{project}} Login",
"emails.otpSession.preview": "Use OTP {{otp}} to sign in to {{project}}. Expires in 15 minutes.",
"emails.otpSession.heading": "Login with OTP to use {{project}}",
"emails.otpSession.hello": "Hello {{user}},",
"emails.otpSession.description": "Enter the following verification code when prompted to securely sign in to your {{b}}{{project}}{{/b}} account. This code will expire in 15 minutes.",
"emails.otpSession.clientInfo": "This sign in was requested using {{b}}{{agentClient}}{{/b}} on {{b}}{{agentDevice}}{{/b}} {{b}}{{agentOs}}{{/b}}. If you didn't request the sign in, you can safely ignore this email.",
"emails.otpSession.securityPhrase": "Security phrase for this email is {{b}}{{phrase}}{{/b}}. You can trust this email if this phrase matches the phrase shown during sign in.",
"emails.otpSession.thanks": "Thanks,",
"emails.otpSession.signature": "{{project}} team",
"emails.mfaChallenge.subject": "Verification Code for {{project}}",
"emails.mfaChallenge.preview": "Use code {{otp}} for two-step verification in {{project}}. Expires in 15 minutes.",
"emails.mfaChallenge.heading": "Complete two-step verification to use {{project}}",
"emails.mfaChallenge.hello": "Hello {{user}},",
"emails.mfaChallenge.description": "Enter the following code to confirm your two-step verification in {{b}}{{project}}{{/b}}. This code will expire in 15 minutes.",
"emails.mfaChallenge.clientInfo": "This verification code was requested using {{b}}{{agentClient}}{{/b}} on {{b}}{{agentDevice}}{{/b}} {{b}}{{agentOs}}{{/b}}. If you didn't request the verification code, you can safely ignore this email.",
"emails.mfaChallenge.thanks": "Thanks,",
"emails.mfaChallenge.signature": "{{project}} team",
"emails.recovery.subject": "Password Reset for {{project}}",
"emails.recovery.preview": "Reset your {{project}} password using the link.",
"emails.recovery.hello": "Hello {{user}},",
"emails.recovery.body": "Follow this link to reset your {{b}}{{project}}{{/b}} password.",
"emails.recovery.footer": "If you didn't ask to reset your password, you can ignore this message.",
"emails.recovery.thanks": "Thanks,",
"emails.recovery.buttonText": "Reset password",
"emails.recovery.subject": "Password Reset",
"emails.recovery.hello": "Hello {{name}}",
"emails.recovery.body": "Follow this link to reset your {{project}} password.",
"emails.recovery.footer": "If you didnтАЩt ask to reset your password, you can ignore this message.",
"emails.recovery.thanks": "Thanks",
"emails.recovery.signature": "{{project}} team",
"emails.csvExport.success.subject": "Your CSV export is ready",
"emails.csvExport.success.preview": "Your data export has been completed successfully.",
"emails.csvExport.success.hello": "Hello {{user}},",
"emails.csvExport.success.body": "Your CSV export is ready to download. Click the button below to download your data export.",
"emails.csvExport.success.footer": "This download link will expire in 1 hour.",
"emails.csvExport.success.thanks": "Thanks,",
"emails.csvExport.success.buttonText": "Download CSV",
"emails.csvExport.success.signature": "Appwrite team",
"emails.csvExport.failure.subject": "Your CSV export failed - file too large",
"emails.csvExport.failure.preview": "Your data export failed because the file size exceeds your plan limit.",
"emails.csvExport.failure.hello": "Hello {{user}},",
"emails.csvExport.failure.body": "Your CSV export could not be completed because the export file size ({{size}}MB) exceeds your plan limit. Please consider upgrading your plan or exporting a smaller dataset.",
"emails.csvExport.failure.footer": "If you have any questions, please contact our support team.",
"emails.csvExport.failure.thanks": "Thanks,",
"emails.csvExport.failure.signature": "{{project}} team",
"emails.invitation.subject": "Invitation to {{team}} Team at {{project}}",
"emails.invitation.preview": "{{owner}} invited you to join {{team}} at {{project}}",
"emails.invitation.hello": "Hello {{user}},",
"emails.invitation.body": "This mail was sent to you because {{b}}{{owner}}{{/b}} invited you to become a member of the {{b}}{{team}}{{/b}} team at {{b}}{{project}}{{/b}}.",
"emails.invitation.subject": "Invitation to %s Team at %s",
"emails.invitation.hello": "Hello",
"emails.invitation.body": "This mail was sent to you because {{owner}} wanted to invite you to become a member of the {{team}} team at {{project}}.",
"emails.invitation.footer": "If you are not interested, you can ignore this message.",
"emails.invitation.thanks": "Thanks,",
"emails.invitation.buttonText": "Accept invite to {{team}}",
"emails.invitation.thanks": "Thanks",
"emails.invitation.signature": "{{project}} team",
"emails.certificate.subject": "Certificate failure for {{domain}}",
"emails.certificate.preview": "Your domain {{domain}} certificate generation has failed.",
"emails.certificate.hello": "Hello,",
"emails.certificate.subject": "Certificate failure for %s",
"emails.certificate.hello": "Hello",
"emails.certificate.body": "Certificate for your domain '{{domain}}' could not be generated. This is attempt no. {{attempt}}, and the failure was caused by: {{error}}",
"emails.certificate.footer": "Your previous certificate will be valid for 30 days since the first failure. We highly recommend investigating this case, otherwise your domain will end up without a valid SSL communication.",
"emails.certificate.thanks": "Thanks,",
"emails.certificate.thanks": "Thanks",
"emails.certificate.signature": "{{project}} team",
"sms.verification.body": "{{secret}}",
"locale.country.unknown": "Unknown",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
@@ -161,7 +106,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Croatia",
"countries.ht": "Haiti",
@@ -225,7 +169,6 @@
"countries.nz": "New Zealand",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestine",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippines",
@@ -269,7 +212,6 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
@@ -292,6 +234,5 @@
"continents.eu": "Europe",
"continents.na": "North America",
"continents.oc": "Oceania",
"continents.sa": "South America",
"mock": "A mock translation for testing purposes."
"continents.sa": "South America"
}
+30 -48
View File
@@ -1,33 +1,32 @@
{
"settings.locale": "eo",
"settings.direction": "ltr",
"emails.sender": "Teamo {{project}}",
"emails.verification.subject": "Konta Konfirmo",
"emails.verification.hello": "Saluton {{user}},",
"emails.verification.body": "Alklaku ─Йi tiun ligon por kontroli vian retpo┼Эtan adreson.",
"emails.verification.footer": "Se vi ne petis ─Йi tiun konfirmon de ─Йi tiu retpo┼Эto, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.verification.thanks": "Dankegon.,",
"emails.verification.buttonText": "Konfirmi retadreson",
"emails.verification.signature": "Teamo {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Saluton,",
"emails.magicSession.thanks": "Dankegon,",
"emails.magicSession.signature": "Teamo {{project}}",
"emails.recovery.subject": "Parsvorta Restarigo",
"emails.recovery.hello": "Saluton {{user}},",
"emails.recovery.body": "Alklaku ─Йi tiun ligon por reagordi vian pasvorton. {{project}}",
"emails.recovery.footer": "Se vi ne petis reagordi vian pasvorton, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.recovery.thanks": "Dankegon,",
"emails.recovery.buttonText": "Pasvorton restarigi",
"emails.recovery.signature": "Teamo {{project}}",
"emails.invitation.subject": "Invito al la Teamo {{team}} em {{project}}",
"emails.invitation.hello": "Dankegon,",
"emails.invitation.body": "─Иi tiu retpo┼Эto estis sendita ─Йar la {{owner}} volas inviti vin fari─Эi membro de la Teamo {{team}} en {{project}}.",
"emails.invitation.footer": "Se vi ne interesi─Эas, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.invitation.thanks": "Dankegon,",
"emails.invitation.buttonText": "Akcepti inviton al {{team}}",
"emails.invitation.signature": "Teamo {{project}}",
"locale.country.unknown": "Unknown",
{
"settings.locale": "eo",
"settings.direction": "ltr",
"emails.sender": "Teamo %s",
"emails.verification.subject": "Konta Konfirmo",
"emails.verification.hello": "Saluton {{name}}",
"emails.verification.body": "Alklaku ─Йi tiun ligon por kontroli vian retpo┼Эtan adreson.",
"emails.verification.footer": "Se vi ne petis ─Йi tiun konfirmon de ─Йi tiu retpo┼Эto, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.verification.thanks": "Dankegon.",
"emails.verification.signature": "Teamo {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Saluton,",
"emails.magicSession.body": "Alklaku ─Йi tiun ligon por eniri.",
"emails.magicSession.footer": "Se vi ne petis ─Йi tiun konfirmon de ─Йi tiu retpo┼Эto, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.magicSession.thanks": "Dankegon",
"emails.magicSession.signature": "Teamo {{project}}",
"emails.recovery.subject": "Parsvorta Restarigo",
"emails.recovery.hello": "Saluton {{name}}",
"emails.recovery.body": "Alklaku ─Йi tiun ligon por reagordi vian pasvorton. {{project}}",
"emails.recovery.footer": "Se vi ne petis reagordi vian pasvorton, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.recovery.thanks": "Dankegon",
"emails.recovery.signature": "Teamo {{project}}",
"emails.invitation.subject": "Invito al la Teamo %s em %s",
"emails.invitation.hello": "Dankegon",
"emails.invitation.body": "─Иi tiu retpo┼Эto estis sendita ─Йar la {{owner}} volas inviti vin fari─Эi membro de la Teamo {{team}} en {{project}}.",
"emails.invitation.footer": "Se vi ne interesi─Эas, vi povas ignori ─Йi tiun mesa─Эon.",
"emails.invitation.thanks": "Dankegon",
"emails.invitation.signature": "Teamo {{project}}",
"locale.country.unknown": "Unknown",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
"countries.al": "Albania",
@@ -100,7 +99,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Croatia",
"countries.ht": "Haiti",
@@ -164,7 +162,6 @@
"countries.nz": "New Zealand",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestinio",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippines",
@@ -208,7 +205,6 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tw": "Tajvano",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
@@ -231,19 +227,5 @@
"continents.eu": "Europe",
"continents.na": "North America",
"continents.oc": "Oceania",
"continents.sa": "South America",
"settings.inspire": "\"La arto esti sa─Эa estas la arto scii kion preteratenti.\"",
"emails.magicSession.optionButton": "Alklaku la suban butonon por sekure ensaluti al via {{project}}-konto. ─Ьi eksvalidi─Эos post 1 horo.",
"emails.magicSession.buttonText": "Ensalutu al {{project}}",
"emails.magicSession.clientInfo": "─Иi tiu ensaluto estis petita per {{agentClient}} en {{agentDevice}} {{agentOs}}. Se vi ne petis la ensaluton, vi povas sekure ignori ─Йi tiun retpo┼Эton.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "La sekureca frazo por ─Йi tiu retpo┼Эto estas {{phrase}}. Vi povas fidi ─Йi tiun retpo┼Эton se ─Йi tiu frazo kongruas kun la frazo montrita dum ensaluto.",
"emails.magicSession.optionUrl": "Se vi ne povas ensaluti per la supra butono, bonvolu viziti la jenan ligilon:",
"emails.otpSession.subject": "{{project}} Ensaluto",
"emails.otpSession.hello": "Saluton,",
"emails.otpSession.description": "Enigu la jenan kontrolkodon kiam oni petos ─Эin por sekure ensaluti en vian {{project}} konton. ─Ьi eksvalidi─Эos post 15 minutoj.",
"emails.otpSession.clientInfo": "─Иi tiu ensaluto estis petita per {{agentClient}} en {{agentDevice}} {{agentOs}}. Se vi ne petis la ensaluton, vi povas sekure ignori ─Йi tiun retpo┼Эton.",
"emails.otpSession.securityPhrase": "Sekureca frazo por ─Йi tiu retpo┼Эto estas {{phrase}}. Vi povas fidi ─Йi tiun retpo┼Эton se tiu ─Йi frazo kongruas kun la frazo montrita dum ensaluto.",
"emails.otpSession.thanks": "Dankon,",
"emails.otpSession.signature": "teamo de {{project}}"
"continents.sa": "South America"
}
+21 -38
View File
@@ -2,32 +2,31 @@
"settings.inspire": "\"El arte de ser sabio es el arte de saber qu├й pasar por alto\"",
"settings.locale": "es",
"settings.direction": "ltr",
"emails.sender": "El equipo de {{project}}",
"emails.sender": "Equipo %s",
"emails.verification.subject": "Verificaci├│n de cuenta",
"emails.verification.hello": "Hola, {{name}}.,",
"emails.verification.body": "Haz clic en este enlace para verificar tu correo:",
"emails.verification.hello": "Hola {{name}}",
"emails.verification.body": "Haz clic en este enlace para verificar tu correo.",
"emails.verification.footer": "Si no has solicitado verificar este correo, puedes ignorar este mensaje.",
"emails.verification.thanks": "Gracias.,",
"emails.verification.buttonText": "Confirmar direcci├│n de correo",
"emails.verification.signature": "El equipo de {{project}}.",
"emails.verification.thanks": "Gracias",
"emails.verification.signature": "Equipo de {{project}}",
"emails.magicSession.subject": "Inicio de sesi├│n",
"emails.magicSession.hello": "Hola,",
"emails.magicSession.thanks": "Gracias.,",
"emails.magicSession.signature": "El equipo de {{project}}",
"emails.magicSession.body": "Haz clic en este enlace para iniciar sesi├│n.",
"emails.magicSession.footer": "Si no has solicitado ingresar usando este correo, puedes ignorar este mensaje.",
"emails.magicSession.thanks": "Gracias",
"emails.magicSession.signature": "Equipo de {{project}}",
"emails.recovery.subject": "Restablecer contrase├▒a",
"emails.recovery.hello": "Hola, {{name}}.,",
"emails.recovery.body": "Haz clic en este enlace para restablecer la contrase├▒a de {{project}}:",
"emails.recovery.hello": "Hola {{name}}",
"emails.recovery.body": "Haz clic en este enlace para restablecer la contrase├▒a de {{project}}.",
"emails.recovery.footer": "Si no has solicitado restablecer la contrase├▒a, puedes ignorar este mensaje.",
"emails.recovery.thanks": "Gracias.,",
"emails.recovery.buttonText": "Restablecer contrase├▒a",
"emails.recovery.signature": "El equipo de {{project}}",
"emails.invitation.subject": "Invitaci├│n al equipo {{team}} en {{project}}",
"emails.invitation.hello": "Hola,",
"emails.invitation.body": "Este correo ha sido enviado a petici├│n de {{owner}} qui├йn quiere invitarte a formar parte del equipo {{team}} en {{project}}.",
"emails.invitation.footer": "Si no est├бs interesado, puedes ignorar este mensaje.",
"emails.invitation.thanks": "Gracias.,",
"emails.invitation.buttonText": "Aceptar invitaci├│n a {{team}}",
"emails.invitation.signature": "El equipo de {{project}}",
"emails.recovery.thanks": "Gracias",
"emails.recovery.signature": "Equipo de {{project}}",
"emails.invitation.subject": "Invitaci├│n al equipo %s en %s",
"emails.invitation.hello": "Hola",
"emails.invitation.body": "Este correo ha sido enviado a petici├│n de {{owner}} quien quiere invitarte a formar parte del equipo {{team}} en {{project}}.",
"emails.invitation.footer": "Si no estas interesado, puedes ignorar este mensaje.",
"emails.invitation.thanks": "Gracias",
"emails.invitation.signature": "Equipo de {{project}}",
"locale.country.unknown": "Desconocido",
"countries.af": "Afganist├бn",
"countries.ao": "Angola",
@@ -101,7 +100,6 @@
"countries.gd": "Granada",
"countries.gt": "Guatemala",
"countries.gy": "Guayana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Croacia",
"countries.ht": "Hait├н",
@@ -165,7 +163,6 @@
"countries.nz": "Nueva Zelanda",
"countries.om": "Om├бn",
"countries.pk": "Pakist├бn",
"countries.ps": "Palestina",
"countries.pa": "Panam├б",
"countries.pe": "Per├║",
"countries.ph": "Filipinas",
@@ -209,7 +206,6 @@
"countries.tn": "T├║nez",
"countries.tr": "Turqu├нa",
"countries.tv": "Tuvalu",
"countries.tw": "Taiw├бn",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ucrania",
@@ -232,18 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Am├йrica del Norte",
"continents.oc": "Ocean├нa",
"continents.sa": "Am├йrica del Sur",
"emails.magicSession.optionButton": "Haz clic en el bot├│n de abajo para iniciar sesi├│n de forma segura en tu cuenta de {{project}}. Caducar├б en 1 hora.",
"emails.magicSession.buttonText": "Iniciar sesi├│n en {{project}}",
"emails.magicSession.clientInfo": "Este inicio de sesi├│n fue solicitado usando {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no solicitaste el inicio de sesi├│n, puedes ignorar este correo electr├│nico de forma segura.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "La frase de seguridad para este correo electr├│nico es {{phrase}}. Puedes confiar en este correo electr├│nico si esta frase coincide con la frase que se muestra durante el inicio de sesi├│n.",
"emails.magicSession.optionUrl": "Si no puedes iniciar sesi├│n utilizando el bot├│n anterior, visita el siguiente enlace:",
"emails.otpSession.subject": "Inicio de sesi├│n en {{project}}",
"emails.otpSession.hello": "Hola,",
"emails.otpSession.description": "Ingrese el siguiente c├│digo de verificaci├│n cuando se le solicite para iniciar sesi├│n de forma segura en su cuenta de {{project}}. Expirar├б en 15 minutos.",
"emails.otpSession.clientInfo": "Este inicio de sesi├│n fue solicitado usando {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no solicitaste el inicio de sesi├│n, puedes ignorar este correo electr├│nico de forma segura.",
"emails.otpSession.securityPhrase": "La frase de seguridad para este correo electr├│nico es {{phrase}}. Puedes confiar en este correo si esta frase coincide con la frase mostrada durante el inicio de sesi├│n.",
"emails.otpSession.thanks": "Gracias.,",
"emails.otpSession.signature": "El equipo de {{project}}"
}
"continents.sa": "Am├йrica del Sur"
}
+16 -33
View File
@@ -2,32 +2,31 @@
"settings.inspire": "\"┘З┘Ж╪▒ ╪о╪▒╪п┘Е┘Ж╪п ╪и┘И╪п┘Ж ╪з█М┘Ж ╪з╪│╪к ┌й┘З ╪и╪п╪з┘Ж█М╪п ┌Ж┘З ┌Ж█М╪▓█М ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.\"",
"settings.locale": "fa",
"settings.direction": "rtl",
"emails.sender": "╪к█М┘Е {{project}}",
"emails.sender": "╪к█М┘Е %s",
"emails.verification.subject": "╪к╪г█М█М╪п ╪н╪│╪з╪и",
"emails.verification.hello": "╪│┘Д╪з┘Е {{user}}╪М",
"emails.verification.hello": "╪│┘Д╪з┘Е {{name}}",
"emails.verification.body": "╪и╪▒╪з█М ╪к╪г█М█М╪п ╪з█М┘Е█М┘ДтАМ╪к╪з┘Ж ┘╛█М┘И┘Ж╪п ╪▓█М╪▒ ╪▒╪з ╪п┘Ж╪и╪з┘Д ┌й┘Ж█М╪п.",
"emails.verification.footer": "╪з┌п╪▒ ╪┤┘Е╪з ╪п╪▒╪о┘И╪з╪│╪к ╪к╪г█М█М╪п ╪н╪│╪з╪и ┘Ж╪п╪з╪п┘ЗтАМ╪з█М╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪з█М┘Ж ┘╛█М╪з┘Е ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.",
"emails.verification.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж╪М",
"emails.verification.buttonText": "╪в╪п╪▒╪│ ╪з█М┘Е█М┘Д ╪▒╪з ╪к╪з█М█М╪п ┌й┘Ж█М╪п",
"emails.verification.signature": "╪к█М┘Е {{user}}",
"emails.verification.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж",
"emails.verification.signature": "╪к█М┘Е {{name}}",
"emails.magicSession.subject": "┘И╪▒┘И╪п ╪и┘З ╪н╪│╪з╪и ┌й╪з╪▒╪и╪▒█М",
"emails.magicSession.hello": "╪│┘Д╪з┘Е╪М",
"emails.magicSession.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж╪М",
"emails.magicSession.signature": "╪к█М┘Е {{user}}",
"emails.magicSession.body": "╪и╪▒╪з█М ┘И╪▒┘И╪п ╪и┘З ╪н╪│╪з╪итАМ╪к╪з┘Ж ┘╛█М┘И┘Ж╪п ╪▓█М╪▒ ╪▒╪з ╪п┘Ж╪и╪з┘Д ┌й┘Ж█М╪п.",
"emails.magicSession.footer": "╪з┌п╪▒ ╪┤┘Е╪з ╪п╪▒╪о┘И╪з╪│╪к ┘И╪▒┘И╪п ╪и┘З ╪н╪│╪з╪и ┌й╪з╪▒╪и╪▒█М ╪и╪з ╪з╪│╪к┘Б╪з╪п┘З ╪з╪▓ ╪з█М┘Ж ╪з█М┘Е█М┘Д ╪▒╪з ┘Ж╪п╪з╪птАМ┘ЗтАМ╪з█М╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪з█М┘Ж ┘╛█М╪з┘Е ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.",
"emails.magicSession.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж",
"emails.magicSession.signature": "╪к█М┘Е {{name}}",
"emails.recovery.subject": "╪и╪з╪▓█М╪з╪и█М ┌п╪░╪▒┘И╪з┌Ш┘З",
"emails.recovery.hello": "╪│┘Д╪з┘Е {{user}}╪М",
"emails.recovery.hello": "╪│┘Д╪з┘Е {{name}}",
"emails.recovery.body": "╪и╪▒╪з█М ╪и╪з╪▓█М╪з╪и█М ┌п╪░╪▒┘И╪з┌Ш┘ЗтАМ╪к╪з┘Ж ┘╛█М┘И┘Ж╪п ╪▓█М╪▒ ╪▒╪з ╪п┘Ж╪и╪з┘Д ┌й┘Ж█М╪п.",
"emails.recovery.footer": "╪з┌п╪▒ ╪┤┘Е╪з ╪п╪▒╪о┘И╪з╪│╪к ╪и╪з╪▓█М╪з╪и█М ┌п╪░╪▒┘И╪з┌Ш┘З ┘Ж╪п╪з╪п┘ЗтАМ╪з█М╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪з█М┘Ж ┘╛█М╪з┘Е ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.",
"emails.recovery.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж╪М",
"emails.recovery.buttonText": "╪и╪з╪▓┘Ж╪┤╪з┘Ж█М ╪▒┘Е╪▓ ╪╣╪и┘И╪▒",
"emails.recovery.signature": "╪к█М┘Е {{user}}",
"emails.invitation.subject": "╪п╪╣┘И╪к ╪и┘З ╪к█М┘Е {{team}} ╪п╪▒ {{project}}",
"emails.invitation.hello": "╪│┘Д╪з┘Е╪М",
"emails.recovery.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж",
"emails.recovery.signature": "╪к█М┘Е {{name}}",
"emails.invitation.subject": "╪п╪╣┘И╪к ╪и┘З ╪к█М┘Е %s ╪п╪▒ %s",
"emails.invitation.hello": "╪│┘Д╪з┘Е",
"emails.invitation.body": "╪з█М┘Ж ╪з█М┘Е█М┘Д ╪и╪▒╪з█М ╪┤┘Е╪з ┘Б╪▒╪│╪к╪з╪п┘З ╪┤╪п┘ЗтАМ╪з╪│╪к ╪▓█М╪▒╪з {{owner}} ┘Е█МтАМ╪о┘И╪з┘З╪п ╪┤┘Е╪з ╪▒╪з ╪и┘З ╪к█М┘Е {{team}} ╪п╪▒ ┘╛╪▒┘И┌Ш┘ЗтАМ█М {{project}} ╪и█М┘Б╪▓╪з█М╪п.",
"emails.invitation.footer": "╪з┌п╪▒ ╪╣┘Д╪з┘В┘З ┘Ж╪п╪з╪▒█М╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪з█М┘Ж ┘╛█М╪з┘Е ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.",
"emails.invitation.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж╪М",
"emails.invitation.buttonText": "╪п╪╣┘И╪к ╪▒╪з ╪и┘З {{team}} ╪и┘╛╪░█М╪▒█М╪п",
"emails.invitation.signature": "╪к█М┘Е {{user}}",
"emails.invitation.thanks": "╪│┘╛╪з╪│ ┘Б╪▒╪з┘И╪з┘Ж",
"emails.invitation.signature": "╪к█М┘Е {{name}}",
"locale.country.unknown": "┘Ж╪з╪┤┘Ж╪з╪о╪к┘З",
"countries.af": "╪з┘Б╪║╪з┘Ж╪│╪к╪з┘Ж",
"countries.ao": "╪в┘Ж┌п┘И┘Д╪з",
@@ -101,7 +100,6 @@
"countries.gd": "┌п╪▒┘Ж╪з╪п╪з",
"countries.gt": "┌п┘И╪з╪к┘Е╪з┘Д╪з",
"countries.gy": "┌п┘И█М╪з┘Ж",
"countries.hk": "┘З┘Ж┌п ┌й┘Ж┌п",
"countries.hn": "┘З┘Ж╪п┘И╪▒╪з╪│",
"countries.hr": "┌й╪▒┘И╪з╪│█М",
"countries.ht": "┘З╪з╪ж█М╪к█М",
@@ -165,7 +163,6 @@
"countries.nz": "┘Ж█М┘И╪▓┘Д┘Ж╪п",
"countries.om": "╪╣┘Е╪з┘Ж",
"countries.pk": "┘╛╪з┌й╪│╪к╪з┘Ж",
"countries.ps": "┘Б┘Д╪│╪╖█М┘Ж",
"countries.pa": "┘╛╪з┘Ж╪з┘Е╪з",
"countries.pe": "┘╛╪▒┘И",
"countries.ph": "┘Б█М┘Д█М┘╛█М┘Ж",
@@ -209,7 +206,6 @@
"countries.tn": "╪к┘И┘Ж╪│",
"countries.tr": "╪к╪▒┌й█М┘З",
"countries.tv": "╪к┘И┘И╪з┘Д┘И",
"countries.tw": "╪к╪з█М┘И╪з┘Ж",
"countries.tz": "╪к╪з┘Ж╪▓╪з┘Ж█М╪з",
"countries.ug": "╪з┘И┌п╪з┘Ж╪п╪з",
"countries.ua": "╪з┘И┌й╪▒╪з█М┘Ж",
@@ -232,18 +228,5 @@
"continents.eu": "╪з╪▒┘И┘╛╪з",
"continents.na": "╪в┘Е╪▒█М┌й╪з█М ╪┤┘Е╪з┘Д█М",
"continents.oc": "╪з┘В█М╪з┘Ж┘И╪│█М┘З",
"continents.sa": "╪в┘Е╪▒█М┌й╪з█М ╪м┘Ж┘И╪и█М",
"emails.magicSession.optionButton": "╪и╪▒ ╪▒┘И█М ╪п┌й┘Е┘З ╪▓█М╪▒ ┌й┘Д█М┌й ┌й┘Ж█М╪п ╪к╪з ╪и┘З ╪╡┘И╪▒╪к ╪з┘Е┘Ж ┘И╪з╪▒╪п ╪н╪│╪з╪и {{project}} ╪о┘И╪п ╪┤┘И█М╪п. ╪з█М┘Ж ╪п┌й┘Е┘З █М┌й ╪│╪з╪╣╪к ╪п█М┌п╪▒ ┘Е┘Ж┘В╪╢█М ┘Е█МтАМ╪┤┘И╪п.",
"emails.magicSession.buttonText": "┘И╪▒┘И╪п ╪и┘З {{project}}",
"emails.magicSession.clientInfo": "╪з█М┘Ж ┘И╪▒┘И╪п ╪и┘З ╪│█М╪│╪к┘Е ╪и╪з ╪з╪│╪к┘Б╪з╪п┘З ╪з╪▓ {{agentClient}} ╪п╪▒ {{agentDevice}} {{agentOs}} ╪п╪▒╪о┘И╪з╪│╪к ╪┤╪п┘З ╪з╪│╪к. ╪з┌п╪▒ ╪┤┘Е╪з ╪з█М┘Ж ┘И╪▒┘И╪п ╪и┘З ╪│█М╪│╪к┘Е ╪▒╪з ╪п╪▒╪о┘И╪з╪│╪к ┘Ж┌й╪▒╪п┘ЗтАМ╪з█М╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪и┘З ╪▒╪з╪н╪к█М ╪з█М┘Ж ╪з█М┘Е█М┘Д ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "╪╣╪и╪з╪▒╪к ╪з┘Е┘Ж█М╪к█М ╪и╪▒╪з█М ╪з█М┘Ж ╪з█М┘Е█М┘Д {{phrase}} ╪з╪│╪к. ╪з┌п╪▒ ╪з█М┘Ж ╪╣╪и╪з╪▒╪к ╪и╪з ╪╣╪и╪з╪▒╪к ┘Ж╪┤╪з┘Ж ╪п╪з╪п┘З ╪┤╪п┘З ╪п╪▒ ┘З┘Ж┌п╪з┘Е ┘И╪▒┘И╪п ╪и┘З ╪│█М╪│╪к┘Е ┘Е╪╖╪з╪и┘В╪к ╪п╪з╪┤╪к╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪и┘З ╪з█М┘Ж ╪з█М┘Е█М┘Д ╪з╪╣╪к┘Е╪з╪п ┌й┘Ж█М╪п.",
"emails.magicSession.optionUrl": "╪з┌п╪▒ ┘В╪з╪п╪▒ ╪и┘З ┘И╪▒┘И╪п ╪и╪з ╪з╪│╪к┘Б╪з╪п┘З ╪з╪▓ ╪п┌й┘Е┘З ╪и╪з┘Д╪з ┘Ж█М╪│╪к█М╪п╪М ┘Д╪╖┘Б╪з┘Л ╪з╪▓ ┘Д█М┘Ж┌й ╪▓█М╪▒ ╪п█М╪п┘Ж ┘Б╪▒┘Е╪з█М█М╪п:",
"emails.otpSession.subject": "┘И╪▒┘И╪п {{project}}",
"emails.otpSession.hello": "╪│┘Д╪з┘Е╪М",
"emails.otpSession.description": "┘И┘В╪к█М ╪з╪▓ ╪┤┘Е╪з ╪о┘И╪з╪│╪к┘З ╪┤╪п╪М ┌й╪п ╪к╪г█М█М╪п ╪▓█М╪▒ ╪▒╪з ╪и╪▒╪з█М ┘И╪▒┘И╪п ╪з█М┘Е┘Ж ╪и┘З ╪н╪│╪з╪и ┌й╪з╪▒╪и╪▒█М {{project}} ╪о┘И╪п ┘И╪з╪▒╪п ┌й┘Ж█М╪п. ╪з█М┘Ж ┌й╪п ╪к╪з █▒█╡ ╪п┘В█М┘В┘З ╪п█М┌п╪▒ ┘Е┘Ж┘В╪╢█М ┘Е█МтАМ╪┤┘И╪п.",
"emails.otpSession.clientInfo": "╪з█М┘Ж ┘И╪▒┘И╪п ╪и┘З ╪│█М╪│╪к┘Е ╪и╪з ╪з╪│╪к┘Б╪з╪п┘З ╪з╪▓ {{agentClient}} ╪п╪▒ {{agentDevice}} {{agentOs}} ╪п╪▒╪о┘И╪з╪│╪к ╪┤╪п┘З ╪з╪│╪к. ╪з┌п╪▒ ╪┤┘Е╪з ╪з█М┘Ж ┘И╪▒┘И╪п ╪и┘З ╪│█М╪│╪к┘Е ╪▒╪з ╪п╪▒╪о┘И╪з╪│╪к ┘Ж┌й╪▒╪п┘ЗтАМ╪з█М╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪и┘З ╪▒╪з╪н╪к█М ╪з█М┘Ж ╪з█М┘Е█М┘Д ╪▒╪з ┘Ж╪з╪п█М╪п┘З ╪и┌п█М╪▒█М╪п.",
"emails.otpSession.securityPhrase": "╪╣╪и╪з╪▒╪к ╪з┘Е┘Ж█М╪к█М ╪и╪▒╪з█М ╪з█М┘Ж ╪з█М┘Е█М┘Д {{phrase}} ╪з╪│╪к. ╪з┌п╪▒ ╪з█М┘Ж ╪╣╪и╪з╪▒╪к ╪и╪з ╪╣╪и╪з╪▒╪к ┘Ж╪┤╪з┘Ж ╪п╪з╪п┘З ╪┤╪п┘З ┘З┘Ж┌п╪з┘Е ┘И╪▒┘И╪п ╪и┘З ╪│█М╪│╪к┘Е ┘Е╪╖╪з╪и┘В╪к ╪п╪з╪┤╪к┘З ╪и╪з╪┤╪п╪М ┘Е█МтАМ╪к┘И╪з┘Ж█М╪п ╪и┘З ╪з█М┘Ж ╪з█М┘Е█М┘Д ╪з╪╣╪к┘Е╪з╪п ┌й┘Ж█М╪п.",
"emails.otpSession.thanks": "┘Е╪к╪┤┌й╪▒┘Е╪М",
"emails.otpSession.signature": "╪к█М┘Е {{project}}"
"continents.sa": "╪в┘Е╪▒█М┌й╪з█М ╪м┘Ж┘И╪и█М"
}
+13 -27
View File
@@ -2,28 +2,30 @@
"settings.inspire": "\"The art of being wise is the art of knowing what to overlook.\"",
"settings.locale": "fi",
"settings.direction": "ltr",
"emails.sender": "{{project}} Tiimi",
"emails.sender": "%s Tiimi",
"emails.verification.subject": "",
"emails.verification.hello": ",",
"emails.verification.hello": "",
"emails.verification.body": "",
"emails.verification.footer": "",
"emails.verification.thanks": ",",
"emails.verification.thanks": "",
"emails.verification.signature": "",
"emails.magicSession.subject": "",
"emails.magicSession.hello": ",",
"emails.magicSession.thanks": ",",
"emails.magicSession.hello": "",
"emails.magicSession.body": "",
"emails.magicSession.footer": "",
"emails.magicSession.thanks": "",
"emails.magicSession.signature": "",
"emails.recovery.subject": "",
"emails.recovery.hello": ",",
"emails.recovery.hello": "",
"emails.recovery.body": "",
"emails.recovery.footer": "",
"emails.recovery.thanks": ",",
"emails.recovery.thanks": "",
"emails.recovery.signature": "",
"emails.invitation.subject": "",
"emails.invitation.hello": ",",
"emails.invitation.hello": "",
"emails.invitation.body": "",
"emails.invitation.footer": "",
"emails.invitation.thanks": ",",
"emails.invitation.thanks": "",
"emails.invitation.signature": "",
"locale.country.unknown": "Unknown",
"countries.af": "Afganistan",
@@ -98,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Kroatia",
"countries.ht": "Haiti",
@@ -162,7 +163,6 @@
"countries.nz": "Uusi-Seelanti",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestiina",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filippiinit",
@@ -206,7 +206,6 @@
"countries.tn": "Tunisia",
"countries.tr": "Turkki",
"countries.tv": "Tuvalu",
"countries.tw": "Taiwan",
"countries.tz": "Tansania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",
@@ -229,18 +228,5 @@
"continents.eu": "Eurooppa",
"continents.na": "Pohjois Amerikka",
"continents.oc": "Oceania",
"continents.sa": "Etel├д Amerikka",
"emails.magicSession.optionButton": "Napsauta alla olevaa painiketta kirjautuaksesi turvallisesti {{project}}-tiliisi. Se vanhenee tunnissa.",
"emails.magicSession.buttonText": "Kirjaudu sis├д├дn {{project}}",
"emails.magicSession.clientInfo": "T├дm├д kirjautuminen pyydettiin k├дytt├дen {{agentClient}} {{agentDevice}} {{agentOs}}. Jos et pyyt├дnyt kirjautumista, voit huoletta j├дtt├д├д t├дm├дn s├дhk├╢postin huomiotta.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "T├дm├дn s├дhk├╢postin turvalause on {{phrase}}. Voit luottaa t├дh├дn s├дhk├╢postiin, jos t├дm├д lause vastaa kirjautumisen yhteydess├д n├дytetty├д lausetta.",
"emails.magicSession.optionUrl": "Jos et pysty kirjautumaan sis├д├дn yll├д olevaa painiketta k├дytt├дen, k├дy seuraavassa linkiss├д:",
"emails.otpSession.subject": "{{project}} Kirjautuminen",
"emails.otpSession.hello": "Hei,",
"emails.otpSession.description": "Sy├╢t├д seuraava vahvistuskoodi, kun sinua pyydet├д├дn tekem├д├дn se turvallisesti kirjautuaksesi {{project}}-tilillesi. Se vanhenee 15 minuutin kuluttua.",
"emails.otpSession.clientInfo": "T├дm├д kirjautumispyynt├╢ tehtiin k├дytt├дm├дll├д {{agentClient}} laitteella {{agentDevice}} {{agentOs}}. Jos et pyyt├дnyt kirjautumista, voit huoletta ohittaa t├дm├дn s├дhk├╢postin.",
"emails.otpSession.securityPhrase": "T├дm├дn s├дhk├╢postin turvalause on {{phrase}}. Voit luottaa t├дh├дn s├дhk├╢postiin, jos t├дm├д lause vastaa kirjautumisen yhteydess├д n├дytetty├д lausetta.",
"emails.otpSession.thanks": "Kiitos,",
"emails.otpSession.signature": "{{project}} -tiimi"
}
"continents.sa": "Etel├д Amerikka"
}
+13 -27
View File
@@ -2,28 +2,30 @@
"settings.inspire": "\"Kunstin om at vera v├нs er at vita hvat man skal misr├╕kja.\"",
"settings.locale": "fo",
"settings.direction": "ltr",
"emails.sender": "{{project}} Li├░",
"emails.sender": "%s Li├░",
"emails.verification.subject": "",
"emails.verification.hello": ",",
"emails.verification.hello": "",
"emails.verification.body": "",
"emails.verification.footer": "",
"emails.verification.thanks": ",",
"emails.verification.thanks": "",
"emails.verification.signature": "",
"emails.magicSession.subject": "",
"emails.magicSession.hello": ",",
"emails.magicSession.thanks": ",",
"emails.magicSession.hello": "",
"emails.magicSession.body": "",
"emails.magicSession.footer": "",
"emails.magicSession.thanks": "",
"emails.magicSession.signature": "",
"emails.recovery.subject": "",
"emails.recovery.hello": ",",
"emails.recovery.hello": "",
"emails.recovery.body": "",
"emails.recovery.footer": "",
"emails.recovery.thanks": ",",
"emails.recovery.thanks": "",
"emails.recovery.signature": "",
"emails.invitation.subject": "",
"emails.invitation.hello": ",",
"emails.invitation.hello": "",
"emails.invitation.body": "",
"emails.invitation.footer": "",
"emails.invitation.thanks": ",",
"emails.invitation.thanks": "",
"emails.invitation.signature": "",
"locale.country.unknown": "├Уkjent",
"countries.af": "Afghanistan",
@@ -98,7 +100,6 @@
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Gujana",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Kroatia",
"countries.ht": "Haiti",
@@ -162,7 +163,6 @@
"countries.nz": "N├╜s├жland",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestina",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filipsoyggjar",
@@ -206,7 +206,6 @@
"countries.tn": "Tunesia",
"countries.tr": "Turkaland",
"countries.tv": "Tuvalu",
"countries.tw": "Taivan",
"countries.tz": "Tansania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",
@@ -229,18 +228,5 @@
"continents.eu": "Europa",
"continents.na": "Nor├░uramerika",
"continents.oc": "Kyrrahavsoyggjarnar",
"continents.sa": "Su├░uramerika",
"emails.magicSession.optionButton": "Tr├╜st ├б kn├╕ttin ni├░anfyri fyri at rita trygt inn ├б t├нna {{project}} konto. Ta├░ fer at ganga ├║t um 1 t├нma.",
"emails.magicSession.buttonText": "Innrita ├б {{project}}",
"emails.magicSession.clientInfo": "Hetta innritingarbei├░i├░ var├░ umbi├░i├░ vi├░ {{agentClient}} ├б {{agentDevice}} {{agentOs}}. Um t├║ ikki ba├░ um innritingina, kanst t├║ trygt ignoreri hendan teldupostin.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Trygdaror├░i├░ fyri hesa teldupostadressuna er {{phrase}}. T├║ kanst l├нta ├б hesa teldupostadressu, um hetta or├░i├░ samsvarar vi├░ or├░i├░ v├нst t├б t├║ rita├░i inn.",
"emails.magicSession.optionUrl": "Um t├║ ikki f├жrt innrita├░ vi├░ at br├║ka kn├╕ttin omanfyri, vinarliga vitja hesa leinkjuna:",
"emails.otpSession.subject": "{{project}} Ritarinn",
"emails.otpSession.hello": "Hallo,",
"emails.otpSession.description": "Skriva hesa v├бttanarkotu t├б t├║ ver├░ur bi├░in um ta├░, fyri at rita trygt inn ├б t├нn {{project}} konto. Hon gongur ├║t um 15 minuttir.",
"emails.otpSession.clientInfo": "Hendan innrita├░ var├░ umbidin vi├░ {{agentClient}} ├б {{agentDevice}} {{agentOs}}. Um t├║ ikki hevur umbi├░i├░ innritingina, kanst t├║ trygt ignorera hesa teldupostin.",
"emails.otpSession.securityPhrase": "Trygdaror├░i├░ fyri hesa teldupostin er {{phrase}}. T├║ kanst l├нta ├б hesa teldupostin um hetta or├░i├░ passar vi├░ or├░i├░ v├нst t├б t├║ rita├░i inn.",
"emails.otpSession.thanks": "Takk,",
"emails.otpSession.signature": "{{project}} li├░"
}
"continents.sa": "Su├░uramerika"
}
+18 -29
View File
@@ -2,32 +2,37 @@
"settings.inspire": "\"L'art d'├кtre sage est l'art de savoir quoi n├йgliger.\"",
"settings.locale": "fr",
"settings.direction": "ltr",
"emails.sender": "├Йquipe {{project}}",
"emails.sender": "├Йquipe %s",
"emails.verification.subject": "V├йrification du compte",
"emails.verification.hello": "Bonjour {{user}},",
"emails.verification.hello": "Bonjour {{name}}",
"emails.verification.body": "Suivez ce lien pour v├йrifier votre adresse e-mail.",
"emails.verification.footer": "Si vous n'avez pas demand├й ├а v├йrifier cette adresse, vous pouvez ignorer ce message.",
"emails.verification.thanks": "Merci,",
"emails.verification.buttonText": "Confirmez l'adresse e-mail",
"emails.verification.thanks": "Merci",
"emails.verification.signature": "├Йquipe {{project}}",
"emails.magicSession.subject": "Connexion",
"emails.magicSession.hello": "Bonjour,",
"emails.magicSession.thanks": "Merci,",
"emails.magicSession.body": "Suivez ce lien pour vous connecter.",
"emails.magicSession.footer": "Si vous n'avez pas demand├й ├а vous connecter en utilisant cet e-mail, vous pouvez ignorer ce message.",
"emails.magicSession.thanks": "Merci",
"emails.magicSession.signature": "L'├йquipe {{project}}",
"emails.recovery.subject": "R├йinitialisation du mot de passe",
"emails.recovery.hello": "Bonjour {{user}},",
"emails.recovery.hello": "Bonjour {{name}}",
"emails.recovery.body": "Suivez ce lien pour r├йinitialiser votre mot de passe pour {{project}}.",
"emails.recovery.footer": "Si vous n'avez pas demand├й ├а r├йinitialiser votre mot de passe, vous pouvez ignorer ce message.",
"emails.recovery.thanks": "Merci,",
"emails.recovery.buttonText": "R├йinitialisation du mot de passe",
"emails.recovery.thanks": "Merci",
"emails.recovery.signature": "L'├йquipe {{project}}",
"emails.invitation.subject": "Invitation ├а l'├йquipe {{team}} de {{project}}",
"emails.invitation.hello": "Bonjour,",
"emails.invitation.subject": "Invitation ├а l'├йquipe %s de %s",
"emails.invitation.hello": "Bonjour",
"emails.invitation.body": "Cet e-mail vous a ├йt├й envoy├й parce que {{owner}} souhaite vous inviter ├а devenir membre de l'├йquipe {{team}} pour {{project}}.",
"emails.invitation.footer": "Si vous n'├кtes pas int├йress├й, vous pouvez ignorer ce message.",
"emails.invitation.thanks": "Merci,",
"emails.invitation.buttonText": "Accepter l'invitation ├а {{team}}",
"emails.invitation.thanks": "Merci",
"emails.invitation.signature": "L'├йquipe {{project}}",
"emails.certificate.subject": "├Йchec du certificat pour %s",
"emails.certificate.hello": "Bonjour",
"emails.certificate.body": "Le certificate pour votre domaine '{{domain}}' n'a pas pu ├кtre g├йn├йr├й. Ceci est la tentative {{attempt}} et l'├йchec a ├йt├й caus├й par : {{error}}",
"emails.certificate.footer": "Votre certificat pr├йc├йdent sera valide pendant 30 jours ├а compter de la premi├иre d├йfaillance. Nous vous recommandons fortement d'enqu├кter sur ce cas, sinon votre domaine se retrouvera sans communication SSL valide.",
"emails.certificate.thanks": "Merci",
"emails.certificate.signature": "L'├йquipe {{project}}",
"locale.country.unknown": "Inconnu",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
@@ -101,7 +106,6 @@
"countries.gd": "Grenade",
"countries.gt": "Guatemala",
"countries.gy": "Guyane",
"countries.hk": "Hong Kong",
"countries.hn": "Honduras",
"countries.hr": "Croatie",
"countries.ht": "Ha├пti",
@@ -165,7 +169,6 @@
"countries.nz": "Nouvelle-Z├йlande",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.ps": "Palestine",
"countries.pa": "Panama",
"countries.pe": "P├йrou",
"countries.ph": "Philippines",
@@ -209,7 +212,6 @@
"countries.tn": "Tunisie",
"countries.tr": "Turquie",
"countries.tv": "Tuvalu",
"countries.tw": "Ta├пwan",
"countries.tz": "Tanzanie",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
@@ -232,18 +234,5 @@
"continents.eu": "Europe",
"continents.na": "Am├йrique du Nord",
"continents.oc": "Oc├йanie",
"continents.sa": "Am├йrique du Sud",
"emails.magicSession.optionButton": "Cliquez sur le bouton ci-dessous pour vous connecter en toute s├йcurit├й ├а votre compte {{project}}. Il expirera dans 1 heure.",
"emails.magicSession.buttonText": "Connectez-vous ├а {{project}}",
"emails.magicSession.optionUrl": "Si le bouton ci-dessus ne s'affiche pas, utilisez le lien suivant :",
"emails.magicSession.clientInfo": "Cette connexion a ├йt├й demand├йe en utilisant {{agentClient}} sur {{agentDevice}} {{agentOs}}. Si vous n'avez pas demand├й cette connexion, vous pouvez ignorer cet email en toute s├йcurit├й.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "La phrase de s├йcurit├й pour cet email est {{phrase}}. Vous pouvez faire confiance ├а cet email si cette phrase correspond ├а celle affich├йe lors de la connexion.",
"emails.otpSession.subject": "Connexion {{project}}",
"emails.otpSession.hello": "Bonjour,",
"emails.otpSession.description": "Entrez le code de v├йrification suivant lorsque cela vous sera demand├й pour vous connecter en toute s├йcurit├й ├а votre compte {{project}}. Il expirera dans 15 minutes.",
"emails.otpSession.clientInfo": "Cette connexion a ├йt├й demand├йe en utilisant {{agentClient}} sur {{agentDevice}} {{agentOs}}. Si vous n'avez pas demand├й cette connexion, vous pouvez ignorer cet e-mail en toute s├йcurit├й.",
"emails.otpSession.securityPhrase": "La phrase de s├йcurit├й pour cet e-mail est {{phrase}}. Vous pouvez faire confiance ├а cet e-mail si cette phrase correspond ├а celle affich├йe lors de la connexion.",
"emails.otpSession.thanks": "Merci,",
"emails.otpSession.signature": "├йquipe {{project}}"
"continents.sa": "Am├йrique du Sud"
}
+13 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"Is ├н eala├нn na cr├нonnachta n├б ruda├н a aithint chun cluas bhodhar a thabhairt d├│ibh.\"",
"settings.locale": "ga",
"settings.direction": "ltr",
"emails.sender": "{{project}} Foireann",
"emails.sender": "%s Foireann",
"emails.verification.subject": "F├нoraithe cuntais",
"emails.verification.hello": "Haigh {{user}},",
"emails.verification.hello": "Haigh {{name}}",
"emails.verification.body": "Lean an nasc seo chun do r├нomhphost a fh├нor├║.",
"emails.verification.footer": "Mura ndearna t├║ iarratas an seoladh seo a fh├нoru, d├йan neamhaird den teachtaireacht seo.",
"emails.verification.thanks": "Go raibh maith agat,",
"emails.verification.buttonText": "Deimhnigh seoladh r├нomhphoist",
"emails.verification.thanks": "Go raibh maith agat",
"emails.verification.signature": "{{project}} foireann",
"emails.magicSession.subject": "Log├бil isteach",
"emails.magicSession.hello": "Haigh,",
"emails.magicSession.thanks": "Go raibh maith agat,",
"emails.magicSession.body": "Lean an nasc seo chun log├бil isteach.",
"emails.magicSession.footer": "Mura ndearna t├║ iarratas log├бil isteach leis an r├нomhphost seo, d├йan neamhaird den teachtaireacht seo.",
"emails.magicSession.thanks": "Go raibh maith agat",
"emails.magicSession.signature": "{{project}} foireann",
"emails.recovery.subject": "Athshocr├║ pasfhocail",
"emails.recovery.hello": "Haigh {{user}},",
"emails.recovery.hello": "Haigh {{name}}",
"emails.recovery.body": "Lean an nasc seo chun do pasfhocal {{project}} a athshocr├║.",
"emails.recovery.footer": "Mura ndearna t├║ iarratas do pasfhocal a athshocr├║, d├йan neamhaird den teachtaireacht seo.",
"emails.recovery.thanks": "Go raibh maith agat,",
"emails.recovery.buttonText": "Athshocraigh focal faire",
"emails.recovery.thanks": "Go raibh maith agat",
"emails.recovery.signature": "{{project}} foireann",
"emails.invitation.subject": "Cuireadh do {{team}} foireann ag {{project}}",
"emails.invitation.hello": "Haigh,",
"emails.invitation.body": "Seoladh an r├нomhphost seo chugat mar ba mhaith le {{owner}} cuireadh a thabhairt duit bheith mar bhall den fhoireann {{team}} ag obair ar {{project}}.",
"emails.invitation.subject": "Cuireadh do %s foireann ag %s",
"emails.invitation.hello": "Haigh",
"emails.invitation.body": "Seoladh an r├нomhphost seo chugat mar ba mhaith le {{owner}} cuireadh a thabhairt duit bheith mar bhall den fhoireann {{team}} ag obair ar {{project}}.",
"emails.invitation.footer": "Is cuma leat? D├йan neamhaird den teachtaireacht seo.",
"emails.invitation.thanks": "Go raibh maith agat,",
"emails.invitation.buttonText": "Glac le cuireadh chuig {{team}}",
"emails.invitation.thanks": "Go raibh maith agat",
"emails.invitation.signature": "{{project}} foireann",
"locale.country.unknown": "Neamhaithnid",
"countries.af": "An Afganast├бin",
@@ -101,7 +100,6 @@
"countries.gd": "Grean├бda",
"countries.gt": "Guatamala",
"countries.gy": "An Ghu├бin",
"countries.hk": "Hong Kong",
"countries.hn": "Hond├║ras",
"countries.hr": "An Chr├│it",
"countries.ht": "H├б├нt├н",
@@ -165,7 +163,6 @@
"countries.nz": "An Nua-Sh├йalainn",
"countries.om": "├Уman",
"countries.pk": "An Phacast├бin",
"countries.ps": "An Phalaist├нn",
"countries.pa": "Panama",
"countries.pe": "Peiri├║",
"countries.ph": "Na hOile├бin Fhilip├нneacha",
@@ -209,7 +206,6 @@
"countries.tn": "An T├║in├йis",
"countries.tr": "An Tuirc",
"countries.tv": "T├║val├║",
"countries.tw": "An T├йav├бin",
"countries.tz": "An Tans├бin",
"countries.ug": "Uganda",
"countries.ua": "An ├Ъcr├бin",
@@ -232,18 +228,5 @@
"continents.eu": "An Eoraip",
"continents.na": "Meirice├б Thuaidh",
"continents.oc": "An Aig├йine",
"continents.sa": "Meirice├б Theas",
"emails.magicSession.optionButton": "Clice├бil ar an gcnaipe th├нos le s├нn├н isteach go s├бbh├бilte i do chuntas {{project}}. Rachaidh s├й in ├йag i gceann 1 uair.",
"emails.magicSession.buttonText": "S├нnigh isteach i {{project}}",
"emails.magicSession.clientInfo": "Rinneadh an log├бil isteach seo a iarraidh ag baint ├║s├бide as {{agentClient}} ar {{agentDevice}} {{agentOs}}. Mura ndearna t├║ an log├бil isteach a iarraidh, is f├йidir leat neamhaird s├бbh├бilte a dh├йanamh den r├нomhphost seo.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "Is ├й an abairt sl├бnd├бla don r├нomhphost seo n├б {{phrase}}. Is f├йidir muin├нn a bheith agat as an r├нomhphost seo m├б mheaitse├бlann an abairt seo leis an abairt a taispe├бntar le linn s├нnithe isteach.",
"emails.magicSession.optionUrl": "Mura bhfuil t├║ in ann s├нni├║ isteach ag baint ├║s├бid as an gcnaipe thuas, t├йigh chuig an nasc seo a leanas:",
"emails.otpSession.subject": "Login {{project}}",
"emails.otpSession.hello": "Dia dhuit,",
"emails.otpSession.description": "Iontr├бil an c├│d f├нoraithe seo a leanas nuair a iarrtar ort chun s├нn├н isteach go sl├бn ar do chuntas {{project}}. Rachaidh s├й in ├йag i gceann 15 n├│im├йad.",
"emails.otpSession.clientInfo": "Rinneadh an iarratas seo chun s├нni├║ isteach ag baint ├║s├бide as {{agentClient}} ar {{agentDevice}} {{agentOs}}. Mura ndearna t├║ an iarratas chun s├нni├║ isteach, is f├йidir leat an r├нomhphost seo a neamhaird go s├бbh├бilte.",
"emails.otpSession.securityPhrase": "Fr├бsa sl├бnd├бla don r├нomhphost seo n├б {{phrase}}. Is f├йidir muin├нn a bheith agat as an r├нomhphost seo m├б mheaitse├бlann an fr├бsa seo leis an bhfr├бsa a taispe├бntar le linn s├нni├║ isteach.",
"emails.otpSession.thanks": "Go raibh maith agat,",
"emails.otpSession.signature": "foireann {{project}}"
"continents.sa": "Meirice├б Theas"
}
+13 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"рк╕рлНркорк╛рк░рлНркЯ ркмркирк╡рк╛ркирлА ркХрк│рк╛ ркП ркЫрлЗ ркХрлЗ рк╢рлБркВ ркЕрк╡ркЧркгрк╡рлБркВ ркдрлЗ ркЬрк╛ркгрк╡рк╛ркирлА ркХрк│рк╛ ркЫрлЗ.\"",
"settings.locale": "gu",
"settings.direction": "ltr",
"emails.sender": "{{project}} ркЯрлАрко",
"emails.sender": "%s ркЯрлАрко",
"emails.verification.subject": "ркЦрк╛ркдрк╛ркирлА ркЪркХрк╛рк╕ркгрлА",
"emails.verification.hello": "ркиркорк╕рлНркХрк╛рк░ {{user}},",
"emails.verification.hello": "ркиркорк╕рлНркХрк╛рк░ {{name}}",
"emails.verification.body": "ркдркорк╛рк░рлБркВ ркЗркорлЗркЗрк▓ рк╕рк░ркирк╛ркорлБркВ ркЪркХрк╛рк╕рк╡рк╛ ркорк╛ркЯрлЗ ркЖ рк▓рк┐ркВркХркирлЗ ркЕркирлБрк╕рк░рлЛ.",
"emails.verification.footer": "ркЬрлЛ ркдркорлЗ ркЖ рк╕рк░ркирк╛ркорк╛ркВркирлА ркЪркХрк╛рк╕ркгрлА ркХрк░рк╡рк╛ркирлБркВ рки ркХрк╣рлНркпрлБркВ рк╣рлЛркп, ркдрлЛ ркдркорлЗ ркЖ рк╕ркВркжрлЗрк╢ркирлЗ ркЕрк╡ркЧркгрлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.verification.thanks": "ркЖркнрк╛рк░,",
"emails.verification.buttonText": "ркЗркорлЗркЗрк▓ рк╕рк░ркирк╛ркорлБркВ ркЦрк╛ркдрк░рлА ркХрк░рлЛ",
"emails.verification.thanks": "ркЖркнрк╛рк░",
"emails.verification.signature": "{{project}} ркЯрлАрко",
"emails.magicSession.subject": "рккрлНрк░рк╡рлЗрк╢ ркХрк░рлЛ",
"emails.magicSession.hello": "ркиркорк╕рлНркХрк╛рк░,",
"emails.magicSession.thanks": "ркЖркнрк╛рк░,",
"emails.magicSession.body": "рккрлНрк░рк╡рлЗрк╢ ркХрк░рк╡рк╛ ркорк╛ркЯрлЗ ркЖ рк▓рк┐ркВркХркирлЗ ркЕркирлБрк╕рк░рлЛ.",
"emails.magicSession.footer": "ркЬрлЛ ркдркорлЗ ркЖ ркЗркорлЗркЗрк▓ркирлЛ ркЙрккркпрлЛркЧ ркХрк░рлАркирлЗ рккрлНрк░рк╡рлЗрк╢ ркХрк░рк╡рк╛ркирлБркВ рки ркХрк╣рлНркпрлБркВ рк╣рлЛркп, ркдрлЛ ркдркорлЗ ркЖ рк╕ркВркжрлЗрк╢ркирлЗ ркЕрк╡ркЧркгрлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.magicSession.thanks": "ркЖркнрк╛рк░",
"emails.magicSession.signature": "{{project}} ркЯрлАрко",
"emails.recovery.subject": "рккрк╛рк╕рк╡рк░рлНркб рклрк░рлАркерлА рк╕рлЗркЯ ркХрк░рлЛ",
"emails.recovery.hello": "ркиркорк╕рлНркХрк╛рк░ {{user}},",
"emails.recovery.hello": "ркиркорк╕рлНркХрк╛рк░ {{name}}",
"emails.recovery.body": "ркдркорк╛рк░рлЛ {{project}} рккрк╛рк╕рк╡рк░рлНркб рклрк░рлАркерлА рк╕рлЗркЯ ркХрк░рк╡рк╛ ркорк╛ркЯрлЗ ркЖ рк▓рк┐ркВркХркирлЗ ркЕркирлБрк╕рк░рлЛ.",
"emails.recovery.footer": "ркЬрлЛ ркдркорлЗ ркдркорк╛рк░рлЛ рккрк╛рк╕рк╡рк░рлНркб рклрк░рлАркерлА рк╕рлЗркЯ ркХрк░рк╡рк╛ркирлБркВ рки ркХрк╣рлНркпрлБркВ рк╣рлЛркп, ркдрлЛ ркдркорлЗ ркЖ рк╕ркВркжрлЗрк╢ркирлЗ ркЕрк╡ркЧркгрлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.recovery.thanks": "ркЖркнрк╛рк░,",
"emails.recovery.buttonText": "рккрк╛рк╕рк╡рк░рлНркб рк░рлАрк╕рлЗркЯ ркХрк░рлЛ",
"emails.recovery.thanks": "ркЖркнрк╛рк░",
"emails.recovery.signature": "{{project}} ркЯрлАрко",
"emails.invitation.subject": "{{team}} ркЯрлАркоркирлЗ {{project}} рккрк░ ркЖркоркВркдрлНрк░ркг",
"emails.invitation.hello": "ркиркорк╕рлНркХрк╛рк░,",
"emails.invitation.subject": "%s ркЯрлАркоркирлЗ %s рккрк░ ркЖркоркВркдрлНрк░ркг",
"emails.invitation.hello": "ркиркорк╕рлНркХрк╛рк░",
"emails.invitation.body": "ркЖ ркорлЗркЗрк▓ ркдркоркирлЗ ркорлЛркХрк▓рк╡рк╛ркорк╛ркВ ркЖрк╡рлНркпрлЛ рк╣ркдрлЛ ркХрк╛рк░ркг ркХрлЗ {{owner}} ркдркоркирлЗ {{project}} ркорк╛ркВ {{team}} ркЯрлАркоркирк╛ рк╕ркнрлНркп ркмркирк╡рк╛ ркорк╛ркЯрлЗ ркЖркоркВркдрлНрк░рк┐ркд ркХрк░рк╡рк╛ ркорк╛ркВркЧркдрк╛ рк╣ркдрлЛ.",
"emails.invitation.footer": "ркЬрлЛ ркдркоркирлЗ рк░рк╕ ркиркерлА, ркдрлЛ ркдркорлЗ ркЖ рк╕ркВркжрлЗрк╢ркирлЗ ркЕрк╡ркЧркгрлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.invitation.thanks": "ркЖркнрк╛рк░,",
"emails.invitation.buttonText": "{{team}} ркирлБркВ ркЖркоркВркдрлНрк░ркг рк╕рлНрк╡рлАркХрк╛рк░рлЛ",
"emails.invitation.thanks": "ркЖркнрк╛рк░",
"emails.invitation.signature": "{{project}} ркЯрлАрко",
"locale.country.unknown": "ркЕркЬрк╛ркг",
"countries.af": "ркЕрклркШрк╛ркирк┐рк╕рлНркдрк╛рки",
@@ -101,7 +100,6 @@
"countries.gd": "ркЧрлНрк░рлЗркирк╛ркбрк╛",
"countries.gt": "ркЧрлНрк╡рк╛ркЯрлЗркорк╛рк▓рк╛",
"countries.gy": "ркЧрлБркпрк╛ркирк╛",
"countries.hk": "рк╣рлЛркВркЧ ркХрлЛркВркЧ",
"countries.hn": "рк╣рлЛркирлНркбрлБрк░рк╛рк╕",
"countries.hr": "ркХрлНрк░рлЛркПрк╢рк┐ркпрк╛",
"countries.ht": "рк╣рлИркдрлА",
@@ -165,7 +163,6 @@
"countries.nz": "ркирлНркпрлБркЭрлАрк▓рлЗркирлНркб",
"countries.om": "ркУркорк╛рки",
"countries.pk": "рккрк╛ркХрк┐рк╕рлНркдрк╛рки",
"countries.ps": "рккрлЗрк▓рлЗрк╕рлНркЯрк╛ркЗрки",
"countries.pa": "рккркирк╛ркорк╛",
"countries.pe": "рккрлЗрк░рлБ",
"countries.ph": "рклрк┐рк▓рк┐рккрк╛ркЗркирлНрк╕",
@@ -209,7 +206,6 @@
"countries.tn": "ркЯрлНркпрлБркирк┐рк╢рк┐ркпрк╛",
"countries.tr": "ркдрлБрк░рлНркХрлА",
"countries.tv": "ркдрлБрк╡рк╛рк▓рлБ",
"countries.tw": "ркдрк╛ркЗрк╡рк╛рки",
"countries.tz": "ркдрк╛ркВркЭрк╛ркирк┐ркпрк╛",
"countries.ug": "ркпрлБркЧрк╛ркирлНркбрк╛",
"countries.ua": "ркпрлБркХрлНрк░рлЗрки",
@@ -232,18 +228,5 @@
"continents.eu": "ркпрлБрк░рлЛркк",
"continents.na": "ркЙркдрлНркдрк░ ркЕркорлЗрк░рк┐ркХрк╛",
"continents.oc": "ркУрк╢ркирк┐ркпрк╛",
"continents.sa": "ркжркХрлНрк╖рк┐ркг ркЕркорлЗрк░рк┐ркХрк╛",
"emails.magicSession.optionButton": "ркирлАркЪрлЗ ркЖрккрлЗрк▓ ркмркЯрки рккрк░ ркХрлНрк▓рк┐ркХ ркХрк░рлЛ ркдркорк╛рк░рк╛ {{project}} ркЦрк╛ркдрк╛ркорк╛ркВ рк╕рлБрк░ркХрлНрк╖рк┐ркд рк░рлАркдрлЗ рк╕рк╛ркЗрки ркИрки ркХрк░рк╡рк╛ ркорк╛ркЯрлЗ. ркдрлЗ 1 ркХрк▓рк╛ркХркорк╛ркВ рк╕ркорк╛рккрлНркд ркеркИ ркЬрк╢рлЗ.",
"emails.magicSession.buttonText": "рк╕рк╛ркЗрки ркЗрки ркХрк░рлЛ {{project}}",
"emails.magicSession.clientInfo": "ркЖ рк╕рк╛ркЗрки ркЗрки рк╡рк┐ркиркВркдрлА {{agentClient}} ркирлЛ ркЙрккркпрлЛркЧ ркХрк░рлАркирлЗ {{agentDevice}} {{agentOs}} рккрк░ ркХрк░рк╡рк╛ркорк╛ркВ ркЖрк╡рлА рк╣ркдрлА. ркЬрлЛ ркдркорлЗ рк╕рк╛ркЗрки ркЗркиркирлА рк╡рк┐ркиркВркдрлА ркХрк░рлА рки рк╣рлЛркп, ркдрлЛ ркЖ ркЗркорлЗркЗрк▓ркирлЗ рк╕рк▓рк╛ркоркд рк░рлАркдрлЗ ркЕрк╡ркЧркгрлА рк╢ркХрлЛ ркЫрлЛ.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "ркЖ ркЗркорлЗркЗрк▓ ркорк╛ркЯрлЗркирлБркВ рк╕рлБрк░ркХрлНрк╖рк╛ рк╡рк╛ркХрлНркп {{phrase}} ркЫрлЗ. ркЬрлЛ ркЖ рк╡рк╛ркХрлНркп рк╕рк╛ркЗрки ркЗрки ркжрк░ркорк┐ркпрк╛рки ркжрк░рлНрк╢рк╛рк╡рлЗрк▓рк╛ рк╡рк╛ркХрлНркп рк╕рк╛ркерлЗ ркорлЗрк│ ркЦрк╛ркп ркдрлЛ ркдркорлЗ ркЖ ркЗркорлЗркЗрк▓ рккрк░ рк╡рк┐рк╢рлНрк╡рк╛рк╕ ркХрк░рлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.magicSession.optionUrl": "ркЬрлЛ ркдркорлЗ ркЙрккрк░ркирлА ркмркЯркиркирлЛ ркЙрккркпрлЛркЧ ркХрк░рлАркирлЗ рк╕рк╛ркЗрки ркЗрки ркХрк░рлА рк╢ркХркдрк╛ ркиркерлА, ркХрлГрккрк╛ ркХрк░рлАркирлЗ ркирлАркЪрлЗркирлА рк▓рк┐ркВркХ рккрк░ ркЬрк╛ркУ:",
"emails.otpSession.subject": "{{project}} рк▓рлЙркЧрк┐рки",
"emails.otpSession.hello": "рк╣рлЗрк▓рлЛ,",
"emails.otpSession.description": "ркЬрлНркпрк╛рк░рлЗ ркдркоркирлЗ ркдркорк╛рк░рк╛ {{project}} ркЦрк╛ркдрк╛ркорк╛ркВ рк╕рлБрк░ркХрлНрк╖рк┐ркд рк░рлАркдрлЗ рк╕рк╛ркЗрки ркЗрки ркХрк░рк╡рк╛ ркорк╛ркЯрлЗ ркХрк╣рлЗрк╡рк╛ркп ркдрлНркпрк╛рк░рлЗ ркирлАркЪрлЗ ркЖрккрлЗрк▓рлЛ ркЪркХрк╛рк╕ркгрлА ркХрлЛркб ркжрк╛ркЦрк▓ ркХрк░рлЛ. ркдрлЗ 15 ркорк┐ркирк┐ркЯркорк╛ркВ рк╕ркорк╛рккрлНркд ркеркИ ркЬрк╢рлЗ.",
"emails.otpSession.clientInfo": "ркЖ рк╕рк╛ркЗрки ркЗркиркирлА рк╡рк┐ркиркВркдрлА {{agentClient}} ркирлЛ ркЙрккркпрлЛркЧ ркХрк░рлАркирлЗ {{agentDevice}} {{agentOs}} рккрк░ ркеркИ ркЫрлЗ. ркЬрлЛ ркдркорлЗ рк╕рк╛ркЗрки ркЗркиркирлА рк╡рк┐ркиркВркдрлА ркХрк░рлА рки рк╣рлЛркп, ркдрлЛ ркЖ ркИркорлЗрк▓ркирлЗ рк╕рлБрк░ркХрлНрк╖рк┐ркд рк░рлАркдрлЗ ркЕрк╡ркЧркгрлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.otpSession.securityPhrase": "ркЖ ркЗркорлЗркЗрк▓ ркорк╛ркЯрлЗркирлЛ рк╕рлБрк░ркХрлНрк╖рк╛ рк╢ркмрлНркж {{phrase}} ркЫрлЗ. ркЬрлЛ ркЖ рк╢ркмрлНркж рк╕рк╛ркЗрки ркЗрки рк╡ркЦркдрлЗ ркжрк░рлНрк╢рк╛рк╡рлЗрк▓рк╛ рк╢ркмрлНркж рк╕рк╛ркерлЗ ркорлЗрк│ ркЦрк╛ркдрлЛ рк╣рлЛркп ркдрлЛ ркдркорлЗ ркЖ ркЗркорлЗркЗрк▓ рккрк░ рк╡рк┐рк╢рлНрк╡рк╛рк╕ ркХрк░рлА рк╢ркХрлЛ ркЫрлЛ.",
"emails.otpSession.thanks": "ркЖркнрк╛рк░,",
"emails.otpSession.signature": "{{project}} ркЯрлАрко"
}
"continents.sa": "ркжркХрлНрк╖рк┐ркг ркЕркорлЗрк░рк┐ркХрк╛"
}
+13 -30
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"╫Ь╫Ф╫Щ╫Х╫к ╫Ч╫Ы╫Э ╫Ц╫Ф ╫Ь╫У╫в╫к ╫Ю╫Ю╫Ф ╫Ь╫Ф╫к╫в╫Ь╫Э.\"",
"settings.locale": "he",
"settings.direction": "rtl",
"emails.sender": "╫ж╫Х╫Х╫к {{project}}",
"emails.sender": "╫ж╫Х╫Х╫к %s",
"emails.verification.subject": "╫Р╫Щ╫Ю╫Х╫к ╫Ч╫й╫С╫Х╫Я",
"emails.verification.hello": "╫й╫Ь╫Х╫Э {{user}},",
"emails.verification.hello": "╫й╫Ь╫Х╫Э {{name}}",
"emails.verification.body": "╫Ь╫Ч╫е ╫в╫Ь ╫з╫Щ╫й╫Х╫и ╫Ц╫Ф ╫Ы╫У╫Щ ╫Ь╫Р╫Ю╫к ╫Р╫к ╫Ы╫к╫Х╫С╫к ╫Ф╫У╫Х╫Р\"╫Ь ╫й╫Ь╫Ъ.",
"emails.verification.footer": "╫Р╫Э ╫Ь╫Р ╫С╫Щ╫з╫й╫к ╫Ь╫Р╫Ю╫к ╫Ы╫к╫Х╫С╫к ╫Ц╫Х, ╫к╫Х╫Ы╫Ь ╫Ь╫Ф╫к╫в╫Ь╫Э ╫Ю╫Ф╫Х╫У╫в╫Ф ╫Ц╫Х.",
"emails.verification.thanks": "╫к╫Х╫У╫Ф,",
"emails.verification.buttonText": "╫Р╫й╫и ╫Ы╫к╫Х╫С╫к ╫У╫Х╫Р\"╫Ь",
"emails.verification.thanks": "╫к╫Х╫У╫Ф",
"emails.verification.signature": "╫ж╫Х╫Х╫к {{project}}",
"emails.magicSession.subject": "╫Ы╫а╫Щ╫б╫Ф ╫Ь╫Ю╫в╫и╫Ы╫к",
"emails.magicSession.hello": "╫й╫Ь╫Х╫Э,",
"emails.magicSession.thanks": "╫к╫Х╫У╫Ф,",
"emails.magicSession.body": "╫Ь╫Ч╫е ╫в╫Ь ╫з╫Щ╫й╫Х╫и ╫Ц╫Ф ╫Ы╫У╫Щ ╫Ь╫Ф╫Щ╫Ы╫а╫б.",
"emails.magicSession.footer": "╫Р╫Э ╫Ь╫Р ╫С╫Щ╫з╫й╫к ╫Ь╫Ф╫Щ╫Ы╫а╫б ╫С╫Р╫Ю╫ж╫в╫Х╫к ╫У╫Х╫Р\"╫Ь ╫Ц╫Ф, ╫к╫Х╫Ы╫Ь ╫Ь╫Ф╫к╫в╫Ь╫Э ╫Ю╫Ф╫Х╫У╫в╫Ф ╫Ц╫Х.",
"emails.magicSession.thanks": "╫к╫Х╫У╫Ф",
"emails.magicSession.signature": "╫ж╫Х╫Х╫к {{project}}",
"emails.recovery.subject": "╫Р╫Щ╫д╫Х╫б ╫б╫Щ╫б╫Ю╫Р",
"emails.recovery.hello": "╫й╫Ь╫Х╫Э {{user}},",
"emails.recovery.hello": "╫й╫Ь╫Х╫Э {{name}}",
"emails.recovery.body": "╫в╫з╫Х╫С ╫Р╫Ч╫и ╫з╫Щ╫й╫Х╫и ╫Ц╫Ф ╫Ы╫У╫Щ ╫Ь╫Р╫д╫б ╫Р╫к ╫б╫Щ╫б╫Ю╫к╫Ъ ╫С-{{project}}.",
"emails.recovery.footer": "╫Р╫Э ╫Ь╫Р ╫С╫Щ╫з╫й╫к ╫Ь╫Р╫д╫б ╫Р╫к ╫Ф╫б╫Щ╫б╫Ю╫Ф, ╫к╫Х╫Ы╫Ь ╫Ь╫Ф╫к╫в╫Ь╫Э ╫Ю╫Ф╫Х╫У╫в╫Ф ╫Ц╫Х.",
"emails.recovery.thanks": "╫к╫Х╫У╫Ф,",
"emails.recovery.buttonText": "╫б╫Щ╫б╫Ю╫Р ╫Р╫Щ╫д╫Х╫б",
"emails.recovery.thanks": "╫к╫Х╫У╫Ф",
"emails.recovery.signature": "╫ж╫Х╫Х╫к {{project}}",
"emails.invitation.subject": "╫Ф╫Ц╫Ю╫а╫Ф ╫Ь╫ж╫Х╫Х╫к {{team}} ╫С- {{project}}",
"emails.invitation.hello": "╫й╫Ь╫Х╫Э,",
"emails.invitation.subject": "╫Ф╫Ц╫Ю╫а╫Ф ╫Ь╫ж╫Х╫Х╫к %s ╫С- %s",
"emails.invitation.hello": "╫й╫Ь╫Х╫Э",
"emails.invitation.body": "╫У╫Х╫Р╫и ╫Ц╫Ф ╫а╫й╫Ь╫Ч ╫Р╫Ь╫Щ╫Ъ ╫Ю╫Ы╫Щ╫Х╫Х╫Я ╫й {{owner}} ╫и╫ж╫Ф ╫Ь╫Ф╫Ц╫Ю╫Щ╫Я ╫Р╫Х╫к╫Ъ ╫Ь╫Ф╫Щ╫Х╫к ╫Ч╫С╫и ╫С╫ж╫Х╫Х╫к {{team}} ╫С-{{project}}.",
"emails.invitation.footer": "╫Р╫Э ╫Р╫Щ╫а╫Ъ ╫Ю╫в╫Х╫а╫Щ╫Щ╫Я, ╫к╫Х╫Ы╫Ь ╫Ь╫Ф╫к╫в╫Ь╫Э ╫Ю╫Ф╫Х╫У╫в╫Ф ╫Ц╫Х.",
"emails.invitation.thanks": "╫к╫Х╫У╫Ф,",
"emails.invitation.buttonText": "╫Р╫й╫и ╫Ф╫Ц╫Ю╫а╫Ф ╫Ь-{{team}}",
"emails.invitation.thanks": "╫к╫Х╫У╫Ф",
"emails.invitation.signature": "╫ж╫Х╫Х╫к {{project}}",
"locale.country.unknown": "╫Ь╫Р ╫Щ╫У╫Х╫в",
"countries.af": "╫Р╫д╫Т╫а╫Щ╫б╫Ш╫Я",
@@ -101,7 +100,6 @@
"countries.gd": "╫Т╫и╫а╫У╫Ф",
"countries.gt": "╫Т╫Х╫Р╫Ш╫Ю╫Ь╫Ф",
"countries.gy": "╫Т╫Щ╫Р╫а╫Ф",
"countries.hk": "╫Ф╫Х╫а╫Т ╫з╫Х╫а╫Т",
"countries.hn": "╫Ф╫Х╫а╫У╫Х╫и╫б",
"countries.hr": "╫з╫и╫Х╫Р╫Ш╫Щ╫Ф",
"countries.ht": "╫Ф╫Р╫Щ╫Ш╫Щ",
@@ -165,7 +163,6 @@
"countries.nz": "╫а╫Щ╫Х ╫Ц╫Щ╫Ь╫а╫У",
"countries.om": "╫в╫Х╫Ю╫Р╫Я",
"countries.pk": "╫д╫з╫Щ╫б╫Ш╫Я",
"countries.ps": "╫д╫Ь╫б╫Ш╫Щ╫Я",
"countries.pa": "╫д╫а╫Ю╫Ф",
"countries.pe": "╫д╫и╫Х",
"countries.ph": "╫Ф╫д╫Щ╫Ь╫Щ╫д╫Щ╫а╫Щ╫Э",
@@ -209,7 +206,6 @@
"countries.tn": "╫к╫Х╫а╫Щ╫б╫Щ╫Ф",
"countries.tr": "╫Ш╫Х╫и╫з╫Щ╫Ф",
"countries.tv": "╫Ш╫Х╫С╫Р╫Ь╫Х",
"countries.tw": "╫Ш╫Щ╫Щ╫Х╫Х╫Р╫Я",
"countries.tz": "╫Ш╫а╫Ц╫а╫Щ╫Ф",
"countries.ug": "╫Р╫Х╫Т╫а╫У╫Ф",
"countries.ua": "╫Р╫Х╫з╫и╫Р╫Щ╫а╫Ф",
@@ -232,18 +228,5 @@
"continents.eu": "╫Р╫Щ╫и╫Х╫д╫Ф",
"continents.na": "╫ж╫д╫Х╫Я ╫Р╫Ю╫и╫Щ╫з╫Ф",
"continents.oc": "╫Р╫Х╫з╫Щ╫Р╫а╫Щ╫Ф",
"continents.sa": "╫У╫и╫Х╫Э ╫Р╫Ю╫и╫Щ╫з╫Ф",
"emails.magicSession.optionButton": "╫Ь╫Ч╫е ╫в╫Ь ╫Ф╫Ы╫д╫к╫Х╫и ╫Ь╫Ю╫Ш╫Ф ╫Ы╫У╫Щ ╫Ь╫Ф╫Щ╫Ы╫а╫б ╫Ь╫Ч╫й╫С╫Х╫Я {{project}} ╫й╫Ь╫Ъ ╫С╫Р╫Х╫д╫Я ╫Ю╫Р╫Х╫С╫Ш╫Ч. ╫к╫Х╫з╫г ╫Ф╫Ы╫а╫Щ╫б╫Ф ╫Щ╫д╫Х╫Т ╫к╫Х╫Ъ ╫й╫в╫Ф.",
"emails.magicSession.buttonText": "╫Ф╫Щ╫Ы╫а╫б ╫Ь-{{project}}",
"emails.magicSession.clientInfo": "╫Ф╫Ф╫к╫Ч╫С╫и╫Х╫к ╫Ф╫Ц╫Х ╫а╫в╫й╫к╫Ф ╫С╫Р╫Ю╫ж╫в╫Х╫к {{agentClient}} ╫в╫Ь {{agentDevice}} {{agentOs}}. ╫Р╫Э ╫Ь╫Р ╫С╫Щ╫з╫й╫к ╫Р╫к ╫Ф╫Ф╫к╫Ч╫С╫и╫Х╫к ╫Ф╫Ц╫Х, ╫С╫Р╫д╫й╫и╫Х╫к╫Ъ ╫Ь╫Ф╫к╫в╫Ь╫Э ╫С╫С╫Ш╫Ч╫Ф ╫Ю╫Ф╫Р╫Щ╫Ю╫Щ╫Щ╫Ь ╫Ф╫Ц╫Ф.",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "╫Ю╫й╫д╫Ш ╫Ф╫С╫Щ╫Ш╫Ч╫Х╫Я ╫в╫С╫Х╫и ╫Ф╫Х╫У╫в╫к ╫Ф╫У╫Х╫Р\"╫Ь ╫Ф╫Ц╫Х ╫Ф╫Х╫Р {{phrase}}. ╫к╫Х╫Ы╫Ь ╫Ь╫б╫Ю╫Х╫Ъ ╫в╫Ь ╫Ф╫Х╫У╫в╫к ╫Ф╫У╫Х╫Р\"╫Ь ╫Ф╫Ц╫Х ╫Р╫Э ╫Ф╫Ю╫й╫д╫Ш ╫Ф╫Ц╫Ф ╫к╫Х╫Р╫Э ╫Ь╫Ю╫й╫д╫Ш ╫й╫Ф╫Х╫ж╫Т ╫С╫в╫к ╫Ф╫Ф╫к╫Ч╫С╫и╫Х╫к.",
"emails.magicSession.optionUrl": "╫Р╫Э ╫Р╫Щ╫а╫Ъ ╫Щ╫Ы╫Х╫Ь ╫Ь╫Ф╫Щ╫Ы╫а╫б ╫С╫Р╫Ю╫ж╫в╫Х╫к ╫Ф╫Ы╫д╫к╫Х╫и ╫Ь╫Ю╫в╫Ь╫Ф, ╫С╫з╫и ╫С╫з╫Щ╫й╫Х╫и ╫Ф╫С╫Р:",
"emails.otpSession.subject": "╫Ф╫к╫Ч╫С╫и╫Х╫к ╫Ь╫Ю╫в╫и╫Ы╫к {{project}}",
"emails.otpSession.hello": "╫й╫Ь╫Х╫Э,",
"emails.otpSession.description": "╫Ф╫Ц╫Я ╫Р╫к ╫з╫Х╫У ╫Ф╫Р╫Щ╫Ю╫Х╫к ╫Ф╫С╫Р ╫Ы╫Р╫й╫и ╫к╫к╫С╫з╫й ╫Ы╫У╫Щ ╫Ь╫Ф╫Щ╫Ы╫а╫б ╫Ь╫Ч╫й╫С╫Х╫Я {{project}} ╫й╫Ь╫Ъ ╫С╫Р╫Х╫д╫Я ╫Ю╫Р╫Х╫С╫Ш╫Ч. ╫Ф╫Х╫Р ╫Щ╫д╫Х╫Т ╫С╫в╫Х╫У 15 ╫У╫з╫Х╫к.",
"emails.otpSession.clientInfo": "╫Ф╫Ф╫к╫Ч╫С╫и╫Х╫к ╫Ф╫Ц╫Х ╫С╫Х╫з╫й╫Ф ╫С╫Р╫Ю╫ж╫в╫Х╫к {{agentClient}} ╫в╫Ь {{agentDevice}} {{agentOs}}. ╫Р╫Э ╫Ь╫Р ╫С╫Щ╫з╫й╫к ╫Р╫к ╫Ф╫Ф╫к╫Ч╫С╫и╫Х╫к, ╫С╫Р╫д╫й╫и╫Х╫к╫Ъ ╫Ь╫Ф╫к╫в╫Ь╫Э ╫С╫С╫Ш╫Ч╫Ф ╫Ю╫Ю╫Щ╫Щ╫Ь ╫Ц╫Ф.",
"emails.otpSession.securityPhrase": "╫Ю╫й╫д╫Ш ╫Ф╫Р╫С╫Ш╫Ч╫Ф ╫Ь╫Ю╫Щ╫Щ╫Ь ╫Ц╫Ф ╫Ф╫Х╫Р {{phrase}}. ╫Р╫к╫Ф ╫Щ╫Ы╫Х╫Ь ╫Ь╫б╫Ю╫Х╫Ъ ╫в╫Ь ╫Ф╫Ю╫Щ╫Щ╫Ь ╫Ф╫Ц╫Ф ╫Р╫Э ╫Ф╫Ю╫й╫д╫Ш ╫Ф╫Ц╫Ф ╫к╫Х╫Р╫Э ╫Р╫к ╫Ф╫Ю╫й╫д╫Ш ╫й╫Ф╫Х╫ж╫Т ╫С╫Ю╫Ф╫Ь╫Ъ ╫Ф╫Ы╫а╫Щ╫б╫Ф ╫Ь╫Ю╫в╫и╫Ы╫к.",
"emails.otpSession.thanks": "╫к╫Х╫У╫Ф,",
"emails.otpSession.signature": "╫ж╫Х╫Х╫к {{project}}"
}
"continents.sa": "╫У╫и╫Х╫Э ╫Р╫Ю╫и╫Щ╫з╫Ф"
}
+12 -29
View File
@@ -2,31 +2,30 @@
"settings.inspire": "\"рдмреБрджреНрдзрд┐рдорд╛рди рд╣реЛрдиреЗ рдХреА рдХрд▓рд╛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХрд▓рд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдП |\"",
"settings.locale": "hi",
"settings.direction": "ltr",
"emails.sender": "{{project}} рдЯреАрдо",
"emails.sender": "%s рдЯреАрдо",
"emails.verification.subject": "рдЕрдХрд╛рдЙрдВрдЯ рд╡реЗрд░рд┐рдлрд┐рдХреЗрд╢рди ",
"emails.verification.hello": "рдирдорд╕реНрддреЗ {{user}},",
"emails.verification.hello": "рдирдорд╕реНрддреЗ {{name}}",
"emails.verification.body": "рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдИрдореЗрд▓ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХреАрдЬрд┐рдпреЗред",
"emails.verification.footer": "рдпрджрд┐ рдЖрдк рдЗрд╕ рдкрддреЗ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдиреЫрд░рдЕрдВрджрд╛реЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.verification.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.verification.buttonText": "рдИрдореЗрд▓ рдкрддрд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ",
"emails.verification.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.verification.signature": "{{project}} рдЯреАрдо",
"emails.magicSession.subject": "рд▓реЙрдЧ рдЗрди",
"emails.magicSession.hello": "рдирдорд╕реНрддреЗ,",
"emails.magicSession.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.magicSession.body": "рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдЧ-рдЗрди рдХрд░реЗрдВред",
"emails.magicSession.footer": "рдпрджрд┐ рдЖрдк рдЗрд╕ рдИрдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдЧрд┐рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдиреЫрд░рдЕрдВрджрд╛реЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.magicSession.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.magicSession.signature": "{{project}} рдЯреАрдо",
"emails.recovery.subject": "рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ",
"emails.recovery.hello": "рдирдорд╕реНрддреЗ {{user}},",
"emails.recovery.hello": "рдирдорд╕реНрддреЗ {{name}}",
"emails.recovery.body": "рдЗрд╕ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдирд╛ {{project}} рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХрд░реЗрдВред",
"emails.recovery.footer": "рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдиреЫрд░рдЕрдВрджрд╛реЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.recovery.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.recovery.buttonText": "рдкрд╛рд╕рд╡рд░реНрдб рд░реАрд╕реЗрдЯ рдХрд░реЗрдВ",
"emails.recovery.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.recovery.signature": "{{project}} рдЯреАрдо",
"emails.invitation.subject": "{{team}} рдЯреАрдо рдХрд╛ рдпрд╣рд╛рдБ {{project}} рдкрд░ рдЖрдордВрддреНрд░рдг",
"emails.invitation.hello": "рдирдорд╕реНрддреЗ,",
"emails.invitation.subject": "%s рдЯреАрдо рдХрд╛ рдпрд╣рд╛рдБ %s рдкрд░ рдЖрдордВрддреНрд░рдг",
"emails.invitation.hello": "рдирдорд╕реНрддреЗ",
"emails.invitation.body": "рдпрд╣ рдореЗрд▓ рдЖрдкрдХреЛ рдЗрд╕рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ {{owner}} рдЖрдкрдХреЛ {{team}} рдЯреАрдо рдХрд╛ рд╕рджрд╕реНрдп рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИ, рдЬреЛ {{project}} рд╕реЗ рдЬреБреЬрд╛ рд╣реБрдЖ рд╣реИред",
"emails.invitation.footer": "рдпрджрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рд░реВрдЪрд┐ рдирд╣реАрдВ рд░рдЦрддреЗ, рддреЛ рдЖрдк рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдиреЫрд░рдЕрдВрджрд╛реЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.invitation.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.invitation.buttonText": "{{team}} рдХрд╛ рдирд┐рдордВрддреНрд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ",
"emails.invitation.thanks": "рдзрдиреНрдпрд╡рд╛рдж",
"emails.invitation.signature": "{{project}} рдЯреАрдо",
"locale.country.unknown": "рдЕрдЬреНрдЮрд╛рдд",
"countries.af": "рдЕрдлрд╝рдЧрд╝рд╛рдирд┐рд╕реНрддрд╛рди",
@@ -101,7 +100,6 @@
"countries.gd": "рдЧреНрд░реЗрдирд╛рдбрд╛",
"countries.gt": "рдЧреНрд╡рд╛рдЯреЗрдорд╛рд▓рд╛",
"countries.gy": "рдЧрдпрд╛рдирд╛",
"countries.hk": "рд╣рд╛рдВрдЧ рдХрд╛рдВрдЧ",
"countries.hn": "рд╣реЛрдВрдбреБрд░рд╕",
"countries.hr": "рдХреНрд░реЛрдПрд╢рд┐рдпрд╛",
"countries.ht": "рд╣реИрддреА",
@@ -165,7 +163,6 @@
"countries.nz": "рдиреНрдпреВрдЬреАрд▓реИрдВрдб",
"countries.om": "рдУрдорд╛рди",
"countries.pk": "рдкрд╛рдХрд┐рд╕реНрддрд╛рди",
"countries.ps": "рдкреИрд▓рд┐рд╕реНрдЯрд╛рдЗрди",
"countries.pa": "рдкрдирд╛рдорд╛",
"countries.pe": "рдкреЗрд░реВ",
"countries.ph": "рдлрд┐рд▓реАрдкреАрдВрд╕",
@@ -209,7 +206,6 @@
"countries.tn": "рдЯреНрдпреВрдиреАрд╢рд┐рдпрд╛",
"countries.tr": "рддреБрд░реНрдХреА",
"countries.tv": "рддреБрд╡рд╛рд▓реВ",
"countries.tw": "рддрд╛рдЗрд╡рд╛рди",
"countries.tz": "рддрдВрдЬрд╛рдирд┐рдпрд╛",
"countries.ug": "рдпреБрдЧрд╛рдВрдбрд╛",
"countries.ua": "рдпреВрдХреНрд░реЗрди",
@@ -232,18 +228,5 @@
"continents.eu": "рдпреВрд░реЛрдк",
"continents.na": "рдЙрддреНрддрд░реА рдЕрдореЗрд░рд┐рдХрд╛",
"continents.oc": "рдУрд╢рд┐рдирд┐рдпрд╛",
"continents.sa": "рджрдХреНрд╖рд┐рдг рдЕрдореЗрд░рд┐рдХрд╛",
"emails.magicSession.optionButton": "рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЕрдкрдиреЗ {{project}} рдЦрд╛рддреЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВред рдпрд╣ 1 рдШрдВрдЯреЗ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред",
"emails.magicSession.buttonText": "{{project}} рдореЗрдВ рд╕рд╛рдЗрди рдЗрди рдХрд░реЗрдВ",
"emails.magicSession.clientInfo": "рдпрд╣ рд╕рд╛рдЗрди рдЗрди {{agentClient}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ {{agentDevice}} {{agentOs}} рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рд╛рдЗрди рдЗрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдИрдореЗрд▓ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"sms.verification.body": "{{secret}}",
"emails.magicSession.securityPhrase": "рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ {{phrase}} рд╣реИред рдпрджрд┐ рдпрд╣ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕рд╛рдЗрди рдЗрди рдХреЗ рджреМрд░рд╛рди рджрд┐рдЦрд╛рдП рдЧрдП рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рддреЛ рдЖрдк рдЗрд╕ рдИрдореЗрд▓ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.magicSession.optionUrl": "рдпрджрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдЗрди рдЗрди рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣реЗ рд╣реИрдВ, рдХреГрдкрдпрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓рд┐рдВрдХ рдкрд░ рдЬрд╛рдПрдБ:",
"emails.otpSession.subject": "{{project}} рд▓реЙрдЧрд┐рди",
"emails.otpSession.hello": "рдирдорд╕реНрддреЗ,",
"emails.otpSession.description": "рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рджрд░реНрдЬ рдХрд░реЗрдВ рдЬрдм рдЖрдкрдХреЛ рдЖрдкрдХреЗ {{project}} рдЦрд╛рддреЗ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╛рдЗрди рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПред рдпрд╣ 15 рдорд┐рдирдЯ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред",
"emails.otpSession.clientInfo": "рдпрд╣ рд╕рд╛рдЗрди рдЗрди {{agentClient}} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ {{agentDevice}} {{agentOs}} рдкрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрджрд┐ рдЖрдкрдиреЗ рд╕рд╛рдЗрди рдЗрди рдХрд╛ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдИрдореЗрд▓ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.otpSession.securityPhrase": "рдЗрд╕ рдИрдореЗрд▓ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рд╡рд╛рдХреНрдпрд╛рдВрд╢ {{phrase}} рд╣реИред рдЕрдЧрд░ рдпрд╣ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕рд╛рдЗрди рдЗрди рдХреЗ рджреМрд░рд╛рди рджрд┐рдЦрд╛рдП рдЧрдП рд╡рд╛рдХреНрдпрд╛рдВрд╢ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕ рдИрдореЗрд▓ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред",
"emails.otpSession.thanks": "рдзрдиреНрдпрд╡рд╛рдж,",
"emails.otpSession.signature": "{{project}} рдЯреАрдо"
"continents.sa": "рджрдХреНрд╖рд┐рдг рдЕрдореЗрд░рд┐рдХрд╛"
}

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