diff --git a/.env b/.env index 6583a94fc8..30b4a83f79 100644 --- a/.env +++ b/.env @@ -21,6 +21,9 @@ _APP_STATSD_HOST=telegraf _APP_STATSD_PORT=8125 _APP_SMTP_HOST=maildev _APP_SMTP_PORT=25 +_APP_SMTP_SECURE= +_APP_SMTP_USERNAME= +_APP_SMTP_PASSWORD= _APP_STORAGE_LIMIT=100000000 _APP_FUNCTIONS_TIMEOUT=900 -_APP_FUNCTIONS_CONTAINERS=10 \ No newline at end of file +_APP_FUNCTIONS_CONTAINERS=10 diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md new file mode 100644 index 0000000000..63e0e64f94 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -0,0 +1,44 @@ +--- +name: 🐛 Bug Report +about: Submit a bug report to help us improve +labels: "bug" +--- + +## 🐛 Bug Report + +(A clear and concise description of what the bug is) + +## Have you spent some time to check if this issue has been raised before? + +(Have you googled for a similar issue or checked our older issues for a similar bug) + +## To Reproduce + +(Write your steps here:) + +## Expected behavior + + + +(Write what you thought would happen.) + +## Actual Behavior + + + +(Write what happened. Add screenshots, if applicable.) + +## Your Environment + + + +(Write Environment, Operating system and version etc.) diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md new file mode 100644 index 0000000000..9aa7e59e19 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/documentation.md @@ -0,0 +1,17 @@ +--- +name: 📚 Documentation +about: Report an issue related to documentation +labels: "documentation" +--- + +## 📚 Documentation + +(A clear and concise description of what the issue is.) + +## Have you spent some time to check if this issue has been raised before? + +(Have you googled for a similar issue or checked our older issues for a similar bug) + +### Have you read the [Code of Conduct](https://github.com/appwrite/appwrite/blob/master/CODE_OF_CONDUCT.md)? + +(Write your answer here.) diff --git a/.github/ISSUE_TEMPLATE/feature.md b/.github/ISSUE_TEMPLATE/feature.md new file mode 100644 index 0000000000..35ad1b9d8f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature.md @@ -0,0 +1,21 @@ +--- +name: 🚀 Feature +about: Submit a proposal for a new feature +labels: "feature" +--- + +## 🚀 Feature + +(A clear and concise description of what the feature is.) + +## Have you spent some time to check if this issue has been raised before? + +(Have you googled for a similar issue or checked our older issues for a similar bug) + +### Have you read the [Code of Conduct](https://github.com/appwrite/appwrite/blob/master/CODE_OF_CONDUCT.md)? + +(Write your answer here.) + +## Pitch + +(Please explain why this feature should be implemented and how it would be used. Add examples, if applicable.) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..faa18b5ab9 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,26 @@ + + +## What does this PR do? + +(Provide a description of what this PR does.) + +## Test Plan + +(Write your test plan here. If you changed any code, please provide us with clear instructions on how you verified your changes work.) + +## Related PRs and Issues + +(If this PR is related to any other PR or resolves any issue or related to any issue link all related PR and issues here.) + +### Have you read the [Contributing Guidelines on issues](https://github.com/appwrite/appwrite/blob/master/CONTRIBUTING.md)? + +(Write your answer here.) diff --git a/.travis.yml b/.travis.yml index ce8c6e64ae..0e7ff4c358 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,6 +6,8 @@ arch: os: linux +language: minimal + notifications: email: - team@appwrite.io @@ -30,9 +32,11 @@ before_install: install: - docker --version - docker-compose up -d -- sleep 90 +- sleep 60 script: - docker ps - docker-compose logs appwrite +- docker exec appwrite doctor +- docker exec appwrite vars - docker exec appwrite test \ No newline at end of file diff --git a/CHANGES.md b/CHANGES.md index f91f794e95..6263aa0d9e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -59,7 +59,7 @@ - Fixed update form labels and tooltips for Flutter Android apps - Fixed missing custom scopes param for OAuth2 session create API route - Fixed wrong JSON validation when creating and updating database documents -- Fixed bug where max file size was limited to max of 10MB +- Fixed bug where max file size was limited to a max of 10MB - Fixed bug preventing the deletion of the project logo - Fixed Bug when trying to overwrite OAuth cookie in the Flutter SDK - Fixed OAuth redirect when using the self-hosted instance default success URL ([#454](https://github.com/appwrite/appwrite/issues/454)) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bb0e9d1311..a51f482f2b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -237,7 +237,7 @@ docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t appwrite/ To run tests manually, use the Appwrite Docker CLI from your terminal: ```bash -docker exec appwrite test +docker-compose exec appwrite test ``` ## Benchmarking @@ -281,6 +281,12 @@ php-cs-fixer fix app/controllers --rules='{"braces": {"allow_single_line_closure php-cs-fixer fix src --rules='{"braces": {"allow_single_line_closure": true}}' ``` +Static Code Analysis: + +```bash +docker-compose exec appwrite /usr/src/code/vendor/bin/psalm +``` + ## 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: diff --git a/Dockerfile b/Dockerfile index 1a2798c450..60db675960 100755 --- a/Dockerfile +++ b/Dockerfile @@ -14,9 +14,9 @@ RUN composer update --ignore-platform-reqs --optimize-autoloader \ FROM php:7.4-cli-alpine as step1 -ENV TZ=Asia/Tel_Aviv \ - PHP_REDIS_VERSION=5.3.0 \ - PHP_SWOOLE_VERSION=4.5.3 \ +ENV PHP_REDIS_VERSION=5.3.0 \ + PHP_SWOOLE_VERSION=v4.5.6 \ + PHP_MAXMINDDB_VERSION=v1.8.0 \ PHP_XDEBUG_VERSION=sdebug_2_9-beta RUN \ @@ -26,19 +26,18 @@ RUN \ autoconf \ gcc \ g++ \ - tar \ - wget \ git \ zlib-dev \ - brotli-dev + brotli-dev \ + libmaxminddb-dev RUN docker-php-ext-install sockets RUN \ # Redis Extension - wget -q https://github.com/phpredis/phpredis/archive/$PHP_REDIS_VERSION.tar.gz && \ - tar -xf $PHP_REDIS_VERSION.tar.gz && \ - cd phpredis-$PHP_REDIS_VERSION && \ + git clone https://github.com/phpredis/phpredis.git && \ + cd phpredis && \ + git checkout $PHP_REDIS_VERSION && \ phpize && \ ./configure && \ make && make install && \ @@ -46,11 +45,20 @@ RUN \ ## Swoole Extension git clone https://github.com/swoole/swoole-src.git && \ cd swoole-src && \ - git checkout v$PHP_SWOOLE_VERSION && \ + git checkout $PHP_SWOOLE_VERSION && \ phpize && \ ./configure --enable-sockets --enable-http2 && \ make && make install && \ - cd .. + cd .. && \ + ## Maxminddb extension + git clone https://github.com/maxmind/MaxMind-DB-Reader-php.git && \ + cd MaxMind-DB-Reader-php && \ + git checkout $PHP_MAXMINDDB_VERSION && \ + cd ext && \ + phpize && \ + ./configure && \ + make && make install && \ + cd ../.. FROM php:7.4-cli-alpine as final @@ -58,8 +66,7 @@ LABEL maintainer="team@appwrite.io" ARG VERSION=dev -ENV TZ=Asia/Tel_Aviv \ - _APP_SERVER=swoole \ +ENV _APP_SERVER=swoole \ _APP_ENV=production \ _APP_DOMAIN=localhost \ _APP_DOMAIN_TARGET=localhost \ @@ -109,16 +116,21 @@ RUN \ imagemagick-dev \ certbot \ docker-cli \ + docker-compose \ + libmaxminddb \ + libmaxminddb-dev \ && pecl install imagick yaml \ && docker-php-ext-enable imagick yaml \ && docker-php-ext-install sockets opcache pdo_mysql \ - && apk del .deps + && apk del .deps \ + && rm -rf /var/cache/apk/* WORKDIR /usr/src/code COPY --from=step0 /usr/local/src/vendor /usr/src/code/vendor COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/swoole.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/redis.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ +COPY --from=step1 /usr/local/lib/php/extensions/no-debug-non-zts-20190902/maxminddb.so /usr/local/lib/php/extensions/no-debug-non-zts-20190902/ # Add Source Code COPY ./app /usr/src/code/app @@ -148,6 +160,7 @@ RUN chmod +x /usr/local/bin/doctor && \ chmod +x /usr/local/bin/schedule && \ chmod +x /usr/local/bin/ssl && \ chmod +x /usr/local/bin/test && \ + chmod +x /usr/local/bin/vars && \ chmod +x /usr/local/bin/worker-audits && \ chmod +x /usr/local/bin/worker-certificates && \ chmod +x /usr/local/bin/worker-deletes && \ @@ -163,6 +176,7 @@ RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/ # Enable Extensions RUN echo extension=swoole.so >> /usr/local/etc/php/conf.d/swoole.ini RUN echo extension=redis.so >> /usr/local/etc/php/conf.d/redis.ini +RUN echo extension=maxminddb.so >> /usr/local/etc/php/conf.d/maxminddb.ini 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 diff --git a/README.md b/README.md index d2f1b584c3..d7938a3d7b 100644 --- a/README.md +++ b/README.md @@ -8,13 +8,13 @@

[![Hacktoberfest](https://badgen.net/badge/hacktoberfest/friendly/pink)](CONTRIBUTING.md) -[![Discord](https://img.shields.io/discord/564160730845151244?label=discord)](https://discord.gg/GSeTUeA) +[![Discord](https://img.shields.io/discord/564160730845151244?label=discord)](https://appwrite.io/discord) [![Docker Pulls](https://badgen.net/docker/pulls/appwrite/appwrite)](https://travis-ci.org/appwrite/appwrite) -[![Travis CI](https://badgen.net/travis/appwrite/appwrite?label=build)](https://travis-ci.org/appwrite/appwrite) +[![Travis CI](https://badgen.net/travis/appwrite/appwrite?label=build)](https://travis-ci.com/appwrite/appwrite) [![Twitter Account](https://badgen.net/twitter/follow/appwrite_io?label=twitter)](https://twitter.com/appwrite_io) [![Follow Appwrite on StackShare](https://badgen.net/badge/follow%20on/stackshare/blue)](https://stackshare.io/appwrite) -Appwrite is an end-to-end backend server for Web, Mobile, Native, or Backend apps packaged as a set of Docker microservices. Appwrite abstracts the complexity and repetitiveness required to build a modern backend API from scratch and allows you to build secure apps faster. +Appwrite is an end-to-end backend server for Web, Mobile, Native, or Backend apps packaged as a set of Docker 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 & multiple sign-in methods, a database for storing and querying users and team data, storage and file management, image manipulation, schedule CRON tasks, and [more services](https://appwrite.io/docs). @@ -29,14 +29,15 @@ Table of Contents: - [Windows](#windows) - [CMD](#cmd) - [PowerShell](#powershell) + - [Upgrade from an Older Version](#upgrade-from-an-older-version) - [Getting Started](#getting-started) - [Services](#services) - [SDKs](#sdks) - [Client](#client) - [Server](#server) +- [Contributing](#contributing) - [Security](#security) - [Follow Us](#follow-us) -- [Contributing](#contributing) - [License](#license) ## Installation @@ -52,7 +53,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:0.7.0 + appwrite/appwrite:0.7.0 --version 0.7.0 ``` ### Windows @@ -64,7 +65,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:0.7.0 + appwrite/appwrite:0.7.0 --version 0.7.0 ``` #### PowerShell @@ -74,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:0.7.0 + appwrite/appwrite:0.7.0 --version 0.7.0 ``` Once the Docker installation completes, 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 installation completes. @@ -82,6 +83,10 @@ Once the Docker installation completes, go to http://localhost to access the App For advanced production and custom installation, check out our Docker [environment variables](docs/tutorials/environment-variables.md) docs. You can also use our public [docker-compose.yml](https://appwrite.io/docker-compose.yml) file to manually set up and environment. +### 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/installation). + ## Getting Started Getting started with Appwrite is as easy as creating a new project, choosing your platform, and integrating its SDK in your code. You can easily get started with your platform of choice by reading one of our Getting Started tutorials. @@ -132,11 +137,11 @@ We truly ❤️ pull requests! If you wish to help, you can learn more about how ## Security -For security issues, kindly email us [security@appwrite.io](mailto:security@appwrite.io) instead of posting a public issue in GitHub. +For security issues, kindly email us at [security@appwrite.io](mailto:security@appwrite.io) instead of posting a public issue in GitHub. ## Follow Us -Join our growing community around the world! Follow us on [Twitter](https://twitter.com/appwrite_io), [Facebook Page](https://www.facebook.com/appwrite.io), [Facebook Group](https://www.facebook.com/groups/appwrite.developers/) or join our live [Discord server](https://discord.gg/GSeTUeA) for more help, ideas, and discussions. +Join our growing community around the world! See our official [Blog](https://medium.com/appwrite-io). Follow us on [Twitter](https://twitter.com/appwrite_io), [Facebook Page](https://www.facebook.com/appwrite.io), [Facebook Group](https://www.facebook.com/groups/appwrite.developers/) or join our live [Discord server](https://discord.gg/GSeTUeA) for more help, ideas, and discussions. ## License diff --git a/SECURITY.md b/SECURITY.md index a09be23628..e8bdef2da9 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -11,4 +11,4 @@ ## Reporting a Vulnerability -For security issues, kindly email us security@appwrite.io instead of posting a public issue in GitHub. +For security issues, kindly email us at security@appwrite.io instead of posting a public issue in GitHub. diff --git a/app/cli.php b/app/cli.php index 9eede27a34..9c99890602 100644 --- a/app/cli.php +++ b/app/cli.php @@ -1,4 +1,3 @@ -#!/bin/env php task('version') diff --git a/app/config/locale/codes.php b/app/config/locale/codes.php index a0b10ef5a5..d3f289576c 100644 --- a/app/config/locale/codes.php +++ b/app/config/locale/codes.php @@ -5,12 +5,14 @@ return [ 'ar', // Arabic 'ba', //Bosnian 'be', // Belarusian + 'bg', // Bulgarian 'bn', // Bengali 'cat', // Catalan 'cz', // Czech 'de', // German 'en', // English 'es', // Spanish + 'fa', // Farsi/Persian 'fi', // Finnish 'fo', // Faroese 'fr', // French @@ -25,19 +27,22 @@ return [ 'it', // Italian 'ja', // Japanese 'jv', // Javanese + 'ka', // Kannada 'km', // Khmer 'ko', // Korean 'lt', // Lithuanian 'ml', // Malayalam - 'mr', //Marathi + 'mr', // Marathi 'ms', // Malay 'nl', // Dutch 'no', // Norwegian - 'np', //Nepali + 'np', // Nepali + 'od', // Odia 'ph', // Filipino 'pl', // Polish 'pt-br', // Portuguese - Brazil 'pt-pt', // Portuguese - Portugal + 'pa', //Punjabi 'ro', // Romanian 'ru', // Russian 'si', // Sinhala @@ -48,6 +53,7 @@ return [ 'th', // Thai 'tr', // Turkish 'ua', // Ukrainian + 'ur', //Urdu 'vi', // Vietnamese 'zh-cn', // Chinese - China 'zh-tw', // Chinese - Taiwan diff --git a/app/config/locale/eu.php b/app/config/locale/eu.php index fbefd23694..3db5b8773c 100644 --- a/app/config/locale/eu.php +++ b/app/config/locale/eu.php @@ -30,8 +30,4 @@ $list = [ 'SE', // Sweden ]; -if (\time() < \strtotime('2020-01-31')) { // @see https://en.wikipedia.org/wiki/Brexit - $list[] = 'GB'; // // United Kingdom -} - return $list; diff --git a/app/config/locale/templates/pa.email.auth.confirm.tpl b/app/config/locale/templates/pa.email.auth.confirm.tpl new file mode 100644 index 0000000000..b8dc31c467 --- /dev/null +++ b/app/config/locale/templates/pa.email.auth.confirm.tpl @@ -0,0 +1,16 @@ +

+ +ਸਤ ਸ੍ਰੀ ਅਕਾਲ {{name}}, +

+

+ ਆਪਣੇ ਈਮੇਲ ਪਤੇ ਦੀ ਤਸਦੀਕ ਕਰਨ ਲਈ ਇਸ ਲਿੰਕ ਤੇ ਕਲਿਕ ਕਰੋ. +

+{{cta}} +

+ਜੇ ਤੁਸੀਂ ਇਸ ਈਮੇਲ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਨਹੀਂ ਪੁੱਛਿਆ ਜਾਂਦਾ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ. +

+

+ ਤੁਹਾਡਾ ਧੰਨਵਾਦ, +
+ {{project}} ਟੀਮ +

\ No newline at end of file diff --git a/app/config/locale/templates/pa.email.auth.invitation.tpl b/app/config/locale/templates/pa.email.auth.invitation.tpl new file mode 100644 index 0000000000..e7643abc17 --- /dev/null +++ b/app/config/locale/templates/pa.email.auth.invitation.tpl @@ -0,0 +1,18 @@ +

+ ਸਤ ਸ੍ਰੀ ਅਕਾਲ, +

+

+ ਕਿਉਂਕਿ ਇਹ ਮੇਲ ਤੁਹਾਨੂੰ ਭੇਜਿਆ ਗਿਆ ਸੀ {{owner}} ਤੁਸੀਂ {{project}} ਇਸ ਕਰਕੇ {{team}} ਇੱਥੇ ਇੱਕ ਮੈਂਬਰ ਬਣਨ ਲਈ ਸੱਦਾ ਦੇਣ ਦੀ ਇੱਛਾ ਹੈ. +

+

+ ਟੀਮ {{team}} ਸ਼ਾਮਲ ਹੋਣ ਲਈ ਇਸ ਲਿੰਕ 'ਤੇ ਕਲਿੱਕ ਕਰੋ : +

+{{cta}} +

+ਜੇ ਤੁਸੀਂ ਦਿਲਚਸਪੀ ਨਹੀਂ ਰੱਖਦੇ ਹੋ ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੰਦੇਸ਼ ਨੂੰ ਅਣਡਿੱਠ ਕਰ ਸਕਦੇ ਹੋ. +

+

+ ਤੁਹਾਡਾ ਧੰਨਵਾਦ, +
+ {{project}} ਟੀਮ +

\ No newline at end of file diff --git a/app/config/locale/templates/pa.email.auth.recovery.tpl b/app/config/locale/templates/pa.email.auth.recovery.tpl new file mode 100644 index 0000000000..fab1d290f5 --- /dev/null +++ b/app/config/locale/templates/pa.email.auth.recovery.tpl @@ -0,0 +1,15 @@ +

+ ਸਤ ਸ੍ਰੀ ਅਕਾਲ {{name}}, +

+

+ {{project}} ਆਪਣਾ ਪਾਸਵਰਡ ਰੀਸੈਟ ਕਰਨ ਲਈ ਇਸ ਲਿੰਕ ਤੇ ਕਲਿਕ ਕਰੋ. +

+{{cta}} +

+ਜੇ ਤੁਹਾਨੂੰ ਆਪਣਾ ਪਾਸਵਰਡ ਰੀਸੈਟ ਕਰਨ ਲਈ ਨਹੀਂ ਕਿਹਾ ਜਾਂਦਾ, ਤਾਂ ਤੁਸੀਂ ਇਸ ਸੁਨੇਹੇ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਸਕਦੇ ਹੋ. +

+

+ ਤੁਹਾਡਾ ਧੰਨਵਾਦ, +
+ {{project}} ਟੀਮ +

\ No newline at end of file diff --git a/app/config/locale/translations/af.countries.php b/app/config/locale/translations/af.countries.php index b3c4838f36..f5f7f47ac5 100644 --- a/app/config/locale/translations/af.countries.php +++ b/app/config/locale/translations/af.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Costa Rica', 'CU' => 'Kuba', 'CY' => 'Ciprus', - 'CZ' => 'Tsjeggiese Republiek', + 'CZ' => 'Tsjeggië', 'DE' => 'Duitsland', 'DJ' => 'Djiboeti', 'DM' => 'Dominica', @@ -195,4 +195,4 @@ return [ 'ZA' => 'Suid-Afrika', 'ZM' => 'Zambia', 'ZW' => 'Zimbabwe', -]; \ No newline at end of file +]; diff --git a/app/config/locale/translations/bg.continents.php b/app/config/locale/translations/bg.continents.php new file mode 100644 index 0000000000..ade83e0b98 --- /dev/null +++ b/app/config/locale/translations/bg.continents.php @@ -0,0 +1,11 @@ + 'Африка', + 'AN' => 'Антарктида', + 'AS' => 'Азия', + 'EU' => 'Европа', + 'NA' => 'Северна Америка', + 'OC' => 'Океания', + 'SA' => 'Южна Америка', +]; diff --git a/app/config/locale/translations/bg.countries.php b/app/config/locale/translations/bg.countries.php new file mode 100644 index 0000000000..f6ae739ca3 --- /dev/null +++ b/app/config/locale/translations/bg.countries.php @@ -0,0 +1,198 @@ + 'Афганистан', + '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' => 'Зимбабве', +]; diff --git a/app/config/locale/translations/bg.php b/app/config/locale/translations/bg.php new file mode 100644 index 0000000000..1e9cc51df7 --- /dev/null +++ b/app/config/locale/translations/bg.php @@ -0,0 +1,21 @@ + '"Изкуството да бъдеш мъдър е изкуството да знаеш какво да пренебрегнеш."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'bg', + 'settings.direction' => 'ltr', + + // Service - Users + 'account.emails.team' => '%s Екип', + 'account.emails.verification.title' => 'Потвърждаване на профила', + 'account.emails.verification.body' => 'bg.email.auth.confirm.tpl', + 'account.emails.recovery.title' => 'Възстановяване на парола', + 'account.emails.recovery.body' => 'bg.email.auth.recovery.tpl', + 'account.emails.invitation.title' => 'Покана към %s екипа при %s', + 'account.emails.invitation.body' => 'bg.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Неизвестно', + + 'countries' => include 'bg.countries.php', + 'continents' => include 'bg.continents.php', +]; diff --git a/app/config/locale/translations/es.countries.php b/app/config/locale/translations/es.countries.php index 4479c27806..57f9c3c313 100644 --- a/app/config/locale/translations/es.countries.php +++ b/app/config/locale/translations/es.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Costa Rica', 'CU' => 'Cuba', 'CY' => 'Chipre', - 'CZ' => 'República Checa', + 'CZ' => 'Chequia', 'DE' => 'Alemania', 'DJ' => 'Yibuti', 'DM' => 'Dominica', diff --git a/app/config/locale/translations/es.php b/app/config/locale/translations/es.php index efe6c53fa9..eec059533e 100644 --- a/app/config/locale/translations/es.php +++ b/app/config/locale/translations/es.php @@ -9,7 +9,7 @@ return [ 'account.emails.team' => 'Equipo %s', 'account.emails.verification.title' => 'Confirmación de la cuenta', 'account.emails.verification.body' => 'es.email.auth.confirm.tpl', - 'account.emails.recovery.title' => 'Reestablecer contraseña', + 'account.emails.recovery.title' => 'Restablecer contraseña', 'account.emails.recovery.body' => 'es.email.auth.recovery.tpl', 'account.emails.invitation.title' => 'Invitación al Equipo %s en %s', 'account.emails.invitation.body' => 'es.email.auth.invitation.tpl', diff --git a/app/config/locale/translations/fa.continents.php b/app/config/locale/translations/fa.continents.php new file mode 100644 index 0000000000..e55e8f9f3c --- /dev/null +++ b/app/config/locale/translations/fa.continents.php @@ -0,0 +1,11 @@ + 'آفریقا', + 'AN' => 'قطب جنوب', + 'AS' => 'آسیا', + 'EU' => 'اروپا', + 'NA' => 'آمریکای شمالی', + 'OC' => 'اقیانوسیه', + 'SA' => 'آمریکای جنوبی', +]; diff --git a/app/config/locale/translations/fa.countries.php b/app/config/locale/translations/fa.countries.php new file mode 100644 index 0000000000..28a5ae0ae1 --- /dev/null +++ b/app/config/locale/translations/fa.countries.php @@ -0,0 +1,198 @@ + 'افقانستان', + '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' => 'زیمباوه', +]; diff --git a/app/config/locale/translations/fa.php b/app/config/locale/translations/fa.php new file mode 100644 index 0000000000..35fb30afc7 --- /dev/null +++ b/app/config/locale/translations/fa.php @@ -0,0 +1,21 @@ + '"هنر خردمند بودن، هنر دانستن چیزی است که باید از آن غافل شد."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'fa', + 'settings.direction' => 'rtl', + + // Service - Users + 'account.emails.team' => 'تیم %s', + 'account.emails.verification.title' => 'تایید حساب کاربری', + 'account.emails.verification.body' => 'fa.email.auth.confirm.tpl', + 'account.emails.recovery.title' => 'بازیابی رمز عبور', + 'account.emails.recovery.body' => 'fa.email.auth.recovery.tpl', + 'account.emails.invitation.title' => 'دعوتنامه به تیم %s در %s', + 'account.emails.invitation.body' => 'fa.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'ناشناخته', + + 'countries' => include 'fa.countries.php', + 'continents' => include 'fa.continents.php', +]; diff --git a/app/config/locale/translations/fo.countries.php b/app/config/locale/translations/fo.countries.php index bc6aa77e8a..337d06b667 100644 --- a/app/config/locale/translations/fo.countries.php +++ b/app/config/locale/translations/fo.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Kosta Rika', 'CU' => 'Kuba', 'CY' => 'Kýpros', - 'CZ' => 'Kekkoslovakia', + 'CZ' => 'Kekkia', 'DE' => 'Týskland', 'DJ' => 'Djibouti', 'DM' => 'Dominika', diff --git a/app/config/locale/translations/fr.countries.php b/app/config/locale/translations/fr.countries.php index 28bff2bdde..02324e0634 100644 --- a/app/config/locale/translations/fr.countries.php +++ b/app/config/locale/translations/fr.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Costa Rica', 'CU' => 'Cuba', 'CY' => 'Chypre', - 'CZ' => 'République Tchèque', + 'CZ' => 'Tchéquie', 'DE' => 'Allemagne', 'DJ' => 'Djibouti', 'DM' => 'Dominique', diff --git a/app/config/locale/translations/hi.countries.php b/app/config/locale/translations/hi.countries.php index f9f40230a0..c3e748492a 100644 --- a/app/config/locale/translations/hi.countries.php +++ b/app/config/locale/translations/hi.countries.php @@ -2,29 +2,28 @@ return [ - 'AF' => 'अफगानिस्तान', + 'AF' => 'अफ़ग़ानिस्तान', 'AO' => 'अंगोला', 'AL' => 'अल्बानिया', 'AD' => 'अंडोरा', 'AE' => 'संयुक्त अरब अमीरात', 'AR' => 'अर्जेंटीना', - 'AM' => 'आर्मेनिया', - 'AG' => 'एंटीगुआ और बारबुडा', + 'AM' => 'आर्मीनिया', + 'AG' => 'अंटीगुआ और बारबूडा', 'AU' => 'ऑस्ट्रेलिया', 'AT' => 'ऑस्ट्रिया', - 'AZ' => 'अजरबैजान', - + 'AZ' => 'अज़रबैजान', 'BI' => 'बुरुंडी', 'BE' => 'बेल्जियम', 'BJ' => 'बेनिन', - 'BF' => 'बुर्किना फ़ासो', + 'BF' => 'बुर्किना फासो', 'BD' => 'बांग्लादेश', 'BG' => 'बुल्गारिया', 'BH' => 'बहरीन', 'BS' => 'बहामास', - 'BA' => 'बोस्निया और हर्ज़ेगोविना', + 'BA' => 'बॉस्निया और हर्ज़ेगोविना', 'BY' => 'बेलारूस', - 'BZ' => 'बेलीज', + 'BZ' => 'बेलीज़', 'BO' => 'बोलीविया', 'BR' => 'ब्राज़ील', 'BB' => 'बारबाडोस', @@ -33,50 +32,49 @@ return [ 'BW' => 'बोत्सवाना', 'CF' => 'मध्य अफ्रीकी गणराज्य', 'CA' => 'कनाडा', - 'CH' => 'स्विटज़रलैंड', + 'CH' => 'स्विट्ज़रलैंड', 'CL' => 'चिली', 'CN' => 'चीन', 'CI' => 'आइवरी कोस्ट', 'CM' => 'कैमरून', - 'CD' => 'डीआर कांगो', + 'CD' => 'कांगो लोकतान्त्रिक गणराज्य', 'CG' => 'कांगो गणराज्य', 'CO' => 'कोलंबिया', 'KM' => 'कोमोरोस', - 'CV' => 'केप वर्डे', - 'CR' => 'कोस्टा रिका', + 'CV' => 'केप वर्दे', + 'CR' => 'कोस्टा रीका', 'CU' => 'क्यूबा', 'CY' => 'साइप्रस', - 'CZ' => 'चेकिया', + 'CZ' => 'चेक गणराज्य', 'DE' => 'जर्मनी', 'DJ' => 'जिबूती', 'DM' => 'डोमिनिका', 'DK' => 'डेनमार्क', 'DO' => 'डोमिनिकन रिपब्लिक', 'DZ' => 'अल्जीरिया', - 'ER' => 'इरिट्रिया', - 'EC' => 'इक्वाडोर', + 'ER' => 'इरित्रिया', + 'EC' => 'ईक्वाडोर', 'EG' => 'मिस्र', - 'IR' => 'इरिट्रिया', 'ES' => 'स्पेन', 'EE' => 'एस्टोनिया', 'ET' => 'इथियोपिया', - 'FI' => 'फिनलैंड', - 'FJ' => 'फिजी', + 'FI' => 'फ़िनलैंड', + 'FJ' => 'फ़िजी', 'FR' => 'फ्रांस', 'FM' => 'माइक्रोनेशिया', - 'GA' => 'गैबॉन', + 'GA' => 'गबोन', 'GB' => 'यूनाइटेड किंगडम', 'GE' => 'जॉर्जिया', 'GH' => 'घाना', 'GN' => 'गिनी', - 'GM' => 'गाम्बिया', + 'GM' => 'ज़ाम्बिया', 'GW' => 'गिनी-बिसाऊ', 'GQ' => 'इक्वेटोरियल गिनी', - 'GR' => 'ग्रीस', + 'GR' => 'यूनान', 'GD' => 'ग्रेनाडा', 'GT' => 'ग्वाटेमाला', - 'GY' => 'गुयाना', - 'HN' => 'होंडुरास', + 'GY' => 'गयाना', + 'HN' => 'होंडुरस', 'HR' => 'क्रोएशिया', 'HT' => 'हैती', 'HU' => 'हंगरी', @@ -91,15 +89,14 @@ return [ 'JM' => 'जमैका', 'JO' => 'जॉर्डन', 'JP' => 'जापान', - 'KZ' => 'कजाकिस्तान', - 'KE' => 'केन्या', - 'KG' => 'किर्गिस्तान', + 'KZ' => 'कज़ाख़िस्तान', + 'KE' => 'कीनियाा', + 'KG' => 'किर्गिज़स्तान', 'KH' => 'कंबोडिया', - 'KI' => 'किरीबाती', + 'KI' => 'किरिबाती', 'KN' => 'सेंट किट्स एंड नेविस', 'KR' => 'दक्षिण कोरिया', 'KW' => 'कुवैत', - 'LA' => 'लाओस', 'LB' => 'लेबनान', 'LR' => 'लाइबेरिया', @@ -112,31 +109,31 @@ return [ 'LU' => 'लक्ज़मबर्ग', 'LV' => 'लातविया', 'MA' => 'मोरक्को', - 'MC' => 'मोनाको', - 'MD' => 'मोल्दोवा', + 'MC' => 'मोनैको', + 'MD' => 'मॉल्डोवा', 'MG' => 'मेडागास्कर', 'MV' => 'मालदीव', 'MX' => 'मेक्सिको', - 'MH' => 'मार्शल आइलैंड्स', + 'MH' => 'मार्शल द्वीपसमूह', 'MK' => 'मैसिडोनिया', - 'ML' => 'रक्त', + 'ML' => 'माली', 'MT' => 'माल्टा', 'MM' => 'म्यांमार', 'ME' => 'मोंटेनेग्रो', 'MN' => 'मंगोलिया', 'MZ' => 'मोज़ाम्बिक', 'MR' => 'मॉरिटानिया', - 'MU' => 'मॉरीशस', + 'MU' => 'मॉरिशस', 'MW' => 'मलावी', 'MY' => 'मलेशिया', 'NA' => 'नामीबिया', 'NE' => 'नाइजर', - 'NG' => 'नाइजीरिया', + 'NG' => 'नाईजीरिया', 'NI' => 'निकारागुआ', 'NL' => 'नीदरलैंड', 'NO' => 'नॉर्वे', 'NP' => 'नेपाल', - 'NR' => 'नारू', + 'NR' => 'नाउरु', 'NZ' => 'न्यूजीलैंड', 'OM' => 'ओमान', 'PK' => 'पाकिस्तान', @@ -148,9 +145,8 @@ return [ 'PL' => 'पोलैंड', 'KP' => 'उत्तर कोरिया', 'PT' => 'पुर्तगाल', - 'PY' => 'पराग्वे', - - 'QA' => 'कतर', + 'PY' => 'पैराग्वे', + 'QA' => 'क़तर', 'RO' => 'रोमानिया', 'RU' => 'रूस', 'RW' => 'रवांडा', @@ -165,7 +161,7 @@ return [ 'SO' => 'सोमालिया', 'RS' => 'सर्बिया', 'SS' => 'दक्षिण सूडान', - 'ST' => 'साओ तोमे और प्रिंसिपे', + 'ST' => 'साओ तोमे और प्रिंसिपी', 'SR' => 'सूरीनाम', 'SK' => 'स्लोवाकिया', 'SI' => 'स्लोवेनिया', @@ -183,21 +179,21 @@ return [ 'TT' => 'त्रिनिदाद और टोबैगो', 'TN' => 'ट्यूनीशिया', 'TR' => 'तुर्की', - 'TV' => 'तुवालु', + 'TV' => 'तुवालू', 'TZ' => 'तंजानिया', 'UG' => 'युगांडा', 'UA' => 'यूक्रेन', 'UY' => 'उरुग्वे', 'US' => 'संयुक्त राज्य अमेरिका', - 'UZ' => 'उज्बेकिस्तान', - 'VA' => 'वेटिकन सिटी', - 'VC' => 'सेंट विंसेंट और ग्रेनेडाइंस', - 'VE' => 'वेनेजुएला', + 'UZ' => 'उज़्बेकिस्तान', + 'VA' => 'वैटिकन सिटी', + 'VC' => 'सेंट विंसेंट एंड ग्रेनेडाइंस', + 'VE' => 'वेनेज़ुएला', 'VN' => 'वियतनाम', - 'VU' => 'वानुअतु', + 'VU' => 'वानूआतू', 'WS' => 'समोआ', 'YE' => 'यमन', 'ZA' => 'दक्षिण अफ्रीका', 'ZM' => 'ज़ाम्बिया', - 'ZW' => 'जिम्बाब्वे', + 'ZW' => 'ज़िम्बाब्वे', ]; diff --git a/app/config/locale/translations/id.countries.php b/app/config/locale/translations/id.countries.php index 3f625140e3..049ae9c6c5 100644 --- a/app/config/locale/translations/id.countries.php +++ b/app/config/locale/translations/id.countries.php @@ -13,7 +13,7 @@ return [ 'AT' => 'Austria', 'AZ' => 'Azerbaijan', 'BI' => 'Burundi', - 'BE' => 'Belgium', + 'BE' => 'Belgia', 'BJ' => 'Benin', 'BF' => 'Burkina Faso', 'BD' => 'Bangladesh', @@ -24,7 +24,7 @@ return [ 'BY' => 'Belarus', 'BZ' => 'Belize', 'BO' => 'Bolivia', - 'BR' => 'Brazil', + 'BR' => 'Brasil', 'BB' => 'Barbados', 'BN' => 'Brunei', 'BT' => 'Bhutan', @@ -36,15 +36,15 @@ return [ 'CN' => 'Cina', 'CI' => 'Pantai Gading', 'CM' => 'Kamerun', - 'CD' => 'DR Kongo', + 'CD' => 'Republik Demokratik Kongo', 'CG' => 'Republik Kongo', - 'CO' => 'Kolumbia', + 'CO' => 'Kolombia', 'KM' => 'Komoro', 'CV' => 'Tanjung Verde', 'CR' => 'Kosta Rika', 'CU' => 'Kuba', 'CY' => 'Siprus', - 'CZ' => 'Czechia', + 'CZ' => 'Ceko', 'DE' => 'Jerman', 'DJ' => 'Djibouti', 'DM' => 'Dominika', @@ -86,11 +86,11 @@ return [ 'IL' => 'Israel', 'IT' => 'Italia', 'JM' => 'Jamaika', - 'JO' => 'Jordan', + 'JO' => 'Yordania', 'JP' => 'Jepang', 'KZ' => 'Kazakhstan', 'KE' => 'Kenya', - 'KG' => 'Kirgistan', + 'KG' => 'Kirgizstan', 'KH' => 'Kamboja', 'KI' => 'Kiribati', 'KN' => 'Saint Kitts dan Nevis', @@ -113,7 +113,7 @@ return [ 'MG' => 'Madagaskar', 'MV' => 'Maladewa', 'MX' => 'Meksiko', - 'MH' => 'Pulau Marshall', + 'MH' => 'Kepulauan Marshall', 'MK' => 'Makedonia', 'ML' => 'Mali', 'MT' => 'Malta', @@ -153,7 +153,7 @@ return [ 'SD' => 'Sudan', 'SN' => 'Senegal', 'SG' => 'Singapura', - 'SB' => 'Pulau Solomon', + 'SB' => 'Kepulauan Solomon', 'SL' => 'Sierra Leone', 'SV' => 'El Salvador', 'SM' => 'San Marino', @@ -165,11 +165,11 @@ return [ 'SK' => 'Slovakia', 'SI' => 'Slovenia', 'SE' => 'Swedia', - 'SZ' => 'Swaziland', + 'SZ' => 'Eswatini', 'SC' => 'Seychelles', 'SY' => 'Suriah', 'TD' => 'Chad', - 'TG' => 'Untuk pergi', + 'TG' => 'Togo', 'TH' => 'Thailand', 'TJ' => 'Tajikistan', 'TM' => 'Turkmenistan', diff --git a/app/config/locale/translations/it.countries.php b/app/config/locale/translations/it.countries.php index ce4e56349d..bb7869066e 100644 --- a/app/config/locale/translations/it.countries.php +++ b/app/config/locale/translations/it.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Costa Rica', 'CU' => 'Cuba', 'CY' => 'Cipro', - 'CZ' => 'Repubblica Ceca', + 'CZ' => 'Cechia', 'DE' => 'Germania', 'DJ' => 'Gibuti', 'DM' => 'Dominica', @@ -86,7 +86,7 @@ return [ 'IL' => 'Israele', 'IT' => 'Italia', 'JM' => 'Giamaica', - 'JO' => 'Jordan', + 'JO' => 'Giordania', 'JP' => 'Giappone', 'KZ' => 'Kazakistan', 'KE' => 'Kenya', diff --git a/app/config/locale/translations/ka.continents.php b/app/config/locale/translations/ka.continents.php new file mode 100644 index 0000000000..a93d841957 --- /dev/null +++ b/app/config/locale/translations/ka.continents.php @@ -0,0 +1,11 @@ + 'ಆಫ್ರಿಕಾ', + 'AN' => 'ಅಂಟಾರ್ಕ್ಟಿಕಾ', + 'AS' => 'ಏಷ್ಯಾ', + 'EU' => 'ಯುರೋಪ್', + 'NA' => 'ಉತ್ತರ ಅಮೆರಿಕ', + 'OC' => 'ಓಷಿಯಾನಿಯಾ', + 'SA' => 'ದಕ್ಷಿಣ ಅಮೆರಿಕಾ', +]; \ No newline at end of file diff --git a/app/config/locale/translations/ka.countries.php b/app/config/locale/translations/ka.countries.php new file mode 100644 index 0000000000..048f49c1bf --- /dev/null +++ b/app/config/locale/translations/ka.countries.php @@ -0,0 +1,198 @@ + 'ಅಫ್ಘಾನಿಸ್ತಾನ', + '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' => 'ಜಿಂಬಾಬ್ವೆ', +]; \ No newline at end of file diff --git a/app/config/locale/translations/ka.php b/app/config/locale/translations/ka.php new file mode 100644 index 0000000000..5a06b1a75d --- /dev/null +++ b/app/config/locale/translations/ka.php @@ -0,0 +1,21 @@ + '"ಬುದ್ಧಿವಂತಿಕೆಯ ಕಲೆ ಏನು ಕಡೆಗಣಿಸಬೇಕೆಂದು ತಿಳಿಯುವ ಕಲೆ."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'ka', + 'settings.direction' => 'ltr', + + // Service - Users + 'account.emails.team' => '%s ತಂಡ', + 'account.emails.verification.title' => 'ಖಾತೆ ಪರಿಶೀಲನೆ', + 'account.emails.verification.body' => 'ka.email.auth.confirm.tpl', + 'account.emails.recovery.title' => 'ಪಾಸ್‌ವರ್ಡ್ ಮರುಹೊಂದಿಸು', + 'account.emails.recovery.body' => 'ka.email.auth.recovery.tpl', + 'account.emails.invitation.title' => '%s ತಂಡಕ್ಕೆ% %s ನಲ್ಲಿ ಆಹ್ವಾನ', + 'account.emails.invitation.body' => 'ka.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'Unknown', + + 'countries' => include 'ka.countries.php', + 'continents' => include 'ka.continents.php', +]; diff --git a/app/config/locale/translations/mr.countries.php b/app/config/locale/translations/mr.countries.php index f9f40230a0..cb6cec9229 100644 --- a/app/config/locale/translations/mr.countries.php +++ b/app/config/locale/translations/mr.countries.php @@ -13,7 +13,6 @@ return [ 'AU' => 'ऑस्ट्रेलिया', 'AT' => 'ऑस्ट्रिया', 'AZ' => 'अजरबैजान', - 'BI' => 'बुरुंडी', 'BE' => 'बेल्जियम', 'BJ' => 'बेनिन', diff --git a/app/config/locale/translations/od.continents.php b/app/config/locale/translations/od.continents.php new file mode 100644 index 0000000000..d89addeefe --- /dev/null +++ b/app/config/locale/translations/od.continents.php @@ -0,0 +1,11 @@ + 'ଆଫ୍ରିକା', + 'AN' => 'ଆଣ୍ଟାର୍କଟିକା', + 'AS' => 'ଏସିଆ', + 'EU' => 'ଇଉରୋପ', + 'NA' => 'ନର୍ଥ ଆମେରିକା', + 'OC' => 'ଓସାନିଆ', + 'SA' => 'ସାଉଥ ଆମେରିକା', +]; diff --git a/app/config/locale/translations/od.countries.php b/app/config/locale/translations/od.countries.php new file mode 100644 index 0000000000..ca24130b4d --- /dev/null +++ b/app/config/locale/translations/od.countries.php @@ -0,0 +1,198 @@ + 'ଅଫଘନିସ୍ତାନ', + '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' => 'ଜିମ୍ବାୱେ', +]; diff --git a/app/config/locale/translations/od.php b/app/config/locale/translations/od.php new file mode 100644 index 0000000000..6b6973da25 --- /dev/null +++ b/app/config/locale/translations/od.php @@ -0,0 +1,21 @@ + '"ଜ୍ଞାନୀ ହେବାର କଳା ହେଉଛି କ’ଣ ଅଣଦେଖା କରାଯିବ ଜାଣିବାର କଳା |"', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'od', + 'settings.direction' => 'ltr', + + // Service - Users + 'account.emails.team' => '%s ଟିମ', + 'account.emails.verification.title' => 'ଏକାଉଣ୍ଟ ଭେରିଫିକେସନ', + 'account.emails.verification.body' => 'od.email.auth.confirm.tpl', + 'account.emails.recovery.title' => 'ପାସୱାର୍ଡ ରିସେଟ', + 'account.emails.recovery.body' => 'od.email.auth.recovery.tpl', + 'account.emails.invitation.title' => 'ଈଂଭିଟେସନ %s ଟିମ at %s', + 'account.emails.invitation.body' => 'od.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'ଅଜ୍ଞାତ', + + 'countries' => include 'od.countries.php', + 'continents' => include 'od.continents.php', +]; diff --git a/app/config/locale/translations/pa.continents.php b/app/config/locale/translations/pa.continents.php new file mode 100644 index 0000000000..07b6548b38 --- /dev/null +++ b/app/config/locale/translations/pa.continents.php @@ -0,0 +1,11 @@ + 'ਅਫਰੀਕਾ', + 'AN' => 'ਅੰਟਾਰਕਟਿਕਾ', + 'AS' => 'ਏਸ਼ੀਆ', + 'EU' => 'ਯੂਰਪ', + 'NA' => 'ਉੱਤਰ ਅਮਰੀਕਾ', + 'OC' => 'ਓਸੀਆਨੀਆ', + 'SA' => 'ਸਾਉਥ ਅਮਰੀਕਾ', +]; diff --git a/app/config/locale/translations/pa.countries.php b/app/config/locale/translations/pa.countries.php new file mode 100644 index 0000000000..1096d0a368 --- /dev/null +++ b/app/config/locale/translations/pa.countries.php @@ -0,0 +1,200 @@ + 'ਅਫਗਾਨਿਸਤਾਨ', + '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' => 'ਕਿ cਬਾ', + 'CY' => 'ਸਾਈਪ੍ਰਸ', + 'CZ' => 'ਚੇਕ ਗਣਤੰਤਰ', + 'DE' => 'ਜਰਮਨ', + 'DJ' => 'ਜਾਇਬੂਟੀ', + 'DM' => 'ਹਾਵੀਕਾ', + 'DK' => 'ਡੈਨਮਾਰਕ', + 'DO' => 'ਡੋਮਿਨਿੱਕ ਰਿਪਬਲਿਕ', + 'DZ' => 'ਅਲਜੀਰੀਆ', + 'ER' => 'ਇਰੀਟਰੀਆ', + 'EC' => 'ਇਕੂਏਟਰ', + 'EG' => 'ਮਿਸਰ', + 'IR' => 'ਇਰੀਟਰੀਆ', + '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' => 'ਜ਼ਿੰਬਾਬਵੇ', +]; diff --git a/app/config/locale/translations/pa.php b/app/config/locale/translations/pa.php new file mode 100644 index 0000000000..6f1ffeeee4 --- /dev/null +++ b/app/config/locale/translations/pa.php @@ -0,0 +1,21 @@ + '"ਬੁੱਧੀਮਾਨ ਬਣਨ ਦੀ ਕਲਾ ਇਹ ਜਾਣਨ ਦੀ ਕਲਾ ਹੈ ਕਿ ਕਿਸ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨਾ ਹੈ."', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'pa', + 'settings.direction' => 'ltr', + + // Service - Users + 'account.emails.team' => '%s ਟੀਮ', + 'account.emails.verification.title' => 'ਖਾਤਾ ਪੁਸ਼ਟੀਕਰਣ', + 'account.emails.verification.body' => 'pa.email.auth.confirm.tpl', + 'account.emails.recovery.title' => 'ਪਾਸਵਰਡ ਰੀਸੈੱਟ', + 'account.emails.recovery.body' => 'pa.email.auth.recovery.tpl', + 'account.emails.invitation.title' => 'ਸੱਦਾ %s ਟੀਮ %s', + 'account.emails.invitation.body' => 'pa.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'ਅਣਜਾਣ', + + 'countries' => include 'pa.countries.php', + 'continents' => include 'pa.continents.php', +]; diff --git a/app/config/locale/translations/sq.countries.php b/app/config/locale/translations/sq.countries.php index e1744bf889..a8ef59ec06 100644 --- a/app/config/locale/translations/sq.countries.php +++ b/app/config/locale/translations/sq.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Kosta Rika', 'CU' => 'Kuba', 'CY' => 'Qipro', - 'CZ' => 'Republika Czecheke', + 'CZ' => 'Çekia', 'DE' => 'Gjermani', 'DJ' => 'Djibouti', 'DM' => 'Dominica', @@ -195,4 +195,4 @@ return [ 'ZA' => 'Afrika e Jugut', 'ZM' => 'Zambia', 'ZW' => 'Zimbabve', -]; \ No newline at end of file +]; diff --git a/app/config/locale/translations/templates/bg.email.auth.confirm.tpl b/app/config/locale/translations/templates/bg.email.auth.confirm.tpl new file mode 100644 index 0000000000..dc0c1df182 --- /dev/null +++ b/app/config/locale/translations/templates/bg.email.auth.confirm.tpl @@ -0,0 +1,15 @@ +

+ Здравейте {{name}}, +

+

+ Следвайте този линк, за да потвърдите имейл адреса си. +

+{{cta}} +

+ Ако не сте поискали да потвърдите този адрес, можете да игнорирате това съобщение. +

+

+ Поздрави, +
+ {{project}} екип +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/bg.email.auth.invitation.tpl b/app/config/locale/translations/templates/bg.email.auth.invitation.tpl new file mode 100644 index 0000000000..d5157f01c6 --- /dev/null +++ b/app/config/locale/translations/templates/bg.email.auth.invitation.tpl @@ -0,0 +1,14 @@ +

+ Здравейте, +

+

+ Този имейл Ви беше изпратен, защото {{owner}} искаше да Ви покани да станете член на {{team}} екип в {{project}}. +

+{{cta}} +

+ Ако не се интересувате, можете да игнорирате това съобщение.

+

+ Поздрави, +
+ {{project}} екип +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/bg.email.auth.recovery.tpl b/app/config/locale/translations/templates/bg.email.auth.recovery.tpl new file mode 100644 index 0000000000..007f7f05c3 --- /dev/null +++ b/app/config/locale/translations/templates/bg.email.auth.recovery.tpl @@ -0,0 +1,15 @@ +

+ Здравейте {{name}}, +

+

+ Последвайте този линк за да промените своята {{project}} парола. +

+{{cta}} +

+ Ако не сте поискали да потвърдите този адрес, можете да игнорирате това съобщение. +

+

+ Поздрави, +
+ {{project}} екип +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/cz.email.auth.confirm.tpl b/app/config/locale/translations/templates/cz.email.auth.confirm.tpl index e72b357a48..9e5fab32cc 100644 --- a/app/config/locale/translations/templates/cz.email.auth.confirm.tpl +++ b/app/config/locale/translations/templates/cz.email.auth.confirm.tpl @@ -2,14 +2,14 @@ Ahoj {{name}},

- Kliknutím na tento odkaz ověřte svou e-mailovou adresu. + Klepnutím na tento odkaz ověřte svou e-mailovou adresu.

{{cta}}

Pokud jste nepožádali o ověření této adresy, můžete tuto zprávu ignorovat.

- dík, + Dík,
{{project}} tým

diff --git a/app/config/locale/translations/templates/cz.email.auth.invitation.tpl b/app/config/locale/translations/templates/cz.email.auth.invitation.tpl index d5353e71cf..0dbfa6570b 100644 --- a/app/config/locale/translations/templates/cz.email.auth.invitation.tpl +++ b/app/config/locale/translations/templates/cz.email.auth.invitation.tpl @@ -2,7 +2,7 @@ Ahoj,

- Tento e-mail vám byl zaslán, protože vás {{owner}} chtěl pozvat, abyste se stali členem týmu v týmu {{team}} v {{project}}. + Tento e-mail vám byl zaslán, protože vás {{owner}} chtěl pozvat, abyste se stali členem týmu {{team}} v {{project}}.

Klepnutím na tento odkaz se připojíte k týmu {{team}}: diff --git a/app/config/locale/translations/templates/en.email.auth.invitation.tpl b/app/config/locale/translations/templates/en.email.auth.invitation.tpl index 70ea922c0c..f801a5d3c0 100644 --- a/app/config/locale/translations/templates/en.email.auth.invitation.tpl +++ b/app/config/locale/translations/templates/en.email.auth.invitation.tpl @@ -2,7 +2,7 @@ Hello,

- This mail was sent to you because {{owner}} wanted to invite you to become a team member at the {{team}} team over at {{project}}. + This mail was sent to you because {{owner}} wanted to invite you to become a member of the {{team}} team at {{project}}.

{{cta}}

@@ -11,4 +11,4 @@ Thanks,
{{project}} team -

\ No newline at end of file +

diff --git a/app/config/locale/translations/templates/en.email.auth.recovery.tpl b/app/config/locale/translations/templates/en.email.auth.recovery.tpl index a4a982f46f..57bdeb18a5 100644 --- a/app/config/locale/translations/templates/en.email.auth.recovery.tpl +++ b/app/config/locale/translations/templates/en.email.auth.recovery.tpl @@ -6,10 +6,10 @@

{{cta}}

- If you didn’t ask to verify this address, you can ignore this message. + If you didn’t ask to reset your password, you can ignore this message.

Thanks,
{{project}} team -

\ No newline at end of file +

diff --git a/app/config/locale/translations/templates/es.email.auth.invitation.tpl b/app/config/locale/translations/templates/es.email.auth.invitation.tpl index d07b7ffb55..c1a8f81f11 100644 --- a/app/config/locale/translations/templates/es.email.auth.invitation.tpl +++ b/app/config/locale/translations/templates/es.email.auth.invitation.tpl @@ -2,7 +2,7 @@ Hola,

- Te hemos enviamos este correo porque {{owner}} quiere invitarte a formar parte del equipo {{team}} en {{project}}. + Te hemos enviado este correo porque {{owner}} quiere invitarte a formar parte del equipo {{team}} en {{project}}.

Sigue este enlace para unirte al equipo {{team}}: diff --git a/app/config/locale/translations/templates/es.email.auth.recovery.tpl b/app/config/locale/translations/templates/es.email.auth.recovery.tpl index 0f1cfaa434..e498fd335c 100644 --- a/app/config/locale/translations/templates/es.email.auth.recovery.tpl +++ b/app/config/locale/translations/templates/es.email.auth.recovery.tpl @@ -2,11 +2,11 @@ Hola {{name}},

- Sigue este enlace para reestablecer tu contraseña de {{project}}. + Sigue este enlace para restablecer tu contraseña de {{project}}.

{{cta}}

- Si no has pedido reestablecer tu contraseña, puedes ignorar este mensaje. + Si no solicitaste restablecer tu contraseña, puedes ignorar este mensaje.

Gracias, diff --git a/app/config/locale/translations/templates/fa.email.auth.confirm.tpl b/app/config/locale/translations/templates/fa.email.auth.confirm.tpl new file mode 100644 index 0000000000..dcd33d88a8 --- /dev/null +++ b/app/config/locale/translations/templates/fa.email.auth.confirm.tpl @@ -0,0 +1,16 @@ +

+ +سلام {{name}}، +

+

+ برای تأیید آدرس ایمیل خود، روی این لینک کلیک کنید. +

+{{cta}} +

+اگر از شما خواسته نشده است این آدرس ایمیل را تأیید کنید، می توانید این پیام را نادیده بگیرید. +

+

+ متشکریم, +
+ تیم {{project}} +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/fa.email.auth.invitation.tpl b/app/config/locale/translations/templates/fa.email.auth.invitation.tpl new file mode 100644 index 0000000000..a89c7decc1 --- /dev/null +++ b/app/config/locale/translations/templates/fa.email.auth.invitation.tpl @@ -0,0 +1,18 @@ +

+ سلام، +

+

+ این نامه برای شما ارسال شد زیرا {{owner}} می‌خواهد شما را به عضویت تیم {{team}} در {{project}} دعوت کند. +

+

+ برای عضویت در تیم {{team}} بر روی لینک زیر کلیک کنید : +

+{{cta}} +

+اگر علاقه‌ای ندارید، می توانید این پیام را نادیده بگیرید. +

+

+ متشکریم, +
+ {{project}} تیم +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/fa.email.auth.recovery.tpl b/app/config/locale/translations/templates/fa.email.auth.recovery.tpl new file mode 100644 index 0000000000..b493d5e033 --- /dev/null +++ b/app/config/locale/translations/templates/fa.email.auth.recovery.tpl @@ -0,0 +1,15 @@ +

+ سلام {{name}}، +

+

+ لینک زیر را کلیک کنید تا رمز عبور {{project}} را بازیابی کنید. +

+{{cta}} +

+ اگر علاقه‌ای ندارید، می توانید این پیام را نادیده بگیرید. +

+

+ متشکریم، +
+ تیم {{project}} +

diff --git a/app/config/locale/translations/templates/ka.email.auth.confirm.tpl b/app/config/locale/translations/templates/ka.email.auth.confirm.tpl new file mode 100644 index 0000000000..62ac8d924a --- /dev/null +++ b/app/config/locale/translations/templates/ka.email.auth.confirm.tpl @@ -0,0 +1,15 @@ +

+ ಹಲೋ {{name}}, +

+

+ ನಿಮ್ಮ ಇಮೇಲ್ ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಲು ಈ ಲಿಂಕ್ ಅನ್ನು ಅನುಸರಿಸಿ. +

+{{cta}} +

+ ಈ ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಲು ನೀವು ಕೇಳದಿದ್ದರೆ, ನೀವು ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಬಹುದು. +

+

+ ಧನ್ಯವಾದಗಳು, +
+ {{project}} ತಂಡ +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/ka.email.auth.invitation.tpl b/app/config/locale/translations/templates/ka.email.auth.invitation.tpl new file mode 100644 index 0000000000..86507a1d67 --- /dev/null +++ b/app/config/locale/translations/templates/ka.email.auth.invitation.tpl @@ -0,0 +1,14 @@ +

+ ಹಲೋ, +

+

+ {{project}} ಕ್ಕೆ {{team}} ತಂಡದ ಓವರ್‌ನಲ್ಲಿ ತಂಡದ ಸದಸ್ಯರಾಗಲು {{owner}} ನಿಮ್ಮನ್ನು ಆಹ್ವಾನಿಸಲು ಬಯಸಿದ್ದರಿಂದ ಈ ಮೇಲ್ ಅನ್ನು ನಿಮಗೆ ಕಳುಹಿಸಲಾಗಿದೆ. +

+{{cta}} +

+ ನಿಮಗೆ ಆಸಕ್ತಿ ಇಲ್ಲದಿದ್ದರೆ, ನೀವು ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಬಹುದು. +

+ ಧನ್ಯವಾದಗಳು, +
+ {{project}} ತಂಡ +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/ka.email.auth.recovery.tpl b/app/config/locale/translations/templates/ka.email.auth.recovery.tpl new file mode 100644 index 0000000000..9d90ffc10b --- /dev/null +++ b/app/config/locale/translations/templates/ka.email.auth.recovery.tpl @@ -0,0 +1,15 @@ +

+ ಹಲೋ {{name}}, +

+

+ ನಿಮ್ಮ {{project}} ಪಾಸ್‌ವರ್ಡ್ ಅನ್ನು ಮರುಹೊಂದಿಸಲು ಈ ಲಿಂಕ್ ಅನ್ನು ಅನುಸರಿಸಿ. +

+{{cta}} +

+ ಈ ವಿಳಾಸವನ್ನು ಪರಿಶೀಲಿಸಲು ನೀವು ಕೇಳದಿದ್ದರೆ, ನೀವು ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಬಹುದು. +

+

+ ಧನ್ಯವಾದಗಳು, +
+ {{project}} ತಂಡ +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/od.email.auth.confirm.tpl b/app/config/locale/translations/templates/od.email.auth.confirm.tpl new file mode 100644 index 0000000000..9453a2a35c --- /dev/null +++ b/app/config/locale/translations/templates/od.email.auth.confirm.tpl @@ -0,0 +1,16 @@ +

+ + ନମସ୍କାର {{name}}, +

+

+ ଆପଣଙ୍କର ଇମେଲ୍ ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ| +

+{{cta}} +

+ ଯଦି ଆପଣ ଏହି ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ କହି ନାହାଁନ୍ତି, ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ| +

+

+ ଧନ୍ୟବାଦ, +
+ {{project}} ଟିମ +

diff --git a/app/config/locale/translations/templates/od.email.auth.invitation.tpl b/app/config/locale/translations/templates/od.email.auth.invitation.tpl new file mode 100644 index 0000000000..ea1bf636c4 --- /dev/null +++ b/app/config/locale/translations/templates/od.email.auth.invitation.tpl @@ -0,0 +1,14 @@ +

+ ନମସ୍କାର, +

+

+ ଏହି ମେଲ୍ ଆପଣଙ୍କୁ ପଠାଯାଇଥିଲା କାରଣ {{owner}} ଆପଣଙ୍କୁ {{project}} ପାଇଁ {{team}} ଦଳରେ ଦଳର ସଦସ୍ୟ ହେବାକୁ ଆମନ୍ତ୍ରିତ ହେବାକୁ ଚାହୁଁଥିଲେ| +

+{{cta}} +

+ ଯଦି ଆପଣ ଆଗ୍ରହୀ ନୁହଁନ୍ତି, ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଅଣଦେଖା କରିପାରିବେ |

+

+ ଧନ୍ୟବାଦ, +
+ {{project}} ଟିମ +

diff --git a/app/config/locale/translations/templates/od.email.auth.recovery.tpl b/app/config/locale/translations/templates/od.email.auth.recovery.tpl new file mode 100644 index 0000000000..9a20751205 --- /dev/null +++ b/app/config/locale/translations/templates/od.email.auth.recovery.tpl @@ -0,0 +1,15 @@ +

+ ନମସ୍କାର {{name}}, +

+

+ {{project}} ପାସୱାର୍ଡ ରିସେଟ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଉପରେ କ୍ଲିକ୍ କରନ୍ତୁ | +

+{{cta}} +

+ ଯଦି ଆପଣ ଏହି ଠିକଣା ଯାଞ୍ଚ କରିବାକୁ କହି ନାହାଁନ୍ତି, ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ| +

+

+ ଧନ୍ୟବାଦ, +
+ {{project}} ଟିମ +

diff --git a/app/config/locale/translations/templates/ur.email.auth.confirm.tpl b/app/config/locale/translations/templates/ur.email.auth.confirm.tpl new file mode 100644 index 0000000000..c468415d42 --- /dev/null +++ b/app/config/locale/translations/templates/ur.email.auth.confirm.tpl @@ -0,0 +1,15 @@ +

+ ہیلو {{name}}, +

+

+ اپنے ای میل پتے کی تصدیق کے ل this اس لنک کی پیروی کریں۔ +

+{{cta}} +

+ اگر آپ نے اس پتے کی تصدیق کرنے کے لئے نہیں کہا تو آپ اس پیغام کو نظرانداز کرسکتے ہیں۔ +

+

+ شکریہ, +
+ {{project}} ٹیم +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/ur.email.auth.invitation.tpl b/app/config/locale/translations/templates/ur.email.auth.invitation.tpl new file mode 100644 index 0000000000..c1982cb97f --- /dev/null +++ b/app/config/locale/translations/templates/ur.email.auth.invitation.tpl @@ -0,0 +1,14 @@ +

+ ہیلو, +

+

+ یہ میل آپ کو اس لئے بھیجا گیا تھا کیونکہ {{owner}} میں آپ کو ٹیم کے ممبر بننے کے لئے مدعو کرنا چاہتا تھا {{team}} میں ٹیم ختم {{project}}. +

+{{cta}} +

+ اگر آپ دلچسپی نہیں رکھتے ہیں تو ، آپ اس پیغام کو نظرانداز کرسکتے ہیں۔

+

+ شکریہ, +
+ {{project}} ٹیم +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/ur.email.auth.recovery.tpl b/app/config/locale/translations/templates/ur.email.auth.recovery.tpl new file mode 100644 index 0000000000..4c884ec9ce --- /dev/null +++ b/app/config/locale/translations/templates/ur.email.auth.recovery.tpl @@ -0,0 +1,15 @@ +

+ ہیلو {{name}}, +

+

+ اپنا دوبارہ ترتیب دینے کیلئے اس لنک پر عمل کریں {{project}} پاس ورڈ. +

+{{cta}} +

+ اگر آپ نے اس پتے کی تصدیق کرنے کے لئے نہیں کہا تو آپ اس پیغام کو نظرانداز کرسکتے ہیں۔ +

+

+ شکریہ, +
+ {{project}} ٹیم +

\ No newline at end of file diff --git a/app/config/locale/translations/templates/zh-tw.email.auth.confirm.tpl b/app/config/locale/translations/templates/zh-tw.email.auth.confirm.tpl index 7a19636dbb..1cc03b1629 100644 --- a/app/config/locale/translations/templates/zh-tw.email.auth.confirm.tpl +++ b/app/config/locale/translations/templates/zh-tw.email.auth.confirm.tpl @@ -2,14 +2,14 @@ {{name}} 你好,

- 請點擊下方的鏈接驗證你的電子郵箱地址。 + 請點擊下方的連結驗證你的電子郵箱地址。

{{cta}}

- 如果你沒有請求驗證本郵箱,請忽略這份郵件。 + 如果你沒有請求驗證本電子信箱,請忽略這份信件。

謝謝。
來自 {{project}} -

\ No newline at end of file +

diff --git a/app/config/locale/translations/templates/zh-tw.email.auth.invitation.tpl b/app/config/locale/translations/templates/zh-tw.email.auth.invitation.tpl index b5e6cc8225..7c65d6bdb6 100644 --- a/app/config/locale/translations/templates/zh-tw.email.auth.invitation.tpl +++ b/app/config/locale/translations/templates/zh-tw.email.auth.invitation.tpl @@ -2,17 +2,17 @@ 你好,

- {{owner}}邀請您加入{{project}}項目的{{team}}小組。 + {{owner}}邀請您加入{{project}}專案的{{team}}小組。

請點擊下方的鏈接加入{{team}}小組:

{{cta}}

- 如果您沒有加入該小組的計劃,請忽略本郵件。 + 如果您沒有加入該小組的計劃,請忽略本信件。

謝謝。
來自 {{project}} -

\ No newline at end of file +

diff --git a/app/config/locale/translations/templates/zh-tw.email.auth.recovery.tpl b/app/config/locale/translations/templates/zh-tw.email.auth.recovery.tpl index 1144b36b3c..c141200dbe 100644 --- a/app/config/locale/translations/templates/zh-tw.email.auth.recovery.tpl +++ b/app/config/locale/translations/templates/zh-tw.email.auth.recovery.tpl @@ -2,15 +2,14 @@ {{name}} 你好,

- 请点击下方的链接重新设置{{project}}的密码。 - Follow this link to reset your {{project}} password. + 請點擊下方的連結重設 {{project}} 的密碼。

{{cta}}

- 如果您未曾申请重设密码,请忽略本邮件。 + 如果你未曾申請重設密碼,請忽略本信件。

- 谢谢。 + 謝謝。
- 来自 {{project}} + 來自 {{project}}

diff --git a/app/config/locale/translations/tr.countries.php b/app/config/locale/translations/tr.countries.php index 5fd899e911..bb87d8e480 100644 --- a/app/config/locale/translations/tr.countries.php +++ b/app/config/locale/translations/tr.countries.php @@ -44,7 +44,7 @@ return [ 'CR' => 'Kosta Rika', 'CU' => 'Küba', 'CY' => 'Güney Kıbrıs Rum Kesimi', - 'CZ' => 'Çek Cumhuriyeti', + 'CZ' => 'Çekya', 'DE' => 'Almanya', 'DJ' => 'Cibuti', 'DM' => 'Dominika', diff --git a/app/config/locale/translations/ur.continents.php b/app/config/locale/translations/ur.continents.php new file mode 100644 index 0000000000..db0c9cdf56 --- /dev/null +++ b/app/config/locale/translations/ur.continents.php @@ -0,0 +1,11 @@ + 'افریقہ', + 'AN' => 'انٹارکٹیکا', + 'AS' => 'ایشیا', + 'EU' => 'یورپ', + 'NA' => 'شمالی امریکہ', + 'OC' => 'اوشینیا', + 'SA' => 'جنوبی امریکہ', +]; diff --git a/app/config/locale/translations/ur.countries.php b/app/config/locale/translations/ur.countries.php new file mode 100644 index 0000000000..8a8f95185b --- /dev/null +++ b/app/config/locale/translations/ur.countries.php @@ -0,0 +1,198 @@ + 'افغانستان', + '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' => 'زمبابوے', +]; diff --git a/app/config/locale/translations/ur.php b/app/config/locale/translations/ur.php new file mode 100644 index 0000000000..770e25f4df --- /dev/null +++ b/app/config/locale/translations/ur.php @@ -0,0 +1,21 @@ + '"عقلمند ہونے کا فن یہ جاننے کا فن ہے کہ کیا نظرانداز کیا جائے۔"', // This is the line printed in the homepage and console 'view-source' + 'settings.locale' => 'ur', + 'settings.direction' => 'rtl', + + // Service - Users + 'account.emails.team' => '%s ٹیم', + 'account.emails.verification.title' => 'اکاؤنٹ کی توثیق', + 'account.emails.verification.body' => 'ur.email.auth.confirm.tpl', + 'account.emails.recovery.title' => 'پاس ورڈ دوبارہ ترتیب دیں', + 'account.emails.recovery.body' => 'ur.email.auth.recovery.tpl', + 'account.emails.invitation.title' => 'کی دعوت %s میں ٹیم %s', + 'account.emails.invitation.body' => 'ur.email.auth.invitation.tpl', + + 'locale.country.unknown' => 'نامعلوم', + + 'countries' => include 'ur.countries.php', + 'continents' => include 'ur.continents.php', +]; diff --git a/app/config/locale/translations/zh-tw.php b/app/config/locale/translations/zh-tw.php index c77c6245fe..be4f79df95 100644 --- a/app/config/locale/translations/zh-tw.php +++ b/app/config/locale/translations/zh-tw.php @@ -1,13 +1,13 @@ '"懂得取舍,方顯睿智。"', // This is the line printed in the homepage and console 'view-source' + 'settings.inspire' => '"懂得取捨,方顯睿智。"', // This is the line printed in the homepage and console 'view-source' 'settings.locale' => 'zh-tw', 'settings.direction' => 'ltr', // Service - Users 'account.emails.team' => '%s 小組', - 'account.emails.verification.title' => '賬戶確認', + 'account.emails.verification.title' => '帳戶確認', 'account.emails.verification.body' => 'zh-tw.email.auth.confirm.tpl', 'account.emails.recovery.title' => '重設密碼', 'account.emails.recovery.body' => 'zh.email.auth.recovery.tpl', @@ -16,4 +16,4 @@ return [ 'locale.country.unknown' => '未知', 'countries' => include 'zh-tw.countries.php', 'continents' => include 'zh-tw.continents.php', -]; \ No newline at end of file +]; diff --git a/app/config/providers.php b/app/config/providers.php index 65e2127b3e..a377cae6f0 100644 --- a/app/config/providers.php +++ b/app/config/providers.php @@ -224,5 +224,14 @@ return [ // Ordered by ABC. 'form' => false, 'beta' => false, 'mock' => true, + ], + 'wordpress' => [ + 'name' => 'WordPress', + 'developers' => 'https://developer.wordpress.com/docs/oauth2/', + 'icon' => 'icon-wordpress', + 'enabled' => true, + 'form' => false, + 'beta' => false, + 'mock' => false ] ]; diff --git a/app/config/variables.php b/app/config/variables.php index c1b9982764..66308fcef0 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -115,6 +115,24 @@ return [ 'required' => false, 'question' => '', ], + [ + 'name' => '_APP_SMTP_SECURE', + 'default' => '', + 'required' => false, + 'question' => '', + ], + [ + 'name' => '_APP_SMTP_USERNAME', + 'default' => '', + 'required' => false, + 'question' => '', + ], + [ + 'name' => '_APP_SMTP_PASSWORD', + 'default' => '', + 'required' => false, + 'question' => '', + ], [ 'name' => '_APP_STORAGE_LIMIT', 'default' => '100000000', diff --git a/app/controllers/api/account.php b/app/controllers/api/account.php index f80c09c6b9..9d6785309a 100644 --- a/app/controllers/api/account.php +++ b/app/controllers/api/account.php @@ -604,7 +604,7 @@ App::get('/v1/account/sessions') /** @var Utopia\Response $response */ /** @var Appwrite\Database\Document $user */ /** @var Utopia\Locale\Locale $locale */ - /** @var GeoIp2\Database\Reader $geodb */ + /** @var MaxMind\Db\Reader $geodb */ $tokens = $user->getAttribute('tokens', []); $sessions = []; @@ -639,9 +639,16 @@ App::get('/v1/account/sessions') ]; try { - $record = $geodb->country($token->getAttribute('ip', '')); - $sessions[$index]['geo']['isoCode'] = \strtolower($record->country->isoCode); - $sessions[$index]['geo']['country'] = (isset($countries[$record->country->isoCode])) ? $countries[$record->country->isoCode] : $locale->getText('locale.country.unknown'); + $record = $geodb->get($token->getAttribute('ip', '')); + + if ($record) { + $sessions[$index]['geo']['isoCode'] = \strtolower($record['country']['iso_code']); + $sessions[$index]['geo']['country'] = (isset($countries[$record['country']['iso_code']])) ? $countries[$record['country']['iso_code']] : $locale->getText('locale.country.unknown'); + } else { + $sessions[$index]['geo']['isoCode'] = '--'; + $sessions[$index]['geo']['country'] = $locale->getText('locale.country.unknown'); + } + } catch (\Exception $e) { $sessions[$index]['geo']['isoCode'] = '--'; $sessions[$index]['geo']['country'] = $locale->getText('locale.country.unknown'); @@ -666,7 +673,7 @@ App::get('/v1/account/logs') /** @var Appwrite\Database\Document $project */ /** @var Appwrite\Database\Document $user */ /** @var Utopia\Locale\Locale $locale */ - /** @var GeoIp2\Database\Reader $geodb */ + /** @var MaxMind\Db\Reader $geodb */ $adapter = new AuditAdapter($register->get('db')); $adapter->setNamespace('app_'.$project->getId()); @@ -716,10 +723,16 @@ App::get('/v1/account/logs') ]; try { - $record = $geodb->country($log['ip']); - $output[$i]['geo']['isoCode'] = \strtolower($record->country->isoCode); - $output[$i]['geo']['country'] = $record->country->name; - $output[$i]['geo']['country'] = (isset($countries[$record->country->isoCode])) ? $countries[$record->country->isoCode] : $locale->getText('locale.country.unknown'); + $record = $geodb->get($log['ip']); + + if ($record) { + $output[$i]['geo']['isoCode'] = \strtolower($record['country']['iso_code']); + $output[$i]['geo']['country'] = (isset($countries[$record['country']['iso_code']])) ? $countries[$record['country']['iso_code']] : $locale->getText('locale.country.unknown'); + } else { + $output[$i]['geo']['isoCode'] = '--'; + $output[$i]['geo']['country'] = $locale->getText('locale.country.unknown'); + } + } catch (\Exception $e) { $output[$i]['geo']['isoCode'] = '--'; $output[$i]['geo']['country'] = $locale->getText('locale.country.unknown'); diff --git a/app/controllers/api/avatars.php b/app/controllers/api/avatars.php index 0930806983..5a3e9e48db 100644 --- a/app/controllers/api/avatars.php +++ b/app/controllers/api/avatars.php @@ -11,12 +11,10 @@ use Utopia\Cache\Cache; use Utopia\Cache\Adapter\Filesystem; use Appwrite\Resize\Resize; use Appwrite\URL\URL as URLParse; -use BaconQrCode\Renderer\ImageRenderer; -use BaconQrCode\Renderer\Image\ImagickImageBackEnd; -use BaconQrCode\Renderer\RendererStyle\RendererStyle; -use BaconQrCode\Writer; use Utopia\Config\Config; use Utopia\Validator\HexColor; +use chillerlan\QRCode\QRCode; +use chillerlan\QRCode\QROptions; $avatarCallback = function ($type, $code, $width, $height, $quality, $response) { /** @var Utopia\Response $response */ @@ -283,8 +281,8 @@ App::get('/v1/avatars/favicon') case 'jpeg': $size = \explode('x', \strtolower($sizes)); - $sizeWidth = (isset($size[0])) ? (int) $size[0] : 0; - $sizeHeight = (isset($size[1])) ? (int) $size[1] : 0; + $sizeWidth = (int) $size[0] ?? 0; + $sizeHeight = (int) $size[1] ?? 0; if (($sizeWidth * $sizeHeight) >= $space) { $space = $sizeWidth * $sizeHeight; @@ -365,13 +363,12 @@ App::get('/v1/avatars/qr') /** @var Utopia\Response $response */ $download = ($download === '1' || $download === 'true' || $download === 1 || $download === true); + $options = new QROptions([ + 'quietzone' => $size, + 'outputType' => QRCode::OUTPUT_IMAGICK + ]); - $renderer = new ImageRenderer( - new RendererStyle($size, $margin), - new ImagickImageBackEnd('png', 100) - ); - - $writer = new Writer($renderer); + $qrcode = new QRCode($options); if ($download) { $response->addHeader('Content-Disposition', 'attachment; filename="qr.png"'); @@ -380,7 +377,7 @@ App::get('/v1/avatars/qr') $response ->addHeader('Expires', \date('D, d M Y H:i:s', \time() + (60 * 60 * 24 * 45)).' GMT') // 45 days cache ->setContentType('image/png') - ->send($writer->writeString($text)) + ->send($qrcode->render($text)) ; }, ['response']); @@ -423,7 +420,7 @@ App::get('/v1/avatars/initials') $code = 0; foreach ($words as $key => $w) { - $initials .= (isset($w[0])) ? $w[0] : ''; + $initials .= $w[0] ?? ''; $code += (isset($w[0])) ? \ord($w[0]) : 0; if ($key == 1) { @@ -460,4 +457,4 @@ App::get('/v1/avatars/initials') ->setContentType('image/png') ->send($image->getImageBlob()) ; - }, ['response', 'user']); \ No newline at end of file + }, ['response', 'user']); diff --git a/app/controllers/api/database.php b/app/controllers/api/database.php index 70fdfac4f8..bd19935754 100644 --- a/app/controllers/api/database.php +++ b/app/controllers/api/database.php @@ -418,8 +418,8 @@ App::post('/v1/database/collections/:collectionId/documents') * Set default collection values */ foreach ($collection->getAttribute('rules') as $key => $rule) { - $key = (isset($rule['key'])) ? $rule['key'] : ''; - $default = (isset($rule['default'])) ? $rule['default'] : null; + $key = $rule['key'] ?? ''; + $default = $rule['default'] ?? null; if (!isset($data[$key])) { $data[$key] = $default; diff --git a/app/controllers/api/health.php b/app/controllers/api/health.php index b8955a1989..5ef4f2b9c8 100644 --- a/app/controllers/api/health.php +++ b/app/controllers/api/health.php @@ -278,14 +278,14 @@ App::get('/v1/health/stats') // Currently only used internally 'partitionFree' => Storage::human($device->getPartitionFreeSpace()), ], 'cache' => [ - 'uptime' => (isset($cacheStats['uptime_in_seconds'])) ? $cacheStats['uptime_in_seconds'] : 0, - 'clients' => (isset($cacheStats['connected_clients'])) ? $cacheStats['connected_clients'] : 0, - 'hits' => (isset($cacheStats['keyspace_hits'])) ? $cacheStats['keyspace_hits'] : 0, - 'misses' => (isset($cacheStats['keyspace_misses'])) ? $cacheStats['keyspace_misses'] : 0, - 'memory_used' => (isset($cacheStats['used_memory'])) ? $cacheStats['used_memory'] : 0, - 'memory_used_human' => (isset($cacheStats['used_memory_human'])) ? $cacheStats['used_memory_human'] : 0, - 'memory_used_peak' => (isset($cacheStats['used_memory_peak'])) ? $cacheStats['used_memory_peak'] : 0, - 'memory_used_peak_human' => (isset($cacheStats['used_memory_peak_human'])) ? $cacheStats['used_memory_peak_human'] : 0, + 'uptime' => $cacheStats['uptime_in_seconds'] ?? 0, + 'clients' => $cacheStats['connected_clients'] ?? 0, + 'hits' => $cacheStats['keyspace_hits'] ?? 0, + 'misses' => $cacheStats['keyspace_misses'] ?? 0, + 'memory_used' => $cacheStats['used_memory'] ?? 0, + 'memory_used_human' => $cacheStats['used_memory_human'] ?? 0, + 'memory_used_peak' => $cacheStats['used_memory_peak'] ?? 0, + 'memory_used_peak_human' => $cacheStats['used_memory_peak_human'] ?? 0, ], ]); }, ['response', 'register']); diff --git a/app/controllers/api/locale.php b/app/controllers/api/locale.php index 8431e00f6a..aa6fa92780 100644 --- a/app/controllers/api/locale.php +++ b/app/controllers/api/locale.php @@ -15,7 +15,7 @@ App::get('/v1/locale') /** @var Utopia\Request $request */ /** @var Utopia\Response $response */ /** @var Utopia\Locale\Locale $locale */ - /** @var GeoIp2\Database\Reader $geodb */ + /** @var MaxMind\Db\Reader $geodb */ $eu = Config::getParam('locale-eu'); $currencies = Config::getParam('locale-currencies'); @@ -24,32 +24,28 @@ App::get('/v1/locale') $time = (60 * 60 * 24 * 45); // 45 days cache $countries = $locale->getText('countries'); $continents = $locale->getText('continents'); - - if (!App::isProduction()) { - $ip = '79.177.241.94'; - } - + $output['ip'] = $ip; $currency = null; - try { - $record = $geodb->country($ip); - $output['countryCode'] = $record->country->isoCode; - $output['country'] = (isset($countries[$record->country->isoCode])) ? $countries[$record->country->isoCode] : $locale->getText('locale.country.unknown'); - //$output['countryTimeZone'] = DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, $record->country->isoCode); - $output['continent'] = (isset($continents[$record->continent->code])) ? $continents[$record->continent->code] : $locale->getText('locale.country.unknown'); - $output['continentCode'] = $record->continent->code; - $output['eu'] = (\in_array($record->country->isoCode, $eu)) ? true : false; + $record = $geodb->get($ip); + + if ($record) { + $output['countryCode'] = $record['country']['iso_code']; + $output['country'] = (isset($countries[$record['country']['iso_code']])) ? $countries[$record['country']['iso_code']] : $locale->getText('locale.country.unknown'); + $output['continent'] = (isset($continents[$record['continent']['code']])) ? $continents[$record['continent']['code']] : $locale->getText('locale.country.unknown'); + $output['continentCode'] = $record['continent']['code']; + $output['eu'] = (\in_array($record['country']['iso_code'], $eu)) ? true : false; foreach ($currencies as $code => $element) { - if (isset($element['locations']) && isset($element['code']) && \in_array($record->country->isoCode, $element['locations'])) { + if (isset($element['locations']) && isset($element['code']) && \in_array($record['country']['iso_code'], $element['locations'])) { $currency = $element['code']; } } $output['currency'] = $currency; - } catch (\Exception $e) { + } else { $output['countryCode'] = '--'; $output['country'] = $locale->getText('locale.country.unknown'); $output['continent'] = $locale->getText('locale.country.unknown'); diff --git a/app/controllers/api/users.php b/app/controllers/api/users.php index 21894e3131..741d0c6611 100644 --- a/app/controllers/api/users.php +++ b/app/controllers/api/users.php @@ -231,7 +231,7 @@ App::get('/v1/users/:userId/sessions') /** @var Utopia\Response $response */ /** @var Appwrite\Database\Database $projectDB */ /** @var Utopia\Locale\Locale $locale */ - /** @var GeoIp2\Database\Reader $geodb */ + /** @var MaxMind\Db\Reader $geodb */ $user = $projectDB->getDocument($userId); @@ -270,9 +270,16 @@ App::get('/v1/users/:userId/sessions') ]; try { - $record = $geodb->country($token->getAttribute('ip', '')); - $sessions[$index]['geo']['isoCode'] = \strtolower($record->country->isoCode); - $sessions[$index]['geo']['country'] = (isset($countries[$record->country->isoCode])) ? $countries[$record->country->isoCode] : $locale->getText('locale.country.unknown'); + $record = $geodb->get($token->getAttribute('ip', '')); + + if ($record) { + $sessions[$index]['geo']['isoCode'] = \strtolower($record['country']['iso_code']); + $sessions[$index]['geo']['country'] = (isset($countries[$record['country']['iso_code']])) ? $countries[$record['country']['iso_code']] : $locale->getText('locale.country.unknown'); + } else { + $sessions[$index]['geo']['isoCode'] = '--'; + $sessions[$index]['geo']['country'] = $locale->getText('locale.country.unknown'); + } + } catch (\Exception $e) { $sessions[$index]['geo']['isoCode'] = '--'; $sessions[$index]['geo']['country'] = $locale->getText('locale.country.unknown'); @@ -299,7 +306,7 @@ App::get('/v1/users/:userId/logs') /** @var Appwrite\Database\Document $project */ /** @var Appwrite\Database\Database $projectDB */ /** @var Utopia\Locale\Locale $locale */ - /** @var GeoIp2\Database\Reader $geodb */ + /** @var MaxMind\Db\Reader $geodb */ $user = $projectDB->getDocument($userId); @@ -356,10 +363,16 @@ App::get('/v1/users/:userId/logs') ]; try { - $record = $geodb->country($log['ip']); - $output[$i]['geo']['isoCode'] = \strtolower($record->country->isoCode); - $output[$i]['geo']['country'] = $record->country->name; - $output[$i]['geo']['country'] = (isset($countries[$record->country->isoCode])) ? $countries[$record->country->isoCode] : $locale->getText('locale.country.unknown'); + $record = $geodb->get($log['ip']); + + if($record){ + $output[$i]['geo']['isoCode'] = \strtolower($record['country']['iso_code']); + $output[$i]['geo']['country'] = (isset($countries[$record['country']['iso_code']])) ? $countries[$record['country']['iso_code']] : $locale->getText('locale.country.unknown'); + } else{ + $output[$i]['geo']['isoCode'] = '--'; + $output[$i]['geo']['country'] = $locale->getText('locale.country.unknown'); + } + } catch (\Exception $e) { $output[$i]['geo']['isoCode'] = '--'; $output[$i]['geo']['country'] = $locale->getText('locale.country.unknown'); diff --git a/app/controllers/general.php b/app/controllers/general.php index e7350515cd..5aae62ac3c 100644 --- a/app/controllers/general.php +++ b/app/controllers/general.php @@ -64,7 +64,7 @@ App::init(function ($utopia, $request, $response, $console, $project, $user, $lo ? $origin : 'localhost') . (!empty($port) ? ':'.$port : ''); $selfDomain = new Domain($request->getHostname()); - $endDomain = new Domain($origin); + $endDomain = new Domain((string)$origin); // var_dump('referer', $referrer); // var_dump('origin', $origin); diff --git a/app/http.php b/app/http.php index 9540375430..a5f0dbd438 100644 --- a/app/http.php +++ b/app/http.php @@ -30,7 +30,6 @@ $http 'open_http2_protocol' => true, // 'document_root' => __DIR__.'/../public', // 'enable_static_handler' => true, - 'timeout' => 7, 'http_compression' => true, 'http_compression_level' => 6, 'package_max_length' => $payloadSize, @@ -94,16 +93,17 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo return; } - $app = new App('Asia/Tel_Aviv'); + $app = new App('America/New_York'); try { $app->run($request, $response); } catch (\Throwable $th) { + Console::error('[Error] Type: '.get_class($th)); + Console::error('[Error] Message: '.$th->getMessage()); + Console::error('[Error] File: '.$th->getFile()); + Console::error('[Error] Line: '.$th->getLine()); + if(App::isDevelopment()) { - var_dump(get_class($th)); - var_dump($th->getMessage()); - var_dump($th->getFile()); - var_dump($th->getLine()); $swooleResponse->end('error: '.$th->getMessage()); } @@ -111,4 +111,4 @@ $http->on('request', function (SwooleRequest $swooleRequest, SwooleResponse $swo } }); -$http->start(); +$http->start(); \ No newline at end of file diff --git a/app/init.php b/app/init.php index 81ad6d028f..d24ca9d281 100644 --- a/app/init.php +++ b/app/init.php @@ -25,7 +25,7 @@ use Utopia\View; use Utopia\Config\Config; use Utopia\Locale\Locale; use Utopia\Registry\Registry; -use GeoIp2\Database\Reader; +use MaxMind\Db\Reader; use PHPMailer\PHPMailer\PHPMailer; use PDO as PDONative; @@ -166,8 +166,8 @@ $register->set('statsd', function () { // Register DB connection }); $register->set('cache', function () { // Register cache connection $redis = new Redis(); - $redis->pconnect(App::getEnv('_APP_REDIS_HOST', '', 2.5), - App::getEnv('_APP_REDIS_PORT', '')); + $redis->pconnect(App::getEnv('_APP_REDIS_HOST', ''), App::getEnv('_APP_REDIS_PORT', '')); + $redis->setOption(Redis::OPT_READ_TIMEOUT, -1); return $redis; }); @@ -226,12 +226,14 @@ Locale::setLanguage('af', include __DIR__.'/config/locale/translations/af.php'); Locale::setLanguage('ar', include __DIR__.'/config/locale/translations/ar.php'); Locale::setLanguage('ba', include __DIR__.'/config/locale/translations/ba.php'); Locale::setLanguage('be', include __DIR__.'/config/locale/translations/be.php'); +Locale::setLanguage('bg', include __DIR__.'/config/locale/translations/bg.php'); Locale::setLanguage('bn', include __DIR__.'/config/locale/translations/bn.php'); Locale::setLanguage('cat', include __DIR__.'/config/locale/translations/cat.php'); Locale::setLanguage('cz', include __DIR__.'/config/locale/translations/cz.php'); Locale::setLanguage('de', include __DIR__.'/config/locale/translations/de.php'); Locale::setLanguage('en', include __DIR__.'/config/locale/translations/en.php'); Locale::setLanguage('es', include __DIR__.'/config/locale/translations/es.php'); +Locale::setLanguage('fa', include __DIR__.'/config/locale/translations/fa.php'); Locale::setLanguage('fi', include __DIR__.'/config/locale/translations/fi.php'); Locale::setLanguage('fo', include __DIR__.'/config/locale/translations/fo.php'); Locale::setLanguage('fr', include __DIR__.'/config/locale/translations/fr.php'); @@ -246,6 +248,7 @@ Locale::setLanguage('is', include __DIR__.'/config/locale/translations/is.php'); Locale::setLanguage('it', include __DIR__.'/config/locale/translations/it.php'); Locale::setLanguage('ja', include __DIR__.'/config/locale/translations/ja.php'); Locale::setLanguage('jv', include __DIR__.'/config/locale/translations/jv.php'); +Locale::setLanguage('ka', include __DIR__.'/config/locale/translations/ka.php'); Locale::setLanguage('km', include __DIR__.'/config/locale/translations/km.php'); Locale::setLanguage('ko', include __DIR__.'/config/locale/translations/ko.php'); Locale::setLanguage('lt', include __DIR__.'/config/locale/translations/lt.php'); @@ -255,10 +258,12 @@ Locale::setLanguage('ms', include __DIR__.'/config/locale/translations/ms.php'); Locale::setLanguage('nl', include __DIR__.'/config/locale/translations/nl.php'); Locale::setLanguage('no', include __DIR__.'/config/locale/translations/no.php'); Locale::setLanguage('np', include __DIR__.'/config/locale/translations/np.php'); +Locale::setLanguage('od', include __DIR__.'/config/locale/translations/od.php'); Locale::setLanguage('ph', include __DIR__.'/config/locale/translations/ph.php'); Locale::setLanguage('pl', include __DIR__.'/config/locale/translations/pl.php'); Locale::setLanguage('pt-br', include __DIR__.'/config/locale/translations/pt-br.php'); Locale::setLanguage('pt-pt', include __DIR__.'/config/locale/translations/pt-pt.php'); +Locale::setLanguage('pa', include __DIR__.'/config/locale/translations/pa.php'); Locale::setLanguage('ro', include __DIR__.'/config/locale/translations/ro.php'); Locale::setLanguage('ru', include __DIR__ . '/config/locale/translations/ru.php'); Locale::setLanguage('si', include __DIR__ . '/config/locale/translations/si.php'); @@ -269,6 +274,7 @@ Locale::setLanguage('ta', include __DIR__ . '/config/locale/translations/ta.php' Locale::setLanguage('th', include __DIR__.'/config/locale/translations/th.php'); Locale::setLanguage('tr', include __DIR__.'/config/locale/translations/tr.php'); Locale::setLanguage('ua', include __DIR__.'/config/locale/translations/ua.php'); +Locale::setLanguage('ur', include __DIR__.'/config/locale/translations/ur.php'); Locale::setLanguage('vi', include __DIR__.'/config/locale/translations/vi.php'); Locale::setLanguage('zh-cn', include __DIR__.'/config/locale/translations/zh-cn.php'); Locale::setLanguage('zh-tw', include __DIR__.'/config/locale/translations/zh-tw.php'); diff --git a/app/preload.php b/app/preload.php index 63d08c3e13..bbfc142f0d 100644 --- a/app/preload.php +++ b/app/preload.php @@ -16,20 +16,31 @@ if (file_exists(__DIR__.'/../vendor/autoload.php')) { require __DIR__.'/../vendor/autoload.php'; } -use Appwrite\Preloader\Preloader; +use Utopia\Preloader\Preloader; include __DIR__.'/controllers/general.php'; -(new Preloader()) +$preloader = new Preloader(); + +foreach ([ + realpath(__DIR__ . '/../vendor/composer'), + realpath(__DIR__ . '/../vendor/amphp'), + realpath(__DIR__ . '/../vendor/felixfbecker'), + realpath(__DIR__ . '/../vendor/twig/twig'), + realpath(__DIR__ . '/../vendor/guzzlehttp/guzzle'), + realpath(__DIR__ . '/../vendor/domnikl'), + realpath(__DIR__ . '/../vendor/domnikl'), + realpath(__DIR__ . '/../vendor/psr/log'), + realpath(__DIR__ . '/../vendor/piwik'), + realpath(__DIR__ . '/../vendor/symfony'), +] as $key => $value) { + if($value !== false) { + $preloader->ignore($value); + } +} + +$preloader ->paths(realpath(__DIR__ . '/../app/config')) ->paths(realpath(__DIR__ . '/../app/controllers')) ->paths(realpath(__DIR__ . '/../src')) - ->ignore(realpath(__DIR__ . '/../vendor/twig/twig')) - ->ignore(realpath(__DIR__ . '/../vendor/guzzlehttp/guzzle')) - ->ignore(realpath(__DIR__ . '/../vendor/geoip2')) - ->ignore(realpath(__DIR__ . '/../vendor/maxmind')) - ->ignore(realpath(__DIR__ . '/../vendor/maxmind-db')) - ->ignore(realpath(__DIR__ . '/../vendor/psr/log')) - ->ignore(realpath(__DIR__ . '/../vendor/piwik')) - ->ignore(realpath(__DIR__ . '/../vendor/symfony')) ->load(); \ No newline at end of file diff --git a/app/tasks/doctor.php b/app/tasks/doctor.php index 0836628bde..0ab19f290e 100644 --- a/app/tasks/doctor.php +++ b/app/tasks/doctor.php @@ -219,15 +219,14 @@ $cli Console::log(''); $version = \json_decode(@\file_get_contents(App::getEnv('_APP_HOME', 'http://localhost').'/v1/health/version'), true); - if($version && isset($version['version'])) { + if ($version && isset($version['version']) && App::isProduction()) { if(\version_compare($version['version'], App::getEnv('_APP_VERSION', 'UNKNOWN')) === 0) { Console::info('You are running the latest version of '.APP_NAME.'! 🥳'); } else { Console::info('A new version ('.$version['version'].') is available! 🥳'."\n"); } - } - else { + } else { Console::error('Failed to check for a newer version'."\n"); } } catch (\Throwable $th) { diff --git a/app/tasks/install.php b/app/tasks/install.php index 3b3aa4ea67..cd7e2a0966 100644 --- a/app/tasks/install.php +++ b/app/tasks/install.php @@ -6,12 +6,14 @@ use Appwrite\Docker\Compose; use Appwrite\Docker\Env; use Utopia\CLI\Console; use Utopia\Config\Config; +use Utopia\Validator\Mock; use Utopia\View; $cli ->task('install') ->desc('Install Appwrite') - ->action(function () { + ->param('version', APP_VERSION_STABLE, new Mock(), 'Appwrite version', true) + ->action(function ($version) { /** * 1. Start - DONE * 2. Check for older setup and get older version - DONE @@ -30,10 +32,9 @@ $cli */ $vars = Config::getParam('variables'); $path = '/usr/src/code/appwrite'; - $version = null; $defaultHTTPPort = '80'; $defaultHTTPSPort = '443'; - + Console::success('Starting Appwrite installation...'); // Create directory with write permissions @@ -49,10 +50,10 @@ $cli if($data !== false) { $compose = new Compose($data); $appwrite = $compose->getService('appwrite'); - $version = ($appwrite) ? $appwrite->getImageVersion() : $version; + $oldVersion = ($appwrite) ? $appwrite->getImageVersion() : null; $ports = $compose->getService('traefik')->getPorts(); - if($version) { + if($oldVersion) { foreach($compose->getServices() as $service) { // Fetch all env vars from previous compose file if(!$service) { continue; @@ -99,7 +100,7 @@ $cli $httpPort = ($httpPort) ? $httpPort : $defaultHTTPPort; $httpsPort = Console::confirm('Choose your server HTTPS port: (default: '.$defaultHTTPSPort.')'); - $httpsPort = ($httpsPort) ? $httpsPort : $defaultHTTPPort; + $httpsPort = ($httpsPort) ? $httpsPort : $defaultHTTPSPort; $input = []; @@ -118,11 +119,11 @@ $cli $templateForCompose = new View(__DIR__.'/../views/install/compose.phtml'); $templateForEnv = new View(__DIR__.'/../views/install/env.phtml'); - + $templateForCompose ->setParam('httpPort', $httpPort) ->setParam('httpsPort', $httpsPort) - ->setParam('version', APP_VERSION_STABLE) + ->setParam('version', $version) ; $templateForEnv @@ -142,10 +143,14 @@ $cli $stdout = ''; $stderr = ''; - //Console::execute("docker-compose -f {$path}.'/docker-compose.yml up -d --remove-orphans", null, $stdout, $stderr); + Console::log("Running \"docker-compose -f {$path}/docker-compose.yml up -d --remove-orphans\""); - if ($stderr !== '') { + $exit = Console::execute("docker-compose -f {$path}/docker-compose.yml up -d --remove-orphans", '', $stdout, $stderr); + + if ($exit !== 0) { Console::error("Failed to install Appwrite dockers"); + Console::error($stderr); + exit($exit); } else { Console::success("Appwrite installed successfully"); } diff --git a/app/tasks/migrate.php b/app/tasks/migrate.php index efa06e1fed..e44488ce0b 100644 --- a/app/tasks/migrate.php +++ b/app/tasks/migrate.php @@ -8,13 +8,12 @@ use Appwrite\Database\Database; use Appwrite\Database\Document; use Appwrite\Database\Validator\Authorization; -$db = $register->get('db'); - $callbacks = [ '0.4.0' => function() { Console::log('I got nothing to do.'); }, - '0.5.0' => function($project) use ($db, $projectDB, $requset) { + '0.5.0' => function($project) use ($register, $projectDB, $requset) { + $db = $register->get('db'); Console::log('Migrating project: '.$project->getId()); @@ -59,7 +58,7 @@ $callbacks = [ $offset = $offset + $limit; } - $schema = (isset($_SERVER['_APP_DB_SCHEMA'])) ? $_SERVER['_APP_DB_SCHEMA'] : ''; + $schema = $_SERVER['_APP_DB_SCHEMA'] ?? ''; try { $statement = $db->prepare(" diff --git a/app/tasks/sdks.php b/app/tasks/sdks.php index a54acfdf79..364b326062 100644 --- a/app/tasks/sdks.php +++ b/app/tasks/sdks.php @@ -1,9 +1,5 @@ task('generate') + ->task('sdks') ->action(function () { function getSSLPage($url) { @@ -211,6 +204,4 @@ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND } exit(); - }); - -$cli->run(); \ No newline at end of file + }); \ No newline at end of file diff --git a/app/tasks/vars.php b/app/tasks/vars.php new file mode 100644 index 0000000000..ed4a329735 --- /dev/null +++ b/app/tasks/vars.php @@ -0,0 +1,18 @@ +task('vars') + ->desc('List all the server environment variables') + ->action(function () { + $variables = Config::getParam('variables', []); + + foreach ($variables as $key => $value) { + Console::log('- '.$value['name'].'='.App::getEnv($value['name'], '')); + } + }); \ No newline at end of file diff --git a/app/views/console/account/index.phtml b/app/views/console/account/index.phtml index 6889764d87..1606b41bd9 100644 --- a/app/views/console/account/index.phtml +++ b/app/views/console/account/index.phtml @@ -298,7 +298,7 @@ - + diff --git a/app/views/console/database/collection.phtml b/app/views/console/database/collection.phtml index ea864120e2..fc9f99351c 100644 --- a/app/views/console/database/collection.phtml +++ b/app/views/console/database/collection.phtml @@ -104,10 +104,10 @@ $maxCells = 10; if($i > $maxCells) { break; } - $label = (isset($rule['label'])) ? $rule['label'] : ''; - $key = (isset($rule['key'])) ? $rule['key'] : ''; - $type = (isset($rule['type'])) ? $rule['type'] : ''; - $array = (isset($rule['array'])) ? $rule['array'] : ''; + $label = $rule['label'] ?? ''; + $key = $rule['key'] ?? ''; + $type = $rule['type'] ?? ''; + $array = $rule['array'] ?? ''; ?> diff --git a/app/views/console/database/document.phtml b/app/views/console/database/document.phtml index e8f760f686..5ac9e841ea 100644 --- a/app/views/console/database/document.phtml +++ b/app/views/console/database/document.phtml @@ -17,10 +17,10 @@ $collections = []; render(); ?> getId()) { @@ -48,11 +48,11 @@ $collections = []; @@ -126,11 +126,11 @@ $collections = [];