mirror of
https://github.com/appwrite/appwrite
synced 2026-05-23 08:58:35 +00:00
Merge branch '1.8.x' of https://github.com/appwrite/appwrite into update-required-attributes
# Conflicts: # composer.json # composer.lock
This commit is contained in:
commit
4f52907129
87 changed files with 8703 additions and 8575 deletions
7
.github/workflows/static-analysis.yml
vendored
7
.github/workflows/static-analysis.yml
vendored
|
|
@ -13,4 +13,9 @@ jobs:
|
|||
- name: Run CodeQL
|
||||
run: |
|
||||
docker run --rm -v $PWD:/app composer:2.6 sh -c \
|
||||
"composer install --profile --ignore-platform-reqs && composer check"
|
||||
"composer install --profile --ignore-platform-reqs && composer check"
|
||||
|
||||
- name: Run Locale check
|
||||
run: |
|
||||
docker run --rm -v $PWD:/app node:24-alpine sh -c \
|
||||
"cd /app/.github/workflows/static-analysis/locale && node index.js"
|
||||
|
|
|
|||
115
.github/workflows/static-analysis/locale/index.js
vendored
Normal file
115
.github/workflows/static-analysis/locale/index.js
vendored
Normal file
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* Look into all local files, and collect unique keys.
|
||||
* Ensure fallback locale (English) has translation for all keys.
|
||||
* If configured as `const strict = true`, all locales will be checked to include all keys.
|
||||
*/
|
||||
|
||||
import { readdir, readFile } from "fs/promises";
|
||||
import { join, dirname } from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
|
||||
const config = {
|
||||
strict: false,
|
||||
fallbackLocale: "en.json",
|
||||
};
|
||||
|
||||
(async () => {
|
||||
try {
|
||||
// Prepare current directory equivalent in ES modules
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const translationsPath = join(
|
||||
__dirname,
|
||||
"../../../../app/config/locale/translations",
|
||||
);
|
||||
|
||||
const files = (await readdir(translationsPath)).filter((file) =>
|
||||
file.endsWith(".json"),
|
||||
);
|
||||
|
||||
if (files.length === 0) {
|
||||
console.error("No translation files found in ", translationsPath);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
// Check if fallback locale exists
|
||||
if (!files.includes(config.fallbackLocale)) {
|
||||
console.error(`Fallback locale file ${config.fallbackLocale} not found`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log(
|
||||
`Found ${files.length} translation files in ${translationsPath}`,
|
||||
);
|
||||
|
||||
// Collect all unique keys from all translation files
|
||||
const allKeys = new Set();
|
||||
|
||||
for (const file of files) {
|
||||
const filePath = join(translationsPath, file);
|
||||
const content = await readFile(filePath, "utf8");
|
||||
const translations = JSON.parse(content);
|
||||
|
||||
// Add all keys from this file
|
||||
Object.keys(translations).forEach((key) => allKeys.add(key));
|
||||
}
|
||||
|
||||
console.log(`Total unique keys found across all locales: ${allKeys.size}`);
|
||||
|
||||
const localesToCheck = [];
|
||||
if (config.strict) {
|
||||
localesToCheck.push(...files);
|
||||
} else {
|
||||
localesToCheck.push(config.fallbackLocale);
|
||||
}
|
||||
|
||||
let errorsCount = 0;
|
||||
let missingLocaleCount = 0;
|
||||
|
||||
for (const localeToCheck of localesToCheck) {
|
||||
// Read locale
|
||||
const path = join(translationsPath, localeToCheck);
|
||||
const content = await readFile(path, "utf8");
|
||||
const translations = JSON.parse(content);
|
||||
|
||||
// Check for missing keys in the locale
|
||||
const keys = new Set(Object.keys(translations));
|
||||
console.log(`Keys in locale (${localeToCheck}): ${keys.size}`);
|
||||
|
||||
const missingKeys = [];
|
||||
for (const key of allKeys) {
|
||||
if (!keys.has(key)) {
|
||||
missingKeys.push(key);
|
||||
}
|
||||
}
|
||||
|
||||
if (missingKeys.length > 0) {
|
||||
console.error(
|
||||
`\nERROR: Fallback locale (${localeToCheck}) is missing ${missingKeys.length} key(s):`,
|
||||
);
|
||||
missingKeys.sort().forEach((key) => {
|
||||
console.error(` - ${key}`);
|
||||
});
|
||||
console.error(
|
||||
`\nTo fix this issue, add the missing keys to ${translationsPath}/${localeToCheck}`,
|
||||
);
|
||||
errorsCount++;
|
||||
missingLocaleCount += missingKeys.length;
|
||||
} else {
|
||||
console.log(
|
||||
`\nSUCCESS: Fallback locale (${localeToCheck}) contains all ${allKeys.size} keys.`,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (errorsCount > 0) {
|
||||
console.log(`\n${missingLocaleCount} locales missing found across ${errorsCount} locales.`);
|
||||
process.exit(1);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Unexpected error.");
|
||||
console.error(error);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
13
.github/workflows/static-analysis/locale/package.json
vendored
Normal file
13
.github/workflows/static-analysis/locale/package.json
vendored
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"name": "static-analysis-locale",
|
||||
"version": "1.0.0",
|
||||
"type": "module",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"description": ""
|
||||
}
|
||||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Die {{project}} span",
|
||||
"emails.magicSession.subject": "Teken aan",
|
||||
"emails.magicSession.hello": "Goeie dag,",
|
||||
"emails.magicSession.body": "Volg hierdie skakel om in te teken.",
|
||||
"emails.magicSession.footer": "Ignoreer gerus hierdie boodskap as u nie die versoek gestuur het om met die' adres in te teken nie.",
|
||||
"emails.magicSession.thanks": "Baie dankie,",
|
||||
"emails.magicSession.signature": "Die {{project}} span",
|
||||
"emails.recovery.subject": "Herstel Wagwoord",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "فرقة {{project}}",
|
||||
"emails.magicSession.subject": "تكونيكطا",
|
||||
"emails.magicSession.hello": "السلام،",
|
||||
"emails.magicSession.body": "تبّع هاد الوصلة باش تتكونيكطا.",
|
||||
"emails.magicSession.footer": "إلا ماشي نتا اللي طلبتي تتكونيكطا بهاد ليميل، ممكن تنخّل هاد البرية.",
|
||||
"emails.magicSession.thanks": "شكرا،",
|
||||
"emails.magicSession.signature": "فرقة {{project}}",
|
||||
"emails.recovery.subject": "تبدال كلمة السر",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "فريق {{project}}",
|
||||
"emails.magicSession.subject": "تسجيل الدخول",
|
||||
"emails.magicSession.hello": "أهلا،",
|
||||
"emails.magicSession.body": "اتبع هذا الرابط لتسجيل الدخول",
|
||||
"emails.magicSession.footer": "لو لم تطلب تسجيل الدخول بهذا البريد الاكتروني ، يمكنك تجاهل هذه الرسالة",
|
||||
"emails.magicSession.thanks": "شكرا،",
|
||||
"emails.magicSession.signature": "فريق {{project}}",
|
||||
"emails.recovery.subject": "تغيير كلمة السر",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} দল",
|
||||
"emails.magicSession.subject": "লগইন",
|
||||
"emails.magicSession.hello": "নমস্কাৰ,",
|
||||
"emails.magicSession.body": "লগইন কৰিবলৈ এই লিংকটো অনুসৰণ কৰক।",
|
||||
"emails.magicSession.footer": "যদি আপুনি এই ইমেইল ব্যৱহাৰ কৰি লগইন কৰিবলৈ কোৱা নাছিল, আপুনি এই বাৰ্তাটো উপেক্ষা কৰিব পাৰে।",
|
||||
"emails.magicSession.thanks": "ধন্যবাদ,",
|
||||
"emails.magicSession.signature": "{{project}} দল",
|
||||
"emails.recovery.subject": "পাছৱাৰ্ড ৰিছেট",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} komandası",
|
||||
"emails.magicSession.subject": "Daxil Olmaq",
|
||||
"emails.magicSession.hello": "Salam,",
|
||||
"emails.magicSession.body": "Daxil olmaq üçün bu linki izləyin.",
|
||||
"emails.magicSession.footer": "Bu e-poçtdan istifadə edərək giriş istəməmisinizsə, bu mesajı görməməzlikdən gələ bilərsiniz.",
|
||||
"emails.magicSession.thanks": "Təşəkkürlər,",
|
||||
"emails.magicSession.signature": "{{project}} komandası",
|
||||
"emails.recovery.subject": "Şifrə Sıfırlanması",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "каманда {{project}}",
|
||||
"emails.magicSession.subject": "Лагін",
|
||||
"emails.magicSession.hello": "Прывітанне,",
|
||||
"emails.magicSession.body": "Перайдзіце па спасылцы, каб увайсці.",
|
||||
"emails.magicSession.footer": "Калі вы не прасілі ўвайсці, выкарыстоўваючы гэты адрас электроннай пошты, праігнаруйце гэтае паведамленне.",
|
||||
"emails.magicSession.thanks": "Дзякуем,",
|
||||
"emails.magicSession.signature": "каманда {{project}}",
|
||||
"emails.recovery.subject": "Скід пароля",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} टीम",
|
||||
"emails.magicSession.subject": "लॉग इन करीं|",
|
||||
"emails.magicSession.hello": "प्रणाम,",
|
||||
"emails.magicSession.body": "लॉग इन करें लेल दिहल गइल लिंक फॉलो करें|",
|
||||
"emails.magicSession.footer": "अगर लॉग इन करे के लिए ना कहाले, तो आप ई संदेश क अनदेखा कर सकत अछि।",
|
||||
"emails.magicSession.thanks": "धन्यवाद,",
|
||||
"emails.magicSession.signature": "{{project}} टीम",
|
||||
"emails.recovery.subject": "पासवर्ड बदल क लेल|",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} টীম",
|
||||
"emails.magicSession.subject": "লগ ইন",
|
||||
"emails.magicSession.hello": "নমস্কার,",
|
||||
"emails.magicSession.body": "এই লিঙ্কের মাধ্যমে লগ ইন করুন।",
|
||||
"emails.magicSession.footer": "আপনি যদি এই ইমেলটি ব্যবহার করে লগইন করতে না বলেন, তাহলে আপনি এই বার্তাটি উপেক্ষা করতে পারেন।",
|
||||
"emails.magicSession.thanks": "ধন্যবাদ,",
|
||||
"emails.magicSession.signature": "{{project}} টীম",
|
||||
"emails.recovery.subject": "পাসওয়ার্ড রিসেট",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Equip {{project}}",
|
||||
"emails.magicSession.subject": "Entrar",
|
||||
"emails.magicSession.hello": "Hola,",
|
||||
"emails.magicSession.body": "Accedeix a aquest enllaç per a entrar.",
|
||||
"emails.magicSession.footer": "Si no has sol·licitat entrar amb aquesta adreça electrònica, pots ignorar aquest missatge.",
|
||||
"emails.magicSession.thanks": "Gràcies,",
|
||||
"emails.magicSession.signature": "Equip {{project}}",
|
||||
"emails.recovery.subject": "Reinicialitzar contrasenya",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} team",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Hej,",
|
||||
"emails.magicSession.body": "Følg dette link for at logge ind.",
|
||||
"emails.magicSession.footer": "Hvis du ikke har bedt om at logge ind med denne email, ignorer venligst denne besked.",
|
||||
"emails.magicSession.thanks": "Tak,",
|
||||
"emails.magicSession.signature": "{{project}} team",
|
||||
"emails.recovery.subject": "Nulstil Password",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}}-Team",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Hey,",
|
||||
"emails.magicSession.body": "Folge diesem Link, um dich einzuloggen.",
|
||||
"emails.magicSession.footer": "Solltest du keinen Login für diese E-Mail-Adresse angefordert haben, kannst du diese Nachricht ignorieren.",
|
||||
"emails.magicSession.thanks": "Danke,",
|
||||
"emails.magicSession.signature": "{{project}}-Team",
|
||||
"emails.recovery.subject": "Kennwort zurücksetzen",
|
||||
|
|
@ -247,5 +245,6 @@
|
|||
"emails.otpSession.clientInfo": "Diese Anmeldung wurde über {{agentClient}} auf {{agentDevice}} {{agentOs}} angefordert. Wenn Sie die Anmeldung nicht angefordert haben, können Sie diese E-Mail getrost ignorieren.",
|
||||
"emails.otpSession.securityPhrase": "Die Sicherheitsphrase für diese E-Mail lautet {{phrase}}. Sie können dieser E-Mail vertrauen, wenn diese Phrase mit der Phrase übereinstimmt, die beim Anmelden angezeigt wird.",
|
||||
"emails.otpSession.thanks": "Danke,",
|
||||
"emails.otpSession.signature": "{{project}} Team"
|
||||
"emails.otpSession.signature": "{{project}} Team",
|
||||
"mock": "Eine Beispielübersetzung für Testzwecke."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Η ομάδα του {{project}}",
|
||||
"emails.magicSession.subject": "Είσοδος",
|
||||
"emails.magicSession.hello": "Γεια σου,",
|
||||
"emails.magicSession.body": "Ακολουθήστε αυτό το link για να συνδεθείτε",
|
||||
"emails.magicSession.footer": "Εάν δεν ζητήσατε να συνδεθείτε χρησιμοποιώντας αυτό το email, μπορείτε να αγνοήσετε αυτό το μήνυμα.",
|
||||
"emails.magicSession.thanks": "Ευχαριστούμε,",
|
||||
"emails.magicSession.signature": "Η ομάδα του {{project}}",
|
||||
"emails.recovery.subject": "Αλλαγή κωδικού πρόσβασης",
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
"emails.invitation.subject": "Invitation to %s Team at %s",
|
||||
"emails.invitation.preview": "{{owner}} invited you to join {{team}} at {{project}}",
|
||||
"emails.invitation.hello": "Hello {{user}},",
|
||||
"emails.invitation.body": "This mail was sent to you because {{b}}{{owner}}{{/b}} wanted to invite you to become a member of the {{b}}{{team}}{{/b}} team at {{b}}{{project}}{{/b}}.",
|
||||
"emails.invitation.body": "This mail was sent to you because {{b}}{{owner}}{{/b}} invited you to become a member of the {{b}}{{team}}{{/b}} team at {{b}}{{project}}{{/b}}.",
|
||||
"emails.invitation.footer": "If you are not interested, you can ignore this message.",
|
||||
"emails.invitation.thanks": "Thanks,",
|
||||
"emails.invitation.buttonText": "Accept invite to {{team}}",
|
||||
|
|
@ -274,5 +274,6 @@
|
|||
"continents.eu": "Europe",
|
||||
"continents.na": "North America",
|
||||
"continents.oc": "Oceania",
|
||||
"continents.sa": "South America"
|
||||
"continents.sa": "South America",
|
||||
"mock": "A mock translation for testing purposes."
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"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",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "El equipo de {{project}}.",
|
||||
"emails.magicSession.subject": "Inicio de sesión",
|
||||
"emails.magicSession.hello": "Hola,",
|
||||
"emails.magicSession.body": "Haz clic en este enlace para iniciar sesión:",
|
||||
"emails.magicSession.footer": "Si no has solicitado iniciar sesión usando este correo, puedes ignorar este mensaje.",
|
||||
"emails.magicSession.thanks": "Gracias.,",
|
||||
"emails.magicSession.signature": "El equipo de {{project}}",
|
||||
"emails.recovery.subject": "Restablecer contraseña",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "تیم {{user}}",
|
||||
"emails.magicSession.subject": "ورود به حساب کاربری",
|
||||
"emails.magicSession.hello": "سلام،",
|
||||
"emails.magicSession.body": "برای ورود به حسابتان پیوند زیر را دنبال کنید.",
|
||||
"emails.magicSession.footer": "اگر شما درخواست ورود به حساب کاربری با استفاده از این ایمیل را ندادهاید، میتوانید این پیام را نادیده بگیرید.",
|
||||
"emails.magicSession.thanks": "سپاس فراوان،",
|
||||
"emails.magicSession.signature": "تیم {{user}}",
|
||||
"emails.recovery.subject": "بازیابی گذرواژه",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Équipe {{project}}",
|
||||
"emails.magicSession.subject": "Connexion",
|
||||
"emails.magicSession.hello": "Bonjour,",
|
||||
"emails.magicSession.body": "Suivez ce lien pour vous connecter.",
|
||||
"emails.magicSession.footer": "Si vous n'avez pas demandé à vous connecter en utilisant cet e-mail, vous pouvez ignorer ce message.",
|
||||
"emails.magicSession.thanks": "Merci,",
|
||||
"emails.magicSession.signature": "L'équipe {{project}}",
|
||||
"emails.recovery.subject": "Réinitialisation du mot de passe",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} foireann",
|
||||
"emails.magicSession.subject": "Logáil isteach",
|
||||
"emails.magicSession.hello": "Haigh,",
|
||||
"emails.magicSession.body": "Lean an nasc seo chun logáil isteach.",
|
||||
"emails.magicSession.footer": "Mura ndearna tú iarratas logáil isteach leis an ríomhphost seo, déan neamhaird den teachtaireacht seo.",
|
||||
"emails.magicSession.thanks": "Go raibh maith agat,",
|
||||
"emails.magicSession.signature": "{{project}} foireann",
|
||||
"emails.recovery.subject": "Athshocrú pasfhocail",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} ટીમ",
|
||||
"emails.magicSession.subject": "પ્રવેશ કરો",
|
||||
"emails.magicSession.hello": "નમસ્કાર,",
|
||||
"emails.magicSession.body": "પ્રવેશ કરવા માટે આ લિંકને અનુસરો.",
|
||||
"emails.magicSession.footer": "જો તમે આ ઇમેઇલનો ઉપયોગ કરીને પ્રવેશ કરવાનું ન કહ્યું હોય, તો તમે આ સંદેશને અવગણી શકો છો.",
|
||||
"emails.magicSession.thanks": "આભાર,",
|
||||
"emails.magicSession.signature": "{{project}} ટીમ",
|
||||
"emails.recovery.subject": "પાસવર્ડ ફરીથી સેટ કરો",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "צוות {{project}}",
|
||||
"emails.magicSession.subject": "כניסה למערכת",
|
||||
"emails.magicSession.hello": "שלום,",
|
||||
"emails.magicSession.body": "לחץ על קישור זה כדי להיכנס.",
|
||||
"emails.magicSession.footer": "אם לא ביקשת להיכנס באמצעות דוא\"ל זה, תוכל להתעלם מהודעה זו.",
|
||||
"emails.magicSession.thanks": "תודה,",
|
||||
"emails.magicSession.signature": "צוות {{project}}",
|
||||
"emails.recovery.subject": "איפוס סיסמא",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} टीम",
|
||||
"emails.magicSession.subject": "लॉग इन",
|
||||
"emails.magicSession.hello": "नमस्ते,",
|
||||
"emails.magicSession.body": "इस लिंक के माध्यम से लॉग-इन करें।",
|
||||
"emails.magicSession.footer": "यदि आप इस ईमेल द्वारा लॉगिन नहीं करना चाहते हैं, तो आप इस संदेश को नज़रअंदाज़ कर सकते हैं।",
|
||||
"emails.magicSession.thanks": "धन्यवाद,",
|
||||
"emails.magicSession.signature": "{{project}} टीम",
|
||||
"emails.recovery.subject": "पासवर्ड रीसेट",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} tim",
|
||||
"emails.magicSession.subject": "Prijavite se",
|
||||
"emails.magicSession.hello": "Pozdrav,",
|
||||
"emails.magicSession.body": "Slijedite ovu poveznicu za prijavu.",
|
||||
"emails.magicSession.footer": "Ako niste zatražili prijavu putem ove e-pošte, možete zanemariti ovu poruku.",
|
||||
"emails.magicSession.thanks": "Hvala,",
|
||||
"emails.magicSession.signature": "{{project}} tim",
|
||||
"emails.recovery.subject": "Ponovno postavljanje lozinke",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "a {{project}} csapat",
|
||||
"emails.magicSession.subject": "Bejelentkezés",
|
||||
"emails.magicSession.hello": "Szia,",
|
||||
"emails.magicSession.body": "Kattints a linkre a bejelentkezéshez.",
|
||||
"emails.magicSession.footer": "Ha nem te szerettél volna bejelentkezni ezzel az email címmel, akkor nyugodtan hagyd figyelmen kívül ezt az üzenetet.",
|
||||
"emails.magicSession.thanks": "Köszönettel,",
|
||||
"emails.magicSession.signature": "a {{project}} csapat",
|
||||
"emails.recovery.subject": "Jelszó Visszaállítása",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Tim {{project}}",
|
||||
"emails.magicSession.subject": "Masuk",
|
||||
"emails.magicSession.hello": "Hai,",
|
||||
"emails.magicSession.body": "Ikuti tautan ini untuk masuk.",
|
||||
"emails.magicSession.footer": "Jika Anda tidak meminta untuk masuk menggunakan email ini, Anda dapat mengabaikan pesan ini.",
|
||||
"emails.magicSession.thanks": "Terima kasih,",
|
||||
"emails.magicSession.signature": "Tim {{project}}",
|
||||
"emails.recovery.subject": "Atur Ulang Kata Sandi",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Il team {{project}}",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Ciao,",
|
||||
"emails.magicSession.body": "Clicca questo link per accedere.",
|
||||
"emails.magicSession.footer": "Se non hai richiesto di effettuare l’accesso, puoi ignorare questo messaggio.",
|
||||
"emails.magicSession.thanks": "Grazie,",
|
||||
"emails.magicSession.signature": "Il team {{project}}",
|
||||
"emails.recovery.subject": "Reimpostazione password",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}}チーム",
|
||||
"emails.magicSession.subject": "ログイン",
|
||||
"emails.magicSession.hello": "こんにちは、",
|
||||
"emails.magicSession.body": "ログインするためには下記リンクをクリックしてください。",
|
||||
"emails.magicSession.footer": "このメールに心当たりが無い場合は破棄をお願いいたします。",
|
||||
"emails.magicSession.thanks": "ご利用いただきありがとうございます。、",
|
||||
"emails.magicSession.signature": "{{project}}チーム",
|
||||
"emails.recovery.subject": "パスワードリセット",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Tim {{project}}",
|
||||
"emails.magicSession.subject": "Masuk",
|
||||
"emails.magicSession.hello": "Hai,",
|
||||
"emails.magicSession.body": "Klik link iki kanggo masuk.",
|
||||
"emails.magicSession.footer": "Yen sampeyan ora njaluk masuk nggunakake alamat email iki, sampeyan iso nglirwakake pesen iki.",
|
||||
"emails.magicSession.thanks": "Matur nuwun,",
|
||||
"emails.magicSession.signature": "Tim {{project}}",
|
||||
"emails.recovery.subject": "Setel ulang sandi",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": "",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": "",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} ತಂಡ",
|
||||
"emails.magicSession.subject": "ಲಾಗಿನ್",
|
||||
"emails.magicSession.hello": "ನಮಸ್ಕಾರ,",
|
||||
"emails.magicSession.body": "ಲಾಗಿನ್ ಮಾಡಲಿಕ್ಕೆ ಈ ಲಿಂಕನ್ನು ಅನುಸರಿಸಿ",
|
||||
"emails.magicSession.footer": "ನೀವು ಈ ಇಮೇಲನಿಂದ ಲಾಗಿನ್ ಮಾಡಲು ಕೇಳದಿದ್ದರೆ, ಈ ಸಂದೇಶವನ್ನು ನಿರ್ಲಕ್ಷಿಸಿ",
|
||||
"emails.magicSession.thanks": "ಧನ್ಯವಾದಗಳು,",
|
||||
"emails.magicSession.signature": "{{project}} ತಂಡ",
|
||||
"emails.recovery.subject": "ಗುಪ್ತಪದ ಮರುಹೊಂದಿಸಿ",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} 팀",
|
||||
"emails.magicSession.subject": "로그인",
|
||||
"emails.magicSession.hello": "안녕하세요、",
|
||||
"emails.magicSession.body": "로그인 하시려면 링크를 클릭하여주세요.",
|
||||
"emails.magicSession.footer": "이 이메일 계정으로 로그인 신청을 하지 않으셨다면 이 메세지를 무시하여주세요.",
|
||||
"emails.magicSession.thanks": "감사합니다、",
|
||||
"emails.magicSession.signature": "{{project}} 팀",
|
||||
"emails.recovery.subject": "비밀번호 재설정",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"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",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"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",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} komanda",
|
||||
"emails.magicSession.subject": "Prisijungti",
|
||||
"emails.magicSession.hello": "Labas,",
|
||||
"emails.magicSession.body": "Spauskite šią nuorodą, kad prisijungtumėte.",
|
||||
"emails.magicSession.footer": "Jei neprašėte prisijungti naudojantis šiuo el. paštu, galite ignoruoti šį pranešimą.",
|
||||
"emails.magicSession.thanks": "Ačiū,",
|
||||
"emails.magicSession.signature": "{{project}} komanda",
|
||||
"emails.recovery.subject": "Slaptažodžio Atkūrimas",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"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",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} ടീം",
|
||||
"emails.magicSession.subject": "ലോഗിൻ",
|
||||
"emails.magicSession.hello": "നമസ്കാരം,",
|
||||
"emails.magicSession.body": "ലോഗിൻ ചെയ്യുന്നതിനായി ഈ ലിങ്ക് പിന്തുടരുക.",
|
||||
"emails.magicSession.footer": "ഈ ഇമെയിൽ ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യാൻ നിങ്ങൾ ആവശ്യപ്പെട്ടില്ലെങ്കിൽ, ഈ സന്ദേശം അവഗണിക്കാവുന്നതാണ്.",
|
||||
"emails.magicSession.thanks": "നന്ദി,",
|
||||
"emails.magicSession.signature": "{{project}} ടീം",
|
||||
"emails.recovery.subject": "രഹസ്യവാക്ക് പുനക്രമീകരണം",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} संघ",
|
||||
"emails.magicSession.subject": "लॉगिन करा",
|
||||
"emails.magicSession.hello": "नमस्कार ,",
|
||||
"emails.magicSession.body": "लॉगिन करण्यासाठी या लिंकचे अनुसरण करा.",
|
||||
"emails.magicSession.footer": "आपण या ईमेलचा वापर करून लॉगिन करण्यास सांगितले नसल्यास, आपण या संदेशाकडे दुर्लक्ष करू शकता.",
|
||||
"emails.magicSession.thanks": "धन्यवाद,",
|
||||
"emails.magicSession.signature": "{{project}} संघ",
|
||||
"emails.recovery.subject": "पासवर्ड रीसेट",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} team",
|
||||
"emails.magicSession.subject": "Log masuk",
|
||||
"emails.magicSession.hello": "Hey,",
|
||||
"emails.magicSession.body": "Tekan pautan ini untuk log masuk.",
|
||||
"emails.magicSession.footer": "Sekiranya anda tidak membuat permintaan untuk log masuk menggunakan email ini, sila abaikan mesej ini.",
|
||||
"emails.magicSession.thanks": "Terima kasih,",
|
||||
"emails.magicSession.signature": "{{project}} team",
|
||||
"emails.recovery.subject": "Menetap semula Kata Laluan",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} team",
|
||||
"emails.magicSession.subject": "Pålogging",
|
||||
"emails.magicSession.hello": "Hei,",
|
||||
"emails.magicSession.body": "Følg denne lenken for å logge på.",
|
||||
"emails.magicSession.footer": "Dersom du ikke ba om å logge på med denne e-postadressen, kan du se bort fra denne meldingen.",
|
||||
"emails.magicSession.thanks": "Takk,",
|
||||
"emails.magicSession.signature": "{{project}} team",
|
||||
"emails.recovery.subject": "Nullstille passord",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} समूह",
|
||||
"emails.magicSession.subject": "लगइन",
|
||||
"emails.magicSession.hello": "नमस्ते,",
|
||||
"emails.magicSession.body": "लगइन गर्नको लागी यो लिंकमा जानुहोस।",
|
||||
"emails.magicSession.footer": "यदि तपाइँले यो इमेल प्रयोग गरेर लगइन गर्न सोध्नु भएको छैन भने तपाइँले यो सन्देश लाई बेवास्ता गर्न सक्नुहुन्छ।",
|
||||
"emails.magicSession.thanks": "धन्यवाद,",
|
||||
"emails.magicSession.signature": "{{project}} समूह",
|
||||
"emails.recovery.subject": "पासवर्ड रिसेट",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} team",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Hoi,",
|
||||
"emails.magicSession.body": "Volg deze link om in te loggen",
|
||||
"emails.magicSession.footer": "Als u geen aanvraag heeft gemaakt om met deze mail in te loggen, kan u deze mail negeren",
|
||||
"emails.magicSession.thanks": "Bedankt,",
|
||||
"emails.magicSession.signature": "{{project}} team",
|
||||
"emails.recovery.subject": "Wachtwoord Herinstellen",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} team",
|
||||
"emails.magicSession.subject": "Pålogging",
|
||||
"emails.magicSession.hello": "Hei,",
|
||||
"emails.magicSession.body": "Følg denne lenkja for å logge på.",
|
||||
"emails.magicSession.footer": "Om du ikkje ba om å logge på med denne e-postadressa, kan du ignorera denne meldinga.",
|
||||
"emails.magicSession.thanks": "Takk,",
|
||||
"emails.magicSession.signature": "{{project}} team",
|
||||
"emails.recovery.subject": "Nullstilla passord",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} ଦଳ",
|
||||
"emails.magicSession.subject": "ଲଗଇନ୍ କରନ୍ତୁ",
|
||||
"emails.magicSession.hello": "ନମସ୍କାର,",
|
||||
"emails.magicSession.body": "ଲଗଇନ୍ କରିବାକୁ ଏହି ଲିଙ୍କ୍ ଅନୁସରଣ କରନ୍ତୁ |",
|
||||
"emails.magicSession.footer": "ଯଦି ଆପଣ ଏହି ଇମେଲ୍ ବ୍ୟବହାର କରି ଲଗଇନ୍ କରିବାକୁ କହି ନାହାଁନ୍ତି, ତେବେ ଆପଣ ଏହି ସନ୍ଦେଶକୁ ଉପେକ୍ଷା କରିପାରିବେ |",
|
||||
"emails.magicSession.thanks": "ଧନ୍ୟବାଦ,",
|
||||
"emails.magicSession.signature": "{{project}} ଦଳ",
|
||||
"emails.recovery.subject": "ପାସୱାର୍ଡ ପୁନଃ ସେଟ୍ କରନ୍ତୁ |",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"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",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Time {{project}}",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Olá,",
|
||||
"emails.magicSession.body": "Clique neste link para entrar.",
|
||||
"emails.magicSession.footer": "Se você não solicitou conectar-se com este e-mail, ignore essa mensagem.",
|
||||
"emails.magicSession.thanks": "Muito obrigado,",
|
||||
"emails.magicSession.signature": "Time {{project}}",
|
||||
"emails.recovery.subject": "Redefinição de senha",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Equipa {{project}}",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Olá ,",
|
||||
"emails.magicSession.body": "Siga esta ligação para iniciar sessão.",
|
||||
"emails.magicSession.footer": "Se não pediu para entrar usando este e-mail, pode ignorar esta mensagem.",
|
||||
"emails.magicSession.thanks": "Obrigado,",
|
||||
"emails.magicSession.signature": "Equipa {{project}}",
|
||||
"emails.recovery.subject": "Redefinição de senha",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Echipa {{project}}",
|
||||
"emails.magicSession.subject": "Login",
|
||||
"emails.magicSession.hello": "Bună ziua,",
|
||||
"emails.magicSession.body": "Urmează acest link pentru logare.",
|
||||
"emails.magicSession.footer": "Dacă nu ai incercat să te loghezi folosing această adresa de email, poți ignora acest mesaj.",
|
||||
"emails.magicSession.thanks": "Mulțumim,",
|
||||
"emails.magicSession.signature": "Echipa {{project}}",
|
||||
"emails.recovery.subject": "Resetare parolă",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "команда {{project}}",
|
||||
"emails.magicSession.subject": "Логин",
|
||||
"emails.magicSession.hello": "Здравствуйте,",
|
||||
"emails.magicSession.body": "Перейдите по ссылке, чтобы войти.",
|
||||
"emails.magicSession.footer": "Если вы не просили войти, используя этот адрес электронной почты, проигнорируйте это сообщение.",
|
||||
"emails.magicSession.thanks": "Спасибо,",
|
||||
"emails.magicSession.signature": "команда {{project}}",
|
||||
"emails.recovery.subject": "Сброс пароля",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} गणः",
|
||||
"emails.magicSession.subject": "संप्रवेशः",
|
||||
"emails.magicSession.hello": "अयि,",
|
||||
"emails.magicSession.body": "संप्रवेशार्थमिदं संयोगसूत्रमनुसरतु।",
|
||||
"emails.magicSession.footer": "अनेन ई-पत्रण यदि संप्रवेशो नेष्यते तर्हि वात्र्तामिमामुपेक्षताम्।",
|
||||
"emails.magicSession.thanks": "धन्यवादः,",
|
||||
"emails.magicSession.signature": "{{project}} गणः",
|
||||
"emails.recovery.subject": "कूटशब्दपुनयाेजनम्",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} ٽيم",
|
||||
"emails.magicSession.subject": "لاگ ان",
|
||||
"emails.magicSession.hello": "هي ,",
|
||||
"emails.magicSession.body": "لاگ ان ٿيڻ لاءِ ھن لنڪ تي عمل ڪريو.",
|
||||
"emails.magicSession.footer": "جيڪڏھن توھان نه پ پيا ھي لاگ ان استعمال ڪندي اي ميل ، توھان نظر انداز ڪري سگھوٿا ھن پيغام کي.",
|
||||
"emails.magicSession.thanks": "مهرباني,",
|
||||
"emails.magicSession.signature": "{{project}} ٽيم",
|
||||
"emails.recovery.subject": "پاسورڊ ري سيٽ",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} කණ්ඩායම",
|
||||
"emails.magicSession.subject": "ප්රවේශ වන්න",
|
||||
"emails.magicSession.hello": "හේයි,",
|
||||
"emails.magicSession.body": "ප්රවේශ වීමට මෙම සම්බන්ධකය අනුගමනය කරන්න.",
|
||||
"emails.magicSession.footer": "මෙම විද්යුත් තැපෑල භාවිතයෙන් ප්රවේශ වීමට ඔබ ඉල්ලුවේ නැත්නම්, ඔබට මෙම පණිවිඩය නොසලකා හැරිය හැක.",
|
||||
"emails.magicSession.thanks": "ස්තුතියි,",
|
||||
"emails.magicSession.signature": "{{project}} කණ්ඩායම",
|
||||
"emails.recovery.subject": "මුරපද යළි පිහිටුවීම",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} tím",
|
||||
"emails.magicSession.subject": "Prihlásenie",
|
||||
"emails.magicSession.hello": "Ahoj,",
|
||||
"emails.magicSession.body": "Použi tento link pre prihlásenie.",
|
||||
"emails.magicSession.footer": "Ak si nepožiadal o prihlásenie cez email, túto správu môžeš ignorovať.",
|
||||
"emails.magicSession.thanks": "Ďakujeme,",
|
||||
"emails.magicSession.signature": "{{project}} tím",
|
||||
"emails.recovery.subject": "Obnovenie hesla",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Chikwata che{{project}}",
|
||||
"emails.magicSession.subject": "Pinda",
|
||||
"emails.magicSession.hello": "Hesi,",
|
||||
"emails.magicSession.body": "Baya chinongedzo ichi kuti upinde muakaundi yako.",
|
||||
"emails.magicSession.footer": "Kana usina kukumbira kupinda muakaundi yako uchishandisa email iyi, unogona kufuratira meseji iyi.",
|
||||
"emails.magicSession.thanks": "Ndatenda,",
|
||||
"emails.magicSession.signature": "Chikwata che{{project}}",
|
||||
"emails.recovery.subject": "Kuchinja pasiwedhi",
|
||||
|
|
|
|||
|
|
@ -11,8 +11,6 @@
|
|||
"emails.verification.signature": "",
|
||||
"emails.magicSession.subject": "",
|
||||
"emails.magicSession.hello": ",",
|
||||
"emails.magicSession.body": "",
|
||||
"emails.magicSession.footer": "",
|
||||
"emails.magicSession.thanks": ",",
|
||||
"emails.magicSession.signature": "",
|
||||
"emails.recovery.subject": "",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} teamet",
|
||||
"emails.magicSession.subject": "Logga in",
|
||||
"emails.magicSession.hello": "Hej,",
|
||||
"emails.magicSession.body": "Klicka på denna länk för att logga in.",
|
||||
"emails.magicSession.footer": "Om du inte bad om att logga in med denna e-postadress kan du ignorera detta mail.",
|
||||
"emails.magicSession.thanks": "Tack,",
|
||||
"emails.magicSession.signature": "{{project}} teamet",
|
||||
"emails.recovery.subject": "Återställ lösenord",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} குழு ",
|
||||
"emails.magicSession.subject": "உள்நுழைய",
|
||||
"emails.magicSession.hello": "ஏய்,",
|
||||
"emails.magicSession.body": "இந்த இணைப்பைப் பின்தொடரவும் உள்நுழைய",
|
||||
"emails.magicSession.footer": "இந்த மின்னஞ்சலைப் பயன்படுத்தி உள்நுழையுமாறு உங்களிடம் கேட்கப்படாவிட்டால், இந்தச் செய்தியைப் புறக்கணிக்கலாம்.",
|
||||
"emails.magicSession.thanks": "நன்றி,",
|
||||
"emails.magicSession.signature": "{{project}} குழு",
|
||||
"emails.recovery.subject": "கடவுச்சொல் மீட்டமைப்பு",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} జట్",
|
||||
"emails.magicSession.subject": "లాగిన్",
|
||||
"emails.magicSession.hello": "నమస్కారము,",
|
||||
"emails.magicSession.body": "లాగిన్ చేయడానికి ఈ లింక్ ని అనుసరించండి",
|
||||
"emails.magicSession.footer": "మీరు ఈ ఇమెయిల్ ని ఉపయోగించి లాగిన్ చేయమని అడగకపోతే, మీరు ఈ సందేశాన్ని విస్మరించవచ్చు",
|
||||
"emails.magicSession.thanks": "ధన్యవాదాలు,",
|
||||
"emails.magicSession.signature": "{{project}} జట్",
|
||||
"emails.recovery.subject": "పాస్వర్డ్ రీసెట్",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "ทีม {{project}}",
|
||||
"emails.magicSession.subject": "เข้าสู่ระบบ",
|
||||
"emails.magicSession.hello": "เรียนผู้ใช้งาน",
|
||||
"emails.magicSession.body": "กดเข้าไปที่ลิงก์นี้เพื่อเข้าสู่ระบบ",
|
||||
"emails.magicSession.footer": "หากท่านไม่ได้ต้องการที่จะเข้าสู่ระบบด้วยอีเมลนี้ ท่านสามารถเพิกเฉยข้อความนี้ได้",
|
||||
"emails.magicSession.thanks": "ขอบคุณ",
|
||||
"emails.magicSession.signature": "ทีม {{project}}",
|
||||
"emails.recovery.subject": "รีเซ็ตรหัสผ่าน",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Pangkat ng {{project}}",
|
||||
"emails.magicSession.subject": "Mag log in",
|
||||
"emails.magicSession.hello": "Kamusta ,",
|
||||
"emails.magicSession.body": "Sundin ang link na ito upang mag-login.",
|
||||
"emails.magicSession.footer": "Kung hindi mo hiningi na mag-login gamit ang email na ito, maaari mong balewalain ang mensahe na ito.",
|
||||
"emails.magicSession.thanks": "Salamat,",
|
||||
"emails.magicSession.signature": "Pangkat ng {{project}}",
|
||||
"emails.recovery.subject": "I-reset ang password",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} takımı",
|
||||
"emails.magicSession.subject": "Giriş",
|
||||
"emails.magicSession.hello": "Merhaba,",
|
||||
"emails.magicSession.body": "Giriş yapmak için tıklayın.",
|
||||
"emails.magicSession.footer": "Eğer bu eposta adresini kullanarak giriş yapmak istemediyseniz devam etmeyin.",
|
||||
"emails.magicSession.thanks": "Teşekkürler,",
|
||||
"emails.magicSession.signature": "{{project}} takımı",
|
||||
"emails.recovery.subject": "Şifremi Sıfırla",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "команда {{project}}",
|
||||
"emails.magicSession.subject": "Логін",
|
||||
"emails.magicSession.hello": "Вітаємо,",
|
||||
"emails.magicSession.body": "Перейдіть за цим посиланням, щоб увійти.",
|
||||
"emails.magicSession.footer": "Якщо ви не просили увійти за допомогою цієї електронної пошти, ви можете ігнорувати це повідомлення.",
|
||||
"emails.magicSession.thanks": "Дякуємо,",
|
||||
"emails.magicSession.signature": "команда {{project}}",
|
||||
"emails.recovery.subject": "Скидання пароля",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "ٹیم۔ {{project}}",
|
||||
"emails.magicSession.subject": "اگ ان کریں",
|
||||
"emails.magicSession.hello": "خوش آمدید،",
|
||||
"emails.magicSession.body": "لاگ ان کرنے کے لیے اس لنک پر عمل کریں۔",
|
||||
"emails.magicSession.footer": "اگر آپ نے اس ای میل کا استعمال کرتے ہوئے لاگ ان کرنے کے لیے نہیں کہا تو آپ اس پیغام کو نظر انداز کر سکتے ہیں۔",
|
||||
"emails.magicSession.thanks": "شکریہ،",
|
||||
"emails.magicSession.signature": "ٹیم۔ {{project}}",
|
||||
"emails.recovery.subject": "پاس ورڈ ری سیٹ۔",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "Nhóm {{project}}",
|
||||
"emails.magicSession.subject": "Đăng nhập",
|
||||
"emails.magicSession.hello": "Chào",
|
||||
"emails.magicSession.body": "Nhấn vào đường dẫn sau để đăng nhập.",
|
||||
"emails.magicSession.footer": "Nếu bạn không yêu cầu đăng nhập bằng email, bạn có thể bỏ qua email này.",
|
||||
"emails.magicSession.thanks": "Cảm ơn",
|
||||
"emails.magicSession.signature": "Nhóm {{project}}",
|
||||
"emails.recovery.subject": "Thiết lập lại mật khẩu",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} 团队",
|
||||
"emails.magicSession.subject": "登录",
|
||||
"emails.magicSession.hello": "你好、",
|
||||
"emails.magicSession.body": "点此链接登录。",
|
||||
"emails.magicSession.footer": "如果您没有要求使用此电子邮件登录,则可忽略此消息。",
|
||||
"emails.magicSession.thanks": "谢谢、",
|
||||
"emails.magicSession.signature": "{{project}} 团队",
|
||||
"emails.recovery.subject": "重设密码",
|
||||
|
|
|
|||
|
|
@ -12,8 +12,6 @@
|
|||
"emails.verification.signature": "{{project}} 團隊",
|
||||
"emails.magicSession.subject": "登入",
|
||||
"emails.magicSession.hello": "嗨、",
|
||||
"emails.magicSession.body": "點此連結登入。",
|
||||
"emails.magicSession.footer": "如果您沒有要求使用此電子郵件登入,則可以忽略此消息。",
|
||||
"emails.magicSession.thanks": "謝謝、",
|
||||
"emails.magicSession.signature": "{{project}} 團隊",
|
||||
"emails.recovery.subject": "重設密碼",
|
||||
|
|
|
|||
|
|
@ -2268,6 +2268,8 @@ App::get('/v1/projects/:projectId/templates/email/:type/:locale')
|
|||
$template = $templates['email.' . $type . '-' . $locale] ?? null;
|
||||
|
||||
$localeObj = new Locale($locale);
|
||||
$localeObj->setFallback(System::getEnv('_APP_LOCALE', 'en'));
|
||||
|
||||
if (is_null($template)) {
|
||||
/**
|
||||
* different templates, different placeholders.
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ use Utopia\Database\Helpers\ID;
|
|||
use Utopia\Database\Helpers\Permission;
|
||||
use Utopia\Database\Helpers\Role;
|
||||
use Utopia\Database\Validator\UID;
|
||||
use Utopia\Locale\Locale;
|
||||
use Utopia\System\System;
|
||||
use Utopia\Validator\Host;
|
||||
use Utopia\Validator\Text;
|
||||
|
|
@ -35,6 +36,25 @@ App::get('/v1/mock/tests/general/oauth2')
|
|||
$response->redirect($redirectURI . '?' . \http_build_query(['code' => 'abcdef', 'state' => $state]));
|
||||
});
|
||||
|
||||
App::get('/v1/mock/tests/locale')
|
||||
->desc('Mock locale translation key')
|
||||
->groups(['mock'])
|
||||
->label('scope', 'public')
|
||||
->label('docs', false)
|
||||
->label('mock', true)
|
||||
->inject('locale')
|
||||
->inject('localeCodes')
|
||||
->inject('request')
|
||||
->inject('response')
|
||||
->action(function (Locale $locale, array $localeCodes, Request $request, Response $response) {
|
||||
$localeParam = (string) $request->getParam('locale', $request->getHeader('x-appwrite-locale', ''));
|
||||
if (\in_array($localeParam, $localeCodes)) {
|
||||
$locale->setDefault($localeParam);
|
||||
}
|
||||
|
||||
$response->send($locale->getText('mock'));
|
||||
});
|
||||
|
||||
App::get('/v1/mock/tests/general/oauth2/token')
|
||||
->desc('OAuth2 Token')
|
||||
->groups(['mock'])
|
||||
|
|
|
|||
|
|
@ -245,10 +245,16 @@ Database::addFilter(
|
|||
return;
|
||||
},
|
||||
function (mixed $value, Document $document, Database $database) {
|
||||
$resourceType = match ($document->getCollection()) {
|
||||
'functions' => ['function'],
|
||||
'sites' => ['site'],
|
||||
default => ['function', 'site']
|
||||
};
|
||||
|
||||
return $database
|
||||
->find('variables', [
|
||||
Query::equal('resourceInternalId', [$document->getSequence()]),
|
||||
Query::equal('resourceType', ['function', 'site']),
|
||||
Query::equal('resourceType', $resourceType),
|
||||
Query::limit(APP_LIMIT_SUBQUERY),
|
||||
]);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,7 +70,11 @@ App::setResource('hooks', function ($register) {
|
|||
}, ['register']);
|
||||
|
||||
App::setResource('register', fn () => $register);
|
||||
App::setResource('locale', fn () => new Locale(System::getEnv('_APP_LOCALE', 'en')));
|
||||
App::setResource('locale', function () {
|
||||
$locale = new Locale(System::getEnv('_APP_LOCALE', 'en'));
|
||||
$locale->setFallback(System::getEnv('_APP_LOCALE', 'en'));
|
||||
return $locale;
|
||||
});
|
||||
|
||||
App::setResource('localeCodes', function () {
|
||||
return array_map(fn ($locale) => $locale['code'], Config::getParam('locale-codes', []));
|
||||
|
|
|
|||
|
|
@ -46,13 +46,13 @@
|
|||
"ext-sockets": "*",
|
||||
"appwrite/php-runtimes": "0.19.*",
|
||||
"appwrite/php-clamav": "2.0.*",
|
||||
"utopia-php/abuse": "1.0.*",
|
||||
"utopia-php/abuse": "1.*",
|
||||
"utopia-php/analytics": "0.10.*",
|
||||
"utopia-php/audit": "1.0.*",
|
||||
"utopia-php/audit": "1.*",
|
||||
"utopia-php/cache": "0.13.*",
|
||||
"utopia-php/cli": "0.15.*",
|
||||
"utopia-php/config": "0.2.*",
|
||||
"utopia-php/database": "1.0.*",
|
||||
"utopia-php/database": "1.*",
|
||||
"utopia-php/detector": "0.1.*",
|
||||
"utopia-php/domains": "0.8.*",
|
||||
"utopia-php/dns": "0.3.*",
|
||||
|
|
@ -60,10 +60,10 @@
|
|||
"utopia-php/framework": "0.33.*",
|
||||
"utopia-php/fetch": "0.4.*",
|
||||
"utopia-php/image": "0.8.*",
|
||||
"utopia-php/locale": "0.4.*",
|
||||
"utopia-php/locale": "0.8.*",
|
||||
"utopia-php/logger": "0.6.*",
|
||||
"utopia-php/messaging": "0.18.*",
|
||||
"utopia-php/migration": "1.0.*",
|
||||
"utopia-php/migration": "1.*",
|
||||
"utopia-php/orchestration": "0.9.*",
|
||||
"utopia-php/platform": "0.7.*",
|
||||
"utopia-php/pools": "0.8.*",
|
||||
|
|
|
|||
16830
composer.lock
generated
16830
composer.lock
generated
File diff suppressed because it is too large
Load diff
|
|
@ -963,7 +963,7 @@ services:
|
|||
hostname: exc1
|
||||
<<: *x-logging
|
||||
stop_signal: SIGINT
|
||||
image: openruntimes/executor:0.7.22
|
||||
image: openruntimes/executor:0.8.1
|
||||
restart: unless-stopped
|
||||
networks:
|
||||
- appwrite
|
||||
|
|
|
|||
|
|
@ -373,6 +373,7 @@ class Certificates extends Action
|
|||
Console::warning('Cannot renew domain (' . $domain . ') on attempt no. ' . $attempt . ' certificate: ' . $errorMessage);
|
||||
|
||||
$locale = new Locale(System::getEnv('_APP_LOCALE', 'en'));
|
||||
$locale->setFallback(System::getEnv('_APP_LOCALE', 'en'));
|
||||
|
||||
// Send mail to administrator mail
|
||||
$template = Template::fromFile(__DIR__ . '/../../../../app/config/locale/templates/email-certificate-failed.tpl');
|
||||
|
|
|
|||
|
|
@ -216,7 +216,15 @@ class Client
|
|||
return $len;
|
||||
});
|
||||
|
||||
if ($method != self::METHOD_GET) {
|
||||
|
||||
if ($method === self::METHOD_HEAD) {
|
||||
curl_setopt($ch, CURLOPT_NOBODY, true); // This is crucial for HEAD requests
|
||||
curl_setopt($ch, CURLOPT_HEADER, false);
|
||||
} else {
|
||||
curl_setopt($ch, CURLOPT_NOBODY, false);
|
||||
}
|
||||
|
||||
if ($method != self::METHOD_GET && $method != self::METHOD_HEAD) {
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, $query);
|
||||
}
|
||||
|
||||
|
|
@ -229,7 +237,7 @@ class Client
|
|||
$responseType = $responseHeaders['content-type'] ?? '';
|
||||
$responseStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
|
||||
if ($decode) {
|
||||
if ($decode && $method !== self::METHOD_HEAD) {
|
||||
$strpos = strpos($responseType, ';');
|
||||
$strpos = \is_bool($strpos) ? \strlen($responseType) : $strpos;
|
||||
switch (substr($responseType, 0, $strpos)) {
|
||||
|
|
@ -255,6 +263,9 @@ class Client
|
|||
$json = null;
|
||||
break;
|
||||
}
|
||||
} elseif ($method === self::METHOD_HEAD) {
|
||||
// For HEAD requests, always set body to empty string regardless of decode flag
|
||||
$responseBody = '';
|
||||
}
|
||||
|
||||
if ((curl_errno($ch)/* || 200 != $responseStatus*/)) {
|
||||
|
|
|
|||
|
|
@ -74,6 +74,50 @@ class FunctionsCustomClientTest extends Scope
|
|||
$this->cleanupFunction($functionId);
|
||||
}
|
||||
|
||||
public function testCreateHeadExecution()
|
||||
{
|
||||
/**
|
||||
* Test for SUCCESS
|
||||
*/
|
||||
$functionId = $this->setupFunction([
|
||||
'functionId' => ID::unique(),
|
||||
'name' => 'Test',
|
||||
'execute' => [Role::user($this->getUser()['$id'])->toString()],
|
||||
'runtime' => 'node-22',
|
||||
'entrypoint' => 'index.js',
|
||||
'events' => [
|
||||
'users.*.create',
|
||||
'users.*.delete',
|
||||
],
|
||||
'timeout' => 10,
|
||||
]);
|
||||
$this->setupDeployment($functionId, [
|
||||
'code' => $this->packageFunction('basic'),
|
||||
'activate' => true
|
||||
]);
|
||||
|
||||
// Deny create async execution as guest
|
||||
$execution = $this->client->call(Client::METHOD_POST, '/functions/' . $functionId . '/executions', [
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], [
|
||||
'async' => true,
|
||||
]);
|
||||
$this->assertEquals(401, $execution['headers']['status-code']);
|
||||
|
||||
// Allow create async execution as user
|
||||
$execution = $this->client->call(Client::METHOD_HEAD, '/functions/' . $functionId . '/executions', array_merge([
|
||||
'content-type' => 'application/json',
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
], $this->getHeaders()), [
|
||||
'async' => true,
|
||||
]);
|
||||
$this->assertEquals(200, $execution['headers']['status-code']);
|
||||
$this->assertEmpty($execution['body']);
|
||||
|
||||
$this->cleanupFunction($functionId);
|
||||
}
|
||||
|
||||
public function testCreateCustomExecution(): array
|
||||
{
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -269,4 +269,57 @@ trait LocaleBase
|
|||
|
||||
return [];
|
||||
}
|
||||
|
||||
public function testFallbackLocale()
|
||||
{
|
||||
$en = 'A mock translation for testing purposes.';
|
||||
$de = 'Eine Beispielübersetzung für Testzwecke.';
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/mock/tests/locale', [
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
]);
|
||||
|
||||
$this->assertEquals($response['headers']['status-code'], 200);
|
||||
$this->assertEquals($en, $response['body']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/mock/tests/locale', [
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-locale' => 'en'
|
||||
]);
|
||||
|
||||
$this->assertEquals($response['headers']['status-code'], 200);
|
||||
$this->assertEquals($en, $response['body']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/mock/tests/locale', [
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-locale' => 'de'
|
||||
]);
|
||||
|
||||
$this->assertEquals($response['headers']['status-code'], 200);
|
||||
$this->assertEquals($de, $response['body']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/mock/tests/locale', [
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-locale' => 'cs'
|
||||
]);
|
||||
|
||||
$this->assertEquals($response['headers']['status-code'], 200);
|
||||
$this->assertEquals($en, $response['body']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/mock/tests/locale', [
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-locale' => 'non-existing'
|
||||
]);
|
||||
|
||||
$this->assertEquals($response['headers']['status-code'], 200);
|
||||
$this->assertEquals($en, $response['body']);
|
||||
|
||||
$response = $this->client->call(Client::METHOD_GET, '/mock/tests/locale', [
|
||||
'x-appwrite-project' => $this->getProject()['$id'],
|
||||
'x-appwrite-locale' => ''
|
||||
]);
|
||||
|
||||
$this->assertEquals($response['headers']['status-code'], 200);
|
||||
$this->assertEquals($en, $response['body']);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue