1
0
Fork 0
mirror of synced 2024-06-13 16:24:47 +12:00

Merge branch '1.5.x' of github.com:appwrite/appwrite into feat-php-8-1

 Conflicts:
	composer.lock
This commit is contained in:
fogelito 2024-01-22 13:05:42 +02:00
commit a614152d78
169 changed files with 6813 additions and 3790 deletions

3
.env
View file

@ -4,12 +4,13 @@ _APP_WORKER_PER_CORE=6
_APP_CONSOLE_WHITELIST_ROOT=disabled
_APP_CONSOLE_WHITELIST_EMAILS=
_APP_CONSOLE_WHITELIST_IPS=
_APP_CONSOLE_HOSTNAMES=localhost,appwrite.io,*.appwrite.io
_APP_SYSTEM_EMAIL_NAME=Appwrite
_APP_SYSTEM_EMAIL_ADDRESS=team@appwrite.io
_APP_SYSTEM_SECURITY_EMAIL_ADDRESS=security@appwrite.io
_APP_SYSTEM_RESPONSE_FORMAT=
_APP_OPTIONS_ABUSE=disabled
_APP_OPTIONS_ROUTER_PROTECTION=disbled
_APP_OPTIONS_ROUTER_PROTECTION=disabled
_APP_OPTIONS_FORCE_HTTPS=disabled
_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled
_APP_OPENSSL_KEY_V1=your-secret-key

View file

@ -75,8 +75,32 @@ jobs:
- name: Run Unit Tests
run: docker compose exec appwrite test /usr/src/code/tests/unit
e2e_test:
name: E2E Test
e2e_general_test:
name: E2E General Test
runs-on: ubuntu-latest
needs: setup
steps:
- name: checkout
uses: actions/checkout@v3
- name: Load Cache
uses: actions/cache@v3
with:
key: ${{ env.CACHE_KEY }}
path: /tmp/${{ env.IMAGE }}.tar
fail-on-cache-miss: true
- name: Load and Start Appwrite
run: |
docker load --input /tmp/${{ env.IMAGE }}.tar
docker compose up -d
sleep 10
- name: Run General Tests
run: docker compose exec -T appwrite test /usr/src/code/tests/e2e/General --debug
e2e_service_test:
name: E2E Service Test
runs-on: ubuntu-latest
needs: setup
strategy:
@ -120,4 +144,4 @@ jobs:
sleep 10
- name: Run ${{matrix.service}} Tests
run: docker compose exec -T appwrite test /usr/src/code/tests/e2e/Services/${{matrix.service}} --debug
run: docker compose exec -T appwrite test /usr/src/code/tests/e2e/Services/${{matrix.service}} --debug

View file

@ -72,43 +72,47 @@ RUN mkdir -p /storage/uploads && \
chown -Rf www-data.www-data /storage/functions && chmod -Rf 0755 /storage/functions && \
chown -Rf www-data.www-data /storage/debug && chmod -Rf 0755 /storage/debug
# Development Executables
RUN chmod +x /usr/local/bin/dev-generate-translations
# Executables
RUN chmod +x /usr/local/bin/doctor && \
chmod +x /usr/local/bin/maintenance && \
chmod +x /usr/local/bin/usage && \
chmod +x /usr/local/bin/install && \
chmod +x /usr/local/bin/upgrade && \
chmod +x /usr/local/bin/maintenance && \
chmod +x /usr/local/bin/migrate && \
chmod +x /usr/local/bin/realtime && \
chmod +x /usr/local/bin/schedule && \
chmod +x /usr/local/bin/schedule-functions && \
chmod +x /usr/local/bin/schedule-messages && \
chmod +x /usr/local/bin/sdks && \
chmod +x /usr/local/bin/specs && \
chmod +x /usr/local/bin/ssl && \
chmod +x /usr/local/bin/test && \
chmod +x /usr/local/bin/upgrade && \
chmod +x /usr/local/bin/usage && \
chmod +x /usr/local/bin/vars && \
chmod +x /usr/local/bin/worker-audits && \
chmod +x /usr/local/bin/worker-builds && \
chmod +x /usr/local/bin/worker-certificates && \
chmod +x /usr/local/bin/worker-databases && \
chmod +x /usr/local/bin/worker-deletes && \
chmod +x /usr/local/bin/worker-functions && \
chmod +x /usr/local/bin/worker-builds && \
chmod +x /usr/local/bin/worker-hamster && \
chmod +x /usr/local/bin/worker-mails && \
chmod +x /usr/local/bin/worker-messaging && \
chmod +x /usr/local/bin/worker-webhooks && \
chmod +x /usr/local/bin/worker-migrations && \
chmod +x /usr/local/bin/worker-hamster
chmod +x /usr/local/bin/worker-webhooks
# Cloud Executabless
RUN chmod +x /usr/local/bin/hamster && \
chmod +x /usr/local/bin/volume-sync && \
RUN chmod +x /usr/local/bin/calc-tier-stats && \
chmod +x /usr/local/bin/calc-users-stats && \
chmod +x /usr/local/bin/clear-card-cache && \
chmod +x /usr/local/bin/delete-orphaned-projects && \
chmod +x /usr/local/bin/get-migration-stats && \
chmod +x /usr/local/bin/hamster && \
chmod +x /usr/local/bin/patch-delete-project-collections && \
chmod +x /usr/local/bin/patch-delete-schedule-updated-at-attribute && \
chmod +x /usr/local/bin/patch-recreate-repositories-documents && \
chmod +x /usr/local/bin/patch-delete-project-collections && \
chmod +x /usr/local/bin/delete-orphaned-projects && \
chmod +x /usr/local/bin/clear-card-cache && \
chmod +x /usr/local/bin/calc-users-stats && \
chmod +x /usr/local/bin/calc-tier-stats && \
chmod +x /usr/local/bin/get-migration-stats
chmod +x /usr/local/bin/volume-sync
# Letsencrypt Permissions
RUN mkdir -p /etc/letsencrypt/live/ && chmod -Rf 755 /etc/letsencrypt/live/

View file

@ -7,21 +7,21 @@ return [
'name' => 'Email/Password',
'key' => 'emailPassword',
'icon' => '/images/users/email.png',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreateEmailSession',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateEmailPasswordSession',
'enabled' => true,
],
'magic-url' => [
'name' => 'Magic URL',
'key' => 'usersAuthMagicURL',
'icon' => '/images/users/magic-url.png',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreateMagicURLSession',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateMagicURLToken',
'enabled' => true,
],
'anonymous' => [
'name' => 'Anonymous',
'key' => 'anonymous',
'icon' => '/images/users/anonymous.png',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreateAnonymousSession',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreateAnonymousSession',
'enabled' => true,
],
'invites' => [
@ -42,7 +42,7 @@ return [
'name' => 'Phone',
'key' => 'phone',
'icon' => '/images/users/phone.png',
'docs' => 'https://appwrite.io/docs/client/account?sdk=web-default#accountCreatePhoneSession',
'docs' => 'https://appwrite.io/docs/references/cloud/client-web/account#accountCreatePhoneToken',
'enabled' => true,
],
];

View file

@ -1486,7 +1486,7 @@ $commonCollections = [
[
'$id' => ID::custom('_key_enabled_type'),
'type' => Database::INDEX_KEY,
'attributes' => ['enabled','type'],
'attributes' => ['enabled', 'type'],
'lengths' => [],
'orders' => [Database::ORDER_ASC],
],
@ -1593,6 +1593,28 @@ $commonCollections = [
'array' => false,
'filters' => ['datetime'],
],
[
'$id' => ID::custom('scheduleInternalId'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => Database::LENGTH_KEY,
'signed' => true,
'required' => false,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('scheduleId'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => Database::LENGTH_KEY,
'signed' => true,
'required' => false,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('deliveredAt'),
'type' => Database::VAR_DATETIME,
@ -1810,6 +1832,17 @@ $commonCollections = [
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('search'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => 16384,
'signed' => true,
'required' => false,
'default' => null,
'array' => false,
'filters' => [],
],
],
'indexes' => [
[
@ -1853,7 +1886,14 @@ $commonCollections = [
'attributes' => ['topicInternalId'],
'lengths' => [],
'orders' => [],
]
],
[
'$id' => ID::custom('_fulltext_search'),
'type' => Database::INDEX_FULLTEXT,
'attributes' => ['search'],
'lengths' => [],
'orders' => [],
],
],
],
@ -4120,6 +4160,17 @@ $consoleCollections = array_merge([
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('resourceCollection'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => Database::LENGTH_KEY,
'signed' => true,
'required' => true,
'default' => null,
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('resourceInternalId'),
'type' => Database::VAR_STRING,
@ -4526,6 +4577,39 @@ $consoleCollections = array_merge([
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('enabled'),
'type' => Database::VAR_BOOLEAN,
'signed' => true,
'size' => 0,
'format' => '',
'filters' => [],
'required' => false,
'default' => true,
'array' => false,
],
[
'$id' => ID::custom('logs'),
'type' => Database::VAR_STRING,
'format' => '',
'size' => 1000000,
'signed' => true,
'required' => false,
'default' => '',
'array' => false,
'filters' => [],
],
[
'$id' => ID::custom('attempts'),
'type' => Database::VAR_INTEGER,
'format' => '',
'size' => 0,
'signed' => true,
'required' => false,
'default' => 0,
'array' => false,
'filters' => [],
],
],
'indexes' => [
[

View file

@ -4,6 +4,7 @@
* List of server wide error codes and their respective messages.
*/
use Appwrite\Enum\MessageStatus;
use Appwrite\Extend\Exception;
return [
@ -807,7 +808,7 @@ return [
],
Exception::PROVIDER_INCORRECT_TYPE => [
'name' => Exception::PROVIDER_INCORRECT_TYPE,
'description' => 'Provider with the requested ID is of incorrect type: ',
'description' => 'Provider with the requested ID is of the incorrect type.',
'code' => 400,
],
@ -858,18 +859,27 @@ return [
],
Exception::MESSAGE_TARGET_NOT_EMAIL => [
'name' => Exception::MESSAGE_TARGET_NOT_EMAIL,
'description' => 'Message with the target ID is not an email target:',
'description' => 'Message with the target ID is not an email target.',
'code' => 400,
],
Exception::MESSAGE_TARGET_NOT_SMS => [
'name' => Exception::MESSAGE_TARGET_NOT_SMS,
'description' => 'Message with the target ID is not an SMS target:',
'description' => 'Message with the target ID is not an SMS target.',
'code' => 400,
],
Exception::MESSAGE_TARGET_NOT_PUSH => [
'name' => Exception::MESSAGE_TARGET_NOT_PUSH,
'description' => 'Message with the target ID is not a push target:',
'description' => 'Message with the target ID is not a push target.',
'code' => 400,
],
Exception::MESSAGE_MISSING_SCHEDULE => [
'name' => Exception::MESSAGE_MISSING_SCHEDULE,
'description' => 'Message can not have status ' . MessageStatus::SCHEDULED . ' without a schedule.',
'code' => 400,
],
Exception::SCHEDULE_NOT_FOUND => [
'name' => Exception::SCHEDULE_NOT_FOUND,
'description' => 'Schedule with the requested ID could not be found.',
'code' => 404,
],
];

View file

@ -58,6 +58,14 @@ return [
'$description' => 'This event triggers when a user\'s target is deleted.',
],
],
'tokens' => [
'$model' => Response::MODEL_TOKEN,
'$resource' => true,
'$description' => 'This event triggers on any user\'s token event.',
'create' => [
'$description' => 'This event triggers when a user\'s token is created.',
],
],
'create' => [
'$description' => 'This event triggers when a user is created.'
],

View file

@ -0,0 +1,239 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=DM+Sans:wght@500;600&display=swap"
rel="stylesheet"
/>
<style>
@media (max-width:500px) {
.mobile-full-width {
width: 100%;
}
}
.main a {
color: currentColor;
}
.main {
padding: 32px;
line-height: 1.5;
color: #616b7c;
font-size: 15px;
font-weight: 400;
font-family: "Inter", sans-serif;
}
table {
width: 100%;
border-spacing: 0;
}
table,
tr,
th,
td {
margin: 0;
padding: 0;
}
td {
vertical-align: top;
}
h1 {
font-size: 22px;
margin-bottom: 0px;
margin-top: 0px;
color: #373b4d;
}
h2 {
font-size: 20px;
font-weight: 600;
color: #373b4d;
}
h3,
td h3 {
font-size: 14px;
font-weight: 500;
color: #373b4d;
line-height: 21px;
margin: 0;
padding: 0;
}
h4 {
font-family: "DM Sans", sans-serif;
font-weight: 600;
font-size: 12px;
color: #4f5769;
margin: 0;
padding: 0;
}
hr {
border: none;
border-top: 1px solid #e8e9f0;
}
.main a.button {
display: inline-block;
background: #fd366e;
color: #ffffff;
border-radius: 8px;
height: 48px;
padding: 12px 20px;
box-sizing: border-box;
cursor: pointer;
text-align: center;
text-decoration: none;
border-color: #fd366e;
border-style: solid;
border-width: 1px;
margin-right: 24px;
margin-top: 8px;
}
.main a.button:hover,
.main a.button:focus {
opacity: 0.8;
}
.main a.button.is-reverse {
background: #fff;
color: #fd366e;
}
.fs12 {
font-size: 12px;
}
.ta-right {
text-align: right !important;
}
.ta-left {
text-align: left !important;
}
.ff-dmsans {
font-family: "DM Sans", sans-serif !important;
}
.ff-inter {
font-family: "Inter", sans-serif !important;
}
.w500 {
font-weight: 500 !important;
}
.w400 {
font-weight: 400 !important;
}
.w600 {
font-weight: 600 !important;
}
.tc-accent {
color: #da1a5b;
}
.pt-16 {
padding-top: 16px !important;
}
.pt-32 {
padding-top: 32px !important;
}
.divider {
padding-top: 32px;
border-bottom: solid 1px #d8d8db;
}
.social-icon {
border-radius: 6px;
background: rgba(216, 216, 219, 0.1);
width: 32px;
height: 32px;
line-height: 32px;
display: flex;
align-items: center;
justify-content: center;
}
.social-icon > img {
margin: auto;
}
@media only screen and (max-width: 600px) {
.button {
width: 100%;
}
}
</style>
</head>
<body style="background-color: #ffffff; margin: 0; padding: 0;>
<div class="main" style="max-width: 650px; margin: 0 auto">
<table>
<tr>
<td>
<img
height="32px"
src="https://appwrite.io/assets/logotype/white.png"
/>
</td>
</tr>
</table>
<table style="margin-top: 32px">
<tr>
<td>
<h1>{{subject}}</h1>
</td>
</tr>
</table>
<table style="margin-top: 32px">
<tr>
<td>{{message}}</td>
</tr>
</table>
<table
style="
padding-top: 32px;
margin-top: 32px;
border-top: solid 1px #e8e9f0;
"
>
<tr>
<td></td>
</tr>
</table>
<table style="width: auto; margin: 0 auto">
<tr>
<td style="padding-left: 4px; padding-right: 4px">
<a
href="https://twitter.com/appwrite"
class="social-icon"
title="Twitter"
>
<img src="https://appwrite.io/email/x.png" height="24" width="24" />
</a>
</td>
<td style="padding-left: 4px; padding-right: 4px">
<a
href="https://appwrite.io/discord"
class="social-icon"
>
<img src="https://appwrite.io/email/discord.png" height="24" width="24" />
</a>
</td>
<td style="padding-left: 4px; padding-right: 4px">
<a
href="https://github.com/appwrite/appwrite"
class="social-icon"
>
<img src="https://appwrite.io/email/github.png" height="24" width="24" />
</a>
</td>
</tr>
</table>
<table style="width: auto; margin: 0 auto; margin-top: 60px">
<tr>
<td><a href="https://appwrite.io/terms">Terms</a></td>
<td style="color: #e8e9f0">
<div style="margin: 0 8px">|</div>
</td>
<td><a href="https://appwrite.io/privacy">Privacy</a></td>
</tr>
</table>
<p style="text-align: center" align="center">
&copy; {{year}} Appwrite | 251 Little Falls Drive, Wilmington 19808,
Delaware, United States
</p>
</div>
</body>
</html>

View file

@ -8,13 +8,13 @@
href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Poppins:wght@500;600&display=swap"
rel="stylesheet">
<style>
a { color:currentColor; }
a { color:currentColor; word-break: break-all; }
body {
padding: 32px;
color: #616B7C;
font-size: 15px;
font-family: 'Inter', sans-serif;
line-height: 15px;
line-height: 150%;
}
table {
@ -52,7 +52,7 @@
<body style="direction: {{direction}}">
<div style="max-width:650px; word-wrap: break-word; overflow-wrap: break-word;
word-break: break-all; margin:0 auto;">
word-break: normal; margin:0 auto;">
<table style="margin-top: 32px">
<tr>
<td>

View file

@ -0,0 +1,24 @@
<p>{{hello}}</p>
<p>{{optionButton}}</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; display: inline-block;">
<tr>
<td align="center" style="border-radius: 8px; background-color: #19191D;">
<a rel="noopener" target="_blank" href="{{redirect}}" style="font-size: 14px; font-family: Inter; color: #ffffff; text-decoration: none; border-radius: 8px; padding: 9px 14px; border: 1px solid #19191D; display: inline-block;">{{buttonText}}</a>
</td>
</tr>
</table>
<p>{{optionUrl}}</p>
<a href="{{redirect}}" target="_blank" style="font-size: 12px; line-height: 100%;">{{redirect}}</a>
<p>{{clientInfo}}</p>
<p style="margin-bottom: 0px;">{{thanks}}</p>
<p style="margin-top: 0px;">{{signature}}</p>
<hr style="margin-block-start: 1rem; margin-block-end: 1rem;">
<p style="opacity: 0.7;">{{securityPhrase}}</p>

View file

@ -0,0 +1,20 @@
<p>Hi <strong>{{user}}</strong>,</p>
<p>Your webhook <strong>{{webhook}}</strong> on project <strong>{{project}}</strong> has been paused after {{attempts}} consecutive failures.</p>
<p>Webhook Endpoint: <strong>{{url}}</strong></p>
<p>Error: <strong>{{error}}</strong></p>
<p>To restore your webhook's functionality and reset attempts, we suggest to follow the below steps:</p>
<ol>
<li>Examine the logs of both Appwrite Console and your webhook server to identify the issue.</li>
<li>Investigate potential network issues and use webhook testing tools to verify expected behaviour.</li>
<li>Ensure the webhook endpoint is reachable and configured to accept incoming POST requests.</li>
<li>Confirm that the webhook doesn't return error status codes such as 400 or 500.</li>
</ol>
<p>After the issue is resolved, please make sure to re-enable the webhook directly through the webhook settings.</p>
<table border="0" cellspacing="0" cellpadding="0" style="padding-top: 10px; padding-bottom: 10px; margin-top: 32px">
<tr>
<td style="border-radius: 8px; display: block; width: 100%;">
<a class="mobile-full-width" rel="noopener" target="_blank" href="{{host}}{{path}}" style="font-size: 14px; font-family: Inter; color: #ffffff; text-decoration: none; background-color: #FD366E; border-radius: 8px; padding: 9px 14px; border: 1px solid #FD366E; display: inline-block; text-align:center; box-sizing: border-box;">Webhook settings</a>
</td>
</tr>
</table>

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Noord-Amerika",
"continents.oc": "Oseanië",
"continents.sa": "Suid-Amerika"
"continents.sa": "Suid-Amerika",
"emails.magicSession.optionButton": "Klik op die knoppie hieronder om veilig aan te meld by jou {{project}} rekening. Dit sal oor 1 uur verval.",
"emails.magicSession.buttonText": "Meld aan by {{project}}",
"emails.magicSession.clientInfo": "Hierdie teken-in is aangevra met behulp van {{agentClient}} op {{agentDevice}} {{agentOs}}. As jy nie die teken-in versoek het nie, kan jy hierdie e-pos veilig ignoreer.",
"emails.certificate.subject": "Sertifikaatfout vir %s",
"emails.certificate.hello": "Hallo",
"emails.certificate.body": "Sertifikaat vir jou domein '{{domain}}' kon nie gegenereer word nie. Dit is poging no. {{attempt}}, en die mislukking was veroorsaak deur: {{error}}",
"emails.certificate.footer": "U vorige sertifikaat sal geldig wees vir 30 dae vanaf die eerste mislukking. Ons beveel ten sterkste aan dat u hierdie geval ondersoek, anders sal u domein sonder 'n geldige SSL-kommunikasie eindig.",
"emails.certificate.thanks": "Dankie",
"emails.certificate.signature": "{{project}} span",
"sms.verification.body": "{{secret}} is jou {{project}} verifikasiekode.",
"emails.magicSession.securityPhrase": "Die sekuriteitsfrase vir hierdie e-pos is {{phrase}}. Jy kan hierdie e-pos vertrou as hierdie frase ooreenstem met die frase wat tydens aanmelding getoon is.",
"emails.magicSession.optionUrl": "As u nie met die knoppie hierbo kan aanmeld nie, besoek asseblief die volgende skakel:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "أوروبا",
"continents.na": "امريكا الشمالية",
"continents.oc": "أوقيانوسيا",
"continents.sa": "امريكا الجنوبية"
"continents.sa": "امريكا الجنوبية",
"emails.magicSession.optionButton": "انقر على الزر أدناه لتسجيل الدخول بأمان إلى حساب {{project}} الخاص بك. سينتهي في غضون ساعة واحدة.",
"emails.magicSession.buttonText": "تسجيل الدخول إلى {{project}}",
"emails.magicSession.clientInfo": "تم طلب هذا الدخول باستخدام {{agentClient}} على {{agentDevice}} {{agentOs}}. إذا لم تطلب الدخول، يمكنك تجاهل هذا البريد الإلكتروني بأمان.",
"emails.certificate.subject": "فشل الشهادة لـ %s",
"emails.certificate.hello": "مرحبا",
"emails.certificate.body": "لم يتمكن من إصدار شهادة لنطاق '{{domain}}' الخاص بك. هذه المحاولة رقم {{attempt}}، وكان سبب الفشل هو: {{error}}",
"emails.certificate.footer": "ستظل شهادتك السابقة صالحة لمدة 30 يومًا منذ الفشل الأول. نوصي بشدة بالتحقيق في هذه الحالة، وإلا سينتهي نطاقك دون اتصال SSL صالح.",
"emails.certificate.thanks": "شكرا",
"emails.certificate.signature": "فريق {{project}}",
"sms.verification.body": "{{secret}} هو رمز التحقق الخاص بمشروعك {{project}}.",
"emails.magicSession.securityPhrase": "عبارة الأمان لهذا البريد الإلكتروني هي {{phrase}}. يمكنك الوثوق بهذا البريد الإلكتروني إذا كانت هذه العبارة تطابق العبارة التي تظهر أثناء التسجيل.",
"emails.magicSession.optionUrl": "إذا لم تتمكن من تسجيل الدخول باستخدام الزر أعلاه، يرجى زيارة الرابط التالي:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ইউৰোপ",
"continents.na": "উত্তৰ আমেৰিকা",
"continents.oc": "ওচেনিয়া",
"continents.sa": "দক্ষিণ আমেৰিকা"
"continents.sa": "দক্ষিণ আমেৰিকা",
"emails.magicSession.optionButton": "Bấm vào nút bên dưới để đăng nhập an toàn vào tài khoản {{project}} của bạn. Nó sẽ hết hạn trong 1 giờ.",
"emails.magicSession.buttonText": "Inngå á {{project}}",
"emails.magicSession.clientInfo": "I'm sorry, but you haven't provided the specific language associated with a country code for translation, and \"as\" doesn't correspond to any current ISO country code. Could you please clarify the target language you want the translation in?",
"emails.certificate.subject": "In the context of your request, it is not entirely clear what the country code \"as\" refers to. However, \"AS\" is often used as the country code for American Samoa, where the primary language is English. If you meant another \"as\" for a specific language, please provide clarification. If you did mean American Samoa, the translation would remain the same as the original text:\n\nCertificate failure for %s",
"emails.certificate.hello": "Since you haven't specified which country \"as\" refers to, I can't provide a translation. If you could provide the name of the country or another form of the country code, that would be very helpful.",
"emails.certificate.body": "Beklagar, men det är inte tillräckligt med information för att avgöra vilket lands specifika språk som avses med landskoden \"as\". \"AS\" kan antingen avse Amerikanska Samoa, vars officiella språk är engelska och samoanska, eller det kan avse en generell landskod. Om du kan ge mer information eller specificera ett land, kan jag ge en exakt översättning.",
"emails.certificate.footer": "Since you haven't specified the target language and only provided the country code \"as,\" which refers to American Samoa, where English and Samoan are the official languages, I will translate it into Samoan:\n\nO lau tusi pasi ua mavae o le a talafeagai mo aso e 30 talu ona tupu le tulaga muamua le manuia. Matou te fautuaina malosi le su'esu'e i lenei mataupu, a leai o le a leai sau vaega e iai se SSL fa'amaoniga talafeagai.",
"emails.certificate.thanks": "The language of the country with the country code \"AS\" which stands for American Samoa is primarily Samoan. The translation of \"Thanks\" in Samoan is:\n\nFa'afetai",
"emails.certificate.signature": "I'm sorry, but to provide a translation into the target language, I need to know the specific language you're referring to with the country code \"as.\" The country code \"AS\" is generally used for American Samoa, where the languages spoken are English and Samoan. If you need a translation into Samoan, please confirm, and I will proceed with the translation.",
"sms.verification.body": "{{secret}} er din {{project}} verifikasjonskode.",
"emails.magicSession.securityPhrase": "I apologize, but it appears there might be a misunderstanding with the country code provided. The country code \"as\" commonly refers to American Samoa, and the languages spoken there are English and Samoan. If translation into Samoan is desired, here it is:\n\nO le upu fa'amau mo lenei imeli o {{phrase}}. E mafai ona e talitonu i lenei imeli pe afai e ōgatusa le upu lea ma le upu na fa'aalia i le taimi o le saini i totonu.",
"emails.magicSession.optionUrl": "There appears to be a misunderstanding. The country code \"as\" is associated with American Samoa, where the primary language is English. Therefore, the translation would remain the same as English:\n\nIf you are unable to sign in using the button above, please visit the following link:"
}

View file

@ -221,5 +221,24 @@
"countries.ye": "Yəmən",
"countries.za": "Cənubi Afrika",
"countries.zm": "Zambiya",
"countries.zw": "Zimbabve"
}
"countries.zw": "Zimbabve",
"emails.magicSession.optionButton": "Aşağıdaki düyməyə basaraq {{project}} hesabınıza təhlükəsiz şəkildə daxil olun. Bu, 1 saat sonra müddəti bitəcək.",
"emails.magicSession.buttonText": "{{project}} layihəsinə daxil olun",
"emails.magicSession.clientInfo": "Bu giriş, {{agentClient}} vasitəsi ilə {{agentDevice}} {{agentOs}} istifadə edərək tələb olunmuşdur. Əgər siz girişi tələb etməmisinizsə, bu e-poçtu təhlükəsiz şəkildə yoksayabilirsiniz.",
"emails.certificate.subject": "%s üçün sertifikat xətası",
"emails.certificate.hello": "Salam",
"emails.certificate.body": "Sizin '{{domain}}' domeniniz üçün sertifikat yaradıla bilmədi. Bu, {{attempt}} cəhd idi, və uğursuzluğa səbəb olan: {{error}}",
"emails.certificate.footer": "Əvvəlki sertifikatınız ilk uğursuzluqdan sonra 30 gün müddətinə keçərlidir. Bu halın araşdırılmasını yüksək dərəcədə tövsiyə edirik, əks halda domeniniz etibarlı SSL rabitəsiz qalacaq.",
"emails.certificate.thanks": "Təşəkkür edirəm",
"emails.certificate.signature": "{{project}} komandası",
"continents.af": "Afrika",
"continents.an": "Antarktida",
"continents.as": "Asiya",
"continents.eu": "Avropa",
"continents.na": "Şimali Amerika",
"continents.oc": "Okeaniya",
"continents.sa": "Cənubi Amerika",
"sms.verification.body": "{{secret}} sizin {{project}} təsdiqləmə kodunuzdur.",
"emails.magicSession.securityPhrase": "Bu e-poçt üçün təhlükəsizlik ifadəsi {{phrase}}-dir. Əgər bu ifadə daxil olarkən göstərilən ifadə ilə üst-üstə düşürsə, bu e-poçta etibar edə bilərsiniz.",
"emails.magicSession.optionUrl": "Əgər yuxarıdakı düyməni istifadə edərək daxil ola bilmirsizsə, zəhmət olmasa aşağıdakı linkə daxil olun:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Еўропа",
"continents.na": "Паўночная Амерыка",
"continents.oc": "Акіянія",
"continents.sa": "Паўднёвая Амерыка"
}
"continents.sa": "Паўднёвая Амерыка",
"emails.magicSession.optionButton": "Клікніце кнопку ніжэй, каб бяспечна ўвайсці ў свой рахунак {{project}}. Ён скончыцца праз 1 гадзіну.",
"emails.magicSession.buttonText": "Aanmelden bij {{project}}",
"emails.magicSession.clientInfo": "Als u niet om de aanmelding heeft gevraagd, kunt u deze e-mail gerust negeren.",
"emails.certificate.subject": "The country code BE refers to Belgium, which has three official languages: Dutch, French, and German. Please specify which language you would like the translation in.",
"emails.certificate.hello": "To provide you with the correct translation, I need to clarify the country code \"be\" you mentioned. It might refer to Belgium, which has three official languages: Dutch, French, and German. \n\nPlease specify which language you would like me to translate \"Hello\" into: Dutch, French, or German.",
"emails.certificate.body": "Certificaat voor uw domein '{{domain}}' kon niet worden gegenereerd. Dit is poging nr. {{attempt}}, en de fout werd veroorzaakt door: {{error}}",
"emails.certificate.footer": "Ваш папярэдні сертыфікат будзе дзейнічаць 30 дзён з моманту першай няўдачы. Мы вельмі рэкамендуем разабрацца ў гэтай сітуацыі, інакш ваш дамен застанецца без дзейнага сертыфіката SSL забеспячэння.",
"emails.certificate.thanks": "The country code BE stands for Belgium, where there are two main languages spoken: Dutch and French. Since you did not specify the language, I will provide the translation in both:\n\nDutch: Dank je\nFrench: Merci",
"emails.certificate.signature": "{{project}} équipe",
"sms.verification.body": "{{secret}} ist Ihr Verifizierungscode für {{project}}.",
"emails.magicSession.securityPhrase": "De beveiligingszin voor deze e-mail is {{phrase}}. U kunt deze e-mail vertrouwen als deze zin overeenkomt met de zin die getoond wordt bij het aanmelden.",
"emails.magicSession.optionUrl": "Si vous n'arrivez pas à vous connecter en utilisant le bouton ci-dessus, veuillez visiter le lien suivant :"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Европа",
"continents.na": "Северна Америка",
"continents.oc": "Океания",
"continents.sa": "Южна Америка"
"continents.sa": "Южна Америка",
"emails.magicSession.optionButton": "Натиснете бутона по-долу, за да се впишете сигурно във вашия {{project}} акаунт. Той ще изтече след 1 час.",
"emails.magicSession.buttonText": "Влезте в {{project}}",
"emails.magicSession.clientInfo": "Този вход беше заявен чрез {{agentClient}} на {{agentDevice}} {{agentOs}}. Ако не сте поискали входа, можете безопасно да игнорирате този имейл.",
"emails.certificate.subject": "Сертификатен провал за %s",
"emails.certificate.hello": "Здравейте",
"emails.certificate.body": "Сертификатът за вашия домейн '{{domain}}' не може да бъде генериран. Това е опит номер {{attempt}}, а причината за неуспеха е: {{error}}",
"emails.certificate.footer": "Предишният ви сертификат ще бъде валиден за 30 дни от първия неуспех. Настоятелно препоръчваме да разследвате този случай, в противен случай вашият домейн ще остане без валидно SSL комуникация.",
"emails.certificate.thanks": "Благодаря",
"emails.certificate.signature": "екип на {{project}}",
"sms.verification.body": "{{secret}} е вашият код за верификация за {{project}}.",
"emails.magicSession.securityPhrase": "Фразата за сигурност на този имейл е {{phrase}}. Можете да се доверите на този имейл, ако тази фраза съвпада с фразата, показана по време на вписването.",
"emails.magicSession.optionUrl": "Ако не можете да влезете чрез горния бутон, моля, посетете следния линк:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "यूरोप",
"continents.na": "उत्तरी अमेरिका",
"continents.oc": "ओशिनिया",
"continents.sa": "दक्षिण अमेरिका"
"continents.sa": "दक्षिण अमेरिका",
"emails.magicSession.optionButton": "Klike sou bouton ki pi ba a pou ou konekte an sekirite nan kont {{project}} ou. Li ap ekspire nan 1 è.",
"emails.magicSession.buttonText": "There might be some confusion here, as there is no specific language associated with the country code \"bh,\" which stands for Bahrain. The primary language spoken in Bahrain is Arabic. Assuming you are asking for a translation into Arabic, the translation would be:\n\nتسجيل الدخول إلى {{project}}",
"emails.magicSession.clientInfo": "Sorry, but I cannot provide the translation as \"bh\" is not a recognized ISO language code and does not correspond to any specific language. Please provide a valid language or country code for translation.",
"emails.certificate.subject": "लिए प्रमाणपत्र असफलता %s",
"emails.certificate.hello": "Namaste",
"emails.certificate.body": "Sorry, I am unable to provide the translation as there is no language associated with the country code \"bh.\" \"BH\" is the country code for Bahrain, where the official language is Arabic. Please provide specific instructions for the target language if Arabic translation is required.",
"emails.certificate.footer": "साँचे सर्टिफिकेट 30 दिन तक मान्य होता, पहिलका असफलता के बाद। हमनी के राउर से जोर देके कहतानी कि एह मामला के जांच करीं, ना त राउर डोमेन बिना जायज SSL संवाद के रह जाई.",
"emails.certificate.thanks": "धन्यवाद",
"emails.certificate.signature": "تیم {{project}}",
"sms.verification.body": "{{secret}} هو رمز التحقق الخاص ب{{project}} الخاص بك.",
"emails.magicSession.securityPhrase": "La frase de seguridad para este correo electrónico es {{phrase}}. Puedes confiar en este correo electrónico si esta frase coincide con la frase mostrada durante el inicio de sesión.",
"emails.magicSession.optionUrl": "Yadi aap uppar diye gaye button ka upayog karke sign in nahi kar pa rahe hain, toh kripaya is link ka anusaran karein:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ইউরোপ",
"continents.na": "উত্তর আমেরিকা",
"continents.oc": "ওশেনিয়া",
"continents.sa": "দক্ষিণ আমেরিকা"
}
"continents.sa": "দক্ষিণ আমেরিকা",
"emails.magicSession.optionButton": "নীচের বোতামে ক্লিক করুন আপনার {{project}} অ্যাকাউন্টে নিরাপদে সাইন ইন করতে। এটি ১ ঘন্টা পরে মেয়াদ উত্তীর্ণ হবে।",
"emails.magicSession.buttonText": "{{project}}-এ সাইন ইন করুন",
"emails.magicSession.clientInfo": "এই সাইন ইনটি {{agentClient}} ব্যবহার করে {{agentDevice}} {{agentOs}}-এ অনুরোধ করা হয়েছিল। যদি আপনি সাইন ইনের অনুরোধ করেননি, আপনি নিরাপদে এই ইমেইলটি উপেক্ষা করতে পারেন।",
"emails.certificate.subject": "%s-এর জন্য শংসাপত্র ব্যর্থতা",
"emails.certificate.hello": "হ্যালো",
"emails.certificate.body": "আপনার ডোমেইন '{{domain}}' এর জন্য সার্টিফিকেট জেনারেট করা যায়নি। এটি প্রচেষ্টা নম্বর {{attempt}}, এবং ব্যর্থতার কারণ হচ্ছে: {{error}}",
"emails.certificate.footer": "আপনার আগের সার্টিফিকেটটি প্রথম বিফলতার পর থেকে ৩০ দিনের জন্য বৈধ থাকবে। আমরা এই মামলাটি অনুসন্ধান করার জন্য প্রবলভাবে অনুরোধ করছি, নতুবা আপনার ডোমেইনটি বৈধ SSL যোগাযোগ ছাড়া চলে যাবে।",
"emails.certificate.thanks": "ধন্যবাদ",
"emails.certificate.signature": "{{project}} টিম",
"sms.verification.body": "{{secret}} আপনার {{project}} যাচাইকরণ কোড।",
"emails.magicSession.securityPhrase": "এই ইমেলের জন্য নিরাপত্তা বাক্যটি হল {{phrase}}। সাইন-ইনের সময় দেখানো বাক্যটির সাথে এই বাক্যটি মিলে গেলে আপনি এই ইমেইলকে বিশ্বাস করতে পারেন।",
"emails.magicSession.optionUrl": "উপরের বোতামটি ব্যবহার করে আপনি যদি সাইন ইন করতে অক্ষম হন, অনুগ্রহ করে নিম্নলিখিত লিঙ্কটি দেখুন:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Sjeverna Amerika",
"continents.oc": "Okeanija",
"continents.sa": "Južna Amerika"
"continents.sa": "Južna Amerika",
"emails.magicSession.optionButton": "Kliknite na dugme ispod kako biste se sigurno prijavili na svoj {{project}} račun. Istek će se dogoditi za 1 sat.",
"emails.magicSession.buttonText": "Prijavi se na {{project}}",
"emails.magicSession.clientInfo": "Ova prijava je zatražena korištenjem {{agentClient}} na {{agentDevice}} {{agentOs}}. Ako niste zahtjevali prijavu, možete sigurno ignorirati ovaj e-mail.",
"emails.certificate.subject": "Nemogućnost certifikata za %s",
"emails.certificate.hello": "Zdravo",
"emails.certificate.body": "Certifikat za vaš domen '{{domain}}' nije mogao biti generisan. Ovo je pokušaj br. {{attempt}}, a greška je uzrokovana: {{error}}",
"emails.certificate.footer": "Vaš prethodni certifikat će biti važeći 30 dana od prvog neuspeha. Visoko preporučujemo da istražite ovaj slučaj, inače će vaš domen završiti bez važeće SSL komunikacije.",
"emails.certificate.thanks": "Hvala",
"emails.certificate.signature": "{{project}} tim",
"sms.verification.body": "{{secret}} je vaš {{project}} verifikacijski kod.",
"emails.magicSession.securityPhrase": "Sigurnosna fraza za ovaj email je {{phrase}}. Ovom emailu možete vjerovati ako se fraza poklapa sa frazom prikazanom prilikom prijave.",
"emails.magicSession.optionUrl": "Ako ne možete da se prijavite koristeći gornje dugme, molimo posetite sledeći link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Amèrica del Nord",
"continents.oc": "Oceania",
"continents.sa": "Amèrica del Sud"
"continents.sa": "Amèrica del Sud",
"emails.magicSession.optionButton": "Feu clic al botó de sota per iniciar sessió de manera segura al vostre compte {{project}}. Caducarà en 1 hora.",
"emails.magicSession.buttonText": "Inicia sessió a {{project}}",
"emails.magicSession.clientInfo": "Aquest inici de sessió s'ha sol·licitat utilitzant {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no has sol·licitat l'inici de sessió, pots ignorar aquest correu electrònic amb seguretat.",
"emails.certificate.subject": "Error de certificat per a %s",
"emails.certificate.hello": "Hola",
"emails.certificate.body": "El certificat per al vostre domini '{{domain}}' no s'ha pogut generar. Aquest és l'intent núm. {{attempt}}, i el fracàs ha estat causat per: {{error}}",
"emails.certificate.footer": "El vostre certificat anterior serà vàlid durant 30 dies des de la primera fallada. Us recomanem encaridament que investigueu aquest cas, d'altra manera el vostre domini quedarà sense una comunicació SSL vàlida.",
"emails.certificate.thanks": "Gràcies",
"emails.certificate.signature": "equip {{project}}",
"sms.verification.body": "El {{secret}} és el vostre codi de verificació del {{project}}.",
"emails.magicSession.securityPhrase": "La frase de seguretat d'aquest correu electrònic és {{phrase}}. Podeu confiar en aquest correu si aquesta frase coincideix amb la frase mostrada durant l'inici de sessió.",
"emails.magicSession.optionUrl": "Si no podeu iniciar sessió utilitzant el botó de dalt, visiteu l'enllaç següent:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Evropa",
"continents.na": "Severní Amerika",
"continents.oc": "Oceánie",
"continents.sa": "Jižní Amerika"
"continents.sa": "Jižní Amerika",
"emails.magicSession.optionButton": "Klikněte na tlačítko níže pro bezpečné přihlášení do vašeho účtu {{project}}. Platnost vyprší za 1 hodinu.",
"emails.magicSession.buttonText": "Přihlaste se k {{project}}",
"emails.magicSession.clientInfo": "Toto přihlášení bylo požadováno prostřednictvím {{agentClient}} na {{agentDevice}} {{agentOs}}. Pokud jste se nepřihlašovali, můžete tento e-mail bezpečně ignorovat.",
"emails.certificate.subject": "Selhání certifikátu pro %s",
"emails.certificate.hello": "Ahoj",
"emails.certificate.body": "Certifikát pro váš doménu '{{domain}}' se nepodařilo vygenerovat. Jedná se o pokus č. {{attempt}} a selhání bylo způsobeno: {{error}}",
"emails.certificate.footer": "Vaše předchozí certifikát bude platný 30 dní od prvního selhání. Důrazně doporučujeme vyšetřovat tento případ, jinak váš doménový server skončí bez platné komunikace SSL.",
"emails.certificate.thanks": "Děkuji",
"emails.certificate.signature": "tým {{project}}",
"sms.verification.body": "{{secret}} je váš ověřovací kód pro {{project}}.",
"emails.magicSession.securityPhrase": "Bezpečnostní fráze pro tento e-mail je {{phrase}}. Tomuto e-mailu můžete důvěřovat, pokud tato fráze odpovídá frázi zobrazené při přihlášení.",
"emails.magicSession.optionUrl": "Pokud se nemůžete přihlásit pomocí výše uvedeného tlačítka, prosím navštivte následující odkaz:"
}

View file

@ -1,5 +1,5 @@
{
"settings.inspire": "\"Kunsten at være klog er kunsten at vide, hvad man skal overse.\"",
"settings.inspire": "\"Kunsten at være klog er kunsten at vide, hvad man skal overse.\"",
"settings.locale": "da",
"settings.direction": "ltr",
"emails.sender": "%s Team",
@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Nordamerica",
"continents.oc": "Oceanien",
"continents.sa": "Sydamerica"
}
"continents.sa": "Sydamerica",
"emails.magicSession.optionButton": "Klik på knappen nedenfor for sikkert at logge ind på din {{project}} konto. Den udløber om 1 time.",
"emails.magicSession.buttonText": "Log ind på {{project}}",
"emails.magicSession.clientInfo": "Denne log ind blev anmodet ved hjælp af {{agentClient}} på {{agentDevice}} {{agentOs}}. Hvis du ikke anmodede om log ind, kan du trygt ignorere denne e-mail.",
"emails.certificate.subject": "Certifikatfejl for %s",
"emails.certificate.hello": "Hej",
"emails.certificate.body": "Certifikatet til dit domæne '{{domain}}' kunne ikke genereres. Dette er forsøg nr. {{attempt}}, og fejlen blev forårsaget af: {{error}}",
"emails.certificate.footer": "Dit tidligere certifikat vil være gyldigt i 30 dage fra den første fejl. Vi anbefaler kraftigt at undersøge denne sag, ellers vil dit domæne ende uden en gyldig SSL-kommunikation.",
"emails.certificate.thanks": "Tak",
"emails.certificate.signature": "{{project}} hold",
"sms.verification.body": "{{secret}} er din {{project}} bekræftelseskode.",
"emails.magicSession.securityPhrase": "Sikkerhedsfrasen for denne e-mail er {{phrase}}. Du kan stole på denne e-mail, hvis denne frase matcher den viste frase under log ind.",
"emails.magicSession.optionUrl": "Hvis du ikke kan logge ind ved at bruge knappen ovenfor, besøg venligst følgende link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Nordamerika",
"continents.oc": "Ozeanien",
"continents.sa": "Südamerika"
}
"continents.sa": "Südamerika",
"emails.magicSession.optionButton": "Klicken Sie auf den unten stehenden Button, um sicher in Ihr {{project}}-Konto einzuloggen. Er verfällt in 1 Stunde.",
"emails.magicSession.buttonText": "Melden Sie sich bei {{project}} an",
"emails.magicSession.clientInfo": "Dieser Anmeldeversuch wurde über {{agentClient}} auf {{agentDevice}} {{agentOs}} angefordert. Wenn Sie die Anmeldung nicht angefordert haben, können Sie diese E-Mail getrost ignorieren.",
"emails.certificate.subject": "Zertifikatsfehler für %s",
"emails.certificate.hello": "Hallo",
"emails.certificate.body": "Das Zertifikat für Ihre Domain \"{{domain}}\" konnte nicht erstellt werden. Dies ist der {{attempt}}. Versuch, und der Fehler wurde verursacht durch: {{error}}",
"emails.certificate.footer": "Ihr vorheriges Zertifikat ist ab dem ersten Fehler 30 Tage lang gültig. Wir empfehlen dringend, diesen Fall zu untersuchen, sonst wird Ihre Domain ohne gültige SSL-Kommunikation enden.",
"emails.certificate.thanks": "Danke",
"emails.certificate.signature": "{{project}} Team",
"sms.verification.body": "{{secret}} ist Ihr {{project}}-Verifizierungscode.",
"emails.magicSession.securityPhrase": "Die Sicherheitsphrase für diese E-Mail lautet {{phrase}}. Sie können dieser E-Mail vertrauen, wenn diese Phrase mit der Phrase übereinstimmt, die beim Anmelden angezeigt wurde.",
"emails.magicSession.optionUrl": "Wenn Sie sich nicht über den obigen Button anmelden können, besuchen Sie bitte den folgenden Link:"
}

View file

@ -25,7 +25,7 @@
"emails.invitation.hello": "Γεια σου",
"emails.invitation.body": "Αυτό το email στάλθηκε επειδή ο/η {{owner}} θέλει να σας προσκαλέσει να γίνετε μέλος της ομάδας {{team}} του {{project}}.",
"emails.invitation.footer": "Εάν δεν ενδιαφέρεστε, μπορείτε να αγνοήσετε αυτό το μήνυμα.",
"emails.invitation.thanks": "Ευχαριστούμε",
"emails.invitation.thanks": "Ευχαριστούμε",
"emails.invitation.signature": "Η ομάδα του {{project}}",
"locale.country.unknown": "Άγνωστο",
"countries.af": "Αφγανιστάν",
@ -228,5 +228,17 @@
"continents.eu": "Ευρώπη",
"continents.na": "Βόρεια Αμερική",
"continents.oc": "Ωκεανία",
"continents.sa": "Νότια Αμερική"
}
"continents.sa": "Νότια Αμερική",
"emails.magicSession.optionButton": "Κάντε κλικ στο κουμπί παρακάτω για να συνδεθείτε με ασφάλεια στον λογαριασμό σας στο {{project}}. Θα λήξει σε 1 ώρα.",
"emails.magicSession.buttonText": "Συνδεθείτε στο {{project}}",
"emails.magicSession.clientInfo": "Η σύνδεση αυτή ζητήθηκε χρησιμοποιώντας το {{agentClient}} στο {{agentDevice}} {{agentOs}}. Εάν δεν ζητήσατε τη σύνδεση, μπορείτε να αγνοήσετε με ασφάλεια αυτό το email.",
"emails.certificate.subject": "Αποτυχία πιστοποιητικού για το %s",
"emails.certificate.hello": "Γεια",
"emails.certificate.body": "Το πιστοποιητικό για τον τομέα σας '{{domain}}' δεν μπόρεσε να δημιουργηθεί. Αυτή είναι η προσπάθεια αρ. {{attempt}}, και η αποτυχία προκλήθηκε από: {{error}}",
"emails.certificate.footer": "Το προηγούμενο πιστοποιητικό σας θα είναι έγκυρο για 30 ημέρες από την πρώτη αποτυχία. Σας προτείνουμε ανεπιφύλακτα να ερευνήσετε αυτή την υπόθεση, διαφορετικά το domain σας θα καταλήξει χωρίς έγκυρη SSL επικοινωνία.",
"emails.certificate.thanks": "Ευχαριστώ",
"emails.certificate.signature": "ομάδα του {{project}}",
"sms.verification.body": "το {{secret}} είναι ο κωδικός επαλήθευσης του {{project}} σας.",
"emails.magicSession.securityPhrase": "Η φράση ασφαλείας για αυτό το email είναι {{phrase}}. Μπορείτε να εμπιστευτείτε αυτό το email αν αυτή η φράση ταιριάζει με τη φράση που εμφανίζεται κατά την είσοδο.",
"emails.magicSession.optionUrl": "Εάν δεν μπορείτε να συνδεθείτε χρησιμοποιώντας το παραπάνω κουμπί, παρακαλώ επισκεφτείτε τον παρακάτω σύνδεσμο:"
}

View file

@ -9,11 +9,14 @@
"emails.verification.footer": "If you didnt ask to verify this address, you can ignore this message.",
"emails.verification.thanks": "Thanks",
"emails.verification.signature": "{{project}} team",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.body": "Follow this link to login.",
"emails.magicSession.footer": "If you didnt ask to login using this email, you can ignore this message.",
"emails.magicSession.thanks": "Thanks",
"emails.magicSession.subject": "{{project}} Login",
"emails.magicSession.hello": "Hello,",
"emails.magicSession.optionButton": "Click the button below to securely sign in to your {{project}} account. It will expire in 1 hour.",
"emails.magicSession.buttonText": "Sign in to {{project}}",
"emails.magicSession.optionUrl": "If you are unable to sign in using the button above, please visit the following link:",
"emails.magicSession.clientInfo": "This sign in was requested using {{agentClient}} on {{agentDevice}} {{agentOs}}. If you didn't request the sign in, you can safely ignore this email.",
"emails.magicSession.securityPhrase": "Security phrase for this email is {{phrase}}. You can trust this email if this phrase matches the phrase shown during sign in.",
"emails.magicSession.thanks": "Thanks,",
"emails.magicSession.signature": "{{project}} team",
"emails.recovery.subject": "Password Reset",
"emails.recovery.hello": "Hello {{user}}",
@ -33,6 +36,7 @@
"emails.certificate.footer": "Your previous certificate will be valid for 30 days since the first failure. We highly recommend investigating this case, otherwise your domain will end up without a valid SSL communication.",
"emails.certificate.thanks": "Thanks",
"emails.certificate.signature": "{{project}} team",
"sms.verification.body": "{{secret}} is your {{project}} verification code.",
"locale.country.unknown": "Unknown",
"countries.af": "Afghanistan",
"countries.ao": "Angola",

View file

@ -1,32 +1,32 @@
{
"settings.locale": "eo",
"settings.direction": "ltr",
"emails.sender": "Teamo %s",
"emails.verification.subject": "Konta Konfirmo",
"emails.verification.hello": "Saluton {{user}}",
"emails.verification.body": "Alklaku ĉi tiun ligon por kontroli vian retpoŝtan adreson.",
"emails.verification.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
"emails.verification.thanks": "Dankegon.",
"emails.verification.signature": "Teamo {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Saluton,",
"emails.magicSession.body": "Alklaku ĉi tiun ligon por eniri.",
"emails.magicSession.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
"emails.magicSession.thanks": "Dankegon",
"emails.magicSession.signature": "Teamo {{project}}",
"emails.recovery.subject": "Parsvorta Restarigo",
"emails.recovery.hello": "Saluton {{user}}",
"emails.recovery.body": "Alklaku ĉi tiun ligon por reagordi vian pasvorton. {{project}}",
"emails.recovery.footer": "Se vi ne petis reagordi vian pasvorton, vi povas ignori ĉi tiun mesaĝon.",
"emails.recovery.thanks": "Dankegon",
"emails.recovery.signature": "Teamo {{project}}",
"emails.invitation.subject": "Invito al la Teamo %s em %s",
"emails.invitation.hello": "Dankegon",
"emails.invitation.body": "Ĉi tiu retpoŝto estis sendita ĉar la {{owner}} volas inviti vin fariĝi membro de la Teamo {{team}} en {{project}}.",
"emails.invitation.footer": "Se vi ne interesiĝas, vi povas ignori ĉi tiun mesaĝon.",
"emails.invitation.thanks": "Dankegon",
"emails.invitation.signature": "Teamo {{project}}",
"locale.country.unknown": "Unknown",
{
"settings.locale": "eo",
"settings.direction": "ltr",
"emails.sender": "Teamo %s",
"emails.verification.subject": "Konta Konfirmo",
"emails.verification.hello": "Saluton {{user}}",
"emails.verification.body": "Alklaku ĉi tiun ligon por kontroli vian retpoŝtan adreson.",
"emails.verification.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
"emails.verification.thanks": "Dankegon.",
"emails.verification.signature": "Teamo {{project}}",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Saluton,",
"emails.magicSession.body": "Alklaku ĉi tiun ligon por eniri.",
"emails.magicSession.footer": "Se vi ne petis ĉi tiun konfirmon de ĉi tiu retpoŝto, vi povas ignori ĉi tiun mesaĝon.",
"emails.magicSession.thanks": "Dankegon",
"emails.magicSession.signature": "Teamo {{project}}",
"emails.recovery.subject": "Parsvorta Restarigo",
"emails.recovery.hello": "Saluton {{user}}",
"emails.recovery.body": "Alklaku ĉi tiun ligon por reagordi vian pasvorton. {{project}}",
"emails.recovery.footer": "Se vi ne petis reagordi vian pasvorton, vi povas ignori ĉi tiun mesaĝon.",
"emails.recovery.thanks": "Dankegon",
"emails.recovery.signature": "Teamo {{project}}",
"emails.invitation.subject": "Invito al la Teamo %s em %s",
"emails.invitation.hello": "Dankegon",
"emails.invitation.body": "Ĉi tiu retpoŝto estis sendita ĉar la {{owner}} volas inviti vin fariĝi membro de la Teamo {{team}} en {{project}}.",
"emails.invitation.footer": "Se vi ne interesiĝas, vi povas ignori ĉi tiun mesaĝon.",
"emails.invitation.thanks": "Dankegon",
"emails.invitation.signature": "Teamo {{project}}",
"locale.country.unknown": "Unknown",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
"countries.al": "Albania",
@ -227,5 +227,18 @@
"continents.eu": "Europe",
"continents.na": "North America",
"continents.oc": "Oceania",
"continents.sa": "South America"
}
"continents.sa": "South America",
"settings.inspire": "\"La arto esti saĝa estas la arto scii kion preteratenti.\"",
"emails.magicSession.optionButton": "Alklaku la suban butonon por sekure ensaluti al via {{project}}-konto. Ĝi eksvalidiĝos post 1 horo.",
"emails.magicSession.buttonText": "Ensalutu al {{project}}",
"emails.magicSession.clientInfo": "Ĉi tiu ensaluto estis petita per {{agentClient}} en {{agentDevice}} {{agentOs}}. Se vi ne petis la ensaluton, vi povas sekure ignori ĉi tiun retpoŝton.",
"emails.certificate.subject": "Atestilo malsukceso por %s",
"emails.certificate.hello": "Saluton",
"emails.certificate.body": "Atestilo por via retejo '{{domain}}' ne povis esti generita. Tio estas provo numero {{attempt}}, kaj la malsukceso estis kaŭzita de: {{error}}",
"emails.certificate.footer": "Via antaŭa atestilo estos valida dum 30 tagoj ekde la unua malsukceso. Ni tre rekomendas esplori ĉi tiun kazon, alie via domajno finiĝos sen valida SSL-komunikado.",
"emails.certificate.thanks": "Dankon",
"emails.certificate.signature": "teamo de {{project}}",
"sms.verification.body": "{{secret}} estas via {{project}} kontrolo-kodo.",
"emails.magicSession.securityPhrase": "La sekureca frazo por ĉi tiu retpoŝto estas {{phrase}}. Vi povas fidi ĉi tiun retpoŝton se ĉi tiu frazo kongruas kun la frazo montrita dum ensaluto.",
"emails.magicSession.optionUrl": "Se vi ne povas ensaluti per la supra butono, bonvolu viziti la jenan ligilon:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "América del Norte",
"continents.oc": "Oceanía",
"continents.sa": "América del Sur"
}
"continents.sa": "América del Sur",
"emails.magicSession.optionButton": "Haz clic en el botón de abajo para iniciar sesión de forma segura en tu cuenta de {{project}}. Caducará en 1 hora.",
"emails.magicSession.buttonText": "Iniciar sesión en {{project}}",
"emails.magicSession.clientInfo": "Este inicio de sesión fue solicitado usando {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no solicitaste el inicio de sesión, puedes ignorar este correo electrónico de forma segura.",
"emails.certificate.subject": "Fallo del certificado para %s",
"emails.certificate.hello": "Hola",
"emails.certificate.body": "El certificado para tu dominio '{{domain}}' no pudo generarse. Este es el intento n.º {{attempt}}, y el fallo fue causado por: {{error}}",
"emails.certificate.footer": "Su certificado anterior será válido durante 30 días desde el primer error. Recomendamos encarecidamente investigar este caso, de lo contrario, su dominio terminará sin una comunicación SSL válida.",
"emails.certificate.thanks": "Gracias",
"emails.certificate.signature": "equipo {{project}}",
"sms.verification.body": "{{secret}} es tu código de verificación de {{project}}.",
"emails.magicSession.securityPhrase": "La frase de seguridad para este correo electrónico es {{phrase}}. Puedes confiar en este correo electrónico si esta frase coincide con la frase que se muestra durante el inicio de sesión.",
"emails.magicSession.optionUrl": "Si no puedes iniciar sesión utilizando el botón anterior, visita el siguiente enlace:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "اروپا",
"continents.na": "آمریکای شمالی",
"continents.oc": "اقیانوسیه",
"continents.sa": "آمریکای جنوبی"
}
"continents.sa": "آمریکای جنوبی",
"emails.magicSession.optionButton": "بر روی دکمه زیر کلیک کنید تا به صورت امن وارد حساب {{project}} خود شوید. این دکمه یک ساعت دیگر منقضی می‌شود.",
"emails.magicSession.buttonText": "ورود به {{project}}",
"emails.magicSession.clientInfo": "این ورود به سیستم با استفاده از {{agentClient}} در {{agentDevice}} {{agentOs}} درخواست شده است. اگر شما این ورود به سیستم را درخواست نکرده‌اید، می‌توانید به راحتی این ایمیل را نادیده بگیرید.",
"emails.certificate.subject": "خطا در گواهینامه برای %s",
"emails.certificate.hello": "سلام",
"emails.certificate.body": "گواهی برای دامنه شما '{{domain}}' نتوانست تولید شود. این تلاش شماره {{attempt}} بود، و شکست به علت: {{error}} اتفاق افتاد.",
"emails.certificate.footer": "گواهی قبلی شما از زمان اولین شکست، به مدت 30 روز معتبر خواهد بود. ما به شدت توصیه می‌کنیم که این مورد را بررسی کنید، در غیر این صورت دامنه شما بدون ارتباط SSL معتبر باقی خواهد ماند.",
"emails.certificate.thanks": "متشکرم",
"emails.certificate.signature": "تیم {{project}}",
"sms.verification.body": "{{secret}} کد تایید {{project}} شما است.",
"emails.magicSession.securityPhrase": "عبارت امنیتی برای این ایمیل {{phrase}} است. اگر این عبارت با عبارت نشان داده شده در هنگام ورود به سیستم مطابقت داشت، می‌توانید به این ایمیل اعتماد کنید.",
"emails.magicSession.optionUrl": "اگر قادر به ورود با استفاده از دکمه بالا نیستید، لطفاً از لینک زیر دیدن فرمایید:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Eurooppa",
"continents.na": "Pohjois Amerikka",
"continents.oc": "Oceania",
"continents.sa": "Etelä Amerikka"
"continents.sa": "Etelä Amerikka",
"emails.magicSession.optionButton": "Napsauta alla olevaa painiketta kirjautuaksesi turvallisesti {{project}}-tiliisi. Se vanhenee tunnissa.",
"emails.magicSession.buttonText": "Kirjaudu sisään {{project}}",
"emails.magicSession.clientInfo": "Tämä kirjautuminen pyydettiin käyttäen {{agentClient}} {{agentDevice}} {{agentOs}}. Jos et pyytänyt kirjautumista, voit huoletta jättää tämän sähköpostin huomiotta.",
"emails.certificate.subject": "Varmentotodistuksen vika %s:ssa",
"emails.certificate.hello": "Hei",
"emails.certificate.body": "Verkkotunnuksellesi '{{domain}}' ei voitu luoda sertifikaattia. Tämä oli yritysnumero {{attempt}}, ja epäonnistuminen johtui virheestä: {{error}}",
"emails.certificate.footer": "Aiempi sertifikaattisi on voimassa 30 päivää ensimmäisestä epäonnistumisesta lähtien. Suosittelemme tutkimaan tämän tapauksen, muuten verkkotunnuksesi jää ilman voimassa olevaa SSL-salausta.",
"emails.certificate.thanks": "Kiitos",
"emails.certificate.signature": "{{project}} tiimi",
"sms.verification.body": "{{secret}} on sinun {{project}} vahvistuskoodisi.",
"emails.magicSession.securityPhrase": "Tämän sähköpostin turvalause on {{phrase}}. Voit luottaa tähän sähköpostiin, jos tämä lause vastaa kirjautumisen yhteydessä näytettyä lausetta.",
"emails.magicSession.optionUrl": "Jos et pysty kirjautumaan sisään yllä olevaa painiketta käyttäen, käy seuraavassa linkissä:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Norðuramerika",
"continents.oc": "Kyrrahavsoyggjarnar",
"continents.sa": "Suðuramerika"
"continents.sa": "Suðuramerika",
"emails.magicSession.optionButton": "Trýst á knøttin niðanfyri fyri at rita trygt inn á tína {{project}} konto. Tað fer at ganga út um 1 tíma.",
"emails.magicSession.buttonText": "Innrita á {{project}}",
"emails.magicSession.clientInfo": "Hetta innritingarbeiðið varð umbiðið við {{agentClient}} á {{agentDevice}} {{agentOs}}. Um tú ikki bað um innritingina, kanst tú trygt ignoreri hendan teldupostin.",
"emails.certificate.subject": "Váttanarfeilur fyri %s",
"emails.certificate.hello": "Hallo",
"emails.certificate.body": "Váttan fyri títt øki '{{domain}}' kundi ikki verða framleidd. Hetta er roynd nr. {{attempt}}, og feilurin var orsakaður av: {{error}}",
"emails.certificate.footer": "Títt fyrra prógv verður gildaði í 30 dagar frá fyrstu miseydnaðu royndini. Vit mæla staðiliga til at kanna hesa støðuna, annars endar tín domæni uttan gildað SSL samskifti.",
"emails.certificate.thanks": "Takk",
"emails.certificate.signature": "{{project}} bólkur",
"sms.verification.body": "{{secret}} er tín {{project}} váttanarkodi.",
"emails.magicSession.securityPhrase": "Trygdarorðið fyri hesa teldupostadressuna er {{phrase}}. Tú kanst líta á hesa teldupostadressu, um hetta orðið samsvarar við orðið víst tá tú ritaði inn.",
"emails.magicSession.optionUrl": "Um tú ikki fært innritað við at brúka knøttin omanfyri, vinarliga vitja hesa leinkjuna:"
}

View file

@ -234,5 +234,11 @@
"continents.eu": "Europe",
"continents.na": "Amérique du Nord",
"continents.oc": "Océanie",
"continents.sa": "Amérique du Sud"
}
"continents.sa": "Amérique du Sud",
"emails.magicSession.optionButton": "Cliquez sur le bouton ci-dessous pour vous connecter en toute sécurité à votre compte {{project}}. Il expirera dans 1 heure.",
"emails.magicSession.buttonText": "Connectez-vous à {{project}}",
"emails.magicSession.optionUrl": "Si le bouton ci-dessus ne s'affiche pas, utilisez le lien suivant :",
"emails.magicSession.clientInfo": "Cette connexion a été demandée en utilisant {{agentClient}} sur {{agentDevice}} {{agentOs}}. Si vous n'avez pas demandé cette connexion, vous pouvez ignorer cet email en toute sécurité.",
"sms.verification.body": "{{secret}} est votre code de vérification pour {{project}}.",
"emails.magicSession.securityPhrase": "La phrase de sécurité pour cet email est {{phrase}}. Vous pouvez faire confiance à cet email si cette phrase correspond à celle affichée lors de la connexion."
}

View file

@ -23,7 +23,7 @@
"emails.recovery.signature": "{{project}} foireann",
"emails.invitation.subject": "Cuireadh do %s foireann ag %s",
"emails.invitation.hello": "Haigh",
"emails.invitation.body": "Seoladh an ríomhphost seo chugat mar ba mhaith le {{owner}} cuireadh a thabhairt duit bheith mar bhall den fhoireann {{team}} ag obair ar {{project}}.",
"emails.invitation.body": "Seoladh an ríomhphost seo chugat mar ba mhaith le {{owner}} cuireadh a thabhairt duit bheith mar bhall den fhoireann {{team}} ag obair ar {{project}}.",
"emails.invitation.footer": "Is cuma leat? Déan neamhaird den teachtaireacht seo.",
"emails.invitation.thanks": "Go raibh maith agat",
"emails.invitation.signature": "{{project}} foireann",
@ -228,5 +228,17 @@
"continents.eu": "An Eoraip",
"continents.na": "Meiriceá Thuaidh",
"continents.oc": "An Aigéine",
"continents.sa": "Meiriceá Theas"
}
"continents.sa": "Meiriceá Theas",
"emails.magicSession.optionButton": "Cliceáil ar an gcnaipe thíos le síní isteach go sábháilte i do chuntas {{project}}. Rachaidh sé in éag i gceann 1 uair.",
"emails.magicSession.buttonText": "Sínigh isteach i {{project}}",
"emails.magicSession.clientInfo": "Rinneadh an logáil isteach seo a iarraidh ag baint úsáide as {{agentClient}} ar {{agentDevice}} {{agentOs}}. Mura ndearna tú an logáil isteach a iarraidh, is féidir leat neamhaird sábháilte a dhéanamh den ríomhphost seo.",
"emails.certificate.subject": "Teip deimhnithe do %s",
"emails.certificate.hello": "Dia dhuit",
"emails.certificate.body": "Níorbh fhéidir teastas a chruthú do do réimse '{{domain}}'. Is é seo iarracht uimh. {{attempt}}, agus ba é an locht a bhí air: {{error}}",
"emails.certificate.footer": "Beidh do theastas roimhe seo bailí ar feadh 30 lá ón gcéad theip. Molaimid go mór cás seo a fhiosrú, murach sin rachaidh do réimse gan cumarsáid SSL bailí.",
"emails.certificate.thanks": "Go raibh maith agat",
"emails.certificate.signature": "foireann {{project}}",
"sms.verification.body": "Is é {{secret}} do chód fíoraithe {{project}}.",
"emails.magicSession.securityPhrase": "Is é an abairt slándála don ríomhphost seo ná {{phrase}}. Is féidir muinín a bheith agat as an ríomhphost seo má mheaitseálann an abairt seo leis an abairt a taispeántar le linn sínithe isteach.",
"emails.magicSession.optionUrl": "Mura bhfuil tú in ann síniú isteach ag baint úsáid as an gcnaipe thuas, téigh chuig an nasc seo a leanas:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "યુરોપ",
"continents.na": "ઉત્તર અમેરિકા",
"continents.oc": "ઓશનિયા",
"continents.sa": "દક્ષિણ અમેરિકા"
"continents.sa": "દક્ષિણ અમેરિકા",
"emails.magicSession.optionButton": "નીચે આપેલ બટન પર ક્લિક કરો તમારા {{project}} ખાતામાં સુરક્ષિત રીતે સાઇન ઈન કરવા માટે. તે 1 કલાકમાં સમાપ્ત થઈ જશે.",
"emails.magicSession.buttonText": "સાઇન ઇન કરો {{project}}",
"emails.magicSession.clientInfo": "આ સાઇન ઇન વિનંતી {{agentClient}} નો ઉપયોગ કરીને {{agentDevice}} {{agentOs}} પર કરવામાં આવી હતી. જો તમે સાઇન ઇનની વિનંતી કરી ન હોય, તો આ ઇમેઇલને સલામત રીતે અવગણી શકો છો.",
"emails.certificate.subject": "પ્રમાણપત્ર નિષ્ફળતા %s માટે",
"emails.certificate.hello": "હેલો",
"emails.certificate.body": "તમારા ડોમેન '{{domain}}' માટેનું પ્રમાણપત્ર બનાવી શકાયું નથી. આ પ્રયાસ નંબર {{attempt}} છે, અને ભૂલ આવા કારણે થયું છે: {{error}}",
"emails.certificate.footer": "તમારું અગાઉનું પ્રમાણપત્ર પ્રથમ નિષ્ફળતા થી ૩૦ દિવસ સુધી માન્ય રહેશે. અમે આ કેસની તપાસ કરવાની દૃઢપણે ભલામણ કરીએ છીએ, નહીં તો તમારું ડોમેન માન્ય SSL સંવાદ વિનાનું રહી જશે.",
"emails.certificate.thanks": "Dhanyavad",
"emails.certificate.signature": "પ્રોજેક્ટ ટીમ",
"sms.verification.body": "{{secret}} તમારા {{project}} ચકાસણી કોડ છે.",
"emails.magicSession.securityPhrase": "આ ઇમેઇલ માટેનું સુરક્ષા વાક્ય {{phrase}} છે. જો આ વાક્ય સાઇન ઇન દરમિયાન દર્શાવેલા વાક્ય સાથે મેળ ખાય તો તમે આ ઇમેઇલ પર વિશ્વાસ કરી શકો છો.",
"emails.magicSession.optionUrl": "જો તમે ઉપરની બટનનો ઉપયોગ કરીને સાઇન ઇન કરી શકતા નથી, કૃપા કરીને નીચેની લિંક પર જાઓ:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "אירופה",
"continents.na": "צפון אמריקה",
"continents.oc": "אוקיאניה",
"continents.sa": "דרום אמריקה"
"continents.sa": "דרום אמריקה",
"emails.magicSession.optionButton": "לחץ על הכפתור למטה כדי להיכנס לחשבון {{project}} שלך באופן מאובטח. תוקף הכניסה יפוג תוך שעה.",
"emails.magicSession.buttonText": "היכנס ל-{{project}}",
"emails.magicSession.clientInfo": "ההתחברות הזו נעשתה באמצעות {{agentClient}} על {{agentDevice}} {{agentOs}}. אם לא ביקשת את ההתחברות הזו, באפשרותך להתעלם בבטחה מהאימייל הזה.",
"emails.certificate.subject": "תקלת תעודה עבור %s",
"emails.certificate.hello": "שלום",
"emails.certificate.body": "תעודה עבור הדומיין '{{domain}}' לא ניתנה ליצירה. זו ניסיונות מספר {{attempt}}, והכישלון נגרם על ידי: {{error}}",
"emails.certificate.footer": "תעודתך הקודמת תהיה בתוקף ל-30 ימים מהכשל הראשון. אנו ממליצים בחום לבדוק את המקרה הזה, אחרת הדומיין שלך יישאר ללא אמצעי תקשורת SSL תקף.",
"emails.certificate.thanks": "תודה",
"emails.certificate.signature": "צוות {{project}}",
"sms.verification.body": "{{secret}} הוא קוד האימות שלך ל-{{project}}.",
"emails.magicSession.securityPhrase": "משפט הביטחון עבור הודעת הדוא\"ל הזו הוא {{phrase}}. תוכל לסמוך על הודעת הדוא\"ל הזו אם המשפט הזה תואם למשפט שהוצג בעת ההתחברות.",
"emails.magicSession.optionUrl": "אם אינך יכול להיכנס באמצעות הכפתור למעלה, בקר בקישור הבא:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "यूरोप",
"continents.na": "उत्तरी अमेरिका",
"continents.oc": "ओशिनिया",
"continents.sa": "दक्षिण अमेरिका"
}
"continents.sa": "दक्षिण अमेरिका",
"emails.magicSession.optionButton": "नीचे दिए गए बटन पर क्लिक करके अपने {{project}} खाते में सुरक्षित रूप से साइन इन करें। यह 1 घंटे में समाप्त हो जाएगा।",
"emails.magicSession.buttonText": "{{project}} में साइन इन करें",
"emails.magicSession.clientInfo": "यह साइन इन {{agentClient}} का उपयोग करके {{agentDevice}} {{agentOs}} पर किया गया था। यदि आपने साइन इन का अनुरोध नहीं किया है, तो आप इस ईमेल को सुरक्षित रूप से अनदेखा कर सकते हैं।",
"emails.certificate.subject": "%s के लिए प्रमाणपत्र विफलता",
"emails.certificate.hello": "नमस्ते",
"emails.certificate.body": "आपके डोमेन '{{domain}}' के लिए प्रमाणपत्र उत्पन्न नहीं किया जा सका। यह प्रयास संख्या {{attempt}} है, और असफलता का कारण था: {{error}}",
"emails.certificate.footer": "आपका पिछला प्रमाणपत्र पहली असफलता के बाद 30 दिनों के लिए मान्य होगा। हम इस मामले की जांच करने की दृढ़ता से सिफारिश करते हैं, अन्यथा आपका डोमेन वैध SSL संचार के बिना छूट जाएगा।",
"emails.certificate.thanks": "धन्यवाद",
"emails.certificate.signature": "{{project}} टीम",
"sms.verification.body": "{{secret}} आपके {{project}} सत्यापन कोड है।",
"emails.magicSession.securityPhrase": "इस ईमेल का सुरक्षा वाक्यांश {{phrase}} है। यदि यह वाक्यांश साइन इन के दौरान दिखाए गए वाक्यांश से मेल खाता है तो आप इस ईमेल पर भरोसा कर सकते हैं।",
"emails.magicSession.optionUrl": "यदि आप ऊपर दिए गए बटन का उपयोग करके साइन इन नहीं कर पा रहे हैं, कृपया निम्नलिखित लिंक पर जाएँ:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Sjeverna Amerika",
"continents.oc": "Oceanija",
"continents.sa": "Južna Amerika"
"continents.sa": "Južna Amerika",
"emails.magicSession.optionButton": "Kliknite gumb ispod kako biste sigurno prijavili u svoj {{project}} račun. Istek će za 1 sat.",
"emails.magicSession.buttonText": "Prijavite se u {{project}}",
"emails.magicSession.clientInfo": "Ova se prijava zatražila koristeći {{agentClient}} na uređaju {{agentDevice}} {{agentOs}}. Ako niste zatražili prijavu, možete slobodno zanemariti ovaj e-mail.",
"emails.certificate.subject": "Nepostojanje certifikata za %s",
"emails.certificate.hello": "Pozdrav",
"emails.certificate.body": "Certifikat za vašu domenu '{{domain}}' nije mogao biti generiran. Ovo je pokušaj br. {{attempt}}, a neuspjeh je uzrokovan: {{error}}",
"emails.certificate.footer": "Vaš prethodni certifikat bit će važeći 30 dana od prvog neuspjeha. Visoko preporučujemo istraživanje ovog slučaja, inače će vaša domena završiti bez važeće SSL komunikacije.",
"emails.certificate.thanks": "Hvala",
"emails.certificate.signature": "tim {{project}}",
"sms.verification.body": "{{secret}} je vaš verifikacijski kod za {{project}}.",
"emails.magicSession.securityPhrase": "Sigurnosna fraza za ovaj e-mail je {{phrase}}. Ovom e-mailu možete vjerovati ako se fraza podudara s frazom prikazanom tijekom prijave.",
"emails.magicSession.optionUrl": "Ako se ne možete prijaviti koristeći gornji gumb, posjetite sljedeću poveznicu:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Európa",
"continents.na": "Észak-Amerika",
"continents.oc": "Óceánia",
"continents.sa": "Dél-Amerika"
"continents.sa": "Dél-Amerika",
"emails.magicSession.optionButton": "Kattintson az alábbi gombra, hogy biztonságosan bejelentkezzen a {{project}} fiókjába. A link 1 óra múlva lejár.",
"emails.magicSession.buttonText": "Jelentkezzen be a {{project}} szolgáltatásba.",
"emails.magicSession.clientInfo": "Ezt a bejelentkezést a(z) {{agentClient}} használatával kérték az Ön {{agentDevice}} {{agentOs}} eszközén. Ha Ön nem kezdeményezte ezt a bejelentkezést, nyugodtan hagyja figyelmen kívül ezt az e-mailt.",
"emails.certificate.subject": "Tanúsítvány hiba a következőhöz: %s",
"emails.certificate.hello": "Szia",
"emails.certificate.body": "Az Ön '{{domain}}' domainjához a tanúsítvány nem generálható. Ez a {{attempt}}. kísérlet, és a következő hiba okozta: {{error}}",
"emails.certificate.footer": "Az előző tanúsítvány 30 napig lesz érvényes az első hiba óta. Nagyon ajánljuk, hogy vizsgálja meg ezt az esetet, különben a domainje érvényes SSL kommunikáció nélkül marad.",
"emails.certificate.thanks": "Köszönöm",
"emails.certificate.signature": "{{project}} csapat",
"sms.verification.body": "{{secret}} a(z) {{project}} megerősítő kódja.",
"emails.magicSession.securityPhrase": "Az e-mailhez tartozó biztonsági kifejezés: {{phrase}}. Megbízhat ebben az e-mailben, ha ez a kifejezés megegyezik a bejelentkezéskor megjelenített kifejezéssel.",
"emails.magicSession.optionUrl": "Amennyiben az előző gomb használatával nem tud bejelentkezni, kérjük látogassa meg a következő linket:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Եվրոպա",
"continents.na": "Հյուսիսային Ամերիկա",
"continents.oc": "Օկեանիա",
"continents.sa": "Հարավային Ամերիկա"
"continents.sa": "Հարավային Ամերիկա",
"emails.magicSession.optionButton": "Սեղմեք ներքևի կոճակը՝ ապահով մուտք գործելու {{project}} հաշիվդ։ Այն կանցնի 1 ժամից։",
"emails.magicSession.buttonText": "Մուտք գործեք {{project}} համար",
"emails.magicSession.clientInfo": "Սա մուտք գործելը խնդրվել է `{{agentClient}}`-ի միջոցով {{agentDevice}} {{agentOs}}-ում: Եթե դուք չեք խնդրել մուտք գործելը, ապա կարող եք անտեղյակ մնալ այս էլփոստից:",
"emails.certificate.subject": "%s համար վկայագրի ձախողում",
"emails.certificate.hello": "Բարև",
"emails.certificate.body": "Ձեր '{{domain}}' տիրույթի համար գերծանգը չի ստացվել։ Սա արդեն {{attempt}} փորձն է, և ձախողումը հետևանք է՝ {{error}}։",
"emails.certificate.footer": "Ձեր նախորդ վկայագիրը կմնա վավերական 30 օրվա ընթացքում առաջին ձախողումից հետո: Մենք խորհրդանշում ենք հետաքրքրել այս դեպքը, հակառակ դեպքում Ձեր տիրույթը կմնա առանց վավերական SSL կապի:",
"emails.certificate.thanks": "Շնորհակալ եմ",
"emails.certificate.signature": "{{project}} թիմ",
"sms.verification.body": "{{secret}}-ն ձեր {{project}} վավերացման կոդն է։",
"emails.magicSession.securityPhrase": "Այս էլհասցեի անվտանգության արտահայտությունը {{phrase}} է: Դուք կարող եք հավատալ այս էլհասցեին, եթե այդ արտահայտությունը համընկնում է ներմուծման պրոցեսին՝ երբ դուք գրանցվել եք։",
"emails.magicSession.optionUrl": "Եթե չեք կարող մուտք գործել վերը նշված կոճակով, այցելեք հետևյալ հղումը՝"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Eropa",
"continents.na": "Amerika Utara",
"continents.oc": "Oseania",
"continents.sa": "Amerika Selatan"
"continents.sa": "Amerika Selatan",
"emails.magicSession.optionButton": "Klik tombol di bawah ini untuk masuk ke akun {{project}} Anda dengan aman. Ini akan kedaluwarsa dalam 1 jam.",
"emails.magicSession.buttonText": "Masuk ke {{project}}",
"emails.magicSession.clientInfo": "Tanda masuk ini diminta menggunakan {{agentClient}} di {{agentDevice}} {{agentOs}}. Jika Anda tidak meminta untuk masuk, Anda dapat mengabaikan email ini dengan aman.",
"emails.certificate.subject": "Kegagalan sertifikat untuk %s",
"emails.certificate.hello": "Halo",
"emails.certificate.body": "Sertifikat untuk domain Anda '{{domain}}' tidak dapat dibuat. Ini adalah percobaan ke-{{attempt}}, dan kegagalan disebabkan oleh: {{error}}",
"emails.certificate.footer": "Sertifikat sebelumnya Anda akan berlaku selama 30 hari sejak kegagalan pertama. Kami sangat menyarankan untuk menyelidiki kasus ini, jika tidak domain Anda akan berakhir tanpa komunikasi SSL yang valid.",
"emails.certificate.thanks": "Terima kasih",
"emails.certificate.signature": "tim {{project}}",
"sms.verification.body": "{{secret}} adalah kode verifikasi {{project}} Anda.",
"emails.magicSession.securityPhrase": "Frasa keamanan untuk email ini adalah {{phrase}}. Anda dapat mempercayai email ini jika frasa tersebut cocok dengan frasa yang ditampilkan saat masuk.",
"emails.magicSession.optionUrl": "Jika Anda tidak dapat masuk menggunakan tombol di atas, silakan kunjungi tautan berikut:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Evrópa",
"continents.na": "Norður Ameríka",
"continents.oc": "Eyjaálfu",
"continents.sa": "Suður Ameríka"
"continents.sa": "Suður Ameríka",
"emails.magicSession.optionButton": "Smelltu á hnappinn hér fyrir neðan til að skrá þig örugglega inn á {{project}} reikninginn þinn. Hann rennur út eftir 1 klukkustund.",
"emails.magicSession.buttonText": "Skráðu þig inn á {{project}}",
"emails.magicSession.clientInfo": "Þessi innskráning var óskað eftir með {{agentClient}} á {{agentDevice}} {{agentOs}}. Ef þú baðst ekki um innskráninguna geturðu hundsað þennan tölvupóst örugglega.",
"emails.certificate.subject": "Vottorðabilun fyrir %s",
"emails.certificate.hello": "Halló",
"emails.certificate.body": "Vottorð fyrir léninu þínu '{{domain}}' gat ekki verið búið til. Þetta er tilraun nr. {{attempt}}, og mistökin voru af völdum: {{error}}",
"emails.certificate.footer": "Fyrri vottorðið þitt verður gilt í 30 daga frá fyrstu mistökum. Við mælum eindregið með því að rannsaka þetta tilvik, ella mun lén þitt enda án gildrar SSL-samskipta.",
"emails.certificate.thanks": "Takk",
"emails.certificate.signature": "{{project}} liðið",
"sms.verification.body": "{{secret}} er staðfestingarkóði {{project}} þíns.",
"emails.magicSession.securityPhrase": "Öryggisfrasi fyrir þetta tölvupóst er {{phrase}}. Þú getur treyst þessum tölvupósti ef þessi frasi passar við frasann sem birtist við innskráningu.",
"emails.magicSession.optionUrl": "Ef þú getur ekki skráð þig inn með hnappnum hér að ofan, vinsamlegast heimsækðu eftirfarandi tengil:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Nord America",
"continents.oc": "Oceania",
"continents.sa": "Sud America"
"continents.sa": "Sud America",
"emails.magicSession.optionButton": "Fai clic sul pulsante qui sotto per accedere in modo sicuro al tuo account {{project}}. Scadrà tra 1 ora.",
"emails.magicSession.buttonText": "Accedi a {{project}}",
"emails.magicSession.clientInfo": "Questo accesso è stato richiesto utilizzando {{agentClient}} su {{agentDevice}} {{agentOs}}. Se non hai richiesto l'accesso, puoi tranquillamente ignorare questa email.",
"emails.certificate.subject": "Certificato non valido per %s",
"emails.certificate.hello": "Ciao",
"emails.certificate.body": "Il certificato per il tuo dominio '{{domain}}' non ha potuto essere generato. Questo è il tentativo n. {{attempt}}, e l'errore è stato causato da: {{error}}",
"emails.certificate.footer": "Il tuo certificato precedente sarà valido per 30 giorni dalla prima mancata riuscita. Consigliamo vivamente di indagare su questo caso, altrimenti il tuo dominio si troverà senza una valida comunicazione SSL.",
"emails.certificate.thanks": "Grazie",
"emails.certificate.signature": "team {{project}}",
"sms.verification.body": "{{secret}} è il tuo codice di verifica per {{project}}.",
"emails.magicSession.securityPhrase": "La frase di sicurezza per questa email è {{phrase}}. Puoi fidarti di questa email se questa frase corrisponde alla frase mostrata durante l'accesso.",
"emails.magicSession.optionUrl": "Se non riesci ad accedere utilizzando il pulsante qui sopra, ti preghiamo di visitare il seguente link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ヨーロッパ",
"continents.na": "北米",
"continents.oc": "オセアニア",
"continents.sa": "南アメリカ"
}
"continents.sa": "南アメリカ",
"emails.magicSession.optionButton": "以下のボタンをクリックして、安全に{{project}}アカウントにサインインしてください。有効期限は1時間です。",
"emails.magicSession.buttonText": "{{project}} にサインイン",
"emails.magicSession.clientInfo": "このサインインは{{agentClient}}を使用して{{agentDevice}} {{agentOs}}で要求されました。サインインを要求していない場合は、このメールを安全に無視してください。",
"emails.certificate.subject": "%s の証明書エラー",
"emails.certificate.hello": "こんにちは",
"emails.certificate.body": "ドメイン「{{domain}}」の証明書を生成できませんでした。これは試行回数{{attempt}}で、原因は以下のエラーです: {{error}}",
"emails.certificate.footer": "以前の証明書は最初の失敗から30日間有効です。この問題を調査することを強く推奨します。さもなければ、ドメインは有効なSSL通信なしで終わってしまいます。",
"emails.certificate.thanks": "ありがとう",
"emails.certificate.signature": "{{project}} チーム",
"sms.verification.body": "{{secret}} はあなたの {{project}} 認証コードです。",
"emails.magicSession.securityPhrase": "このメールのセキュリティフレーズは{{phrase}}です。サインイン時に表示されたフレーズと一致する場合、このメールは信頼できます。",
"emails.magicSession.optionUrl": "上記のボタンを使用してサインインすることができない場合は、次のリンクにアクセスしてください:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Eropa",
"continents.na": "Amérika Lor",
"continents.oc": "Oseania",
"continents.sa": "Amérika Kidul"
"continents.sa": "Amérika Kidul",
"emails.magicSession.optionButton": "Klik tombol ing ngisor iki kanggo mlebu kanthi aman ing akun {{project}} panjenengan. Bakal kadaluwarsa sajroning 1 jam.",
"emails.magicSession.buttonText": "Mlebu ing {{project}}",
"emails.magicSession.clientInfo": "Penandatanganan iki dijaluk nganggo {{agentClient}} ing {{agentDevice}} {{agentOs}}. Yen panjenengan ora njaluk penandatanganan, panjenengan bisa ngabaikan email iki kanthi aman.",
"emails.certificate.subject": "Gagal sertifikat kanggo %s",
"emails.certificate.hello": "Halo",
"emails.certificate.body": "Sertifikat kanggo domain panjenengan '{{domain}}' ora bisa digawe. Iki nyoba nomer {{attempt}}, lan gagal amarga: {{error}}",
"emails.certificate.footer": "Sertifikat sadurunge bakal tetep sah sajrone 30 dina wiwit kagagalan pisanan. Kita menehi saran sing kuat supaya panjenengan nyelidiki kasus iki, manawa-mawa domain panjenengan bakal pungkasan tanpa komunikasi SSL sing sah.",
"emails.certificate.thanks": "Matur nuwun",
"emails.certificate.signature": "tim {{project}}",
"sms.verification.body": "{{secret}} iku kode verifikasi {{project}} panjenengan.",
"emails.magicSession.securityPhrase": "Frasa keamanan kanggo email iki yaiku {{phrase}}. Sampeyan bisa percaya marang email iki yen frasa iki cocog karo frasa sing ditampilake nalika mlebu.",
"emails.magicSession.optionUrl": "Yen sampeyan ora bisa mlebu nganggo tombol ing ndhuwur, monggo ngunjungi pranala ing ngisor iki:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "អឺរ៉ុប",
"continents.na": "អាមេរិកខាងជើង",
"continents.oc": "អូសេអានី",
"continents.sa": "អាមេរិកខាងត្បូង"
"continents.sa": "អាមេរិកខាងត្បូង",
"emails.magicSession.optionButton": "ចុចប៊ូតុងខាងក្រោមដើម្បីចូលប្រើគណនី {{project}} របស់អ្នកដោយសុវត្ថិភាព។ វានឹងផុតកំណត់ក្នុងរយៈពេល 1 ម៉ោង។",
"emails.magicSession.buttonText": "ចូលទៅកាន់ {{project}}",
"emails.magicSession.clientInfo": "ការចូលប្រើនេះត្រូវបានស្នើរអោយប្រើ {{agentClient}} នៅលើ {{agentDevice}} {{agentOs}}។ ប្រសិនបើអ្នកមិនបានស្នើរការចូលប្រើនេះ អ្នកអាចមិនអើពើនឹងអ៊ីម៉ែលនេះបាន។",
"emails.certificate.subject": "បរាជ័យនៃវិញ្ញាបនបត្រសម្រាប់ %s",
"emails.certificate.hello": "សួស្តី",
"emails.certificate.body": "សញ្ញាបត្រសម្រាប់ដែន '{{domain}}' របស់អ្នកមិនអាចបង្កើតបានទេ។ នេះគឺជាការព្យាយាមលេខ {{attempt}} ហើយភាពបរាជ័យត្រូវបានបង្កដោយ: {{error}}",
"emails.certificate.footer": "វិញ្ញាបនបត្រមុនរបស់អ្នកនឹងនៅមានសុពលភាពរយៈពេល 30 ថ្ងៃចាប់ពីការបរាជ័យលើកដំបូង។ យើងខ្ញុំណែនាំយ៉ាងខ្លាំងអោយស្រាវជ្រាវលើករណីនេះ, បើមិនដូច្នេះទេដីមែនរបស់អ្នកនឹងបញ្ចប់ដោយគ្មានការតភ្ជាប់ SSL មានសុពលភាព។",
"emails.certificate.thanks": "អរគុណ",
"emails.certificate.signature": "ក្រុម {{project}}",
"sms.verification.body": "{{secret}} ជាលេខកូដផ្ទៀងផ្ទាត់សម្រាប់{{project}}របស់អ្នក។",
"emails.magicSession.securityPhrase": "ឃ្លាសម្ងាត់សម្រាប់អ៊ីមែលនេះគឺ {{phrase}}។ អ្នកអាចទុកចិត្តលើអ៊ីមែលនេះប្រសិនបើឃ្លានេះត្រូវគ្នាជាមួយឃ្លាដែលបង្ហាញឡើងពេលចូលប្រើ។",
"emails.magicSession.optionUrl": "ប្រសិនបើអ្នកមិនអាចចូលប្រើប្រាស់ដោយប្រើប៊ូតុងខាងលើនេះទេ សូមចូលទៅកាន់តំណភ្ជាប់ខាងក្រោម៖"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ಯುರೋಪ್",
"continents.na": "ಉತ್ತರ ಅಮೆರಿಕ",
"continents.oc": "ಓಷಿಯಾನಿಯಾ",
"continents.sa": "ದಕ್ಷಿಣ ಅಮೆರಿಕಾ"
"continents.sa": "ದಕ್ಷಿಣ ಅಮೆರಿಕಾ",
"emails.magicSession.optionButton": "ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿ ನಿಮ್ಮ {{project}} ಖಾತೆಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ. ಇದು 1 ಗಂಟೆಯಲ್ಲಿ ಅವಧಿ ಮುಗಿಯುತ್ತದೆ.",
"emails.magicSession.buttonText": "ಸೈನ್ ಇನ್ ಮಾಡಿ {{project}}",
"emails.magicSession.clientInfo": "ಈ ಸೈನ್ ಇನ್ ಅನ್ನು {{agentClient}} ಬಳಸಿ {{agentDevice}} {{agentOs}} ಮೂಲಕ ಕೋರಲಾಗಿದೆ. ನೀವು ಸೈನ್ ಇನ್ ಅನ್ನು ಕೋರಿಲ್ಲದಿದ್ದರೆ, ನೀವು ಈ ಇಮೇಲ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ನಿರ್ಲಕ್ಷಿಸಬಹುದು.",
"emails.certificate.subject": "ಪ್ರಮಾಣಪತ್ರ ವೈಫಲ್ಯ ಇದಕ್ಕಾಗಿ %s",
"emails.certificate.hello": "ಹಲೋ\n",
"emails.certificate.body": "ನಿಮ್ಮ ಡೊಮೇನ್ '{{domain}}' ಗಾಗಿ ಪ್ರಮಾಣಪತ್ರ ರಚಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ. ಇದು ಪ್ರಯತ್ನ ಸಂಖ್ಯೆ {{attempt}} ಮತ್ತು ಈ ವಿಫಲತೆಯು ಕಾರಣವಾಗಿದೆ: {{error}}",
"emails.certificate.footer": "ನಿಮ್ಮ ಹಿಂದಿನ ಪ್ರಮಾಣಪತ್ರವು ಮೊದಲ ವೈಫಲ್ಯದಿಂದ 30 ದಿನಗಳ ಕಾಲ ಮಾನ್ಯವಾಗಿರುತ್ತದೆ. ಈ ಪ್ರಕರಣವನ್ನು ತನಿಖೆ ಮಾಡುವುದರಲ್ಲಿ ನಾವು ಬಹಳಷ್ಟು ಶಿಫಾರಸು ಮಾಡುತ್ತೇವೆ, ಇಲ್ಲವೇ ನಿಮ್ಮ ಡೊಮೈನ್ ಮಾನ್ಯವಲ್ಲದ SSL ಸಂವಹನದೊಂದಿಗೆ ಉಳಿದುಬಿಡುತ್ತದೆ.",
"emails.certificate.thanks": "ಧನ್ಯವಾದಗಳು",
"emails.certificate.signature": "ತಂಡ",
"sms.verification.body": "{{secret}} ನಿಮ್ಮ {{project}} ಪರಿಶೀಲನಾ ಸಂಕೇತವಾಗಿದೆ.",
"emails.magicSession.securityPhrase": "ಈ ಇಮೇಲ್‌ಗಾಗಿ ಭದ್ರತಾ ಪದ ಇದೆ {{phrase}}. ಸೈನ್ ಇನ್ ಮಾಡುವಾಗ ತೋರಿದ ಪದವು ಈ ಪದವು ಹೊಂದಿಕೆಯಾಗಿದ್ದರೆ ನೀವು ಈ ಇಮೇಲ್‌ಅನ್ನು ನಂಬಬಹುದು.",
"emails.magicSession.optionUrl": "ಮೇಲಿನ ಬಟನ್ ಬಳಸಿ ನೀವು ಸೈನ್ ಇನ್ ಮಾಡಲು ಅಸಮರ್ಥರಾಗಿದ್ದರೆ, ದಯವಿಟ್ಟು ಈ ಕೆಳಗಿನ ಲಿಂಕ್ ಭೇಟಿಯನ್ನು ಕೊಡಿ:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "유럽",
"continents.na": "북아메리카",
"continents.oc": "오세아니아",
"continents.sa": "남아메리카"
"continents.sa": "남아메리카",
"emails.magicSession.optionButton": "아래 버튼을 클릭하여 안전하게 {{project}} 계정에 로그인하세요. 1시간 후에 만료됩니다.",
"emails.magicSession.buttonText": "{{project}}에 로그인하세요",
"emails.magicSession.clientInfo": "이 로그인은 {{agentClient}}을(를) 사용하여 {{agentDevice}} {{agentOs}}에서 요청되었습니다. 로그인을 요청하지 않았다면, 이 이메일을 안전하게 무시하셔도 됩니다.",
"emails.certificate.subject": "%s 인증서 오류",
"emails.certificate.hello": "안녕하세요",
"emails.certificate.body": "'{{domain}}' 도메인에 대한 인증서를 생성할 수 없었습니다. 이것은 시도 번호 {{attempt}}이며, 다음과 같은 이유로 실패하였습니다: {{error}}",
"emails.certificate.footer": "이전 인증서는 첫 실패로부터 30일 동안 유효할 것입니다. 이 문제를 조사할 것을 강력히 권장합니다, 그렇지 않으면 도메인이 유효한 SSL 통신 없이 남게 될 것입니다.",
"emails.certificate.thanks": "감사합니다",
"emails.certificate.signature": "{{project}} 팀",
"sms.verification.body": "{{secret}}는 귀하의 {{project}} 인증 코드입니다.",
"emails.magicSession.securityPhrase": "이 이메일의 보안 구절은 {{phrase}}입니다. 로그인할 때 표시되는 구절과 일치한다면 이 이메일을 신뢰할 수 있습니다.",
"emails.magicSession.optionUrl": "위의 버튼을 사용하여 로그인할 수 없다면, 다음 링크를 방문해 주세요:"
}

View file

@ -1,232 +1,244 @@
{
"settings.inspire": "\"Ars sapiendi est ars sciendi quid negligat.\"",
"settings.locale": "la",
"settings.direction": "ltr*",
"emails.sender": "%s team",
"emails.verification.subject": "Ratio comprobatio",
"emails.verification.hello": "Salve ibi {{user}}",
"emails.verification.body": "Sequere hanc nexum ut quin inscriptionem tuum.",
"emails.verification.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
"emails.verification.thanks": "Gratias",
"emails.verification.signature": "{{project}} Team",
"emails.magicSession.subject": "Log in",
"emails.magicSession.hello": "Salve ibi,",
"emails.magicSession.body": "Hanc nexum cum login",
"emails.magicSession.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
"emails.magicSession.thanks": "Gratias",
"emails.magicSession.signature": "{{project}} team",
"emails.recovery.subject": "Recuperet password",
"emails.recovery.hello": "Salve ibi {{user}}",
"emails.recovery.body": "Sequere hanc conjunctionem ut recipias project password {{project}}",
"emails.recovery.footer": "Si tesseram tuam recuperare non petis, nuntium hunc ignorare potes",
"emails.recovery.thanks": "Gratias",
"emails.recovery.signature": "{{project}} team",
"emails.invitation.subject": "Invitatio pro %s in quadrigis %s",
"emails.invitation.hello": "Salve ibi",
"emails.invitation.body": "Haec inscriptio ad te missa est quia dominus incepto {{owner}} te invitare vult ut membrum {{team}} quadrigis fias ad {{project}}",
"emails.invitation.footer": "Si non quaero, potes hunc nuntium ignorare",
"emails.invitation.thanks": "Gratias",
"emails.invitation.signature": "{{project}} team",
"locale.country.unknown": "Ignotum",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
"countries.al": "Albania",
"countries.ad": "Andorra",
"countries.ae": "Emiratos Arabes Unidos",
"countries.ar": "Argentina",
"countries.am": "Armenia",
"countries.ag": "Antigua and Barbuda",
"countries.au": "Australia",
"countries.at": "Austria",
"countries.az": "Azerbaijan",
"countries.bi": "Burundi",
"countries.be": "Belgium",
"countries.bj": "Benin",
"countries.bf": "Burkina Faso",
"countries.bd": "Bangladesh",
"countries.bg": "Bulgaria",
"countries.bh": "Bahrain",
"countries.bs": "Bahamas",
"countries.ba": "Bosnia and Herzegovina",
"countries.by": "Belarus",
"countries.bz": "Belize",
"countries.bo": "Bolivia",
"countries.br": "Brazil",
"countries.bb": "Barbados",
"countries.bn": "Brunei",
"countries.bt": "Bhutan",
"countries.bw": "Botswana",
"countries.cf": "Central African Republic",
"countries.ca": "Canada",
"countries.ch": "Switzerland",
"countries.cl": "Chile",
"countries.cn": "China",
"countries.ci": "Ivory Coast",
"countries.cm": "Cameroon",
"countries.cd": "DR Congo",
"countries.cg": "Republic of the Congo",
"countries.co": "Colombia",
"countries.km": "Comoros",
"countries.cv": "Cape Verde",
"countries.cr": "Costa Rica",
"countries.cu": "Cuba",
"countries.cy": "Cyprus",
"countries.cz": "Czechia",
"countries.de": "Germany",
"countries.dj": "Djibouti",
"countries.dm": "Dominica",
"countries.dk": "Denmark",
"countries.do": "Republica dominicana",
"countries.dz": "Algeria",
"countries.ec": "Ecuador",
"countries.eg": "Egypt",
"countries.er": "Eritrea",
"countries.es": "Spain",
"countries.ee": "Estonia",
"countries.et": "Ethiopia",
"countries.fi": "Finland",
"countries.fj": "Fiji",
"countries.fr": "France",
"countries.fm": "Micronesia",
"countries.ga": "Gabon",
"countries.gb": "Reino Unido",
"countries.ge": "Georgia",
"countries.gh": "Ghana",
"countries.gn": "Guinea",
"countries.gm": "Gambia",
"countries.gw": "Guinea-Bissau",
"countries.gq": "Equatorial Guinea",
"countries.gr": "Greece",
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hn": "Honduras",
"countries.hr": "Croatia",
"countries.ht": "Haiti",
"countries.hu": "Hungary",
"countries.id": "Indonesia",
"countries.in": "India",
"countries.ie": "Ireland",
"countries.ir": "Iran",
"countries.iq": "Iraq",
"countries.is": "Iceland",
"countries.il": "Israel",
"countries.it": "Italy",
"countries.jm": "Jamaica",
"countries.jo": "Jordan",
"countries.jp": "Japan",
"countries.kz": "Kazakhstan",
"countries.ke": "Kenya",
"countries.kg": "Kyrgyzstan",
"countries.kh": "Cambodia",
"countries.ki": "Kiribati",
"countries.kn": "Saint Kitts and Nevis",
"countries.kr": "South Korea",
"countries.kw": "Kuwait",
"countries.la": "Laos",
"countries.lb": "Lebanon",
"countries.lr": "Liberia",
"countries.ly": "Libya",
"countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein",
"countries.lk": "Sri Lanka",
"countries.ls": "Lesotho",
"countries.lt": "Lithuania",
"countries.lu": "Luxembourg",
"countries.lv": "Latvia",
"countries.ma": "Morocco",
"countries.mc": "Monaco",
"countries.md": "Moldova",
"countries.mg": "Madagascar",
"countries.mv": "Maldives",
"countries.mx": "Mexico",
"countries.mh": "Marshall Islands",
"countries.mk": "Macedonia",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Myanmar",
"countries.me": "Montenegro",
"countries.mn": "Mongolia",
"countries.mz": "Mozambique",
"countries.mr": "Mauritania",
"countries.mu": "Mauritius",
"countries.mw": "Malawi",
"countries.my": "Malaysia",
"countries.na": "Namibia",
"countries.ne": "Niger",
"countries.ng": "Nigeria",
"countries.ni": "Nicaragua",
"countries.nl": "Netherlands",
"countries.no": "Norway",
"countries.np": "Nepal",
"countries.nr": "Nauru",
"countries.nz": "New Zealand",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippines",
"countries.pw": "Palau",
"countries.pg": "Papua New Guinea",
"countries.pl": "Poland",
"countries.kp": "North Korea",
"countries.pt": "Portugal",
"countries.py": "Paraguay",
"countries.qa": "Qatar",
"countries.ro": "Romania",
"countries.ru": "Russia",
"countries.rw": "Rwanda",
"countries.sa": "Saudi Arabia",
"countries.sd": "Sudan",
"countries.sn": "Senegal",
"countries.sg": "Singapore",
"countries.sb": "Solomon Islands",
"countries.sl": "Sierra Leone",
"countries.sv": "El Salvador",
"countries.sm": "San Marino",
"countries.so": "Somalia",
"countries.rs": "Serbia",
"countries.ss": "South Sudan",
"countries.st": "São Tomé and Príncipe",
"countries.sr": "Suriname",
"countries.sk": "Slovakia",
"countries.si": "Slovenia",
"countries.se": "Sweden",
"countries.sz": "Swaziland",
"countries.sc": "Seychelles",
"countries.sy": "Syria",
"countries.td": "Chad",
"countries.tg": "Togo",
"countries.th": "Thailand",
"countries.tj": "Tajikistan",
"countries.tm": "Turkmenistan",
"countries.tl": "Timor-Leste",
"countries.to": "Tonga",
"countries.tt": "Trinidad and Tobago",
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
"countries.uy": "Uruguay",
"countries.us": "United States",
"countries.uz": "Uzbekistan",
"countries.va": "Vatican City",
"countries.vc": "Saint Vincent and the Grenadines",
"countries.ve": "Venezuela",
"countries.vn": "Vietnam",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Yemen",
"countries.za": "Sud-Africa",
"countries.zm": "Zambia",
"countries.zw": "Zimbabwe",
"continents.af": "Africa",
"continents.an": "Antarctica",
"continents.as": "Asia",
"continents.eu": "Europe",
"continents.na": "America del Norte",
"continents.oc": "Oceania",
"continents.sa": "America del Sur"
}
"settings.inspire": "\"Ars sapiendi est ars sciendi quid negligat.\"",
"settings.locale": "la",
"settings.direction": "ltr*",
"emails.sender": "%s team",
"emails.verification.subject": "Ratio comprobatio",
"emails.verification.hello": "Salve ibi {{user}}",
"emails.verification.body": "Sequere hanc nexum ut quin inscriptionem tuum.",
"emails.verification.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
"emails.verification.thanks": "Gratias",
"emails.verification.signature": "{{project}} Team",
"emails.magicSession.subject": "Log in",
"emails.magicSession.hello": "Salve ibi,",
"emails.magicSession.body": "Hanc nexum cum login",
"emails.magicSession.footer": "Si verificationem huius inscriptionis non postulasti, nuntium hunc ignorare potes.",
"emails.magicSession.thanks": "Gratias",
"emails.magicSession.signature": "{{project}} team",
"emails.recovery.subject": "Recuperet password",
"emails.recovery.hello": "Salve ibi {{user}}",
"emails.recovery.body": "Sequere hanc conjunctionem ut recipias project password {{project}}",
"emails.recovery.footer": "Si tesseram tuam recuperare non petis, nuntium hunc ignorare potes",
"emails.recovery.thanks": "Gratias",
"emails.recovery.signature": "{{project}} team",
"emails.invitation.subject": "Invitatio pro %s in quadrigis %s",
"emails.invitation.hello": "Salve ibi",
"emails.invitation.body": "Haec inscriptio ad te missa est quia dominus incepto {{owner}} te invitare vult ut membrum {{team}} quadrigis fias ad {{project}}",
"emails.invitation.footer": "Si non quaero, potes hunc nuntium ignorare",
"emails.invitation.thanks": "Gratias",
"emails.invitation.signature": "{{project}} team",
"locale.country.unknown": "Ignotum",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
"countries.al": "Albania",
"countries.ad": "Andorra",
"countries.ae": "Emiratos Arabes Unidos",
"countries.ar": "Argentina",
"countries.am": "Armenia",
"countries.ag": "Antigua and Barbuda",
"countries.au": "Australia",
"countries.at": "Austria",
"countries.az": "Azerbaijan",
"countries.bi": "Burundi",
"countries.be": "Belgium",
"countries.bj": "Benin",
"countries.bf": "Burkina Faso",
"countries.bd": "Bangladesh",
"countries.bg": "Bulgaria",
"countries.bh": "Bahrain",
"countries.bs": "Bahamas",
"countries.ba": "Bosnia and Herzegovina",
"countries.by": "Belarus",
"countries.bz": "Belize",
"countries.bo": "Bolivia",
"countries.br": "Brazil",
"countries.bb": "Barbados",
"countries.bn": "Brunei",
"countries.bt": "Bhutan",
"countries.bw": "Botswana",
"countries.cf": "Central African Republic",
"countries.ca": "Canada",
"countries.ch": "Switzerland",
"countries.cl": "Chile",
"countries.cn": "China",
"countries.ci": "Ivory Coast",
"countries.cm": "Cameroon",
"countries.cd": "DR Congo",
"countries.cg": "Republic of the Congo",
"countries.co": "Colombia",
"countries.km": "Comoros",
"countries.cv": "Cape Verde",
"countries.cr": "Costa Rica",
"countries.cu": "Cuba",
"countries.cy": "Cyprus",
"countries.cz": "Czechia",
"countries.de": "Germany",
"countries.dj": "Djibouti",
"countries.dm": "Dominica",
"countries.dk": "Denmark",
"countries.do": "Republica dominicana",
"countries.dz": "Algeria",
"countries.ec": "Ecuador",
"countries.eg": "Egypt",
"countries.er": "Eritrea",
"countries.es": "Spain",
"countries.ee": "Estonia",
"countries.et": "Ethiopia",
"countries.fi": "Finland",
"countries.fj": "Fiji",
"countries.fr": "France",
"countries.fm": "Micronesia",
"countries.ga": "Gabon",
"countries.gb": "Reino Unido",
"countries.ge": "Georgia",
"countries.gh": "Ghana",
"countries.gn": "Guinea",
"countries.gm": "Gambia",
"countries.gw": "Guinea-Bissau",
"countries.gq": "Equatorial Guinea",
"countries.gr": "Greece",
"countries.gd": "Grenada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hn": "Honduras",
"countries.hr": "Croatia",
"countries.ht": "Haiti",
"countries.hu": "Hungary",
"countries.id": "Indonesia",
"countries.in": "India",
"countries.ie": "Ireland",
"countries.ir": "Iran",
"countries.iq": "Iraq",
"countries.is": "Iceland",
"countries.il": "Israel",
"countries.it": "Italy",
"countries.jm": "Jamaica",
"countries.jo": "Jordan",
"countries.jp": "Japan",
"countries.kz": "Kazakhstan",
"countries.ke": "Kenya",
"countries.kg": "Kyrgyzstan",
"countries.kh": "Cambodia",
"countries.ki": "Kiribati",
"countries.kn": "Saint Kitts and Nevis",
"countries.kr": "South Korea",
"countries.kw": "Kuwait",
"countries.la": "Laos",
"countries.lb": "Lebanon",
"countries.lr": "Liberia",
"countries.ly": "Libya",
"countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein",
"countries.lk": "Sri Lanka",
"countries.ls": "Lesotho",
"countries.lt": "Lithuania",
"countries.lu": "Luxembourg",
"countries.lv": "Latvia",
"countries.ma": "Morocco",
"countries.mc": "Monaco",
"countries.md": "Moldova",
"countries.mg": "Madagascar",
"countries.mv": "Maldives",
"countries.mx": "Mexico",
"countries.mh": "Marshall Islands",
"countries.mk": "Macedonia",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Myanmar",
"countries.me": "Montenegro",
"countries.mn": "Mongolia",
"countries.mz": "Mozambique",
"countries.mr": "Mauritania",
"countries.mu": "Mauritius",
"countries.mw": "Malawi",
"countries.my": "Malaysia",
"countries.na": "Namibia",
"countries.ne": "Niger",
"countries.ng": "Nigeria",
"countries.ni": "Nicaragua",
"countries.nl": "Netherlands",
"countries.no": "Norway",
"countries.np": "Nepal",
"countries.nr": "Nauru",
"countries.nz": "New Zealand",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippines",
"countries.pw": "Palau",
"countries.pg": "Papua New Guinea",
"countries.pl": "Poland",
"countries.kp": "North Korea",
"countries.pt": "Portugal",
"countries.py": "Paraguay",
"countries.qa": "Qatar",
"countries.ro": "Romania",
"countries.ru": "Russia",
"countries.rw": "Rwanda",
"countries.sa": "Saudi Arabia",
"countries.sd": "Sudan",
"countries.sn": "Senegal",
"countries.sg": "Singapore",
"countries.sb": "Solomon Islands",
"countries.sl": "Sierra Leone",
"countries.sv": "El Salvador",
"countries.sm": "San Marino",
"countries.so": "Somalia",
"countries.rs": "Serbia",
"countries.ss": "South Sudan",
"countries.st": "São Tomé and Príncipe",
"countries.sr": "Suriname",
"countries.sk": "Slovakia",
"countries.si": "Slovenia",
"countries.se": "Sweden",
"countries.sz": "Swaziland",
"countries.sc": "Seychelles",
"countries.sy": "Syria",
"countries.td": "Chad",
"countries.tg": "Togo",
"countries.th": "Thailand",
"countries.tj": "Tajikistan",
"countries.tm": "Turkmenistan",
"countries.tl": "Timor-Leste",
"countries.to": "Tonga",
"countries.tt": "Trinidad and Tobago",
"countries.tn": "Tunisia",
"countries.tr": "Turkey",
"countries.tv": "Tuvalu",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraine",
"countries.uy": "Uruguay",
"countries.us": "United States",
"countries.uz": "Uzbekistan",
"countries.va": "Vatican City",
"countries.vc": "Saint Vincent and the Grenadines",
"countries.ve": "Venezuela",
"countries.vn": "Vietnam",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Yemen",
"countries.za": "Sud-Africa",
"countries.zm": "Zambia",
"countries.zw": "Zimbabwe",
"continents.af": "Africa",
"continents.an": "Antarctica",
"continents.as": "Asia",
"continents.eu": "Europe",
"continents.na": "America del Norte",
"continents.oc": "Oceania",
"continents.sa": "America del Sur",
"emails.magicSession.optionButton": "Preme el boton infra pro signar securmente in tu conto de {{project}}. Illo expirara in 1 hora.",
"emails.magicSession.buttonText": "Inicia sesión en {{project}}",
"emails.magicSession.clientInfo": "Esta conexión fue solicitada usando {{agentClient}} en {{agentDevice}} {{agentOs}}. Si usted no solicitó la conexión, puede ignorar este correo electrónico de forma segura.",
"emails.certificate.subject": "Fracaso del certificado para %s",
"emails.certificate.hello": "There seems to be a misunderstanding. The country code \"LA\" refers to Laos, and the primary language used there is Lao. However, without specific instructions to translate into Lao, I cannot proceed with the translation. If Lao is indeed the intended language, please confirm, and I will provide you with the translation.",
"emails.certificate.body": "El certificado para su dominio '{{domain}}' no pudo ser generado. Este es el intento número {{attempt}}, y el fallo fue causado por: {{error}}.",
"emails.certificate.footer": "Su certificado anterior será válido por 30 días desde el primer fallo. Recomendamos encarecidamente investigar este caso, de lo contrario su dominio quedará sin una comunicación SSL válida.",
"emails.certificate.thanks": "Gracias",
"emails.certificate.signature": "{{project}} equipo",
"sms.verification.body": "{{secret}} ແມ່ນລະຫັດຢືນຢັນສໍາລັບ {{project}} ຂອງທ່ານ.",
"emails.magicSession.securityPhrase": "La locución de seguridat pro iste correo es {{phrase}}. Podes confiar en iste correo si esta locución coincidit con la locución amostrada durante el ingreso.",
"emails.magicSession.optionUrl": "Si no puedes iniciar sesión utilizando el botón de arriba, por favor visita el siguiente enlace:"
}

View file

@ -1,232 +1,244 @@
{
"settings.inspire": "\"The art of being wise is the art of knowing what to overlook.\"",
"settings.locale": "lb",
"settings.direction": "ltr",
"emails.sender": "%s Team",
"emails.verification.subject": "Kont Verifikatioun",
"emails.verification.hello": "Hey {{user}}",
"emails.verification.body": "Follegt dëse Link fir Är E -Mail Adress z'iwwerpréiwen.",
"emails.verification.footer": "Wann Dir net gefrot hutt dës Adress z'iwwerpréiwen, kënnt Dir dëse Message ignoréieren.",
"emails.verification.thanks": "Merci",
"emails.verification.signature": "{{project}} équipe",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.body": "Follegt dëse Link fir umellen.",
"emails.magicSession.footer": "Wann Dir net gefrot hutt Iech mat dëser E -Mail anzemelden, kënnt Dir dëse Message ignoréieren.",
"emails.magicSession.thanks": "Merci",
"emails.magicSession.signature": "{{project}} équipe",
"emails.recovery.subject": "Password Reset",
"emails.recovery.hello": "Hello {{user}}",
"emails.recovery.body": "Follegt dëse Link fir Äert {{project}} Passwuert zréckzesetzen.",
"emails.recovery.footer": "Wann Dir net gefrot hutt Äert Passwuert zréckzesetzen, kënnt Dir dëse Message ignoréieren.",
"emails.recovery.thanks": "Merci",
"emails.recovery.signature": "{{project}} équipe",
"emails.invitation.subject": "Invitatioun un %s équipe bei %s",
"emails.invitation.hello": "Hallo",
"emails.invitation.body": "Dës E -Mail gouf un Iech geschéckt well {{owner}} Iech invitéiere wëllt fir Member vum {{team}} Team bei {{project}} ze ginn.",
"emails.invitation.footer": "Wann Dir net interesséiert sidd, kënnt Dir dëse Message ignoréieren.",
"emails.invitation.thanks": "Merci",
"emails.invitation.signature": "{{project}} équipe",
"locale.country.unknown": "Onbekannt",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
"countries.al": "Albanien",
"countries.ad": "Andorra",
"countries.ae": "Vereenegt Arabesch Emirater",
"countries.ar": "Argentinien",
"countries.am": "Armenien",
"countries.ag": "Antigua a Barbuda",
"countries.au": "Australien",
"countries.at": "Éisträich",
"countries.az": "Aserbaidschan",
"countries.bi": "Burundi",
"countries.be": "Belsch",
"countries.bj": "Benin",
"countries.bf": "Burkina Faso",
"countries.bd": "Bangladesch",
"countries.bg": "Bulgarien",
"countries.bh": "Bahrain",
"countries.bs": "Bahamas",
"countries.ba": "Bosnien an Herzegowina",
"countries.by": "Wäissrussland",
"countries.bz": "Belize",
"countries.bo": "Bolivien",
"countries.br": "Brasilien",
"countries.bb": "Barbados",
"countries.bn": "Brunei",
"countries.bt": "Bhutan",
"countries.bw": "Botswana",
"countries.cf": "Zentralafrikanesch Republik",
"countries.ca": "Kanada",
"countries.ch": "Schwäiz",
"countries.cl": "Chile",
"countries.cn": "China",
"countries.ci": "Côte d'Ivoire",
"countries.cm": "Kamerun",
"countries.cd": "DR Congo",
"countries.cg": "Republik Kongo",
"countries.co": "Kolumbien",
"countries.km": "Komoren",
"countries.cv": "Cap Vert",
"countries.cr": "Costa Rica",
"countries.cu": "Kuba",
"countries.cy": "Zypern",
"countries.cz": "Tschechien",
"countries.de": "Däitschland",
"countries.dj": "Djibouti",
"countries.dm": "Dominica",
"countries.dk": "Dänemark",
"countries.do": "Dominikanesch Republik",
"countries.dz": "Algerien",
"countries.ec": "Ecuador",
"countries.eg": "Ägypten",
"countries.er": "Eritrea",
"countries.es": "Spuenien",
"countries.ee": "Estland",
"countries.et": "Äthiopien",
"countries.fi": "Finnland",
"countries.fj": "Fidschi",
"countries.fr": "Frankräich",
"countries.fm": "Mikronesien",
"countries.ga": "Gabon",
"countries.gb": "Vereenegt Kinnekräich",
"countries.ge": "Georgien",
"countries.gh": "Ghana",
"countries.gn": "Guinea",
"countries.gm": "Gambia",
"countries.gw": "Guinea-Bissau",
"countries.gq": "Äquatorialguinea",
"countries.gr": "Griichenland",
"countries.gd": "Granada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hn": "Honduras",
"countries.hr": "Kroatien",
"countries.ht": "Haïti",
"countries.hu": "Ungarn",
"countries.id": "Indonesien",
"countries.in": "Indien",
"countries.ie": "Irland",
"countries.ir": "Iran",
"countries.iq": "Irak",
"countries.is": "Island",
"countries.il": "Israel",
"countries.it": "Italien",
"countries.jm": "Jamaika",
"countries.jo": "Jordanien",
"countries.jp": "Japan",
"countries.kz": "Kazakhstan",
"countries.ke": "Kenia",
"countries.kg": "Kirgisistan",
"countries.kh": "Kambodscha",
"countries.ki": "Kiribati",
"countries.kn": "Saint Kitts and Nevis",
"countries.kr": "Südkorea",
"countries.kw": "Kuwait",
"countries.la": "Laos",
"countries.lb": "Libanon",
"countries.lr": "Liberia",
"countries.ly": "Libyen",
"countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein",
"countries.lk": "Sri Lanka",
"countries.ls": "Lesotho",
"countries.lt": "Litauen",
"countries.lu": "Lëtzebuerg",
"countries.lv": "Lettland",
"countries.ma": "Marokko",
"countries.mc": "Monaco",
"countries.md": "Moldawien",
"countries.mg": "Madagaskar",
"countries.mv": "Malediven",
"countries.mx": "Mexiko",
"countries.mh": "Marshallinselen",
"countries.mk": "Mazedonien",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Myanmar",
"countries.me": "Montenegro",
"countries.mn": "Mongolei",
"countries.mz": "Mosambik",
"countries.mr": "Mauritanien",
"countries.mu": "Mauritius",
"countries.mw": "Malawi",
"countries.my": "Malaysien",
"countries.na": "Namibien",
"countries.ne": "Niger",
"countries.ng": "Nigeria",
"countries.ni": "Nicaragua",
"countries.nl": "Holland",
"countries.no": "Norwegen",
"countries.np": "Nepal",
"countries.nr": "Nauru",
"countries.nz": "Neiséiland",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippinnen",
"countries.pw": "Palau",
"countries.pg": "Papua-Neuguinea",
"countries.pl": "Polen",
"countries.kp": "Nordkorea",
"countries.pt": "Portugal",
"countries.py": "Paraguay",
"countries.qa": "Quatar",
"countries.ro": "Rumänien",
"countries.ru": "Russland",
"countries.rw": "Ruanda",
"countries.sa": "Saudi Arabien",
"countries.sd": "Sudan",
"countries.sn": "Senegal",
"countries.sg": "Singapur",
"countries.sb": "Solomon Inselen",
"countries.sl": "Sierra Leone",
"countries.sv": "El Salvador",
"countries.sm": "San Marino",
"countries.so": "Somalia",
"countries.rs": "Serbien",
"countries.ss": "Südsudan",
"countries.st": "Sao Tome a Principe",
"countries.sr": "Suriname",
"countries.sk": "Slowakei",
"countries.si": "Slowenien",
"countries.se": "Schweden",
"countries.sz": "Swasiland",
"countries.sc": "Seychellen",
"countries.sy": "Syrien",
"countries.td": "Tschad",
"countries.tg": "Goen",
"countries.th": "Thailand",
"countries.tj": "Tadjikistan",
"countries.tm": "Turkmenistan",
"countries.tl": "Timor-Leste",
"countries.to": "Tonga",
"countries.tt": "Tinidad an Tobago",
"countries.tn": "Tunesien",
"countries.tr": "Tierkei",
"countries.tv": "Tuvalu",
"countries.tz": "Tansania",
"countries.ug": "Ugana",
"countries.ua": "Ukraine",
"countries.uy": "Uruguay",
"countries.us": "Vereenegt Staaten",
"countries.uz": "Usbekistan",
"countries.va": "Vatikan Stad",
"countries.vc": "Saint Vincent an d'Grenadinnen",
"countries.ve": "Venezuela",
"countries.vn": "Vietnam",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Yemen",
"countries.za": "Südafrika",
"countries.zm": "Zambia",
"countries.zw": "Zimbabwe",
"continents.af": "Afrika",
"continents.an": "Antarktis",
"continents.as": "Asien",
"continents.eu": "Europa",
"continents.na": "Nordamerika",
"continents.oc": "Ozeanien",
"continents.sa": "Südamerika"
}
"settings.inspire": "\"The art of being wise is the art of knowing what to overlook.\"",
"settings.locale": "lb",
"settings.direction": "ltr",
"emails.sender": "%s Team",
"emails.verification.subject": "Kont Verifikatioun",
"emails.verification.hello": "Hey {{user}}",
"emails.verification.body": "Follegt dëse Link fir Är E -Mail Adress z'iwwerpréiwen.",
"emails.verification.footer": "Wann Dir net gefrot hutt dës Adress z'iwwerpréiwen, kënnt Dir dëse Message ignoréieren.",
"emails.verification.thanks": "Merci",
"emails.verification.signature": "{{project}} équipe",
"emails.magicSession.subject": "Login",
"emails.magicSession.hello": "Hey,",
"emails.magicSession.body": "Follegt dëse Link fir umellen.",
"emails.magicSession.footer": "Wann Dir net gefrot hutt Iech mat dëser E -Mail anzemelden, kënnt Dir dëse Message ignoréieren.",
"emails.magicSession.thanks": "Merci",
"emails.magicSession.signature": "{{project}} équipe",
"emails.recovery.subject": "Password Reset",
"emails.recovery.hello": "Hello {{user}}",
"emails.recovery.body": "Follegt dëse Link fir Äert {{project}} Passwuert zréckzesetzen.",
"emails.recovery.footer": "Wann Dir net gefrot hutt Äert Passwuert zréckzesetzen, kënnt Dir dëse Message ignoréieren.",
"emails.recovery.thanks": "Merci",
"emails.recovery.signature": "{{project}} équipe",
"emails.invitation.subject": "Invitatioun un %s équipe bei %s",
"emails.invitation.hello": "Hallo",
"emails.invitation.body": "Dës E -Mail gouf un Iech geschéckt well {{owner}} Iech invitéiere wëllt fir Member vum {{team}} Team bei {{project}} ze ginn.",
"emails.invitation.footer": "Wann Dir net interesséiert sidd, kënnt Dir dëse Message ignoréieren.",
"emails.invitation.thanks": "Merci",
"emails.invitation.signature": "{{project}} équipe",
"locale.country.unknown": "Onbekannt",
"countries.af": "Afghanistan",
"countries.ao": "Angola",
"countries.al": "Albanien",
"countries.ad": "Andorra",
"countries.ae": "Vereenegt Arabesch Emirater",
"countries.ar": "Argentinien",
"countries.am": "Armenien",
"countries.ag": "Antigua a Barbuda",
"countries.au": "Australien",
"countries.at": "Éisträich",
"countries.az": "Aserbaidschan",
"countries.bi": "Burundi",
"countries.be": "Belsch",
"countries.bj": "Benin",
"countries.bf": "Burkina Faso",
"countries.bd": "Bangladesch",
"countries.bg": "Bulgarien",
"countries.bh": "Bahrain",
"countries.bs": "Bahamas",
"countries.ba": "Bosnien an Herzegowina",
"countries.by": "Wäissrussland",
"countries.bz": "Belize",
"countries.bo": "Bolivien",
"countries.br": "Brasilien",
"countries.bb": "Barbados",
"countries.bn": "Brunei",
"countries.bt": "Bhutan",
"countries.bw": "Botswana",
"countries.cf": "Zentralafrikanesch Republik",
"countries.ca": "Kanada",
"countries.ch": "Schwäiz",
"countries.cl": "Chile",
"countries.cn": "China",
"countries.ci": "Côte d'Ivoire",
"countries.cm": "Kamerun",
"countries.cd": "DR Congo",
"countries.cg": "Republik Kongo",
"countries.co": "Kolumbien",
"countries.km": "Komoren",
"countries.cv": "Cap Vert",
"countries.cr": "Costa Rica",
"countries.cu": "Kuba",
"countries.cy": "Zypern",
"countries.cz": "Tschechien",
"countries.de": "Däitschland",
"countries.dj": "Djibouti",
"countries.dm": "Dominica",
"countries.dk": "Dänemark",
"countries.do": "Dominikanesch Republik",
"countries.dz": "Algerien",
"countries.ec": "Ecuador",
"countries.eg": "Ägypten",
"countries.er": "Eritrea",
"countries.es": "Spuenien",
"countries.ee": "Estland",
"countries.et": "Äthiopien",
"countries.fi": "Finnland",
"countries.fj": "Fidschi",
"countries.fr": "Frankräich",
"countries.fm": "Mikronesien",
"countries.ga": "Gabon",
"countries.gb": "Vereenegt Kinnekräich",
"countries.ge": "Georgien",
"countries.gh": "Ghana",
"countries.gn": "Guinea",
"countries.gm": "Gambia",
"countries.gw": "Guinea-Bissau",
"countries.gq": "Äquatorialguinea",
"countries.gr": "Griichenland",
"countries.gd": "Granada",
"countries.gt": "Guatemala",
"countries.gy": "Guyana",
"countries.hn": "Honduras",
"countries.hr": "Kroatien",
"countries.ht": "Haïti",
"countries.hu": "Ungarn",
"countries.id": "Indonesien",
"countries.in": "Indien",
"countries.ie": "Irland",
"countries.ir": "Iran",
"countries.iq": "Irak",
"countries.is": "Island",
"countries.il": "Israel",
"countries.it": "Italien",
"countries.jm": "Jamaika",
"countries.jo": "Jordanien",
"countries.jp": "Japan",
"countries.kz": "Kazakhstan",
"countries.ke": "Kenia",
"countries.kg": "Kirgisistan",
"countries.kh": "Kambodscha",
"countries.ki": "Kiribati",
"countries.kn": "Saint Kitts and Nevis",
"countries.kr": "Südkorea",
"countries.kw": "Kuwait",
"countries.la": "Laos",
"countries.lb": "Libanon",
"countries.lr": "Liberia",
"countries.ly": "Libyen",
"countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein",
"countries.lk": "Sri Lanka",
"countries.ls": "Lesotho",
"countries.lt": "Litauen",
"countries.lu": "Lëtzebuerg",
"countries.lv": "Lettland",
"countries.ma": "Marokko",
"countries.mc": "Monaco",
"countries.md": "Moldawien",
"countries.mg": "Madagaskar",
"countries.mv": "Malediven",
"countries.mx": "Mexiko",
"countries.mh": "Marshallinselen",
"countries.mk": "Mazedonien",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Myanmar",
"countries.me": "Montenegro",
"countries.mn": "Mongolei",
"countries.mz": "Mosambik",
"countries.mr": "Mauritanien",
"countries.mu": "Mauritius",
"countries.mw": "Malawi",
"countries.my": "Malaysien",
"countries.na": "Namibien",
"countries.ne": "Niger",
"countries.ng": "Nigeria",
"countries.ni": "Nicaragua",
"countries.nl": "Holland",
"countries.no": "Norwegen",
"countries.np": "Nepal",
"countries.nr": "Nauru",
"countries.nz": "Neiséiland",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Philippinnen",
"countries.pw": "Palau",
"countries.pg": "Papua-Neuguinea",
"countries.pl": "Polen",
"countries.kp": "Nordkorea",
"countries.pt": "Portugal",
"countries.py": "Paraguay",
"countries.qa": "Quatar",
"countries.ro": "Rumänien",
"countries.ru": "Russland",
"countries.rw": "Ruanda",
"countries.sa": "Saudi Arabien",
"countries.sd": "Sudan",
"countries.sn": "Senegal",
"countries.sg": "Singapur",
"countries.sb": "Solomon Inselen",
"countries.sl": "Sierra Leone",
"countries.sv": "El Salvador",
"countries.sm": "San Marino",
"countries.so": "Somalia",
"countries.rs": "Serbien",
"countries.ss": "Südsudan",
"countries.st": "Sao Tome a Principe",
"countries.sr": "Suriname",
"countries.sk": "Slowakei",
"countries.si": "Slowenien",
"countries.se": "Schweden",
"countries.sz": "Swasiland",
"countries.sc": "Seychellen",
"countries.sy": "Syrien",
"countries.td": "Tschad",
"countries.tg": "Goen",
"countries.th": "Thailand",
"countries.tj": "Tadjikistan",
"countries.tm": "Turkmenistan",
"countries.tl": "Timor-Leste",
"countries.to": "Tonga",
"countries.tt": "Tinidad an Tobago",
"countries.tn": "Tunesien",
"countries.tr": "Tierkei",
"countries.tv": "Tuvalu",
"countries.tz": "Tansania",
"countries.ug": "Ugana",
"countries.ua": "Ukraine",
"countries.uy": "Uruguay",
"countries.us": "Vereenegt Staaten",
"countries.uz": "Usbekistan",
"countries.va": "Vatikan Stad",
"countries.vc": "Saint Vincent an d'Grenadinnen",
"countries.ve": "Venezuela",
"countries.vn": "Vietnam",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Yemen",
"countries.za": "Südafrika",
"countries.zm": "Zambia",
"countries.zw": "Zimbabwe",
"continents.af": "Afrika",
"continents.an": "Antarktis",
"continents.as": "Asien",
"continents.eu": "Europa",
"continents.na": "Nordamerika",
"continents.oc": "Ozeanien",
"continents.sa": "Südamerika",
"emails.magicSession.optionButton": "Klickt op de Knäppchen hei drënner fir sécher an Äre {{project}} Kont anzeloggen. Et wäert an 1 Stonn oflafen.",
"emails.magicSession.buttonText": "Connectez-vous à {{project}}",
"emails.magicSession.clientInfo": "Dëse Login gouf duerch {{agentClient}} op {{agentDevice}} {{agentOs}} ugefrot. Wann Dir de Login net gefrot hutt, kënnt Dir dësen E-Mail ouni weideres ignoréieren.",
"emails.certificate.subject": "Zertifikatsfehler fir %s",
"emails.certificate.hello": "Moien",
"emails.certificate.body": "De Certificat fir äre Domain '{{domain}}' konnt net erstallt ginn. Dat ass den Versuch Nummer {{attempt}}, an de Feeler gouf verursaacht duerch: {{error}}",
"emails.certificate.footer": "Äert viregt Zertifikat wäert fir 30 Deeg gëlteg sinn zënter dem éischten Ausfall. Mir recommandéieren Iech staark, dëse Fall z'ënnersichen, soss wäert Är Domain ouni eng valabel SSL-Kommunikatioun enden.",
"emails.certificate.thanks": "Merci",
"emails.certificate.signature": "Équipe {{project}}",
"sms.verification.body": "{{secret}} ass äre {{project}} Verifikatiounscode.",
"emails.magicSession.securityPhrase": "D'Sécherheetsphrase fir dësen E-Mail ass {{phrase}}. Dir kënnt dësem E-Mail vertrauen, wann dës Phrase mat der Phrase iwwereneestëmmt, déi beim Umellen ugewise ginn ass.",
"emails.magicSession.optionUrl": "Wann Dir Iech net kënnt umellen andeems Dir op de Knäppchen uewendriwwer klickt, besicht w.e.g. de folgenden Link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Šiaurės Amerika",
"continents.oc": "Okeanija",
"continents.sa": "Pietų Amerika"
}
"continents.sa": "Pietų Amerika",
"emails.magicSession.optionButton": "Spustelėkite žemiau esantį mygtuką, kad saugiai prisijungtumėte prie savo {{project}} paskyros. Galiojimas baigsis po 1 valandos.",
"emails.magicSession.buttonText": "Prisijunkite prie {{project}}",
"emails.magicSession.clientInfo": "Šis prisijungimas buvo užklaustas naudojant {{agentClient}} {{agentDevice}} {{agentOs}}. Jei neprašėte prisijungimo, galite saugiai ignoruoti šį el. laišką.",
"emails.certificate.subject": "Sertifikato klaida %s",
"emails.certificate.hello": "Sveiki",
"emails.certificate.body": "Jūsų domeno '{{domain}}' sertifikato sukurti nepavyko. Tai bandymas Nr. {{attempt}}, ir nepavykimo priežastis: {{error}}",
"emails.certificate.footer": "Jūsų ankstesnis sertifikatas bus galiojantis 30 dienų nuo pirmojo nesėkmingo bandymo. Mes primygtinai rekomenduojame ištirti šią situaciją, kitaip jūsų domenas liks be galiojančio SSL ryšio.",
"emails.certificate.thanks": "Ačiū",
"emails.certificate.signature": "{{project}} komanda",
"sms.verification.body": "{{secret}} yra jūsų {{project}} patvirtinimo kodas.",
"emails.magicSession.securityPhrase": "Šio el. laiško saugumo frazė yra {{phrase}}. Šiam el. laiškui galite pasitikėti, jei ši frazė atitinka prisijungimo metu rodytą frazę.",
"emails.magicSession.optionUrl": "Jei negalite prisijungti naudodami aukščiau esantį mygtuką, apsilankykite šioje nuorodoje:"
}

View file

@ -1,232 +1,244 @@
{
"settings.inspire": "\"Māksla būt gudram ir māksla zināt, ko aizmirst.\"",
"settings.locale": "lv",
"settings.direction": "ltr",
"emails.sender": "%s komanda",
"emails.verification.subject": "Konta verifikācija",
"emails.verification.hello": "Sveicināti, {{user}}",
"emails.verification.body": "Sekojiet saitei, lai apstiprinātu savu e-pasta adresi.",
"emails.verification.footer": "Ja Jūs nepieprasījāt šīs adreses apstiprinājumu, lūdzu, ignorējiet šo ziņu.",
"emails.verification.thanks": "Paldies",
"emails.verification.signature": "{{project}} komanda",
"emails.magicSession.subject": "Ieiet",
"emails.magicSession.hello": "Sveicināti,",
"emails.magicSession.body": "Sekojiet saitei, lai ieietu.",
"emails.magicSession.footer": "Ja Jūs nepieprasījāt ieiet ar šo e-pasta adresi, lūdzu, ignorējiet šo ziņu.",
"emails.magicSession.thanks": "Paldies",
"emails.magicSession.signature": "{{project}} komanda",
"emails.recovery.subject": "Paroles atjaunināšana",
"emails.recovery.hello": "Labdien, {{user}}",
"emails.recovery.body": "Sekojiet saitei, lai atjauninātu {{project}} paroli.",
"emails.recovery.footer": "Ja Jūs nepieprasījāt paroles atjaunināšanu, lūdzu, ignorējiet šo ziņu.",
"emails.recovery.thanks": "Paldies",
"emails.recovery.signature": "{{project}} komanda",
"emails.invitation.subject": "Ielūgums piebiedroties %s komandai %s projektā.",
"emails.invitation.hello": "Labdien",
"emails.invitation.body": "Šis e-pasts tika nosūtīts Jums, jo {{owner}} vēlējās Jūs ielūgt kļūt par {{team}} komandas biedru {{project}} projektā.",
"emails.invitation.footer": "Ja Jūs neesat ieinteresēts, lūdzu, ignorējiet šo ziņu.",
"emails.invitation.thanks": "Paldies",
"emails.invitation.signature": "{{project}} komanda",
"locale.country.unknown": "Nav zināms",
"countries.af": "Afganistāna",
"countries.ao": "Angola",
"countries.al": "Albānija",
"countries.ad": "Andora",
"countries.ae": "Apvienotie Arābu Emirāti",
"countries.ar": "Argentīna",
"countries.am": "Armēnija",
"countries.ag": "Antigva un Barbuda",
"countries.au": "Austrālija",
"countries.at": "Austrija",
"countries.az": "Azerbaidžāna",
"countries.bi": "Burundi",
"countries.be": "Beļģija",
"countries.bj": "Benina",
"countries.bf": "Burkinafaso",
"countries.bd": "Bangladeša",
"countries.bg": "Bulgārija",
"countries.bh": "Bahreina",
"countries.bs": "Bahamas",
"countries.ba": "Bosnija un Hercegovina",
"countries.by": "Baltkrievija",
"countries.bz": "Beliza",
"countries.bo": "Bolīvija",
"countries.br": "Brazīlija",
"countries.bb": "Barbadosa",
"countries.bn": "Bruneja",
"countries.bt": "Butāna",
"countries.bw": "Botsvana",
"countries.cf": "Centrālāfrikas Republika",
"countries.ca": "Kanāda",
"countries.ch": "Šveice",
"countries.cl": "Čīle",
"countries.cn": "Ķīna",
"countries.ci": "Kotdivuāra",
"countries.cm": "Kamerūna",
"countries.cd": "Kongo Demokrātiskā Republika",
"countries.cg": "Kongo",
"countries.co": "Kolumbija",
"countries.km": "Komoras",
"countries.cv": "Kaboverde",
"countries.cr": "Kostarika",
"countries.cu": "Kuba",
"countries.cy": "Kipra",
"countries.cz": "Čehija",
"countries.de": "Vācija",
"countries.dj": "Džibutija",
"countries.dm": "Dominika",
"countries.dk": "Dānija",
"countries.do": "Dominikāna",
"countries.dz": "Alžīrija",
"countries.ec": "Ekvadora",
"countries.eg": "Ēģipte",
"countries.er": "Eritreja",
"countries.es": "Spānija",
"countries.ee": "Igaunija",
"countries.et": "Etiopija",
"countries.fi": "Somija",
"countries.fj": "Fidži",
"countries.fr": "Francija",
"countries.fm": "Mikronēzija",
"countries.ga": "Gabona",
"countries.gb": "Apvienotā Karaliste",
"countries.ge": "Gruzija",
"countries.gh": "Gana",
"countries.gn": "Gvineja",
"countries.gm": "Gambija",
"countries.gw": "Gvineja-Bisava",
"countries.gq": "Ekvatoriālā Gvineja",
"countries.gr": "Grieķija",
"countries.gd": "Grenada",
"countries.gt": "Gvatemala",
"countries.gy": "Gajāna",
"countries.hn": "Hondurasa",
"countries.hr": "Horvātija",
"countries.ht": "Haiti",
"countries.hu": "Ungārija",
"countries.id": "Indonēzija",
"countries.in": "Indija",
"countries.ie": "Īrija",
"countries.ir": "Irāna",
"countries.iq": "Irāka",
"countries.is": "Islande",
"countries.il": "Izraēla",
"countries.it": "Itālija",
"countries.jm": "Jamaika",
"countries.jo": "Jordānija",
"countries.jp": "Japāna",
"countries.kz": "Kazahstāna",
"countries.ke": "Kenija",
"countries.kg": "Kirgizstāna",
"countries.kh": "Kambodža",
"countries.ki": "Kiribati",
"countries.kn": "Sentkitsa un Nevisa",
"countries.kr": "Dienvidkoreja",
"countries.kw": "Kuveita",
"countries.la": "Laosa",
"countries.lb": "Libāna",
"countries.lr": "Libērija",
"countries.ly": "Lībija",
"countries.lc": "Sentlūsija",
"countries.li": "Lihtenšteina",
"countries.lk": "Šrilanka",
"countries.ls": "Lesoto",
"countries.lt": "Lietuva",
"countries.lu": "Luksemburga",
"countries.lv": "Latvija",
"countries.ma": "Maroka",
"countries.mc": "Monako",
"countries.md": "Moldova",
"countries.mg": "Madagaskara",
"countries.mv": "Maldīvija",
"countries.mx": "Meksika",
"countries.mh": "Māršala salas",
"countries.mk": "Ziemeļmaķedonijas Republika",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Mjanma",
"countries.me": "Melnkalne",
"countries.mn": "Mongolija",
"countries.mz": "Mozambika",
"countries.mr": "Mauritānija",
"countries.mu": "Maurīcija",
"countries.mw": "Malāvija",
"countries.my": "Malaizija",
"countries.na": "Namībija",
"countries.ne": "Nigēra",
"countries.ng": "Nigērija",
"countries.ni": "Nikaragva",
"countries.nl": "Nīderlande",
"countries.no": "Norvēģija",
"countries.np": "Nepāla",
"countries.nr": "Nauru",
"countries.nz": "Jaunzēlande",
"countries.om": "Omāna",
"countries.pk": "Pakistāna",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filipīnas",
"countries.pw": "Palau",
"countries.pg": "Papua-Jaungvineja",
"countries.pl": "Polija",
"countries.kp": "Ziemeļkoreja",
"countries.pt": "Portugāle",
"countries.py": "Paragvaja",
"countries.qa": "Katara",
"countries.ro": "Rumānija",
"countries.ru": "Krievija",
"countries.rw": "Ruanda",
"countries.sa": "Saūda Arābija",
"countries.sd": "Sudāna",
"countries.sn": "Senegāla",
"countries.sg": "Singapūra",
"countries.sb": "Zālamana salas",
"countries.sl": "Sjerraleone",
"countries.sv": "Salvadora",
"countries.sm": "Sanmarīno",
"countries.so": "Somālija",
"countries.rs": "Serbija",
"countries.ss": "Dienvidsudāna",
"countries.st": "Santome un Prinsipi",
"countries.sr": "Surinama",
"countries.sk": "Slovākija",
"countries.si": "Slovēnija",
"countries.se": "Zviedrija",
"countries.sz": "Svatini",
"countries.sc": "Seišelas",
"countries.sy": "Sīrija",
"countries.td": "Čada",
"countries.tg": "Togo",
"countries.th": "Taizeme",
"countries.tj": "Tadžikistāna",
"countries.tm": "Turkmenistāna",
"countries.tl": "Austrumtimora",
"countries.to": "Tonga",
"countries.tt": "Trinidāda un Tobāgo",
"countries.tn": "Tunisija",
"countries.tr": "Turcija",
"countries.tv": "Tuvalu",
"countries.tz": "Tanzānija",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",
"countries.uy": "Urugvaja",
"countries.us": "Amerikas Savienotās Valstis",
"countries.uz": "Uzbekistāna",
"countries.va": "Vatikāns",
"countries.vc": "Sentvinsenta un Grenadīnas",
"countries.ve": "Venecuēla",
"countries.vn": "Vjetnama",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Jemena",
"countries.za": "Dienvidāfrikas Republika",
"countries.zm": "Zambija",
"countries.zw": "Zimbabve",
"continents.af": "Āfrika",
"continents.an": "Antarktīda",
"continents.as": "Āzija",
"continents.eu": "Eiropa",
"continents.na": "Ziemeļamerika",
"continents.oc": "Okeānija",
"continents.sa": "Dienvidamerika"
}
"settings.inspire": "\"Māksla būt gudram ir māksla zināt, ko aizmirst.\"",
"settings.locale": "lv",
"settings.direction": "ltr",
"emails.sender": "%s komanda",
"emails.verification.subject": "Konta verifikācija",
"emails.verification.hello": "Sveicināti, {{user}}",
"emails.verification.body": "Sekojiet saitei, lai apstiprinātu savu e-pasta adresi.",
"emails.verification.footer": "Ja Jūs nepieprasījāt šīs adreses apstiprinājumu, lūdzu, ignorējiet šo ziņu.",
"emails.verification.thanks": "Paldies",
"emails.verification.signature": "{{project}} komanda",
"emails.magicSession.subject": "Ieiet",
"emails.magicSession.hello": "Sveicināti,",
"emails.magicSession.body": "Sekojiet saitei, lai ieietu.",
"emails.magicSession.footer": "Ja Jūs nepieprasījāt ieiet ar šo e-pasta adresi, lūdzu, ignorējiet šo ziņu.",
"emails.magicSession.thanks": "Paldies",
"emails.magicSession.signature": "{{project}} komanda",
"emails.recovery.subject": "Paroles atjaunināšana",
"emails.recovery.hello": "Labdien, {{user}}",
"emails.recovery.body": "Sekojiet saitei, lai atjauninātu {{project}} paroli.",
"emails.recovery.footer": "Ja Jūs nepieprasījāt paroles atjaunināšanu, lūdzu, ignorējiet šo ziņu.",
"emails.recovery.thanks": "Paldies",
"emails.recovery.signature": "{{project}} komanda",
"emails.invitation.subject": "Ielūgums piebiedroties %s komandai %s projektā.",
"emails.invitation.hello": "Labdien",
"emails.invitation.body": "Šis e-pasts tika nosūtīts Jums, jo {{owner}} vēlējās Jūs ielūgt kļūt par {{team}} komandas biedru {{project}} projektā.",
"emails.invitation.footer": "Ja Jūs neesat ieinteresēts, lūdzu, ignorējiet šo ziņu.",
"emails.invitation.thanks": "Paldies",
"emails.invitation.signature": "{{project}} komanda",
"locale.country.unknown": "Nav zināms",
"countries.af": "Afganistāna",
"countries.ao": "Angola",
"countries.al": "Albānija",
"countries.ad": "Andora",
"countries.ae": "Apvienotie Arābu Emirāti",
"countries.ar": "Argentīna",
"countries.am": "Armēnija",
"countries.ag": "Antigva un Barbuda",
"countries.au": "Austrālija",
"countries.at": "Austrija",
"countries.az": "Azerbaidžāna",
"countries.bi": "Burundi",
"countries.be": "Beļģija",
"countries.bj": "Benina",
"countries.bf": "Burkinafaso",
"countries.bd": "Bangladeša",
"countries.bg": "Bulgārija",
"countries.bh": "Bahreina",
"countries.bs": "Bahamas",
"countries.ba": "Bosnija un Hercegovina",
"countries.by": "Baltkrievija",
"countries.bz": "Beliza",
"countries.bo": "Bolīvija",
"countries.br": "Brazīlija",
"countries.bb": "Barbadosa",
"countries.bn": "Bruneja",
"countries.bt": "Butāna",
"countries.bw": "Botsvana",
"countries.cf": "Centrālāfrikas Republika",
"countries.ca": "Kanāda",
"countries.ch": "Šveice",
"countries.cl": "Čīle",
"countries.cn": "Ķīna",
"countries.ci": "Kotdivuāra",
"countries.cm": "Kamerūna",
"countries.cd": "Kongo Demokrātiskā Republika",
"countries.cg": "Kongo",
"countries.co": "Kolumbija",
"countries.km": "Komoras",
"countries.cv": "Kaboverde",
"countries.cr": "Kostarika",
"countries.cu": "Kuba",
"countries.cy": "Kipra",
"countries.cz": "Čehija",
"countries.de": "Vācija",
"countries.dj": "Džibutija",
"countries.dm": "Dominika",
"countries.dk": "Dānija",
"countries.do": "Dominikāna",
"countries.dz": "Alžīrija",
"countries.ec": "Ekvadora",
"countries.eg": "Ēģipte",
"countries.er": "Eritreja",
"countries.es": "Spānija",
"countries.ee": "Igaunija",
"countries.et": "Etiopija",
"countries.fi": "Somija",
"countries.fj": "Fidži",
"countries.fr": "Francija",
"countries.fm": "Mikronēzija",
"countries.ga": "Gabona",
"countries.gb": "Apvienotā Karaliste",
"countries.ge": "Gruzija",
"countries.gh": "Gana",
"countries.gn": "Gvineja",
"countries.gm": "Gambija",
"countries.gw": "Gvineja-Bisava",
"countries.gq": "Ekvatoriālā Gvineja",
"countries.gr": "Grieķija",
"countries.gd": "Grenada",
"countries.gt": "Gvatemala",
"countries.gy": "Gajāna",
"countries.hn": "Hondurasa",
"countries.hr": "Horvātija",
"countries.ht": "Haiti",
"countries.hu": "Ungārija",
"countries.id": "Indonēzija",
"countries.in": "Indija",
"countries.ie": "Īrija",
"countries.ir": "Irāna",
"countries.iq": "Irāka",
"countries.is": "Islande",
"countries.il": "Izraēla",
"countries.it": "Itālija",
"countries.jm": "Jamaika",
"countries.jo": "Jordānija",
"countries.jp": "Japāna",
"countries.kz": "Kazahstāna",
"countries.ke": "Kenija",
"countries.kg": "Kirgizstāna",
"countries.kh": "Kambodža",
"countries.ki": "Kiribati",
"countries.kn": "Sentkitsa un Nevisa",
"countries.kr": "Dienvidkoreja",
"countries.kw": "Kuveita",
"countries.la": "Laosa",
"countries.lb": "Libāna",
"countries.lr": "Libērija",
"countries.ly": "Lībija",
"countries.lc": "Sentlūsija",
"countries.li": "Lihtenšteina",
"countries.lk": "Šrilanka",
"countries.ls": "Lesoto",
"countries.lt": "Lietuva",
"countries.lu": "Luksemburga",
"countries.lv": "Latvija",
"countries.ma": "Maroka",
"countries.mc": "Monako",
"countries.md": "Moldova",
"countries.mg": "Madagaskara",
"countries.mv": "Maldīvija",
"countries.mx": "Meksika",
"countries.mh": "Māršala salas",
"countries.mk": "Ziemeļmaķedonijas Republika",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Mjanma",
"countries.me": "Melnkalne",
"countries.mn": "Mongolija",
"countries.mz": "Mozambika",
"countries.mr": "Mauritānija",
"countries.mu": "Maurīcija",
"countries.mw": "Malāvija",
"countries.my": "Malaizija",
"countries.na": "Namībija",
"countries.ne": "Nigēra",
"countries.ng": "Nigērija",
"countries.ni": "Nikaragva",
"countries.nl": "Nīderlande",
"countries.no": "Norvēģija",
"countries.np": "Nepāla",
"countries.nr": "Nauru",
"countries.nz": "Jaunzēlande",
"countries.om": "Omāna",
"countries.pk": "Pakistāna",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filipīnas",
"countries.pw": "Palau",
"countries.pg": "Papua-Jaungvineja",
"countries.pl": "Polija",
"countries.kp": "Ziemeļkoreja",
"countries.pt": "Portugāle",
"countries.py": "Paragvaja",
"countries.qa": "Katara",
"countries.ro": "Rumānija",
"countries.ru": "Krievija",
"countries.rw": "Ruanda",
"countries.sa": "Saūda Arābija",
"countries.sd": "Sudāna",
"countries.sn": "Senegāla",
"countries.sg": "Singapūra",
"countries.sb": "Zālamana salas",
"countries.sl": "Sjerraleone",
"countries.sv": "Salvadora",
"countries.sm": "Sanmarīno",
"countries.so": "Somālija",
"countries.rs": "Serbija",
"countries.ss": "Dienvidsudāna",
"countries.st": "Santome un Prinsipi",
"countries.sr": "Surinama",
"countries.sk": "Slovākija",
"countries.si": "Slovēnija",
"countries.se": "Zviedrija",
"countries.sz": "Svatini",
"countries.sc": "Seišelas",
"countries.sy": "Sīrija",
"countries.td": "Čada",
"countries.tg": "Togo",
"countries.th": "Taizeme",
"countries.tj": "Tadžikistāna",
"countries.tm": "Turkmenistāna",
"countries.tl": "Austrumtimora",
"countries.to": "Tonga",
"countries.tt": "Trinidāda un Tobāgo",
"countries.tn": "Tunisija",
"countries.tr": "Turcija",
"countries.tv": "Tuvalu",
"countries.tz": "Tanzānija",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",
"countries.uy": "Urugvaja",
"countries.us": "Amerikas Savienotās Valstis",
"countries.uz": "Uzbekistāna",
"countries.va": "Vatikāns",
"countries.vc": "Sentvinsenta un Grenadīnas",
"countries.ve": "Venecuēla",
"countries.vn": "Vjetnama",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Jemena",
"countries.za": "Dienvidāfrikas Republika",
"countries.zm": "Zambija",
"countries.zw": "Zimbabve",
"continents.af": "Āfrika",
"continents.an": "Antarktīda",
"continents.as": "Āzija",
"continents.eu": "Eiropa",
"continents.na": "Ziemeļamerika",
"continents.oc": "Okeānija",
"continents.sa": "Dienvidamerika",
"emails.magicSession.optionButton": "Noklikšķiniet uz zemāk esošās pogas, lai droši pieteiktos savā {{project}} kontā. Tas beigsies pēc 1 stundas.",
"emails.magicSession.buttonText": "Pierakstieties {{project}}",
"emails.magicSession.clientInfo": "Šī autorizācija tika pieprasīta, izmantojot {{agentClient}} ierīcē {{agentDevice}} operētājsistēmā {{agentOs}}. Ja jūs neesat pieprasījis autorizāciju, šo e-pastu varat droši ignorēt.",
"emails.certificate.subject": "Sertifikāta kļūme %s",
"emails.certificate.hello": "Sveiki",
"emails.certificate.body": "Sertifikāts jūsu domēnam '{{domain}}' nevarēja tikt ģenerēts. Tā ir mēģinājuma nr. {{attempt}}, un neizdošanās iemesls bija: {{error}}",
"emails.certificate.footer": "Jūsu iepriekšējais sertifikāts būs derīgs 30 dienas no pirmās neveiksmes. Mēs ļoti iesakām izmeklēt šo gadījumu, citādi jūsu domēns paliks bez derīga SSL saziņas.",
"emails.certificate.thanks": "Paldies",
"emails.certificate.signature": "{{project}} komanda",
"sms.verification.body": "{{secret}} ir jūsu {{project}} verifikācijas kods.",
"emails.magicSession.securityPhrase": "Drošības frāze šim e-pastam ir {{phrase}}. Šim e-pastam var uzticēties, ja šī frāze sakrīt ar frāzi, kas parādās, piesakoties sistēmā.",
"emails.magicSession.optionUrl": "Ja nevarat pierakstīties, izmantojot iepriekš minēto pogu, lūdzu, apmeklējiet sekojošo saiti:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "യൂറോപ്പ്",
"continents.na": "വടക്കേ അമേരിക്ക",
"continents.oc": "ഓഷ്യാനിയ",
"continents.sa": "തെക്കേ അമേരിക്ക"
}
"continents.sa": "തെക്കേ അമേരിക്ക",
"emails.magicSession.optionButton": "ಕೆಳಗಿನ ಬಟನ್ ಒತ್ತಿ ನಿಮ್ಮ {{project}} ಖಾತೆಗೆ ಸುರಕ್ಷಿತವಾಗಿ ಸೈನ್ ಇನ್ ಮಾಡಿ. ಇದು 1 ಗಂಟೆಯಲ್ಲಿ ಅವಧಿ ಮುಗಿಯುವುದು.",
"emails.magicSession.buttonText": "Se connecter à {{project}}",
"emails.magicSession.clientInfo": "I'm sorry, but there appears to be some confusion. The country code \"ml\" stands for Mali, where the official language is French. However, many local languages such as Bambara are also widely spoken. Please specify if you would like the translation in French or any other specific local language.",
"emails.certificate.subject": "Tsy fahombiazan'ny fahaizana ho an'ny %s",
"emails.certificate.hello": "Bonjour",
"emails.certificate.body": "നിങ്ങളുടെ ഡൊമെയ്‌ൻ '{{domain}}'നായുള്ള സർട്ടിഫിക്കറ്റ് ഉണ്ടാക്കാൻ കഴിയിച്ചില്ല. ഇത് ശ്രമമായ {{attempt}} ആണ്, പരാജയത്തിനു കാരണം: {{error}}",
"emails.certificate.footer": "Ny zom-pokotaninao teo aloha dia hanan-kery mandritra ny 30 andro manomboka amin'ny tsy fahombiazana voalohany. Izahay dia manoro hevitra mafy ny hanaovana fikarohana momba ity tranga ity, raha tsy izany ny sehatra misy anao dia ho tonga amin'ny toerana tsy misy fifandraisana SSL manan-kery.",
"emails.certificate.thanks": "Merci",
"emails.certificate.signature": "{{project}} ekipi",
"sms.verification.body": "{{secret}} tànna {{project}} ka càddu jamiilu la.",
"emails.magicSession.securityPhrase": "ഈ ഇമെയിലിന്റെ സുരക്ഷാ വാചകം {{phrase}} ആണ്. സൈൻ ഇൻ ചെയ്യുമ്പോൾ കാണിച്ച വാചകവുമായി ഈ വാചകം ഒത്തുപോകുന്നെങ്കിൽ ഈ ഇമെയിലിനെ വിശ്വസിക്കാം.",
"emails.magicSession.optionUrl": "Raha toa ka tsy afaka miditra ianao amin'ny alàlan'ny bokotra etsy ambony, azafady mba tsidiho ity rohy manaraka ity:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "यूरोप",
"continents.na": "उत्तर अमेरिका",
"continents.oc": "ओशिनिया",
"continents.sa": "दक्षिण अमेरिका"
"continents.sa": "दक्षिण अमेरिका",
"emails.magicSession.optionButton": "खालील बटणावर क्लिक करा आणि आपल्या {{project}} खात्यात सुरक्षितपणे साइन इन करा. हे १ तासात समाप्त होईल.",
"emails.magicSession.buttonText": "{{project}} मध्ये साइन इन करा",
"emails.magicSession.clientInfo": "ही साइन इन विनंती केली गेली {{agentClient}} वरून {{agentDevice}} {{agentOs}} वापरून. जर आपणास ही साइन इन विनंती केली नसेल तर आपण हा ईमेल सुरक्षितपणे दुर्लक्षित करू शकता.",
"emails.certificate.subject": "%s साठी प्रमाणपत्र अयशस्वी",
"emails.certificate.hello": "नमस्कार",
"emails.certificate.body": "आपल्या डोमेनसाठी '{{domain}}' प्रमाणपत्र तयार करणे शक्य नव्हते. ही प्रयत्न क्रमांक {{attempt}} आहे, आणि त्यामागील कारण म्हणजे: {{error}}",
"emails.certificate.footer": "तुमचे मागील प्रमाणपत्र पहिल्या अपयशापासून ३० दिवसांपर्यंत वैध राहील. आम्ही आपल्याला विशेषतः सूचित करतो की, या प्रकरणाची चौकशी करा, अन्यथा तुमचे डोमेन वैध SSL संवादाशिवाय राहील.",
"emails.certificate.thanks": "धन्यवाद",
"emails.certificate.signature": "{{project}} संघ",
"sms.verification.body": "{{secret}} हे तुमच्या {{project}} प्रमाणीकरण कोड आहे.",
"emails.magicSession.securityPhrase": "या ईमेलसाठी सुरक्षा वाक्य हे {{phrase}} आहे. साइन इन केल्यावेळी दाखवलेले वाक्य जर हे वाक्याशी जुळत असेल तर तुम्ही या ईमेलवर विश्वास ठेवू शकता.",
"emails.magicSession.optionUrl": "जर आपण वरील बटणाचा वापर करून साइन इन करू शकत नसाल, तर कृपया खालील दुवा भेट द्या:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Eropah",
"continents.na": "Amerika Utara",
"continents.oc": "Oceania",
"continents.sa": "Amerika Selatan"
"continents.sa": "Amerika Selatan",
"emails.magicSession.optionButton": "Klik butang di bawah untuk log masuk ke akaun {{project}} anda dengan selamat. Ia akan luput dalam masa 1 jam.",
"emails.magicSession.buttonText": "Masuk ke {{project}}",
"emails.magicSession.clientInfo": "Pendaftaran ini diminta menggunakan {{agentClient}} pada {{agentDevice}} {{agentOs}}. Jika anda tidak meminta untuk daftar masuk, anda boleh abaikan e-mel ini dengan selamat.",
"emails.certificate.subject": "Kegagalan sijil bagi %s",
"emails.certificate.hello": "Halo",
"emails.certificate.body": "Sijil untuk domain anda '{{domain}}' tidak dapat dijana. Ini adalah percubaan ke-{{attempt}}, dan kegagalan disebabkan oleh: {{error}}",
"emails.certificate.footer": "Sijil sebelum ini anda akan sah selama 30 hari selepas kegagalan pertama. Kami sangat mengesyorkan untuk menyiasat kes ini, jika tidak domain anda akan berakhir tanpa komunikasi SSL yang sah.",
"emails.certificate.thanks": "Terima kasih",
"emails.certificate.signature": "pasukan {{project}}",
"sms.verification.body": "{{secret}} adalah kod pengesahan {{project}} anda.",
"emails.magicSession.securityPhrase": "Frasa keselamatan untuk emel ini adalah {{phrase}}. Anda boleh mempercayai emel ini jika frasa ini sepadan dengan frasa yang ditunjukkan semasa log masuk.",
"emails.magicSession.optionUrl": "Jika anda tidak dapat log masuk menggunakan butang di atas, sila kunjungi pautan berikut:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Nord-Amerika",
"continents.oc": "Oseania",
"continents.sa": "Sør-Amerika"
}
"continents.sa": "Sør-Amerika",
"emails.magicSession.optionButton": "Klikk på knappen nedenfor for å logge inn på din {{project}}-konto på en sikker måte. Den vil utløpe om 1 time.",
"emails.magicSession.buttonText": "Logg inn på {{project}}",
"emails.magicSession.clientInfo": "Dette innloggingen ble forespurt ved hjelp av {{agentClient}} på {{agentDevice}} {{agentOs}}. Hvis du ikke ba om innloggingen, kan du trygt se bort fra denne e-posten.",
"emails.certificate.subject": "Sertifikatfeil for %s",
"emails.certificate.hello": "Hei",
"emails.certificate.body": "Sertifikatet for domenet ditt '{{domain}}' kunne ikke genereres. Dette er forsøk nr. {{attempt}}, og feilen ble forårsaket av: {{error}}",
"emails.certificate.footer": "Ditt forrige sertifikat vil være gyldig i 30 dager fra den første feilen. Vi anbefaler sterkt at du undersøker denne saken, ellers vil domenet ditt ende opp uten en gyldig SSL-kommunikasjon.",
"emails.certificate.thanks": "Takk",
"emails.certificate.signature": "{{project}}-laget",
"sms.verification.body": "{{secret}} er din {{project}} bekreftelseskode.",
"emails.magicSession.securityPhrase": "Sikkerhetsfrasen for denne e-posten er {{phrase}}. Du kan stole på denne e-posten hvis denne frasen stemmer overens med frasen som ble vist under innlogging.",
"emails.magicSession.optionUrl": "Hvis du ikke klarer å logge inn ved å bruke knappen ovenfor, vennligst besøk følgende lenke:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "युरोप",
"continents.na": "उत्तर अमेरिका",
"continents.oc": "ओसिआनिया",
"continents.sa": "दक्षिण अमेरिका"
"continents.sa": "दक्षिण अमेरिका",
"emails.magicSession.optionButton": "कृपया तलको बटनमा क्लिक गरी आफ्नो {{project}} खातामा सुरक्षित रूपमा साइन इन गर्नुहोस्। यो १ घण्टामा समाप्त हुनेछ।",
"emails.magicSession.buttonText": "Connectez-vous à {{project}}",
"emails.magicSession.clientInfo": "यो साइन इन अनुरोध गरिएको थियो {{agentClient}} प्रयोग गरेर {{agentDevice}} {{agentOs}} मा। यदि तपाईंले साइन इन अनुरोध गर्नुभएको छैन भने, यो इमेललाई सुरक्षित रूपमा अनदेखा गर्न सक्नुहुन्छ।",
"emails.certificate.subject": "सर्टिफिकेट विफलता %s को लागि",
"emails.certificate.hello": "नमस्ते",
"emails.certificate.body": "दर्ता गर्नु भएको डोमेन '{{domain}}' को प्रमाणपत्र उत्पन्न गर्न सकिएन। यो प्रयास नं. {{attempt}} हो, र यस असफलताको कारण यस्तो थियो: {{error}}",
"emails.certificate.footer": "Votre certificat précédent sera valide pendant 30 jours depuis le premier échec. Nous recommandons fortement d'enquêter sur ce cas, sinon votre domaine se retrouvera sans communication SSL valide.",
"emails.certificate.thanks": "धन्यवाद",
"emails.certificate.signature": "équipe {{project}}",
"sms.verification.body": "{{secret}} तपाईंको {{project}} प्रमाणीकरण कोड हो।",
"emails.magicSession.securityPhrase": "यस ईमेलको लागि सुरक्षा वाक्य {{phrase}} हो। यो वाक्य साइन इन गर्दा देखाइएको वाक्यसँग मेल खाए मात्र तपाईंले यस ईमेललाई विश्वास गर्न सक्नुहुन्छ।",
"emails.magicSession.optionUrl": "सँगै उल्लेख गरिएको बटन प्रयोग गरेर साइन इन गर्न असमर्थ हुनुहुन्छ भने, कृपया तलको लिंकमा भ्रमण गर्नुहोस्:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Noord Amerika",
"continents.oc": "Oceanië",
"continents.sa": "Zuid Amerika"
}
"continents.sa": "Zuid Amerika",
"emails.magicSession.optionButton": "Klik op de knop hieronder om veilig in te loggen op uw {{project}} account. Deze zal verlopen over 1 uur.",
"emails.magicSession.buttonText": "Meld u aan bij {{project}}",
"emails.magicSession.clientInfo": "Deze aanmelding is aangevraagd met {{agentClient}} op {{agentDevice}} {{agentOs}}. Als u de aanmelding niet hebt aangevraagd, kunt u deze e-mail gerust negeren.",
"emails.certificate.subject": "Certificaatfalen voor %s",
"emails.certificate.hello": "Hallo",
"emails.certificate.body": "Certificaat voor uw domein '{{domain}}' kon niet worden gegenereerd. Dit is poging nr. {{attempt}}, en de mislukking werd veroorzaakt door: {{error}}",
"emails.certificate.footer": "Uw vorige certificaat zal 30 dagen geldig zijn vanaf de eerste fout. We raden u ten zeerste aan dit geval te onderzoeken, anders zal uw domein eindigen zonder een geldige SSL-communicatie.",
"emails.certificate.thanks": "Dank je",
"emails.certificate.signature": "{{project}} team",
"sms.verification.body": "{{secret}} is uw {{project}} verificatiecode.",
"emails.magicSession.securityPhrase": "De beveiligingszin voor deze e-mail is {{phrase}}. U kunt deze e-mail vertrouwen als deze zin overeenkomt met de zin die getoond werd tijdens het aanmelden.",
"emails.magicSession.optionUrl": "Als u zich niet kunt aanmelden via de bovenstaande knop, bezoekt u dan de volgende link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Nord-Amerika",
"continents.oc": "Oseania",
"continents.sa": "Sør-Amerika"
}
"continents.sa": "Sør-Amerika",
"emails.magicSession.optionButton": "Klikk på knappen under for å trygt logge inn på din {{project}}-konto. Den vil utløpe om 1 time.",
"emails.magicSession.buttonText": "Innlogging til {{project}}",
"emails.magicSession.clientInfo": "Denne innloggingen ble forespurt ved hjelp av {{agentClient}} på {{agentDevice}} {{agentOs}}. Hvis du ikke ba om innloggingen, kan du trygt se bort fra denne e-posten.",
"emails.certificate.subject": "Unfortunately, the country code \"nn\" is ambiguous, as it doesn't correspond to a recognized ISO 3166-1 alpha-2 country code. However, “nn” often refers to “Nynorsk,” one of the written standards of the Norwegian language. If you intended to translate the sentence into Nynorsk (Norwegian), here is the translation:\n\n\"Seritifikatsvikt for %s\"",
"emails.certificate.hello": "In order to translate the message to the target language corresponding to the country code \"nn,\" I need to clarify that \"nn\" is not a valid ISO country code. However, if you intended \"nn\" to stand for Nynorsk, which is one of the written standards of the Norwegian language (not to be confused with a country code), then the translation would be:\n\nHallo",
"emails.certificate.body": "Sertifikat for domenet ditt '{{domain}}' kunne ikke genereres. Dette er forsøk nr. {{attempt}}, og mislykkelsen ble forårsaket av: {{error}}",
"emails.certificate.footer": "Ditt førre sertifikat vil vere gyldig i 30 dagar etter den første feilen. Vi rår sterkt til å undersøke denne saka, elles vil domenet ditt ende opp utan ein gyldig SSL-kommunikasjon.",
"emails.certificate.thanks": "The country code \"nn\" provided is not sufficient to determine the target language as it does not correspond to an official ISO 3166-1 alpha-2 country code. Please provide more context or the specific target language you need the translation for.",
"emails.certificate.signature": "{{project}} lag",
"sms.verification.body": "Hemmelig er din prosjekt verifiseringskode.",
"emails.magicSession.securityPhrase": "For the country code \"nn\", there is no officially designated language. The country code \"NN\" is typically used as a placeholder in documentation for a country that is not specified. Please provide a valid country code or specify the target language for the translation.",
"emails.magicSession.optionUrl": "Dersom du ikkje klarer å logge inn ved å bruke knappen over, kan du gå til følgjande lenke:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ଇଉରୋପ",
"continents.na": "ନର୍ଥ ଆମେରିକା",
"continents.oc": "ଓସାନିଆ",
"continents.sa": "ସାଉଥ ଆମେରିକା"
"continents.sa": "ସାଉଥ ଆମେରିକା",
"emails.magicSession.optionButton": "Kliknite na gumb ispod kako biste se sigurno prijavili na svoj {{project}} račun. Istječe za 1 sat.",
"emails.magicSession.buttonText": "Inicia sesión en {{project}}",
"emails.magicSession.clientInfo": "Tento přihlašovací požadavek byl zaznamenán pomocí {{agentClient}} na {{agentDevice}} {{agentOs}}. Pokud jste o přihlášení nepožádali, můžete tento e-mail bezpečně ignorovat.",
"emails.certificate.subject": "شهادة الفشل لـ %s",
"emails.certificate.hello": "Hola",
"emails.certificate.body": "Sertifika jūsų domenui \"{{domain}}\" negalėjo būti sugeneruotas. Tai bandymas Nr. {{attempt}}, ir nesėkmę sukėlė: {{error}}",
"emails.certificate.footer": "Vaš prethodni certifikat će biti važeći 30 dana od prvog neuspeha. Visoko preporučujemo istraživanje ovog slučaja, inače će vaš domen ostati bez važeće SSL komunikacije.",
"emails.certificate.thanks": "\n\nTack",
"emails.certificate.signature": "{{project}} команда",
"sms.verification.body": "{{secret}} est votre code de vérification pour {{project}}.",
"emails.magicSession.securityPhrase": "Frase de segurança para este e-mail é {{phrase}}. Você pode confiar neste e-mail se essa frase coincidir com a frase mostrada durante o acesso.",
"emails.magicSession.optionUrl": "אם אתם לא מצליחים להיכנס באמצעות הכפתור שמעל, אנא בקרו בקישור הבא:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ਯੂਰਪ",
"continents.na": "ਉੱਤਰ ਅਮਰੀਕਾ",
"continents.oc": "ਓਸੀਆਨੀਆ",
"continents.sa": "ਸਾਉਥ ਅਮਰੀਕਾ"
"continents.sa": "ਸਾਉਥ ਅਮਰੀਕਾ",
"emails.magicSession.optionButton": "Haz clic en el botón de abajo para iniciar sesión de manera segura en tu cuenta de {{project}}. Expirará en una hora.",
"emails.magicSession.buttonText": "Inicia sesión en {{project}}",
"emails.magicSession.clientInfo": "Este ingreso fue solicitado usando {{agentClient}} en {{agentDevice}} {{agentOs}}. Si no solicitaste el ingreso, puedes ignorar este correo electrónico sin problema.",
"emails.certificate.subject": "Falló el certificado para %s",
"emails.certificate.hello": "Hola",
"emails.certificate.body": "El certificado para su dominio '{{domain}}' no pudo ser generado. Este es el intento n.º {{attempt}}, y el fallo fue causado por: {{error}}",
"emails.certificate.footer": "Su certificado anterior será válido por 30 días desde el primer fallo. Recomendamos encarecidamente investigar este caso, de lo contrario su dominio terminará sin una comunicación SSL válida.",
"emails.certificate.thanks": "Gracias",
"emails.certificate.signature": "equipo de {{project}}",
"sms.verification.body": "El {{secret}} es tu código de verificación de {{project}}.",
"emails.magicSession.securityPhrase": "La frase de seguridad para este correo electrónico es {{phrase}}. Puedes confiar en este correo si esta frase coincide con la frase que se muestra al iniciar sesión.",
"emails.magicSession.optionUrl": "Si no puedes iniciar sesión utilizando el botón superior, por favor visita el siguiente enlace:"
}

View file

@ -1,232 +1,244 @@
{
"settings.inspire": "\"Sztuka bycia mądrym to sztuka wiedzieć, co przeoczyć.\"",
"settings.locale": "pl",
"settings.direction": "ltr",
"emails.sender": "Zespół %s",
"emails.verification.subject": "Weryfikacja konta",
"emails.verification.hello": "Cześć {{user}}",
"emails.verification.body": "Przejdź do tego linku, aby zweryfikować swój adres e-mail.",
"emails.verification.footer": "Jeśli to nie Ty prosiłeś o zweryfikowanie tego adresu, zignoruj tę wiadomość.",
"emails.verification.thanks": "Dziękujemy",
"emails.verification.signature": "Zespół {{project}}",
"emails.magicSession.subject": "Logowanie",
"emails.magicSession.hello": "Cześć,",
"emails.magicSession.body": "Kliknij w ten link, aby zalogować się.",
"emails.magicSession.footer": "Jeśli to nie Ty prosiłeś o logowanie przy użyciu tego adresu e-mail, zignoruj tę wiadomość.",
"emails.magicSession.thanks": "Dziękujemy",
"emails.magicSession.signature": "Zespół {{project}}",
"emails.recovery.subject": "Resetowanie hasła",
"emails.recovery.hello": "Cześć {{user}}",
"emails.recovery.body": "Przejdź do tego linku, aby zresetować hasło dla {{project}}.",
"emails.recovery.footer": "Jeśli to nie Ty prosiłeś o zresetowanie swojego hasła, zignoruj tę wiadomość.",
"emails.recovery.thanks": "Dziękujemy",
"emails.recovery.signature": "Zespół {{project}}",
"emails.invitation.subject": "Zaproszenie do zespołu %s w %s",
"emails.invitation.hello": "Cześć",
"emails.invitation.body": "Otrzymujesz tę wiadomość, ponieważ {{owner}} zaprasza Cię do grona członków zespołu {{team}} w projekcie {{project}}.",
"emails.invitation.footer": "Jeśli nie jesteś zainteresowany, zignoruj tę wiadomość.",
"emails.invitation.thanks": "Dziękujemy",
"emails.invitation.signature": "Zespół {{project}}",
"locale.country.unknown": "Nieznany",
"countries.af": "Afganistan",
"countries.ao": "Angola",
"countries.al": "Albania",
"countries.ad": "Andora",
"countries.ae": "Zjednoczone Emiraty Arabskie",
"countries.ar": "Argentyna",
"countries.am": "Armenia",
"countries.ag": "Antigua i Barbuda",
"countries.au": "Australia",
"countries.at": "Austria",
"countries.az": "Azerbejdżan",
"countries.bi": "Burundi",
"countries.be": "Belgia",
"countries.bj": "Benin",
"countries.bf": "Burkina Faso",
"countries.bd": "Bangladesz",
"countries.bg": "Bułgaria",
"countries.bh": "Bahrajn",
"countries.bs": "Bahamy",
"countries.ba": "Bośnia i Hercegowina",
"countries.by": "Białoruś",
"countries.bz": "Belize",
"countries.bo": "Boliwia",
"countries.br": "Brazylia",
"countries.bb": "Barbados",
"countries.bn": "Brunei",
"countries.bt": "Bhutan",
"countries.bw": "Botswana",
"countries.cf": "Republika Środkowoafrykańska",
"countries.ca": "Kanada",
"countries.ch": "Szwajcaria",
"countries.cl": "Chile",
"countries.cn": "Chiny",
"countries.ci": "Wybrzeże Kości Słoniowej",
"countries.cm": "Kamerun",
"countries.cd": "DR Congo",
"countries.cg": "Republika Konga",
"countries.co": "Kolumbia",
"countries.km": "Komory",
"countries.cv": "Republika Zielonego Przylądka",
"countries.cr": "Kostaryka",
"countries.cu": "Kuba",
"countries.cy": "Cypr",
"countries.cz": "Czechy",
"countries.de": "Niemcy",
"countries.dj": "Dżibuti",
"countries.dm": "Dominica",
"countries.dk": "Dania",
"countries.do": "Republika Dominikańska",
"countries.dz": "Algieria",
"countries.ec": "Ekwador",
"countries.eg": "Egipt",
"countries.er": "Erytrea",
"countries.es": "Hiszpania",
"countries.ee": "Estonia",
"countries.et": "Etiopia",
"countries.fi": "Finlandia",
"countries.fj": "Fidżi",
"countries.fr": "Francja",
"countries.fm": "Mikronezja",
"countries.ga": "Gabon",
"countries.gb": "Wielka Brytania",
"countries.ge": "Georgia",
"countries.gh": "Ghana",
"countries.gn": "Gwinea",
"countries.gm": "Gambia",
"countries.gw": "Gwinea Bissau",
"countries.gq": "Gwinea Równikowa",
"countries.gr": "Grecja",
"countries.gd": "Grenada",
"countries.gt": "Gwatemala",
"countries.gy": "Gujana",
"countries.hn": "Honduras",
"countries.hr": "Chorwacja",
"countries.ht": "Haiti",
"countries.hu": "Węgry",
"countries.id": "Indonezja",
"countries.in": "Indie",
"countries.ie": "Irlandia",
"countries.ir": "Iran",
"countries.iq": "Irak",
"countries.is": "Islandia",
"countries.il": "Israel",
"countries.it": "Włochy",
"countries.jm": "Jamajka",
"countries.jo": "Jordan",
"countries.jp": "Japonia",
"countries.kz": "Kazachstan",
"countries.ke": "Kenia",
"countries.kg": "Kirgistan",
"countries.kh": "Kambodża",
"countries.ki": "Kiribati",
"countries.kn": "Saint Kitts i Nevis",
"countries.kr": "Korea Południowa",
"countries.kw": "Kuwejt",
"countries.la": "Laos",
"countries.lb": "Liban",
"countries.lr": "Liberia",
"countries.ly": "Libia",
"countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein",
"countries.lk": "Sri Lanka",
"countries.ls": "Lesotho",
"countries.lt": "Litwa",
"countries.lu": "Luksemburg",
"countries.lv": "Łotwa",
"countries.ma": "Maroko",
"countries.mc": "Monako",
"countries.md": "Mołdawia",
"countries.mg": "Madagaskar",
"countries.mv": "Malediwy",
"countries.mx": "Meksyk",
"countries.mh": "Wyspy Marshalla",
"countries.mk": "Macedonia",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Birma",
"countries.me": "Czarnogóra",
"countries.mn": "Mongolia",
"countries.mz": "Mozambik",
"countries.mr": "Mauretania",
"countries.mu": "Mauritius",
"countries.mw": "Malawi",
"countries.my": "Malezja",
"countries.na": "Namibia",
"countries.ne": "Niger",
"countries.ng": "Nigeria",
"countries.ni": "Nikaragua",
"countries.nl": "Holandia",
"countries.no": "Norwegia",
"countries.np": "Nepal",
"countries.nr": "Nauru",
"countries.nz": "Nowa Zelandia",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filipiny",
"countries.pw": "Palau",
"countries.pg": "Papua Nowa Gwinea",
"countries.pl": "Polska",
"countries.kp": "Korea Północna",
"countries.pt": "Portugalia",
"countries.py": "Paragwaj",
"countries.qa": "Katar",
"countries.ro": "Rumunia",
"countries.ru": "Rosja",
"countries.rw": "Rwanda",
"countries.sa": "Arabia Saudyjska",
"countries.sd": "Sudan",
"countries.sn": "Senegal",
"countries.sg": "Singapur",
"countries.sb": "Wyspy Salomona",
"countries.sl": "Sierra Leone",
"countries.sv": "Salwador",
"countries.sm": "San Marino",
"countries.so": "Somalia",
"countries.rs": "Serbia",
"countries.ss": "Sudan Południowy",
"countries.st": "Wyspy Świętego Tomasza i Książęca",
"countries.sr": "Surinam",
"countries.sk": "Słowacja",
"countries.si": "Słowenia",
"countries.se": "Szwecja",
"countries.sz": "Suazi",
"countries.sc": "Seszele",
"countries.sy": "Syria",
"countries.td": "Czad",
"countries.tg": "Togo",
"countries.th": "Tajlandia",
"countries.tj": "Tadżykistan",
"countries.tm": "Turkmenistan",
"countries.tl": "Timor Wschodni",
"countries.to": "Tonga",
"countries.tt": "Trynidad i Tobago",
"countries.tn": "Tunezja",
"countries.tr": "Turcja",
"countries.tv": "Tuvalu",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",
"countries.uy": "Urugwaj",
"countries.us": "Stany Zjednoczone",
"countries.uz": "Uzbekistan",
"countries.va": "Watykan",
"countries.vc": "Saint Vincent i Grenadyny",
"countries.ve": "Wenezuela",
"countries.vn": "Wietnam",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Jemen",
"countries.za": "Republika Południowej Afryki",
"countries.zm": "Zambia",
"countries.zw": "Zimbabwe",
"continents.af": "Afryka",
"continents.an": "Antarktyda",
"continents.as": "Azja",
"continents.eu": "Europa",
"continents.na": "Ameryka Północna",
"continents.oc": "Oceania",
"continents.sa": "Ameryka południowa"
}
"settings.inspire": "\"Sztuka bycia mądrym to sztuka wiedzieć, co przeoczyć.\"",
"settings.locale": "pl",
"settings.direction": "ltr",
"emails.sender": "Zespół %s",
"emails.verification.subject": "Weryfikacja konta",
"emails.verification.hello": "Cześć {{user}}",
"emails.verification.body": "Przejdź do tego linku, aby zweryfikować swój adres e-mail.",
"emails.verification.footer": "Jeśli to nie Ty prosiłeś o zweryfikowanie tego adresu, zignoruj tę wiadomość.",
"emails.verification.thanks": "Dziękujemy",
"emails.verification.signature": "Zespół {{project}}",
"emails.magicSession.subject": "Logowanie",
"emails.magicSession.hello": "Cześć,",
"emails.magicSession.body": "Kliknij w ten link, aby zalogować się.",
"emails.magicSession.footer": "Jeśli to nie Ty prosiłeś o logowanie przy użyciu tego adresu e-mail, zignoruj tę wiadomość.",
"emails.magicSession.thanks": "Dziękujemy",
"emails.magicSession.signature": "Zespół {{project}}",
"emails.recovery.subject": "Resetowanie hasła",
"emails.recovery.hello": "Cześć {{user}}",
"emails.recovery.body": "Przejdź do tego linku, aby zresetować hasło dla {{project}}.",
"emails.recovery.footer": "Jeśli to nie Ty prosiłeś o zresetowanie swojego hasła, zignoruj tę wiadomość.",
"emails.recovery.thanks": "Dziękujemy",
"emails.recovery.signature": "Zespół {{project}}",
"emails.invitation.subject": "Zaproszenie do zespołu %s w %s",
"emails.invitation.hello": "Cześć",
"emails.invitation.body": "Otrzymujesz tę wiadomość, ponieważ {{owner}} zaprasza Cię do grona członków zespołu {{team}} w projekcie {{project}}.",
"emails.invitation.footer": "Jeśli nie jesteś zainteresowany, zignoruj tę wiadomość.",
"emails.invitation.thanks": "Dziękujemy",
"emails.invitation.signature": "Zespół {{project}}",
"locale.country.unknown": "Nieznany",
"countries.af": "Afganistan",
"countries.ao": "Angola",
"countries.al": "Albania",
"countries.ad": "Andora",
"countries.ae": "Zjednoczone Emiraty Arabskie",
"countries.ar": "Argentyna",
"countries.am": "Armenia",
"countries.ag": "Antigua i Barbuda",
"countries.au": "Australia",
"countries.at": "Austria",
"countries.az": "Azerbejdżan",
"countries.bi": "Burundi",
"countries.be": "Belgia",
"countries.bj": "Benin",
"countries.bf": "Burkina Faso",
"countries.bd": "Bangladesz",
"countries.bg": "Bułgaria",
"countries.bh": "Bahrajn",
"countries.bs": "Bahamy",
"countries.ba": "Bośnia i Hercegowina",
"countries.by": "Białoruś",
"countries.bz": "Belize",
"countries.bo": "Boliwia",
"countries.br": "Brazylia",
"countries.bb": "Barbados",
"countries.bn": "Brunei",
"countries.bt": "Bhutan",
"countries.bw": "Botswana",
"countries.cf": "Republika Środkowoafrykańska",
"countries.ca": "Kanada",
"countries.ch": "Szwajcaria",
"countries.cl": "Chile",
"countries.cn": "Chiny",
"countries.ci": "Wybrzeże Kości Słoniowej",
"countries.cm": "Kamerun",
"countries.cd": "DR Congo",
"countries.cg": "Republika Konga",
"countries.co": "Kolumbia",
"countries.km": "Komory",
"countries.cv": "Republika Zielonego Przylądka",
"countries.cr": "Kostaryka",
"countries.cu": "Kuba",
"countries.cy": "Cypr",
"countries.cz": "Czechy",
"countries.de": "Niemcy",
"countries.dj": "Dżibuti",
"countries.dm": "Dominica",
"countries.dk": "Dania",
"countries.do": "Republika Dominikańska",
"countries.dz": "Algieria",
"countries.ec": "Ekwador",
"countries.eg": "Egipt",
"countries.er": "Erytrea",
"countries.es": "Hiszpania",
"countries.ee": "Estonia",
"countries.et": "Etiopia",
"countries.fi": "Finlandia",
"countries.fj": "Fidżi",
"countries.fr": "Francja",
"countries.fm": "Mikronezja",
"countries.ga": "Gabon",
"countries.gb": "Wielka Brytania",
"countries.ge": "Georgia",
"countries.gh": "Ghana",
"countries.gn": "Gwinea",
"countries.gm": "Gambia",
"countries.gw": "Gwinea Bissau",
"countries.gq": "Gwinea Równikowa",
"countries.gr": "Grecja",
"countries.gd": "Grenada",
"countries.gt": "Gwatemala",
"countries.gy": "Gujana",
"countries.hn": "Honduras",
"countries.hr": "Chorwacja",
"countries.ht": "Haiti",
"countries.hu": "Węgry",
"countries.id": "Indonezja",
"countries.in": "Indie",
"countries.ie": "Irlandia",
"countries.ir": "Iran",
"countries.iq": "Irak",
"countries.is": "Islandia",
"countries.il": "Israel",
"countries.it": "Włochy",
"countries.jm": "Jamajka",
"countries.jo": "Jordan",
"countries.jp": "Japonia",
"countries.kz": "Kazachstan",
"countries.ke": "Kenia",
"countries.kg": "Kirgistan",
"countries.kh": "Kambodża",
"countries.ki": "Kiribati",
"countries.kn": "Saint Kitts i Nevis",
"countries.kr": "Korea Południowa",
"countries.kw": "Kuwejt",
"countries.la": "Laos",
"countries.lb": "Liban",
"countries.lr": "Liberia",
"countries.ly": "Libia",
"countries.lc": "Saint Lucia",
"countries.li": "Liechtenstein",
"countries.lk": "Sri Lanka",
"countries.ls": "Lesotho",
"countries.lt": "Litwa",
"countries.lu": "Luksemburg",
"countries.lv": "Łotwa",
"countries.ma": "Maroko",
"countries.mc": "Monako",
"countries.md": "Mołdawia",
"countries.mg": "Madagaskar",
"countries.mv": "Malediwy",
"countries.mx": "Meksyk",
"countries.mh": "Wyspy Marshalla",
"countries.mk": "Macedonia",
"countries.ml": "Mali",
"countries.mt": "Malta",
"countries.mm": "Birma",
"countries.me": "Czarnogóra",
"countries.mn": "Mongolia",
"countries.mz": "Mozambik",
"countries.mr": "Mauretania",
"countries.mu": "Mauritius",
"countries.mw": "Malawi",
"countries.my": "Malezja",
"countries.na": "Namibia",
"countries.ne": "Niger",
"countries.ng": "Nigeria",
"countries.ni": "Nikaragua",
"countries.nl": "Holandia",
"countries.no": "Norwegia",
"countries.np": "Nepal",
"countries.nr": "Nauru",
"countries.nz": "Nowa Zelandia",
"countries.om": "Oman",
"countries.pk": "Pakistan",
"countries.pa": "Panama",
"countries.pe": "Peru",
"countries.ph": "Filipiny",
"countries.pw": "Palau",
"countries.pg": "Papua Nowa Gwinea",
"countries.pl": "Polska",
"countries.kp": "Korea Północna",
"countries.pt": "Portugalia",
"countries.py": "Paragwaj",
"countries.qa": "Katar",
"countries.ro": "Rumunia",
"countries.ru": "Rosja",
"countries.rw": "Rwanda",
"countries.sa": "Arabia Saudyjska",
"countries.sd": "Sudan",
"countries.sn": "Senegal",
"countries.sg": "Singapur",
"countries.sb": "Wyspy Salomona",
"countries.sl": "Sierra Leone",
"countries.sv": "Salwador",
"countries.sm": "San Marino",
"countries.so": "Somalia",
"countries.rs": "Serbia",
"countries.ss": "Sudan Południowy",
"countries.st": "Wyspy Świętego Tomasza i Książęca",
"countries.sr": "Surinam",
"countries.sk": "Słowacja",
"countries.si": "Słowenia",
"countries.se": "Szwecja",
"countries.sz": "Suazi",
"countries.sc": "Seszele",
"countries.sy": "Syria",
"countries.td": "Czad",
"countries.tg": "Togo",
"countries.th": "Tajlandia",
"countries.tj": "Tadżykistan",
"countries.tm": "Turkmenistan",
"countries.tl": "Timor Wschodni",
"countries.to": "Tonga",
"countries.tt": "Trynidad i Tobago",
"countries.tn": "Tunezja",
"countries.tr": "Turcja",
"countries.tv": "Tuvalu",
"countries.tz": "Tanzania",
"countries.ug": "Uganda",
"countries.ua": "Ukraina",
"countries.uy": "Urugwaj",
"countries.us": "Stany Zjednoczone",
"countries.uz": "Uzbekistan",
"countries.va": "Watykan",
"countries.vc": "Saint Vincent i Grenadyny",
"countries.ve": "Wenezuela",
"countries.vn": "Wietnam",
"countries.vu": "Vanuatu",
"countries.ws": "Samoa",
"countries.ye": "Jemen",
"countries.za": "Republika Południowej Afryki",
"countries.zm": "Zambia",
"countries.zw": "Zimbabwe",
"continents.af": "Afryka",
"continents.an": "Antarktyda",
"continents.as": "Azja",
"continents.eu": "Europa",
"continents.na": "Ameryka Północna",
"continents.oc": "Oceania",
"continents.sa": "Ameryka południowa",
"emails.magicSession.optionButton": "Kliknij przycisk poniżej, aby bezpiecznie zalogować się na swoje konto {{project}}. Link wygaśnie po 1 godzinie.",
"emails.magicSession.buttonText": "Zaloguj się do {{project}}",
"emails.magicSession.clientInfo": "To logowanie zostało zażądane przy użyciu {{agentClient}} na {{agentDevice}} {{agentOs}}. Jeśli nie zażądałeś logowania, możesz zignorować tę wiadomość e-mail.",
"emails.certificate.subject": "Błąd certyfikatu dla %s",
"emails.certificate.hello": "Cześć",
"emails.certificate.body": "Certyfikat dla Twojej domeny '{{domain}}' nie mógł zostać wygenerowany. To jest próba nr {{attempt}}, a przyczyną niepowodzenia było: {{error}}",
"emails.certificate.footer": "Twój poprzedni certyfikat będzie ważny przez 30 dni od pierwszej awarii. Zalecamy dokładne zbadanie tej sprawy, w przeciwnym razie Twój domena zostanie bez ważnego certyfikatu SSL.",
"emails.certificate.thanks": "Dziękuję",
"emails.certificate.signature": "zespół {{project}}",
"sms.verification.body": "{{secret}} jest twoim kodem weryfikacyjnym do {{project}}.",
"emails.magicSession.securityPhrase": "Hasło bezpieczeństwa dla tego e-maila to {{phrase}}. Możesz ufać temu e-mailowi, jeśli hasło to jest zgodne z hasłem wyświetlonym podczas logowania.",
"emails.magicSession.optionUrl": "Jeśli nie możesz się zalogować, używając powyższego przycisku, odwiedź następujący link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "América do Norte",
"continents.oc": "Oceania",
"continents.sa": "América do Sul"
"continents.sa": "América do Sul",
"emails.magicSession.optionButton": "Clique no botão abaixo para acessar sua conta {{project}} com segurança. Ele expirará em 1 hora.",
"emails.magicSession.buttonText": "Faça login no {{project}}",
"emails.magicSession.clientInfo": "Este acesso foi solicitado usando {{agentClient}} em {{agentDevice}} {{agentOs}}. Se você não solicitou o acesso, pode ignorar este e-mail com segurança.",
"emails.certificate.subject": "Falha no certificado para %s",
"emails.certificate.hello": "Olá",
"emails.certificate.body": "O certificado para o seu domínio '{{domain}}' não pôde ser gerado. Esta é a tentativa nº {{attempt}}, e a falha foi causada por: {{error}}",
"emails.certificate.footer": "Seu certificado anterior será válido por 30 dias desde a primeira falha. Recomendamos fortemente que você investigue este caso, caso contrário, seu domínio ficará sem uma comunicação SSL válida.",
"emails.certificate.thanks": "Obrigado",
"emails.certificate.signature": "equipe {{project}}",
"sms.verification.body": "{{secret}} é o seu código de verificação do {{project}}.",
"emails.magicSession.securityPhrase": "A frase de segurança para este e-mail é {{phrase}}. Você pode confiar neste e-mail se essa frase corresponder à frase mostrada durante o acesso.",
"emails.magicSession.optionUrl": "Se você não consegue fazer login usando o botão acima, por favor visite o seguinte link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "América do Norte",
"continents.oc": "Oceânia",
"continents.sa": "América do Sul"
}
"continents.sa": "América do Sul",
"emails.magicSession.optionButton": "Clique no botão abaixo para iniciar sessão na sua conta {{project}} de forma segura. Irá expirar em 1 hora.",
"emails.magicSession.buttonText": "Inicie sessão no {{project}}",
"emails.magicSession.clientInfo": "Este início de sessão foi solicitado usando o {{agentClient}} no {{agentDevice}} {{agentOs}}. Se não foi você quem solicitou o início de sessão, pode ignorar este e-mail com segurança.",
"emails.certificate.subject": "Falha no certificado para %s",
"emails.certificate.hello": "Olá",
"emails.certificate.body": "Não foi possível gerar certificado para o seu domínio '{{domain}}'. Esta é a tentativa nº {{attempt}}, e a falha foi causada por: {{error}}",
"emails.certificate.footer": "O seu certificado anterior será válido por 30 dias desde a primeira falha. Recomendamos vivamente que investigue este caso, caso contrário, o seu domínio ficará sem uma comunicação SSL válida.",
"emails.certificate.thanks": "Obrigado",
"emails.certificate.signature": "equipa {{project}}",
"sms.verification.body": "{{secret}} é o seu código de verificação do {{project}}.",
"emails.magicSession.securityPhrase": "A frase de segurança deste e-mail é {{phrase}}. Pode confiar neste e-mail se esta frase coincidir com a frase mostrada durante o início de sessão.",
"emails.magicSession.optionUrl": "Se não conseguir iniciar sessão utilizando o botão acima, por favor visite o seguinte link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "America de Nord",
"continents.oc": "Oceania",
"continents.sa": "America de Sud"
"continents.sa": "America de Sud",
"emails.magicSession.optionButton": "Faceți clic pe butonul de mai jos pentru a vă autentifica în siguranță în contul dvs. {{project}}. Va expira în 1 oră.",
"emails.magicSession.buttonText": "Conectați-vă la {{project}}",
"emails.magicSession.clientInfo": "Această autentificare a fost solicitată folosind {{agentClient}} pe {{agentDevice}} {{agentOs}}. Dacă nu ați solicitat autentificarea, puteți ignora în siguranță acest email.",
"emails.certificate.subject": "Eșec al certificatului pentru %s",
"emails.certificate.hello": "Salut",
"emails.certificate.body": "Certificatul pentru domeniul dumneavoastră '{{domain}}' nu a putut fi generat. Aceasta este încercarea nr. {{attempt}}, iar eșecul a fost provocat de: {{error}}",
"emails.certificate.footer": "Certificatul dumneavoastră anterior va fi valid pentru 30 de zile de la prima defecțiune. Vă recomandăm insistent să investigați acest caz, altfel domeniul dumneavoastră va rămâne fără o comunicare SSL validă.",
"emails.certificate.thanks": "Mulțumesc",
"emails.certificate.signature": "echipa {{project}}",
"sms.verification.body": "{{secret}} este codul de verificare pentru {{project}}.",
"emails.magicSession.securityPhrase": "Frază de securitate pentru acest e-mail este {{phrase}}. Puteți avea încredere în acest e-mail dacă fraza se potrivește cu fraza afișată în timpul autentificării.",
"emails.magicSession.optionUrl": "Dacă nu puteți să vă autentificați folosind butonul de mai sus, vă rugăm să vizitați următorul link:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Европа",
"continents.na": "Северная Америка",
"continents.oc": "Океания",
"continents.sa": "Южная Америка"
}
"continents.sa": "Южная Америка",
"emails.magicSession.optionButton": "Нажмите на кнопку ниже, чтобы безопасно войти в свою учетную запись {{project}}. Срок действия истечет через 1 час.",
"emails.magicSession.buttonText": "Войти в {{project}}",
"emails.magicSession.clientInfo": "Этот вход был запрошен с использованием {{agentClient}} на {{agentDevice}} {{agentOs}}. Если вы не запрашивали вход, можете спокойно игнорировать это письмо.",
"emails.certificate.subject": "Сбой сертификата для %s",
"emails.certificate.hello": "Здравствуйте",
"emails.certificate.body": "Сертификат для вашего домена '{{domain}}' не может быть создан. Это попытка номер {{attempt}}, и причина сбоя: {{error}}",
"emails.certificate.footer": "Ваш предыдущий сертификат будет действителен в течение 30 дней с момента первой неудачи. Настоятельно рекомендуем изучить этот случай, иначе ваш домен останется без действующего SSL-соединения.",
"emails.certificate.thanks": "Спасибо",
"emails.certificate.signature": "команда {{project}}",
"sms.verification.body": "{{secret}} это ваш код подтверждения для {{project}}.",
"emails.magicSession.securityPhrase": "Фраза безопасности для этого электронного письма - {{phrase}}. Вы можете доверять этому письму, если эта фраза совпадает с фразой, отображаемой при входе в систему.",
"emails.magicSession.optionUrl": "Если вы не можете войти, используя кнопку выше, пожалуйста, посетите следующую ссылку:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "यूरोप",
"continents.na": "उत्तरी अमेरिका",
"continents.oc": "ओशिनिया",
"continents.sa": "दक्षिण अमेरिका"
"continents.sa": "दक्षिण अमेरिका",
"emails.magicSession.optionButton": "اضغط على الزر أدناه لتسجيل الدخول بأمان إلى حساب {{project}} الخاص بك. سينتهي في غضون ساعة واحدة.",
"emails.magicSession.buttonText": "تسجيل الدخول إلى {{project}}",
"emails.magicSession.clientInfo": "هذا الطلب لتسجيل الدخول قد تم باستخدام {{agentClient}} على {{agentDevice}} {{agentOs}}. إذا لم تطلب تسجيل الدخول، يمكنك تجاهل هذا البريد الإلكتروني بأمان.",
"emails.certificate.subject": "فشل الشهادة لـ %s",
"emails.certificate.hello": "مرحبا",
"emails.certificate.body": "شهادة لنطاق '{{domain}}' الخاص بك لا يمكن إنشاؤها. هذه هي المحاولة رقم {{attempt}}، وكان سبب الفشل: {{error}}",
"emails.certificate.footer": "سيكون شهادتك السابقة صالحة لمدة 30 يوماً منذ الفشل الأول. نوصي بشدة بالتحقيق في هذه الحالة، وإلا سينتهي مجالك بدون اتصال SSL صالح.",
"emails.certificate.thanks": "شكرا",
"emails.certificate.signature": "فريق {{project}}",
"sms.verification.body": "سري هو رمز التحقق الخاص بمشروعك.",
"emails.magicSession.securityPhrase": "العبارة الأمنية لهذا البريد الإلكتروني هي {{phrase}}. يمكنك الوثوق بهذا البريد الإلكتروني إذا كانت هذه العبارة متطابقة مع العبارة المعروضة أثناء تسجيل الدخول.",
"emails.magicSession.optionUrl": "إذا لم تتمكن من تسجيل الدخول باستخدام الزر أعلاه، يرجى زيارة الرابط التالي:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "يورپ",
"continents.na": "اتر آمريڪا",
"continents.oc": "اوشينيا",
"continents.sa": "ڏکڻ آمريڪا"
}
"continents.sa": "ڏکڻ آمريڪا",
"emails.magicSession.optionButton": "محفوظ طريقہ سے اپنے {{project}} اکاؤنٹ میں داخل ہونے کے لئے نيچے دئے گئے بٹن پر کلک کریں۔ یہ ایک گھنٹے ميں ختم ہو جائے گا۔",
"emails.magicSession.buttonText": "It seems that you're referring to a country code \"sd\" which typically represents Sudan. The official languages in Sudan are Arabic and English. Without specific instruction for Arabic, I will provide the translation in Arabic:\n\nتسجيل الدخول إلى {{project}}",
"emails.magicSession.clientInfo": "هن وقت جي لاڳ ان جي درخواست {{agentClient}} تي ڪئي وئي آهي {{agentDevice}} {{agentOs}} تي. جيڪڏهن توهان کي لاڳ ان جي درخواست نه جي آهي، توهان اهو ایميل نظر انداز ڪري سگهو ٿا.",
"emails.certificate.subject": "شهادة فشل ل %s",
"emails.certificate.hello": "مرحبا",
"emails.certificate.body": "I'm sorry, but there is no country code \"sd.\" If you meant Sudan, the country code is \"SD,\" not lowercase, but the official languages of Sudan are Arabic and English. If you need a translation into Arabic, here is the message:\n\nشهادة لنطاق '{{domain}}' الخاص بك لم تتمكن من التوليد. هذه هي المحاولة رقم {{attempt}}، وكان الفشل بسبب: {{error}}",
"emails.certificate.footer": "سابقه سند توهان جي پهلي ناكامي کان 30 ڏينهن لاءِ موزون آهي. اسان توهان کي پوري قائلي سان گهڻي سفارش ڪنداسين ته هن ڪيس کي تحقيق ڪريو، نه ته توهان جو ڊومين بغير موزون SSL مواصلتي جي حالت ۾ ختم ٿي ويندو.",
"emails.certificate.thanks": "شكرا",
"emails.certificate.signature": "I believe there has been a misunderstanding. The country code \"sd\" refers to Sudan, and the official languages of Sudan are Arabic and English. If you are requesting a translation into Arabic, the phrase \"project team\" would be \"فريق المشروع\". If you need a translation into a different language, please provide the correct language or country code.",
"sms.verification.body": "وڊو is your {{project}} جي تصديق ڪوڊ.",
"emails.magicSession.securityPhrase": "محفوظ جملو آهي هن اي ميل لاءِ {{phrase}}. توهان هن اي ميل تي اعتماد ڪري سگهو ٿا جيڪڏهن اهو جملو توهان کي سائن ان ڪرڻ وقت داخل ٿيل جملي سان ملي ويسي.",
"emails.magicSession.optionUrl": "You have provided \"sd\" as the country code; however, \"sd\" is not a valid ISO 3166-1 alpha-2 country code. If you meant \"sd\" to refer to the Sindhi language code, the translation would be:\n\n\"جيڪڏھن توھان مٿي واريل بٽڪَ جي مدد سان سائن ان ڪرڻ ۾ ناڪام آھيو، ته مھرباني ڪري هيٺيان ديئل لنڪ جو ڏورو قدم چونڊو:\""
}

View file

@ -228,5 +228,17 @@
"continents.eu": "යුරෝපය",
"continents.na": "උතුරු ඇමරිකාව",
"continents.oc": "ඕෂනියා",
"continents.sa": "දකුණු ඇමරිකාව"
"continents.sa": "දකුණු ඇමරිකාව",
"emails.magicSession.optionButton": "Kliknite spodnji gumb, da varno vstopite v svoj {{project}} račun. Poteče čez 1 uro.",
"emails.magicSession.buttonText": "Prijavite se v {{project}}",
"emails.magicSession.clientInfo": "Ta prijava je bila zahtevana z uporabo {{agentClient}} na {{agentDevice}} {{agentOs}}. Če te prijave niste zahtevali, lahko to e-pošto varno prezrete.",
"emails.certificate.subject": "Potrdilo ni uspelo za %s",
"emails.certificate.hello": "Živjo",
"emails.certificate.body": "Vaš certifikat za domeno '{{domain}}' ni bilo mogoče ustvariti. To je poskus št. {{attempt}} in napako je povzročilo: {{error}}",
"emails.certificate.footer": "Vaše prethodno certifikat će biti važeći 30 dana od prvog neuspeha. Visoko preporučujemo da istražite ovaj slučaj, u suprotnom vaš domen će ostati bez važeće SSL komunikacije.",
"emails.certificate.thanks": "Hvala",
"emails.certificate.signature": "{{project}} ekipa",
"sms.verification.body": "{{secret}} je vaša {{project}} koda za preverjanje.",
"emails.magicSession.securityPhrase": "Zaščitna fraza za ta e-poštni naslov je {{phrase}}. Temu e-poštnemu naslovu lahko zaupate, če se ta fraza ujema s frazo, prikazano med prijavo.",
"emails.magicSession.optionUrl": "Če se z zgornjim gumbom ne morete prijaviti, obiščite naslednjo povezavo:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Európa",
"continents.na": "Severná Amerika",
"continents.oc": "Oceánia",
"continents.sa": "Južná Amerika"
}
"continents.sa": "Južná Amerika",
"emails.magicSession.optionButton": "Kliknite na tlačidlo nižšie, aby ste sa bezpečne prihlásili do vášho účtu {{project}}. Platnosť vyprší za 1 hodinu.",
"emails.magicSession.buttonText": "Prihláste sa do {{project}}",
"emails.magicSession.clientInfo": "Toto prihlásenie bolo požadované pomocou {{agentClient}} na {{agentDevice}} {{agentOs}}. Ak ste si nepožiadali o prihlásenie, tento e-mail môžete bezpečne ignorovať.",
"emails.certificate.subject": "Certifikačná chyba pre %s",
"emails.certificate.hello": "Ahoj",
"emails.certificate.body": "Certifikát pre váš domén '{{domain}}' sa nepodarilo vygenerať. Ide o pokus č. {{attempt}}, a dôvod zlyhania bol: {{error}}",
"emails.certificate.footer": "Váš predchádzajúci certifikát bude platný 30 dní od prvého zlyhania. Dôrazne odporúčame vyšetrenie tohto prípadu, inak váš doménový názov zostane bez platnej SSL komunikácie.",
"emails.certificate.thanks": "Ďakujem",
"emails.certificate.signature": "tím {{project}}",
"sms.verification.body": "{{secret}} je váš overovací kód pre {{project}}.",
"emails.magicSession.securityPhrase": "Bezpečnostná fráza pre tento email je {{phrase}}. Tomuto emailu môžete dôverovať, ak sa táto fráza zhoduje s frázou zobrazenou počas prihlásenia.",
"emails.magicSession.optionUrl": "Ak sa vám nedarí prihlásiť sa pomocou vyššie uvedeného tlačidla, prosím navštívte nasledujúci odkaz:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Evropa",
"continents.na": "Severna Amerika",
"continents.oc": "Oceanija",
"continents.sa": "Južna Amerika"
"continents.sa": "Južna Amerika",
"emails.magicSession.optionButton": "Kliknite spodnji gumb, da se varno prijavite v svoj {{project}} račun. Poteče čez 1 uro.",
"emails.magicSession.buttonText": "Vpišite se v {{project}}",
"emails.magicSession.clientInfo": "Ta prijava je bila zahtevana z uporabo {{agentClient}} na {{agentDevice}} {{agentOs}}. Če te prijave niste zahtevali, lahko to e-pošto varno prezrete.",
"emails.certificate.subject": "Napaka potrdila za %s",
"emails.certificate.hello": "Živijo",
"emails.certificate.body": "Potrdilo za vaše domeno '{{domain}}' ni bilo mogoče ustvariti. To je poskus št. {{attempt}}, napako pa je povzročilo: {{error}}",
"emails.certificate.footer": "Vaše prejšnje potrdilo bo veljavno 30 dni od prve napake. Močno priporočamo, da to zadevo preučite, saj bo sicer vaše domeno brez veljavne SSL komunikacije.",
"emails.certificate.thanks": "Hvala",
"emails.certificate.signature": "{{project}} ekipa",
"sms.verification.body": "{{secret}} je vaša koda za preverjanje {{project}}.",
"emails.magicSession.securityPhrase": "Varnostni stavek za to e-pošto je {{phrase}}. Temu e-poštu lahko zaupate, če se ta stavek ujema s stavkom, prikazanim ob prijavi.",
"emails.magicSession.optionUrl": "Če se ne morete prijaviti s pomočjo zgornjega gumba, prosimo obiščite naslednjo povezavo:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europe",
"continents.na": "North America",
"continents.oc": "Oceania",
"continents.sa": "South America"
"continents.sa": "South America",
"emails.magicSession.optionButton": "Cliquez sur le bouton ci-dessous pour vous connecter de manière sécurisée à votre compte {{project}}. Il expirera dans 1 heure.",
"emails.magicSession.buttonText": "Connectez-vous à {{project}}",
"emails.magicSession.clientInfo": "Cette connexion a été demandée en utilisant {{agentClient}} sur {{agentDevice}} {{agentOs}}. Si vous n'avez pas demandé cette connexion, vous pouvez ignorer cet e-mail en toute sécurité.",
"emails.certificate.subject": "Échec du certificat pour %s",
"emails.certificate.hello": "Bonjour",
"emails.certificate.body": "Le certificat pour votre domaine '{{domain}}' n'a pas pu être généré. C'est la tentative n° {{attempt}}, et l'échec a été causé par : {{error}}",
"emails.certificate.footer": "Votre certificat précédent sera valable pendant 30 jours après le premier échec. Nous vous recommandons vivement d'enquêter sur ce cas, sinon votre domaine se retrouvera sans communication SSL valide.",
"emails.certificate.thanks": "Merci",
"emails.certificate.signature": "équipe {{project}}",
"sms.verification.body": "{{secret}} mooy sa koodu vérificationu {{project}} bi.",
"emails.magicSession.securityPhrase": "La phrase de sécurité pour ce courriel est {{phrase}}. Vous pouvez faire confiance à ce courriel si cette phrase correspond à la phrase affichée lors de la connexion.",
"emails.magicSession.optionUrl": "Si vous ne pouvez pas vous connecter en utilisant le bouton ci-dessus, veuillez visiter le lien suivant :"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Evropë",
"continents.na": "Amerika e Veriut",
"continents.oc": "Oqeani",
"continents.sa": "Amerika e Jugut"
"continents.sa": "Amerika e Jugut",
"emails.magicSession.optionButton": "Klikoni butonin më poshtë për të hyrë në mënyrë të sigurt në llogarinë tuaj {{project}}. Do të skadojë në 1 orë.",
"emails.magicSession.buttonText": "Kyçu në {{project}}",
"emails.magicSession.clientInfo": "Ky hyrje është kërkuar duke përdorur {{agentClient}} në {{agentDevice}} {{agentOs}}. Nëse nuk e keni kërkuar hyrjen, mund ta injoroni këtë email pa pasur shqetësim.",
"emails.certificate.subject": "Dështim i certifikatës për %s",
"emails.certificate.hello": "Përshëndetje",
"emails.certificate.body": "Certifikata për domain-in tuaj '{{domain}}' nuk mund të gjenerohej. Ky është përpjekja nr. {{attempt}}, dhe dështimi u shkaktua nga: {{error}}",
"emails.certificate.footer": "Certifikata juaj e mëparshme do të jetë e vlefshme për 30 ditë që nga dështimi i parë. Ju rekomandojmë fuqishëm të hetoni këtë rast, përndryshe domeni juaj do të mbetet pa një komunikim të vlefshëm SSL.",
"emails.certificate.thanks": "Faleminderit",
"emails.certificate.signature": "ekipi i {{project}}",
"sms.verification.body": "{{secret}} është kodi juaj i verifikimit për {{project}}.",
"emails.magicSession.securityPhrase": "Fjalia e sigurisë për këtë email është {{phrase}}. Mund të besoni këtë email nëse kjo fjali përputhet me fjalën e shfaqur gjatë hyrjes në sistem.",
"emails.magicSession.optionUrl": "Nëse nuk mund të hyni duke përdorur butonin më sipër, ju lutem vizitoni lidhjen e mëposhtme:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Nordamerika",
"continents.oc": "Oceanien",
"continents.sa": "Sydamerika"
"continents.sa": "Sydamerika",
"emails.magicSession.optionButton": "Klicka på knappen nedan för att säkert logga in på ditt {{project}} konto. Den kommer att gå ut om 1 timme.",
"emails.magicSession.buttonText": "Inicia sesión en {{project}}",
"emails.magicSession.clientInfo": "Den här inloggningen begärdes med hjälp av {{agentClient}} på {{agentDevice}} {{agentOs}}. Om du inte begärde inloggningen kan du bortse från det här e-postmeddelandet.",
"emails.certificate.subject": "Fallo del certificado para %s",
"emails.certificate.hello": "Hej",
"emails.certificate.body": "Certifikatet för din domän '{{domain}}' kunde inte skapas. Detta är försök nr {{attempt}}, och felet orsakades av: {{error}}",
"emails.certificate.footer": "Ditt tidigare certifikat kommer att vara giltigt i 30 dagar från det första felet. Vi rekommenderar starkt att du undersöker detta fall, annars kommer din domän att sluta utan en giltig SSL-kommunikation.",
"emails.certificate.thanks": "Tack",
"emails.certificate.signature": "equipo {{project}}",
"sms.verification.body": "{{secret}} är din {{project}} verifieringskod.",
"emails.magicSession.securityPhrase": "Frasen för säkerhet i detta e-postmeddelande är {{phrase}}. Du kan lita på detta e-postmeddelande om frasen stämmer överens med den fras som visas vid inloggning.",
"emails.magicSession.optionUrl": "Si no puedes iniciar sesión utilizando el botón de arriba, por favor visita el siguiente enlace:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ஐரோப்பா",
"continents.na": "வட அமெரிக்கா",
"continents.oc": "ஓசியானியா",
"continents.sa": "தென் அமெரிக்கா"
"continents.sa": "தென் அமெரிக்கா",
"emails.magicSession.optionButton": "கீழே உள்ள பொத்தானை அழுத்தி, உங்கள் {{project}} கணக்கில் பாதுகாப்பாக உள்நுழையவும். இது 1 மணி நேரத்தில் காலாவதியாகும்.",
"emails.magicSession.buttonText": "{{project}} இல் உள்நுழைக",
"emails.magicSession.clientInfo": "இந்த உள்நுழைவு {{agentClient}} மூலம் {{agentDevice}} {{agentOs}} இல் கோரப்பட்டது. நீங்கள் உள்நுழைவு கோரவில்லை என்றால், இந்த மின்னஞ்சலை புறக்கணிக்கலாம்.",
"emails.certificate.subject": "%s சான்றிதழ் தோல்வி",
"emails.certificate.hello": "வணக்கம்",
"emails.certificate.body": "உங்கள் டொமைன் '{{domain}}' க்கான சான்றிதழ் உருவாக்க முடியவில்லை. இது முயற்சியின் எண் {{attempt}}, மற்றும் தோல்விக்கு காரணமாக இருந்தது: {{error}}",
"emails.certificate.footer": "உங்களுடைய முந்தைய சான்றிதழ் முதல் தவறு ஏற்பட்ட நாளிலிருந்து 30 நாட்கள் வரை செல்லுபடியாகும். இந்த வழக்கை ஆராய்வதை நாங்கள் மிகவும் பரிந்துரைக்கிறோம், இல்லையெனில் உங்களுடைய டொமைன் செல்லுபடியான SSL தகவல் தொடர்பை இழந்துவிடும்.",
"emails.certificate.thanks": "நன்றி",
"emails.certificate.signature": "{{project}} குழு",
"sms.verification.body": "{{secret}} உங்கள் {{project}} சரிபார்ப்பு குறியீடு ஆகும்.",
"emails.magicSession.securityPhrase": "இந்த மின்னஞ்சலுக்கான பாதுகாப்பு வாசகம் {{phrase}}. இந்த வாசகம் உள்நுழைவு போது காட்டப்பட்ட வாசகத்துடன் பொருந்தும் போது இந்த மின்னஞ்சலை நம்பலாம்.",
"emails.magicSession.optionUrl": "மேலே உள்ள பொத்தானை பயன்படுத்தி உள்நுழைய முடியாவிட்டால், கீழே உள்ள இணைப்பை பார்வையிடவும்:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "యూరోప్",
"continents.na": "ఉత్తర అమెరికా",
"continents.oc": "ఓషియానియా",
"continents.sa": "దక్షిణ అమెరికా"
}
"continents.sa": "దక్షిణ అమెరికా",
"emails.magicSession.optionButton": "కింది బటన్ ను నొక్కి భద్రతగా మీ {{project}} ఖాతాలో సైన్ ఇన్ చేయండి. ఇది 1 గంటలో గడువు తీరుతుంది.",
"emails.magicSession.buttonText": "{{project}}లో సైన్ ఇన్ చేయండి",
"emails.magicSession.clientInfo": "ఈ సైన్ ఇన్ అభ్యర్థనను {{agentClient}} ఉపయోగించి {{agentDevice}} {{agentOs}} పై అభ్యర్థించారు. మీరు ఈ సైన్ ఇన్ అభ్యర్థనను చేయలేదనుకుంటే, ఈ ఈమెయిల్‌ను సురక్షితంగా పట్టించుకోకుండా ఉండవచ్చు.",
"emails.certificate.subject": "%s కోసం సర్టిఫికేట్ విఫలం",
"emails.certificate.hello": "హలో",
"emails.certificate.body": "మీ డొమైన్ '{{domain}}' కోసం సర్టిఫికెట్ జారీ చేయలేకపోయాము. ఇది {{attempt}} ప్రయత్నం, మరియు విఫలం కారణం ఇది: {{error}}",
"emails.certificate.footer": "మీ మునుపటి సర్టిఫికెట్‌ మొదటి వైఫల్యం నుండి 30 రోజుల వరకు చెల్లుబాటు అవుతుంది. ఈ కేసును పరిశోధించడం మాకు ఎంతో ముఖ్యంగా సిఫార్సు ఉంది, లేకపోతే మీ డొమేన్ చెల్లుబాటు అయిన SSL కమ్యూనికేషన్ లేకుండా మిగిలిపోతుంది.",
"emails.certificate.thanks": "ధన్యవాదాలు",
"emails.certificate.signature": "{{project}} జట్టు",
"sms.verification.body": "{{secret}} మీ {{project}} ధృవీకరణ కోడ్.",
"emails.magicSession.securityPhrase": "ఈ ఇమెయిల్ కోసం భద్రతా పదబంధం {{phrase}}. మీరు సైన్ ఇన్ సమయంలో చూపబడిన పదబంధంతో ఈ పదబంధం సరిపోలుతుంది అయితే ఈ ఇమెయిల్ నమ్మవచ్చు.",
"emails.magicSession.optionUrl": "పైన ఉన్న బటన్‌ను ఉపయోగించి సైన్ ఇన్ చేయలేకపోతే, దయచేసి క్రింది లింక్‌ను సందర్శించండి:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "ยุโรป",
"continents.na": "อเมริกาเหนือ",
"continents.oc": "โอเชียเนีย",
"continents.sa": "อเมริกาใต้"
"continents.sa": "อเมริกาใต้",
"emails.magicSession.optionButton": "คลิกที่ปุ่มด้านล่างเพื่อเข้าสู่บัญชี {{project}} ของคุณอย่างปลอดภัย ลิงก์นี้จะหมดอายุใน 1 ชั่วโมง",
"emails.magicSession.buttonText": "เข้าสู่ระบบใน {{project}}",
"emails.magicSession.clientInfo": "การลงชื่อเข้าใช้นี้ถูกขอใช้งานผ่าน {{agentClient}} บน {{agentDevice}} {{agentOs}} หากคุณไม่ได้ขอลงชื่อเข้าใช้นี้ คุณสามารถละเลยอีเมลนี้ได้อย่างปลอดภัย",
"emails.certificate.subject": "หนังสือรับรองล้มเหลวสำหรับ %s",
"emails.certificate.hello": "สวัสดี",
"emails.certificate.body": "ใบรับรองสำหรับโดเมน '{{domain}}' ไม่สามารถสร้างได้ นี่เป็นความพยายามครั้งที่ {{attempt}} และความล้มเหลวเกิดจาก: {{error}}",
"emails.certificate.footer": "ใบรับรองก่อนหน้านี้ของคุณจะยังใช้งานได้เป็นเวลา 30 วันนับจากวันที่ล้มเหลวครั้งแรก เราขอแนะนำอย่างยิ่งให้คุณสืบสวนกรณีนี้ มิฉะนั้นโดเมนของคุณจะไม่มีการสื่อสาร SSL ที่ถูกต้อง",
"emails.certificate.thanks": "ขอบคุณ",
"emails.certificate.signature": "ทีม {{project}}",
"sms.verification.body": "{{secret}} เป็นรหัสการตรวจสอบ{{project}}ของคุณ.",
"emails.magicSession.securityPhrase": "วลีรักษาความปลอดภัยสำหรับอีเมลนี้คือ {{phrase}} คุณสามารถเชื่อถืออีเมลนี้ได้หากวลีนี้ตรงกับวลีที่แสดงในระหว่างการเข้าสู่ระบบ",
"emails.magicSession.optionUrl": "หากคุณไม่สามารถเข้าสู่ระบบโดยใช้ปุ่มด้านบน โปรดเยี่ยมชมลิงก์ต่อไปนี้:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Europa",
"continents.na": "Hilagang Amerika",
"continents.oc": "Oceania",
"continents.sa": "Timog Amerika"
"continents.sa": "Timog Amerika",
"emails.magicSession.optionButton": "I-click ang pindutan sa ibaba upang ligtas na mag-sign in sa iyong {{project}} account. Ito ay mag-eexpire sa loob ng 1 oras.",
"emails.magicSession.buttonText": "Mag-sign in sa {{project}}",
"emails.magicSession.clientInfo": "Ang pag-sign in na ito ay hiniling gamit ang {{agentClient}} sa {{agentDevice}} {{agentOs}}. Kung hindi ikaw ang humiling ng pag-sign in na ito, maaari mong ligtas na huwag pansinin ang email na ito.",
"emails.certificate.subject": "Sertipiko ng kabiguan para sa %s",
"emails.certificate.hello": "Kamusta",
"emails.certificate.body": "Sertipiko para sa iyong domain na '{{domain}}' ay hindi nabuo. Ito ay tangka bilang {{attempt}}, at ang kabiguan ay dulot ng: {{error}}",
"emails.certificate.footer": "Ang iyong naunang sertipiko ay magiging balido sa loob ng 30 araw simula ng unang kabiguan. Mataas ang inirerekomenda namin na imbestigahan ang kasong ito, kung hindi ay magtatapos ang iyong domain na walang balidong SSL na komunikasyon.",
"emails.certificate.thanks": "Salamat",
"emails.certificate.signature": "{{project}} koponan",
"sms.verification.body": "{{secret}} ay ang iyong {{project}} verification code.",
"emails.magicSession.securityPhrase": "Ang pariralang pangseguridad para sa email na ito ay {{phrase}}. Maaari mong pagkatiwalaan ang email na ito kung ang pariralang ito ay tumutugma sa pariralang ipinakita noong nag-sign in ka.",
"emails.magicSession.optionUrl": "Kung hindi ka makapag-sign in gamit ang pindutan sa itaas, mangyaring bisitahin ang sumusunod na link:"
}

View file

@ -234,5 +234,11 @@
"continents.eu": "Avrupa",
"continents.na": "Kuzey Amerika",
"continents.oc": "Okyanusya",
"continents.sa": "Güney Amerika"
}
"continents.sa": "Güney Amerika",
"emails.magicSession.optionButton": "Aşağıdaki butona tıklayarak {{project}} hesabınıza güvenli bir şekilde giriş yapın. Bu bağlantı bir saat sonra geçerliliğini yitirecektir.",
"emails.magicSession.buttonText": "{{project}}'a giriş yapın",
"emails.magicSession.optionUrl": "Yukarıdaki buton gözükmezse, aşağıdaki bağlantıyı kullanın:",
"emails.magicSession.clientInfo": "Bu oturum açma işlemi, {{agentClient}} kullanılarak {{agentDevice}} {{agentOs}} üzerinde istendi. Eğer oturum açma işlemini siz talep etmediyseniz, bu e-postayı güvenle yok sayabilirsiniz.",
"sms.verification.body": "{{secret}} sizin {{project}} doğrulama kodunuzdur.",
"emails.magicSession.securityPhrase": "Bu e-postanın güvenlik ifadesi {{phrase}}'dir. Bu ifade, giriş sırasında gösterilen ifadeyle eşleşiyorsa bu e-postaya güvenebilirsiniz."
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Європа",
"continents.na": "Північна Америка",
"continents.oc": "Океанія",
"continents.sa": "Південна Америка"
}
"continents.sa": "Південна Америка",
"emails.magicSession.optionButton": "Натисніть кнопку нижче, щоб безпечно увійти в свій обліковий запис {{project}}. Термін дії закінчиться через 1 годину.",
"emails.magicSession.buttonText": "Увійти в {{project}}",
"emails.magicSession.clientInfo": "Цей запит на вхід було здійснено за допомогою {{agentClient}} на {{agentDevice}} {{agentOs}}. Якщо ви не надсилали запит на вхід, ви можете сміливо ігнорувати цей електронний лист.",
"emails.certificate.subject": "Сертифікат не вдалося для %s",
"emails.certificate.hello": "Вітаю",
"emails.certificate.body": "Сертифікат для вашого домену '{{domain}}' не може бути створений. Це спроба № {{attempt}}, а причина збою: {{error}}",
"emails.certificate.footer": "Ваш попередній сертифікат буде дійсний протягом 30 днів з моменту першої помилки. Ми настійно рекомендуємо розслідувати цей випадок, інакше ваш домен залишиться без дійсного SSL-шифрування.",
"emails.certificate.thanks": "Дякую",
"emails.certificate.signature": "команда {{project}}",
"sms.verification.body": "{{secret}} є вашим кодом підтвердження для {{project}}.",
"emails.magicSession.securityPhrase": "Фраза безпеки для цього листа - {{phrase}}. Ви можете довіряти цьому листу, якщо ця фраза збігається з фразою, показаною під час входу в систему.",
"emails.magicSession.optionUrl": "Якщо вам не вдається увійти, використовуючи кнопку вище, будь ласка, перейдіть за наступним посиланням:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "یورپ",
"continents.na": "شمالی امریکہ",
"continents.oc": "اوشینیا",
"continents.sa": "جنوبی امریکہ"
}
"continents.sa": "جنوبی امریکہ",
"emails.magicSession.optionButton": "نیچے دیئے گئے بٹن پر کلک کرکے اپنے {{project}} اکاؤنٹ میں محفوظ طریقے سے سائن ان کریں۔ یہ ایک گھنٹے میں ختم ہو جائے گا۔",
"emails.magicSession.buttonText": "{{project}} میں سائن ان کریں",
"emails.magicSession.clientInfo": "یہ سائن ان {{agentClient}} کا استعمال کرتے ہوئے {{agentDevice}} {{agentOs}} پر کی گئی تھی۔ اگر آپ نے سائن ان کی درخواست نہیں کی تھی، تو آپ اس ایمیل کو نظرانداز کر سکتے ہیں۔",
"emails.certificate.subject": "%s کے لیے سرٹیفکیٹ کی ناکامی",
"emails.certificate.hello": "ہیلو",
"emails.certificate.body": "آپ کے ڈومین '{{domain}}' کے لئے سرٹیفکیٹ تیار نہیں کیا جا سکا۔ یہ کوشش نمبر {{attempt}} ہے، اور ناکامی کی وجہ یہ رہی: {{error}}",
"emails.certificate.footer": "آپ کا پچھلا سرٹیفیکیٹ پہلی ناکامی کے بعد سے 30 دن کے لیے درست ہوگا۔ ہم آپ کو شدید تاکید کرتے ہیں کہ اس معاملے کی تحقیق کریں، بصورت دیگر آپ کا ڈومین بغیر کسی درست SSL مواصلات کے رہ جائے گا۔",
"emails.certificate.thanks": "شکریہ",
"emails.certificate.signature": "ٹیم {{project}}",
"sms.verification.body": "{{secret}} آپ کے {{project}} تصدیقی کوڈ ہے۔",
"emails.magicSession.securityPhrase": "اس ای میل کے لئے سیکیورٹی جملہ {{phrase}} ہے۔ اگر یہ جملہ سائن ان کے دوران دکھائے گئے جملے سے میل کھاتا ہے تو آپ اس ای میل پر بھروسہ کرسکتے ہیں۔",
"emails.magicSession.optionUrl": "اگر آپ اوپر دیے گئے بٹن کا استعمال کرکے سائن ان نہیں کر سکتے تو براہ کرم مندرجہ ذیل لنک پر جائیں:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "Châu Âu",
"continents.na": "Bắc Mỹ",
"continents.oc": "Châu Đại Dương",
"continents.sa": "Nam Mỹ"
"continents.sa": "Nam Mỹ",
"emails.magicSession.optionButton": "Nhấp vào nút bên dưới để đăng nhập an toàn vào tài khoản {{project}} của bạn. Nó sẽ hết hạn sau 1 giờ.",
"emails.magicSession.buttonText": "Đăng nhập vào {{project}}",
"emails.magicSession.clientInfo": "Yêu cầu đăng nhập này được thực hiện bằng {{agentClient}} trên {{agentDevice}} {{agentOs}}. Nếu bạn không yêu cầu đăng nhập, bạn có thể bỏ qua email này một cách an toàn.",
"emails.certificate.subject": "Lỗi chứng chỉ cho %s",
"emails.certificate.hello": "Xin chào",
"emails.certificate.body": "Chứng chỉ cho tên miền của bạn '{{domain}}' không thể được tạo ra. Đây là lần thử thứ {{attempt}}, và sự cố xảy ra do: {{error}}",
"emails.certificate.footer": "Chứng chỉ trước đây của bạn sẽ còn hiệu lực trong 30 ngày kể từ lần thất bại đầu tiên. Chúng tôi rất khuyến nghị bạn điều tra vụ việc này, nếu không miền của bạn sẽ kết thúc mà không có một sự giao tiếp SSL hợp lệ.",
"emails.certificate.thanks": "Cảm ơn",
"emails.certificate.signature": "đội {{project}}",
"sms.verification.body": "{{secret}} là mã xác minh {{project}} của bạn.",
"emails.magicSession.securityPhrase": "Cụm từ bảo mật cho email này là {{phrase}}. Bạn có thể tin tưởng email này nếu cụm từ này khớp với cụm từ hiển thị khi đăng nhập.",
"emails.magicSession.optionUrl": "Nếu bạn không thể đăng nhập bằng cách sử dụng nút ở trên, vui lòng truy cập liên kết sau:"
}

View file

@ -228,5 +228,17 @@
"continents.eu": "欧洲",
"continents.na": "北美洲",
"continents.oc": "大洋洲",
"continents.sa": "南美洲"
}
"continents.sa": "南美洲",
"emails.magicSession.optionButton": "点击下面的按钮安全登录您的{{project}}账户。该按钮将在1小时后过期。",
"emails.magicSession.buttonText": "登录{{project}}",
"emails.magicSession.clientInfo": "此登录是通过{{agentClient}}在{{agentDevice}} {{agentOs}}上请求的。如果你没有请求登录,可以放心地忽略此邮件。",
"emails.certificate.subject": "%s 的证书失败",
"emails.certificate.hello": "你好",
"emails.certificate.body": "无法为您的域名“{{domain}}”生成证书。这是第{{attempt}}次尝试,失败的原因是:{{error}}。",
"emails.certificate.footer": "您之前的证书自首次失败之日起将有效期30天。我们强烈建议调查此案件否则您的域名将没有有效的SSL通信。",
"emails.certificate.thanks": "谢谢",
"emails.certificate.signature": "{{project}} 团队",
"sms.verification.body": "{{secret}} 是您的 {{project}} 验证码。",
"emails.magicSession.securityPhrase": "此电子邮件的安全短语是{{phrase}}。如果此短语与登录时显示的短语相匹配,则您可以信任此电子邮件。",
"emails.magicSession.optionUrl": "如果您无法使用上面的按钮登录,请访问以下链接:"
}

View file

@ -234,5 +234,11 @@
"continents.eu": "歐洲",
"continents.na": "北美洲",
"continents.oc": "大洋洲",
"continents.sa": "南美洲"
}
"continents.sa": "南美洲",
"emails.magicSession.optionButton": "點擊下方按鈕安全登入您的{{project}}帳號。該按鈕將於1小時後失效。",
"emails.magicSession.buttonText": "登入 {{project}}",
"emails.magicSession.optionUrl": "如果上面的按鈕沒有顯示,請使用以下鏈接:",
"emails.magicSession.clientInfo": "這次的登入是透過{{agentClient}}在{{agentDevice}} {{agentOs}}上請求的。如果您沒有請求這次登入,您可以放心地忽略這封電子郵件。",
"sms.verification.body": "{{secret}} 是您的 {{project}} 驗證碼。",
"emails.magicSession.securityPhrase": "這封電子郵件的安全密語是{{phrase}}。如果此密語與登入時顯示的密語相符,您就可以信任此郵件。"
}

View file

@ -8,7 +8,9 @@ $member = [
'home',
'console',
'graphql',
'account',
'sessions.write',
'accounts.read',
'accounts.write',
'teams.read',
'teams.write',
'documents.read',
@ -31,6 +33,7 @@ $member = [
$admins = [
'global',
'graphql',
'sessions.write',
'teams.read',
'teams.write',
'documents.read',
@ -85,6 +88,7 @@ return [
'home',
'console',
'graphql',
'sessions.write',
'documents.read',
'documents.write',
'files.read',

View file

@ -1,6 +1,15 @@
<?php
return [ // List of publicly visible scopes
'accounts.read' => [
'description' => 'Access to read your active user account',
],
'accounts.write' => [
'description' => 'Access to create, update, and delete your active user account',
],
'sessions.write' => [
'description' => 'Access to create, update, and delete user sessions',
],
'users.read' => [
'description' => 'Access to read your project\'s users',
],

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -115,14 +115,6 @@ return [
'question' => '',
'filter' => ''
],
// [
// 'name' => '_APP_CONSOLE_WHITELIST_DOMAINS',
// 'description' => 'This option allows you to limit creation of users to Appwrite console for users sharing the same email domains. This option is very useful for team working with company emails domain.\n\nTo enable this option, pass a list of allowed email domains separated by a comma.',
// 'introduction' => '',
// 'default' => '',
// 'required' => false,
// 'question' => '',
// ],
[
'name' => '_APP_CONSOLE_WHITELIST_IPS',
'description' => "This last option allows you to limit creation of users in Appwrite console for users sharing the same set of IP addresses. This option is very useful for team working with a VPN service or a company IP.\n\nTo enable/activate this option, pass a list of allowed IP addresses separated by a comma.",
@ -132,6 +124,15 @@ return [
'question' => '',
'filter' => ''
],
[
'name' => '_APP_CONSOLE_HOSTNAMES',
'description' => 'This option allows you to add additional hostnames to your Appwrite console. This option is very useful for allowing access to the console project from additional domains. To enable it, pass a list of allowed hostnames separated by a comma.',
'introduction' => '1.5.0',
'default' => '',
'required' => false,
'question' => '',
'filter' => ''
],
[
'name' => '_APP_SYSTEM_EMAIL_NAME',
'description' => 'This is the sender name value that will appear on email messages sent to developers from the Appwrite console. The default value is: \'Appwrite\'. You can use url encoded strings for spaces and special chars.',

File diff suppressed because it is too large Load diff

View file

@ -228,6 +228,7 @@ App::post('/v1/functions')
fn () => $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'), // Todo replace with projects region
'resourceType' => 'function',
'resourceCollection' => 'functions',
'resourceId' => $function->getId(),
'resourceInternalId' => $function->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),

View file

@ -2,6 +2,7 @@
use Appwrite\Auth\Validator\Phone;
use Appwrite\Detector\Detector;
use Appwrite\Enum\MessageStatus;
use Appwrite\Event\Delete;
use Appwrite\Event\Event;
use Appwrite\Event\Messaging;
@ -13,6 +14,7 @@ use Appwrite\Utopia\Database\Validator\CustomId;
use Appwrite\Utopia\Database\Validator\Queries\Messages;
use Appwrite\Utopia\Database\Validator\Queries\Providers;
use Appwrite\Utopia\Database\Validator\Queries\Subscribers;
use Appwrite\Utopia\Database\Validator\Queries\Targets;
use Appwrite\Utopia\Database\Validator\Queries\Topics;
use Appwrite\Utopia\Response;
use Utopia\App;
@ -35,6 +37,7 @@ use Utopia\Validator\Integer;
use Utopia\Validator\JSON;
use Utopia\Validator\Text;
use MaxMind\Db\Reader;
use Utopia\Database\DateTime;
use Utopia\Validator\WhiteList;
use function Swoole\Coroutine\batch;
@ -601,7 +604,7 @@ App::post('/v1/messaging/providers/fcm')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'createFcmProvider')
->label('sdk.method', 'createFCMProvider')
->label('sdk.description', '/docs/references/messaging/create-fcm-provider.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -660,7 +663,7 @@ App::post('/v1/messaging/providers/apns')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'createApnsProvider')
->label('sdk.method', 'createAPNSProvider')
->label('sdk.description', '/docs/references/messaging/create-apns-provider.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -671,12 +674,11 @@ App::post('/v1/messaging/providers/apns')
->param('authKeyId', '', new Text(0), 'APNS authentication key ID.', true)
->param('teamId', '', new Text(0), 'APNS team ID.', true)
->param('bundleId', '', new Text(0), 'APNS bundle ID.', true)
->param('endpoint', '', new Text(0), 'APNS endpoint.', true)
->param('enabled', null, new Boolean(), 'Set as enabled.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('response')
->action(function (string $providerId, string $name, string $authKey, string $authKeyId, string $teamId, string $bundleId, string $endpoint, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) {
->action(function (string $providerId, string $name, string $authKey, string $authKeyId, string $teamId, string $bundleId, ?bool $enabled, Event $queueForEvents, Database $dbForProject, Response $response) {
$providerId = $providerId == 'unique()' ? ID::unique() : $providerId;
$credentials = [];
@ -697,17 +699,12 @@ App::post('/v1/messaging/providers/apns')
$credentials['bundleId'] = $bundleId;
}
if (!empty($endpoint)) {
$credentials['endpoint'] = $endpoint;
}
if (
$enabled === true
&& \array_key_exists('authKey', $credentials)
&& \array_key_exists('authKeyId', $credentials)
&& \array_key_exists('teamId', $credentials)
&& \array_key_exists('bundleId', $credentials)
&& \array_key_exists('endpoint', $credentials)
) {
$enabled = true;
} else {
@ -1492,7 +1489,7 @@ App::patch('/v1/messaging/providers/fcm/:providerId')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'updateFcmProvider')
->label('sdk.method', 'updateFCMProvider')
->label('sdk.description', '/docs/references/messaging/update-fcm-provider.md')
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -1553,7 +1550,7 @@ App::patch('/v1/messaging/providers/apns/:providerId')
->label('scope', 'providers.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'updateApnsProvider')
->label('sdk.method', 'updateAPNSProvider')
->label('sdk.description', '/docs/references/messaging/update-apns-provider.md')
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -1565,11 +1562,10 @@ App::patch('/v1/messaging/providers/apns/:providerId')
->param('authKeyId', '', new Text(0), 'APNS authentication key ID.', true)
->param('teamId', '', new Text(0), 'APNS team ID.', true)
->param('bundleId', '', new Text(0), 'APNS bundle ID.', true)
->param('endpoint', '', new Text(0), 'APNS endpoint.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('response')
->action(function (string $providerId, string $name, ?bool $enabled, string $authKey, string $authKeyId, string $teamId, string $bundleId, string $endpoint, Event $queueForEvents, Database $dbForProject, Response $response) {
->action(function (string $providerId, string $name, ?bool $enabled, string $authKey, string $authKeyId, string $teamId, string $bundleId, Event $queueForEvents, Database $dbForProject, Response $response) {
$provider = $dbForProject->getDocument('providers', $providerId);
if ($provider->isEmpty()) {
@ -1603,10 +1599,6 @@ App::patch('/v1/messaging/providers/apns/:providerId')
$credentials['bundle'] = $bundleId;
}
if (!empty($endpoint)) {
$credentials['endpoint'] = $endpoint;
}
$provider->setAttribute('credentials', $credentials);
if ($enabled === true || $enabled === false) {
@ -1616,7 +1608,6 @@ App::patch('/v1/messaging/providers/apns/:providerId')
&& \array_key_exists('authKeyId', $credentials)
&& \array_key_exists('teamId', $credentials)
&& \array_key_exists('bundleId', $credentials)
&& \array_key_exists('endpoint', $credentials)
) {
$enabled = true;
} else {
@ -1696,12 +1687,9 @@ App::post('/v1/messaging/topics')
$topic = new Document([
'$id' => $topicId,
'name' => $name,
'description' => $description
]);
if ($description) {
$topic->setAttribute('description', $description);
}
try {
$topic = $dbForProject->createDocument('topics', $topic);
} catch (DuplicateException) {
@ -1991,19 +1979,27 @@ App::post('/v1/messaging/topics/:topicId/subscribers')
$user = Authorization::skip(fn () => $dbForProject->getDocument('users', $target->getAttribute('userId')));
$userId = $user->getId();
$subscriber = new Document([
'$id' => $subscriberId,
'$permissions' => [
Permission::read(Role::user($user->getId())),
Permission::delete(Role::user($user->getId())),
Permission::read(Role::user($userId)),
Permission::delete(Role::user($userId)),
],
'topicId' => $topicId,
'topicInternalId' => $topic->getInternalId(),
'targetId' => $targetId,
'targetInternalId' => $target->getInternalId(),
'userId' => $user->getId(),
'userId' => $userId,
'userInternalId' => $user->getInternalId(),
'providerType' => $target->getAttribute('providerType'),
'search' => implode(' ', [
$subscriberId,
$targetId,
$userId,
$target->getAttribute('providerType'),
]),
]);
try {
@ -2268,7 +2264,7 @@ App::post('/v1/messaging/messages/email')
->label('scope', 'messages.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'createEmailMessage')
->label('sdk.method', 'createEmail')
->label('sdk.description', '/docs/references/messaging/create-email.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -2282,23 +2278,28 @@ App::post('/v1/messaging/messages/email')
->param('cc', [], new ArrayList(new UID()), 'Array of target IDs to be added as CC.', true)
->param('bcc', [], new ArrayList(new UID()), 'Array of target IDs to be added as BCC.', true)
->param('description', '', new Text(256), 'Description for message.', true)
->param('status', 'processing', new WhiteList(['draft', 'canceled', 'processing']), 'Message Status. Value must be either draft or cancelled or processing.', true)
->param('status', MessageStatus::DRAFT, new WhiteList([MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]), 'Message Status. Value must be one of: ' . implode(', ', [MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]) . '.', true)
->param('html', false, new Boolean(), 'Is content of type HTML', true)
->param('scheduledAt', null, new DatetimeValidator(requireDateInFuture: true), 'Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('dbForConsole')
->inject('project')
->inject('queueForMessaging')
->inject('response')
->action(function (string $messageId, string $subject, string $content, array $topics, array $users, array $targets, array $cc, array $bcc, string $description, string $status, bool $html, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Document $project, Messaging $queueForMessaging, Response $response) {
->action(function (string $messageId, string $subject, string $content, array $topics, array $users, array $targets, array $cc, array $bcc, string $description, string $status, bool $html, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Database $dbForConsole, Document $project, Messaging $queueForMessaging, Response $response) {
$messageId = $messageId == 'unique()'
? ID::unique()
: $messageId;
if (\count($topics) === 0 && \count($users) === 0 && \count($targets) === 0) {
if ($status !== MessageStatus::DRAFT && \count($topics) === 0 && \count($users) === 0 && \count($targets) === 0) {
throw new Exception(Exception::MESSAGE_MISSING_TARGET);
}
if ($status === MessageStatus::SCHEDULED && \is_null($scheduledAt)) {
throw new Exception(Exception::MESSAGE_MISSING_SCHEDULE);
}
$mergedTargets = \array_merge($targets, $cc, $bcc);
if (!empty($mergedTargets)) {
@ -2326,6 +2327,7 @@ App::post('/v1/messaging/messages/email')
'users' => $users,
'targets' => $targets,
'description' => $description,
'scheduledAt' => $scheduledAt,
'data' => [
'subject' => $subject,
'content' => $content,
@ -2336,11 +2338,35 @@ App::post('/v1/messaging/messages/email')
'status' => $status,
]));
if ($status === 'processing') {
$queueForMessaging
->setMessageId($message->getId())
->setProject($project)
->trigger();
switch ($status) {
case MessageStatus::PROCESSING:
$queueForMessaging
->setMessageId($message->getId())
->trigger();
break;
case MessageStatus::SCHEDULED:
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceCollection' => 'messages',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),
'projectId' => $project->getId(),
'schedule' => $scheduledAt,
'active' => true,
]));
$message->setAttribute('scheduleId', $schedule->getId());
$dbForProject->updateDocument(
'messages',
$message->getId(),
$message
);
break;
default:
break;
}
$queueForEvents
@ -2360,7 +2386,7 @@ App::post('/v1/messaging/messages/sms')
->label('scope', 'messages.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'createSMSMessage')
->label('sdk.method', 'createSMS')
->label('sdk.description', '/docs/references/messaging/create-sms.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -2371,35 +2397,42 @@ App::post('/v1/messaging/messages/sms')
->param('users', [], new ArrayList(new UID()), 'List of User IDs.', true)
->param('targets', [], new ArrayList(new UID()), 'List of Targets IDs.', true)
->param('description', '', new Text(256), 'Description for Message.', true)
->param('status', 'processing', new WhiteList(['draft', 'canceled', 'processing']), 'Message Status. Value must be either draft or cancelled or processing.', true)
->param('status', MessageStatus::DRAFT, new WhiteList([MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]), 'Message Status. Value must be one of: ' . implode(', ', [MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]) . '.', true)
->param('scheduledAt', null, new DatetimeValidator(requireDateInFuture: true), 'Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('dbForConsole')
->inject('project')
->inject('queueForMessaging')
->inject('response')
->action(function (string $messageId, string $content, array $topics, array $users, array $targets, string $description, string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Document $project, Messaging $queueForMessaging, Response $response) {
->action(function (string $messageId, string $content, array $topics, array $users, array $targets, string $description, string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Database $dbForConsole, Document $project, Messaging $queueForMessaging, Response $response) {
$messageId = $messageId == 'unique()'
? ID::unique()
: $messageId;
if (\count($topics) === 0 && \count($users) === 0 && \count($targets) === 0) {
if ($status !== MessageStatus::DRAFT && \count($topics) === 0 && \count($users) === 0 && \count($targets) === 0) {
throw new Exception(Exception::MESSAGE_MISSING_TARGET);
}
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $targets),
Query::equal('providerType', [MESSAGE_TYPE_SMS]),
Query::limit(\count($targets)),
]);
if (\count($foundTargets) !== \count($targets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_SMS);
if ($status === MessageStatus::SCHEDULED && \is_null($scheduledAt)) {
throw new Exception(Exception::MESSAGE_MISSING_SCHEDULE);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
if (!empty($targets)) {
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $targets),
Query::equal('providerType', [MESSAGE_TYPE_SMS]),
Query::limit(\count($targets)),
]);
if (\count($foundTargets) !== \count($targets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_SMS);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
}
}
}
@ -2416,11 +2449,35 @@ App::post('/v1/messaging/messages/sms')
'status' => $status,
]));
if ($status === 'processing') {
$queueForMessaging
->setMessageId($message->getId())
->setProject($project)
->trigger();
switch ($status) {
case MessageStatus::PROCESSING:
$queueForMessaging
->setMessageId($message->getId())
->trigger();
break;
case MessageStatus::SCHEDULED:
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceCollection' => 'messages',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),
'projectId' => $project->getId(),
'schedule' => $scheduledAt,
'active' => true,
]));
$message->setAttribute('scheduleId', $schedule->getId());
$dbForProject->updateDocument(
'messages',
$message->getId(),
$message
);
break;
default:
break;
}
$queueForEvents
@ -2440,7 +2497,7 @@ App::post('/v1/messaging/messages/push')
->label('scope', 'messages.write')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'createPushMessage')
->label('sdk.method', 'createPush')
->label('sdk.description', '/docs/references/messaging/create-push-notification.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
@ -2459,35 +2516,42 @@ App::post('/v1/messaging/messages/push')
->param('color', '', new Text(256), 'Color for push notification. Available only for Android Platform.', true)
->param('tag', '', new Text(256), 'Tag for push notification. Available only for Android Platform.', true)
->param('badge', '', new Text(256), 'Badge for push notification. Available only for IOS Platform.', true)
->param('status', 'processing', new WhiteList(['draft', 'canceled', 'processing']), 'Message Status. Value must be either draft or cancelled or processing.', true)
->param('status', MessageStatus::DRAFT, new WhiteList([MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]), 'Message Status. Value must be one of: ' . implode(', ', [MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]) . '.', true)
->param('scheduledAt', null, new DatetimeValidator(requireDateInFuture: true), 'Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('dbForConsole')
->inject('project')
->inject('queueForMessaging')
->inject('response')
->action(function (string $messageId, string $title, string $body, array $topics, array $users, array $targets, string $description, ?array $data, string $action, string $icon, string $sound, string $color, string $tag, string $badge, string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Document $project, Messaging $queueForMessaging, Response $response) {
->action(function (string $messageId, string $title, string $body, array $topics, array $users, array $targets, string $description, ?array $data, string $action, string $icon, string $sound, string $color, string $tag, string $badge, string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Database $dbForConsole, Document $project, Messaging $queueForMessaging, Response $response) {
$messageId = $messageId == 'unique()'
? ID::unique()
: $messageId;
if (\count($topics) === 0 && \count($users) === 0 && \count($targets) === 0) {
if ($status !== MessageStatus::DRAFT && \count($topics) === 0 && \count($users) === 0 && \count($targets) === 0) {
throw new Exception(Exception::MESSAGE_MISSING_TARGET);
}
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $targets),
Query::equal('providerType', [MESSAGE_TYPE_PUSH]),
Query::limit(\count($targets)),
]);
if (\count($foundTargets) !== \count($targets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_PUSH);
if ($status === MessageStatus::SCHEDULED && \is_null($scheduledAt)) {
throw new Exception(Exception::MESSAGE_MISSING_SCHEDULE);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
if (!empty($targets)) {
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $targets),
Query::equal('providerType', [MESSAGE_TYPE_PUSH]),
Query::limit(\count($targets)),
]);
if (\count($foundTargets) !== \count($targets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_PUSH);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
}
}
}
@ -2513,11 +2577,35 @@ App::post('/v1/messaging/messages/push')
'status' => $status,
]));
if ($status === 'processing') {
$queueForMessaging
->setMessageId($message->getId())
->setProject($project)
->trigger();
switch ($status) {
case MessageStatus::PROCESSING:
$queueForMessaging
->setMessageId($message->getId())
->trigger();
break;
case MessageStatus::SCHEDULED:
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceCollection' => 'messages',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),
'projectId' => $project->getId(),
'schedule' => $scheduledAt,
'active' => true,
]));
$message->setAttribute('scheduleId', $schedule->getId());
$dbForProject->updateDocument(
'messages',
$message->getId(),
$message
);
break;
default:
break;
}
$queueForEvents
@ -2539,7 +2627,7 @@ App::get('/v1/messaging/messages')
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_MESSAGE_LIST)
->param('queries', [], new Messages(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long. You may filter on the following attributes: ' . implode(', ', Providers::ALLOWED_ATTRIBUTES), true)
->param('queries', [], new Messages(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long. You may filter on the following attributes: ' . implode(', ', Messages::ALLOWED_ATTRIBUTES), true)
->param('search', '', new Text(256), 'Search term to filter your list results. Max length: 256 chars.', true)
->inject('dbForProject')
->inject('response')
@ -2655,6 +2743,65 @@ App::get('/v1/messaging/messages/:messageId/logs')
]), Response::MODEL_LOG_LIST);
});
App::get('/v1/messaging/messages/:messageId/targets')
->desc('List message targets')
->groups(['api', 'messaging'])
->label('scope', 'messages.read')
->label('sdk.auth', [APP_AUTH_TYPE_ADMIN, APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'messaging')
->label('sdk.method', 'listTargets')
->label('sdk.description', '/docs/references/messaging/list-message-targets.md')
->label('sdk.response.code', Response::STATUS_CODE_OK)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_TARGET_LIST)
->param('messageId', '', new UID(), 'Message ID.')
->param('queries', [], new Targets(), 'Array of query strings generated using the Query class provided by the SDK. [Learn more about queries](https://appwrite.io/docs/queries). Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' queries are allowed, each ' . APP_LIMIT_ARRAY_ELEMENT_SIZE . ' characters long. You may filter on the following attributes: ' . implode(', ', Targets::ALLOWED_ATTRIBUTES), true)
->inject('response')
->inject('dbForProject')
->inject('locale')
->inject('geodb')
->action(function (string $messageId, array $queries, Response $response, Database $dbForProject, Locale $locale, Reader $geodb) {
$message = $dbForProject->getDocument('messages', $messageId);
if ($message->isEmpty()) {
throw new Exception(Exception::MESSAGE_NOT_FOUND);
}
$targetIDs = $message->getAttribute('targets');
if (empty($targetIDs)) {
$response->dynamic(new Document([
'targets' => [],
'total' => 0,
]), Response::MODEL_TARGET_LIST);
return;
}
$queries = Query::parseQueries($queries);
$queries[] = Query::equal('$id', $targetIDs);
// Get cursor document if there was a cursor query
$cursor = Query::getByType($queries, [Query::TYPE_CURSORAFTER, Query::TYPE_CURSORBEFORE]);
$cursor = reset($cursor);
if ($cursor) {
$targetId = $cursor->getValue();
$cursorDocument = $dbForProject->getDocument('targets', $targetId);
if ($cursorDocument->isEmpty()) {
throw new Exception(Exception::GENERAL_CURSOR_NOT_FOUND, "Target '{$targetId}' for the 'cursor' value not found.");
}
$cursor->setValue($cursorDocument);
}
$response->dynamic(new Document([
'targets' => $dbForProject->find('targets', $queries),
'total' => $dbForProject->count('targets', $queries, APP_LIMIT_COUNT),
]), Response::MODEL_TARGET_LIST);
});
App::get('/v1/messaging/messages/:messageId')
->desc('Get a message')
->groups(['api', 'messaging'])
@ -2700,24 +2847,25 @@ App::patch('/v1/messaging/messages/email/:messageId')
->param('subject', null, new Text(998), 'Email Subject.', true)
->param('description', null, new Text(256), 'Description for Message.', true)
->param('content', null, new Text(64230), 'Email Content.', true)
->param('status', null, new WhiteList(['draft', 'cancelled', 'processing']), 'Message Status. Value must be either draft or cancelled or processing.', true)
->param('status', MessageStatus::DRAFT, new WhiteList([MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]), 'Message Status. Value must be one of: ' . implode(', ', [MessageStatus::DRAFT, MessageStatus::SCHEDULED, MessageStatus::PROCESSING]) . '.', true)
->param('html', null, new Boolean(), 'Is content of type HTML', true)
->param('cc', null, new ArrayList(new UID()), 'Array of target IDs to be added as CC.', true)
->param('bcc', null, new ArrayList(new UID()), 'Array of target IDs to be added as BCC.', true)
->param('scheduledAt', null, new DatetimeValidator(requireDateInFuture: true), 'Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('dbForConsole')
->inject('project')
->inject('queueForMessaging')
->inject('response')
->action(function (string $messageId, ?array $topics, ?array $users, ?array $targets, ?string $subject, ?string $description, ?string $content, ?string $status, ?bool $html, ?array $cc, ?array $bcc, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Document $project, Messaging $queueForMessaging, Response $response) {
->action(function (string $messageId, ?array $topics, ?array $users, ?array $targets, ?string $subject, ?string $description, ?string $content, ?string $status, ?bool $html, ?array $cc, ?array $bcc, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Database $dbForConsole, Document $project, Messaging $queueForMessaging, Response $response) {
$message = $dbForProject->getDocument('messages', $messageId);
if ($message->isEmpty()) {
throw new Exception(Exception::MESSAGE_NOT_FOUND);
}
if ($message->getAttribute('status') === 'sent') {
if ($message->getAttribute('status') === MessageStatus::SENT) {
throw new Exception(Exception::MESSAGE_ALREADY_SENT);
}
@ -2733,30 +2881,12 @@ App::patch('/v1/messaging/messages/email/:messageId')
$message->setAttribute('users', $users);
}
if (!\is_null($targets) || !\is_null($cc) || !\is_null($bcc)) {
$mergedTargets = \array_merge(...\array_filter([$targets, $cc, $bcc]));
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $mergedTargets),
Query::equal('providerType', [MESSAGE_TYPE_EMAIL]),
Query::limit(\count($mergedTargets)),
]);
if (\count($foundTargets) !== \count($mergedTargets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_EMAIL);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
}
}
}
$data = $message->getAttribute('data');
if (!\is_null($targets)) {
$message->setAttribute('targets', $targets);
}
$data = $message->getAttribute('data');
if (!\is_null($subject)) {
$data['subject'] = $subject;
}
@ -2787,16 +2917,44 @@ App::patch('/v1/messaging/messages/email/:messageId')
$message->setAttribute('status', $status);
}
if (!is_null($scheduledAt)) {
$message->setAttribute('scheduledAt', $scheduledAt);
if (!\is_null($scheduledAt)) {
if (\is_null($message->getAttribute(('scheduleId')))) {
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceCollection' => 'messages',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),
'projectId' => $project->getId(),
'schedule' => $scheduledAt,
'active' => $status === 'processing',
]));
$message->setAttribute('scheduleId', $schedule->getId());
} else {
$schedule = $dbForConsole->getDocument('schedules', $message->getAttribute('scheduleId'));
if ($schedule->isEmpty()) {
throw new Exception(Exception::SCHEDULE_NOT_FOUND);
}
$schedule
->setAttribute('resourceUpdatedAt', DateTime::now())
->setAttribute('schedule', $scheduledAt)
->setAttribute('active', $status === 'processing');
$dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule);
}
$message->setAttribute('scheduleId', $schedule->getId());
}
$message = $dbForProject->updateDocument('messages', $message->getId(), $message);
if ($status === 'processing') {
if ($status === MessageStatus::PROCESSING) {
$queueForMessaging
->setMessageId($message->getId())
->setProject($project)
->trigger();
}
@ -2831,10 +2989,11 @@ App::patch('/v1/messaging/messages/sms/:messageId')
->param('scheduledAt', null, new DatetimeValidator(requireDateInFuture: true), 'Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('dbForConsole')
->inject('project')
->inject('queueForMessaging')
->inject('response')
->action(function (string $messageId, ?array $topics, ?array $users, ?array $targets, ?string $description, ?string $content, ?string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Document $project, Messaging $queueForMessaging, Response $response) {
->action(function (string $messageId, ?array $topics, ?array $users, ?array $targets, ?string $description, ?string $content, ?string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Database $dbForConsole, Document $project, Messaging $queueForMessaging, Response $response) {
$message = $dbForProject->getDocument('messages', $messageId);
if ($message->isEmpty()) {
@ -2858,22 +3017,6 @@ App::patch('/v1/messaging/messages/sms/:messageId')
}
if (!\is_null($targets)) {
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $targets),
Query::equal('providerType', [MESSAGE_TYPE_SMS]),
Query::limit(\count($targets)),
]);
if (\count($foundTargets) !== \count($targets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_SMS);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
}
}
$message->setAttribute('targets', $targets);
}
@ -2893,16 +3036,44 @@ App::patch('/v1/messaging/messages/sms/:messageId')
$message->setAttribute('description', $description);
}
if (!is_null($scheduledAt)) {
$message->setAttribute('scheduledAt', $scheduledAt);
if (!\is_null($scheduledAt)) {
if (\is_null($message->getAttribute(('scheduleId')))) {
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceCollection' => 'messages',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),
'projectId' => $project->getId(),
'schedule' => $scheduledAt,
'active' => $status === 'processing',
]));
$message->setAttribute('scheduleId', $schedule->getId());
} else {
$schedule = $dbForConsole->getDocument('schedules', $message->getAttribute('scheduleId'));
if ($schedule->isEmpty()) {
throw new Exception(Exception::SCHEDULE_NOT_FOUND);
}
$schedule
->setAttribute('resourceUpdatedAt', DateTime::now())
->setAttribute('schedule', $scheduledAt)
->setAttribute('active', $status === 'processing');
$dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule);
}
$message->setAttribute('scheduleId', $schedule->getId());
}
$message = $dbForProject->updateDocument('messages', $message->getId(), $message);
if ($status === 'processing') {
if ($status === 'processing' && \is_null($message->getAttribute('scheduledAt'))) {
$queueForMessaging
->setMessageId($message->getId())
->setProject($project)
->trigger();
}
@ -2945,10 +3116,11 @@ App::patch('/v1/messaging/messages/push/:messageId')
->param('scheduledAt', null, new DatetimeValidator(requireDateInFuture: true), 'Scheduled delivery time for message in [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format. DateTime value must be in future.', true)
->inject('queueForEvents')
->inject('dbForProject')
->inject('dbForConsole')
->inject('project')
->inject('queueForMessaging')
->inject('response')
->action(function (string $messageId, ?array $topics, ?array $users, ?array $targets, ?string $description, ?string $title, ?string $body, ?array $data, ?string $action, ?string $icon, ?string $sound, ?string $color, ?string $tag, ?int $badge, ?string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Document $project, Messaging $queueForMessaging, Response $response) {
->action(function (string $messageId, ?array $topics, ?array $users, ?array $targets, ?string $description, ?string $title, ?string $body, ?array $data, ?string $action, ?string $icon, ?string $sound, ?string $color, ?string $tag, ?int $badge, ?string $status, ?string $scheduledAt, Event $queueForEvents, Database $dbForProject, Database $dbForConsole, Document $project, Messaging $queueForMessaging, Response $response) {
$message = $dbForProject->getDocument('messages', $messageId);
if ($message->isEmpty()) {
@ -2972,22 +3144,6 @@ App::patch('/v1/messaging/messages/push/:messageId')
}
if (!\is_null($targets)) {
$foundTargets = $dbForProject->find('targets', [
Query::equal('$id', $targets),
Query::equal('providerType', [MESSAGE_TYPE_PUSH]),
Query::limit(\count($targets)),
]);
if (\count($foundTargets) !== \count($targets)) {
throw new Exception(Exception::MESSAGE_TARGET_NOT_PUSH);
}
foreach ($foundTargets as $target) {
if ($target->isEmpty()) {
throw new Exception(Exception::USER_TARGET_NOT_FOUND);
}
}
$message->setAttribute('targets', $targets);
}
@ -3040,15 +3196,43 @@ App::patch('/v1/messaging/messages/push/:messageId')
}
if (!\is_null($scheduledAt)) {
$message->setAttribute('scheduledAt', $scheduledAt);
if (\is_null($message->getAttribute(('scheduleId')))) {
$schedule = $dbForConsole->createDocument('schedules', new Document([
'region' => App::getEnv('_APP_REGION', 'default'),
'resourceType' => 'message',
'resourceCollection' => 'messages',
'resourceId' => $message->getId(),
'resourceInternalId' => $message->getInternalId(),
'resourceUpdatedAt' => DateTime::now(),
'projectId' => $project->getId(),
'schedule' => $scheduledAt,
'active' => $status === 'processing',
]));
$message->setAttribute('scheduleId', $schedule->getId());
} else {
$schedule = $dbForConsole->getDocument('schedules', $message->getAttribute('scheduleId'));
if ($schedule->isEmpty()) {
throw new Exception(Exception::SCHEDULE_NOT_FOUND);
}
$schedule
->setAttribute('resourceUpdatedAt', DateTime::now())
->setAttribute('schedule', $scheduledAt)
->setAttribute('active', $status === 'processing');
$dbForConsole->updateDocument('schedules', $schedule->getId(), $schedule);
}
$message->setAttribute('scheduleId', $schedule->getId());
}
$message = $dbForProject->updateDocument('messages', $message->getId(), $message);
if ($status === 'processing') {
if ($status === 'processing' && \is_null($message->getAttribute('scheduledAt'))) {
$queueForMessaging
->setMessageId($message->getId())
->setProject($project)
->trigger();
}

View file

@ -27,6 +27,7 @@ use Utopia\Database\Query;
use Utopia\Database\Validator\Authorization;
use Utopia\Database\Validator\Datetime as DatetimeValidator;
use Utopia\Database\Validator\UID;
use Utopia\Domains\Validator\PublicDomain;
use Utopia\Locale\Locale;
use Utopia\Pools\Group;
use Utopia\Registry\Registry;
@ -34,6 +35,7 @@ use Utopia\Validator\ArrayList;
use Utopia\Validator\Boolean;
use Utopia\Validator\Hostname;
use Utopia\Validator\Integer;
use Utopia\Validator\Multiple;
use Utopia\Validator\Range;
use Utopia\Validator\Text;
use Utopia\Validator\URL;
@ -897,14 +899,15 @@ App::post('/v1/projects/:projectId/webhooks')
->label('sdk.response.model', Response::MODEL_WEBHOOK)
->param('projectId', '', new UID(), 'Project unique ID.')
->param('name', null, new Text(128), 'Webhook name. Max length: 128 chars.')
->param('enabled', true, new Boolean(true), 'Enable or disable a webhook.', true)
->param('events', null, new ArrayList(new Event(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.')
->param('url', null, new URL(['http', 'https']), 'Webhook URL.')
->param('url', '', fn ($request) => new Multiple([new URL(['http', 'https']), new PublicDomain()], Multiple::TYPE_STRING), 'Webhook URL.', false, ['request'])
->param('security', false, new Boolean(true), 'Certificate verification, false for disabled or true for enabled.')
->param('httpUser', '', new Text(256), 'Webhook HTTP user. Max length: 256 chars.', true)
->param('httpPass', '', new Text(256), 'Webhook HTTP password. Max length: 256 chars.', true)
->inject('response')
->inject('dbForConsole')
->action(function (string $projectId, string $name, array $events, string $url, bool $security, string $httpUser, string $httpPass, Response $response, Database $dbForConsole) {
->action(function (string $projectId, string $name, bool $enabled, array $events, string $url, bool $security, string $httpUser, string $httpPass, Response $response, Database $dbForConsole) {
$project = $dbForConsole->getDocument('projects', $projectId);
@ -930,6 +933,7 @@ App::post('/v1/projects/:projectId/webhooks')
'httpUser' => $httpUser,
'httpPass' => $httpPass,
'signatureKey' => \bin2hex(\random_bytes(64)),
'enabled' => $enabled,
]);
$webhook = $dbForConsole->createDocument('webhooks', $webhook);
@ -1020,14 +1024,15 @@ App::put('/v1/projects/:projectId/webhooks/:webhookId')
->param('projectId', '', new UID(), 'Project unique ID.')
->param('webhookId', '', new UID(), 'Webhook unique ID.')
->param('name', null, new Text(128), 'Webhook name. Max length: 128 chars.')
->param('enabled', true, new Boolean(true), 'Enable or disable a webhook.', true)
->param('events', null, new ArrayList(new Event(), APP_LIMIT_ARRAY_PARAMS_SIZE), 'Events list. Maximum of ' . APP_LIMIT_ARRAY_PARAMS_SIZE . ' events are allowed.')
->param('url', null, new URL(['http', 'https']), 'Webhook URL.')
->param('url', '', fn ($request) => new Multiple([new URL(['http', 'https']), new PublicDomain()], Multiple::TYPE_STRING), 'Webhook URL.', false, ['request'])
->param('security', false, new Boolean(true), 'Certificate verification, false for disabled or true for enabled.')
->param('httpUser', '', new Text(256), 'Webhook HTTP user. Max length: 256 chars.', true)
->param('httpPass', '', new Text(256), 'Webhook HTTP password. Max length: 256 chars.', true)
->inject('response')
->inject('dbForConsole')
->action(function (string $projectId, string $webhookId, string $name, array $events, string $url, bool $security, string $httpUser, string $httpPass, Response $response, Database $dbForConsole) {
->action(function (string $projectId, string $webhookId, string $name, bool $enabled, array $events, string $url, bool $security, string $httpUser, string $httpPass, Response $response, Database $dbForConsole) {
$project = $dbForConsole->getDocument('projects', $projectId);
@ -1052,7 +1057,12 @@ App::put('/v1/projects/:projectId/webhooks/:webhookId')
->setAttribute('url', $url)
->setAttribute('security', $security)
->setAttribute('httpUser', $httpUser)
->setAttribute('httpPass', $httpPass);
->setAttribute('httpPass', $httpPass)
->setAttribute('enabled', $enabled);
if ($enabled) {
$webhook->setAttribute('attempts', 0);
}
$dbForConsole->updateDocument('webhooks', $webhook->getId(), $webhook);
$dbForConsole->deleteCachedDocument('projects', $project->getId());

View file

@ -474,6 +474,7 @@ App::post('/v1/teams/:teamId/memberships')
'phone' => empty($phone) ? null : $phone,
'emailVerification' => false,
'status' => true,
// TODO: Set password empty?
'password' => Auth::passwordHash(Auth::passwordGenerator(), Auth::DEFAULT_ALGO, Auth::DEFAULT_ALGO_OPTIONS),
'hash' => Auth::DEFAULT_ALGO,
'hashOptions' => Auth::DEFAULT_ALGO_OPTIONS,
@ -653,7 +654,6 @@ App::post('/v1/teams/:teamId/memberships')
->setMessage($messageDoc)
->setRecipients([$phone])
->setProviderType('SMS')
->setProject($project)
->trigger();
}
}

View file

@ -14,6 +14,7 @@ use Utopia\Database\Validator\Queries;
use Appwrite\Utopia\Database\Validator\Queries\Users;
use Utopia\Database\Validator\Query\Limit;
use Utopia\Database\Validator\Query\Offset;
use Appwrite\Utopia\Request;
use Appwrite\Utopia\Response;
use Utopia\App;
use Utopia\Audit\Audit;
@ -35,6 +36,7 @@ use Utopia\Validator\Assoc;
use Utopia\Validator\WhiteList;
use Utopia\Validator\Text;
use Utopia\Validator\Boolean;
use Utopia\Validator\Range;
use MaxMind\Db\Reader;
use Utopia\Validator\Integer;
use Appwrite\Auth\Validator\PasswordHistory;
@ -1420,6 +1422,134 @@ App::patch('/v1/users/:userId/targets/:targetId')
->dynamic($target, Response::MODEL_TARGET);
});
App::post('/v1/users/:userId/sessions')
->desc('Create session')
->groups(['api', 'users'])
->label('event', 'users.[userId].sessions.[sessionId].create')
->label('scope', 'users.write')
->label('audits.event', 'session.create')
->label('audits.resource', 'user/{request.userId}')
->label('usage.metric', 'sessions.{scope}.requests.create')
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'users')
->label('sdk.method', 'createSession')
->label('sdk.description', '/docs/references/users/create-session.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_SESSION)
->param('userId', '', new CustomId(), 'User ID. Choose a custom ID or generate a random ID with `ID.unique()`. Valid chars are a-z, A-Z, 0-9, period, hyphen, and underscore. Can\'t start with a special char. Max length is 36 chars.')
->inject('request')
->inject('response')
->inject('dbForProject')
->inject('project')
->inject('locale')
->inject('geodb')
->inject('queueForEvents')
->action(function (string $userId, Request $request, Response $response, Database $dbForProject, Document $project, Locale $locale, Reader $geodb, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId);
if ($user === false || $user->isEmpty()) {
throw new Exception(Exception::USER_NOT_FOUND);
}
$secret = Auth::codeGenerator();
$detector = new Detector($request->getUserAgent('UNKNOWN'));
$record = $geodb->get($request->getIP());
$duration = $project->getAttribute('auths', [])['duration'] ?? Auth::TOKEN_EXPIRATION_LOGIN_LONG;
$expire = DateTime::formatTz(DateTime::addSeconds(new \DateTime(), $duration));
$session = new Document(array_merge(
[
'$id' => ID::unique(),
'userId' => $user->getId(),
'userInternalId' => $user->getInternalId(),
'provider' => Auth::SESSION_PROVIDER_SERVER,
'secret' => Auth::hash($secret), // One way hash encryption to protect DB leak
'userAgent' => $request->getUserAgent('UNKNOWN'),
'ip' => $request->getIP(),
'countryCode' => ($record) ? \strtolower($record['country']['iso_code']) : '--',
],
$detector->getOS(),
$detector->getClient(),
$detector->getDevice()
));
$countryName = $locale->getText('countries.' . strtolower($session->getAttribute('countryCode')), $locale->getText('locale.country.unknown'));
$session = $dbForProject->createDocument('sessions', $session);
$session
->setAttribute('secret', $secret)
->setAttribute('expire', $expire)
->setAttribute('countryName', $countryName);
$queueForEvents
->setParam('userId', $user->getId())
->setParam('sessionId', $session->getId())
->setPayload($response->output($session, Response::MODEL_SESSION));
return $response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($session, Response::MODEL_SESSION);
});
App::post('/v1/users/:userId/tokens')
->desc('Create token')
->groups(['api', 'users'])
->label('event', 'users.[userId].tokens.[tokenId].create')
->label('scope', 'users.write')
->label('audits.event', 'tokens.create')
->label('audits.resource', 'user/{request.userId}')
->label('usage.metric', 'tokens.requests.create')
->label('sdk.auth', [APP_AUTH_TYPE_KEY])
->label('sdk.namespace', 'users')
->label('sdk.method', 'createToken')
->label('sdk.description', '/docs/references/users/create-token.md')
->label('sdk.response.code', Response::STATUS_CODE_CREATED)
->label('sdk.response.type', Response::CONTENT_TYPE_JSON)
->label('sdk.response.model', Response::MODEL_TOKEN)
->param('userId', '', new UID(), 'User ID.')
->param('length', 6, new Range(4, 128), 'Token length in characters. The default length is 6 characters', true)
->param('expire', Auth::TOKEN_EXPIRATION_GENERIC, new Range(60, Auth::TOKEN_EXPIRATION_LOGIN_LONG), 'Token expiration period in seconds. The default expiration is 15 minutes.', true)
->inject('request')
->inject('response')
->inject('dbForProject')
->inject('queueForEvents')
->action(function (string $userId, int $length, int $expire, Request $request, Response $response, Database $dbForProject, Event $queueForEvents) {
$user = $dbForProject->getDocument('users', $userId);
if ($user === false || $user->isEmpty()) {
throw new Exception(Exception::USER_NOT_FOUND);
}
$secret = Auth::tokenGenerator($length);
$expire = DateTime::formatTz(DateTime::addSeconds(new \DateTime(), $expire));
$token = new Document([
'$id' => ID::unique(),
'userId' => $user->getId(),
'userInternalId' => $user->getInternalId(),
'type' => Auth::TOKEN_TYPE_GENERIC,
'secret' => Auth::hash($secret),
'expire' => $expire,
'userAgent' => $request->getUserAgent('UNKNOWN'),
'ip' => $request->getIP()
]);
$token = $dbForProject->createDocument('tokens', $token);
$dbForProject->deleteCachedDocument('users', $user->getId());
$token->setAttribute('secret', $secret);
$queueForEvents
->setParam('userId', $user->getId())
->setParam('tokenId', $token->getId())
->setPayload($response->output($token, Response::MODEL_TOKEN));
return $response
->setStatusCode(Response::STATUS_CODE_CREATED)
->dynamic($token, Response::MODEL_TOKEN);
});
App::delete('/v1/users/:userId/sessions/:sessionId')
->desc('Delete user session')
->groups(['api', 'users'])
@ -1598,7 +1728,7 @@ App::delete('/v1/users/:userId/targets/:targetId')
});
App::delete('/v1/users/identities/:identityId')
->desc('Delete Identity')
->desc('Delete identity')
->groups(['api', 'users'])
->label('event', 'users.[userId].identities.[identityId].delete')
->label('scope', 'users.write')
@ -1614,7 +1744,8 @@ App::delete('/v1/users/identities/:identityId')
->param('identityId', '', new UID(), 'Identity ID.')
->inject('response')
->inject('dbForProject')
->action(function (string $identityId, Response $response, Database $dbForProject) {
->inject('queueForEvents')
->action(function (string $identityId, Response $response, Database $dbForProject, Event $queueForEvents) {
$identity = $dbForProject->getDocument('identities', $identityId);
@ -1624,6 +1755,11 @@ App::delete('/v1/users/identities/:identityId')
$dbForProject->deleteDocument('identities', $identityId);
$queueForEvents
->setParam('userId', $identity->getAttribute('userId'))
->setParam('identityId', $identity->getId())
->setPayload($response->output($identity, Response::MODEL_IDENTITY));
return $response->noContent();
});

View file

@ -425,8 +425,8 @@ App::init()
->addHeader('Server', 'Appwrite')
->addHeader('X-Content-Type-Options', 'nosniff')
->addHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE')
->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-Appwrite-ID, X-Appwrite-Timestamp, Content-Range, Range, Cache-Control, Expires, Pragma')
->addHeader('Access-Control-Expose-Headers', 'X-Fallback-Cookies')
->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-Appwrite-ID, X-Appwrite-Timestamp, Content-Range, Range, Cache-Control, Expires, Pragma, X-Forwarded-For, X-Forwarded-User-Agent')
->addHeader('Access-Control-Expose-Headers', 'X-Appwrite-Session, X-Fallback-Cookies')
->addHeader('Access-Control-Allow-Origin', $refDomain)
->addHeader('Access-Control-Allow-Credentials', 'true');
@ -589,8 +589,8 @@ App::options()
$response
->addHeader('Server', 'Appwrite')
->addHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, PATCH, DELETE')
->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-Appwrite-ID, X-Appwrite-Timestamp, Content-Range, Range, Cache-Control, Expires, Pragma, X-Fallback-Cookies')
->addHeader('Access-Control-Expose-Headers', 'X-Fallback-Cookies')
->addHeader('Access-Control-Allow-Headers', 'Origin, Cookie, Set-Cookie, X-Requested-With, Content-Type, Access-Control-Allow-Origin, Access-Control-Request-Headers, Accept, X-Appwrite-Project, X-Appwrite-Key, X-Appwrite-Locale, X-Appwrite-Mode, X-Appwrite-JWT, X-Appwrite-Response-Format, X-Appwrite-Timeout, X-SDK-Version, X-SDK-Name, X-SDK-Language, X-SDK-Platform, X-SDK-GraphQL, X-Appwrite-ID, X-Appwrite-Timestamp, Content-Range, Range, Cache-Control, Expires, Pragma, X-Appwrite-Session, X-Fallback-Cookies, X-Forwarded-For, X-Forwarded-User-Agent')
->addHeader('Access-Control-Expose-Headers', 'X-Appwrite-Session, X-Fallback-Cookies')
->addHeader('Access-Control-Allow-Origin', $origin)
->addHeader('Access-Control-Allow-Credentials', 'true')
->noContent();

View file

@ -7,6 +7,7 @@ use Appwrite\Event\Delete;
use Appwrite\Event\Event;
use Appwrite\Event\Func;
use Appwrite\Event\Mail;
use Appwrite\Event\Messaging;
use Appwrite\Extend\Exception;
use Appwrite\Messaging\Adapter\Realtime;
use Appwrite\Usage\Stats;
@ -97,6 +98,7 @@ App::init()
->inject('project')
->inject('user')
->inject('queueForEvents')
->inject('queueForMessaging')
->inject('queueForAudits')
->inject('queueForDeletes')
->inject('queueForDatabase')
@ -104,7 +106,7 @@ App::init()
->inject('mode')
->inject('queueForMails')
->inject('usage')
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Database $dbForProject, string $mode, Mail $queueForMails, Stats $usage) use ($databaseListener) {
->action(function (App $utopia, Request $request, Response $response, Document $project, Document $user, Event $queueForEvents, Messaging $queueForMessaging, Audit $queueForAudits, Delete $queueForDeletes, EventDatabase $queueForDatabase, Database $dbForProject, string $mode, Mail $queueForMails, Stats $usage) use ($databaseListener) {
$route = $utopia->getRoute();
@ -181,6 +183,9 @@ App::init()
->setProject($project)
->setUser($user);
$queueForMessaging
->setProject($project);
$queueForAudits
->setMode($mode)
->setUserAgent($request->getUserAgent(''))
@ -311,6 +316,12 @@ App::init()
}
break;
case 'phone':
if (($auths['phone'] ?? true) === false) {
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Phone authentication is disabled for this project');
}
break;
default:
throw new Exception(Exception::USER_AUTH_METHOD_UNSUPPORTED, 'Unsupported authentication route');
break;

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