mirror of
https://github.com/projectsend/projectsend.git
synced 2026-09-11 22:38:54 +00:00
Move the seat number to the end of the sentence
It read "limited to 1 staff accounts" -- the number sat directly in front of a countable noun, which is the message a free-tier customer meets the first time they try to add anybody. Adding plural forms would fix English and not much else. Polish, Czech and Russian inflect the noun by the number in front of it, on a three-way split that a two-form string cannot express, so ':count kont' cannot be right for every value however many variants it carries. Ending the sentence on the number means no language has to agree with it -- the same shape the other counted strings here already use. Both strings rewritten in all sixteen locales rather than left to the next translation pass, since the old key would otherwise go missing and block a build. Checked at 1 and at 25 in English, Spanish, German, Polish and Russian.
This commit is contained in:
@@ -16,6 +16,8 @@ a version is cut.
|
||||
**Fixed**
|
||||
|
||||
- The plain-text version of an email no longer shows the link twice, wrapped in brackets.
|
||||
- The message you get when an account would exceed your plan no longer reads "limited to 1 staff
|
||||
accounts".
|
||||
|
||||
## 2.2.0 — 27 August 2026
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ class SeatAllowance
|
||||
}
|
||||
|
||||
throw ValidationException::withMessages([
|
||||
$field => __('This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.', [
|
||||
$field => __('Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.', [
|
||||
'count' => (string) $limit,
|
||||
]),
|
||||
]);
|
||||
@@ -116,7 +116,7 @@ class SeatAllowance
|
||||
}
|
||||
|
||||
throw ValidationException::withMessages([
|
||||
$field => __('This installation is limited to :count clients. Remove one, or ask for a larger plan.', [
|
||||
$field => __('Clients on this installation are limited to :count. Remove one, or ask for a larger plan.', [
|
||||
'count' => (string) $limit,
|
||||
]),
|
||||
]);
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Ningú no està creant les descàrregues en zip",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Hi ha una descàrrega en zip esperant des del :date i cap procés en segon pla no l’ha recollida. Les descàrregues en zip ara fan servir una cua pròpia, així que un procés iniciat abans d’aquesta versió mira la cua equivocada — tota la resta, correu inclòs, continua funcionant.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "L’ordre del teu procés en segon pla necessita --queue=default,zips. A INSTALL.md hi ha el fitxer de servei complet.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Aquesta instal·lació està limitada a :count comptes de sistema. Elimina'n un o demana un pla més gran.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Aquesta instal·lació està limitada a :count clients. Elimina'n un o demana un pla més gran."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Els comptes de sistema d'aquesta instal·lació estan limitats a :count. Elimina'n un o demana un pla més gran.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Els clients d'aquesta instal·lació estan limitats a :count. Elimina'n un o demana un pla més gran."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Nikdo nevytváří stažení ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Stažení ZIP čeká od :date a žádný proces na pozadí si ho nevzal. Stahování ZIP má teď vlastní frontu, takže proces spuštěný před touto verzí sleduje špatnou — všechno ostatní, včetně e-mailu, funguje dál.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Příkaz tvého procesu na pozadí potřebuje --queue=default,zips. Celý soubor služby najdeš v INSTALL.md.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Tato instalace je omezena na :count systémových účtů. Odeber jeden nebo si vyžádej větší tarif.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Tato instalace je omezena na :count klientů. Odeber jednoho nebo si vyžádej větší tarif."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Počet systémových účtů v této instalaci je omezen na :count. Odeber jeden nebo si vyžádej větší tarif.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Počet klientů v této instalaci je omezen na :count. Odeber jednoho nebo si vyžádej větší tarif."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Niemand erstellt die ZIP-Downloads",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Ein ZIP-Download wartet seit dem :date und kein Hintergrundprozess hat ihn übernommen. ZIP-Downloads laufen jetzt über eine eigene Warteschlange, daher überwacht ein vor dieser Version gestarteter Prozess die falsche — alles andere, auch E-Mail, funktioniert weiter.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Der Befehl Ihres Hintergrundprozesses braucht --queue=default,zips. In INSTALL.md steht die vollständige Service-Datei.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Diese Installation ist auf :count Systemkonten begrenzt. Entfernen Sie eines oder fragen Sie nach einem größeren Tarif.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Diese Installation ist auf :count Kunden begrenzt. Entfernen Sie einen oder fragen Sie nach einem größeren Tarif."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Die Systemkonten dieser Installation sind auf :count begrenzt. Entfernen Sie eines oder fragen Sie nach einem größeren Tarif.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Die Kunden dieser Installation sind auf :count begrenzt. Entfernen Sie einen oder fragen Sie nach einem größeren Tarif."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Nadie está creando las descargas en zip",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Hay una descarga en zip esperando desde el :date y ningún proceso en segundo plano la ha recogido. Las descargas en zip ahora usan su propia cola, así que un proceso iniciado antes de esta versión está mirando la cola equivocada — todo lo demás, incluido el correo, sigue funcionando.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "El comando de tu proceso en segundo plano necesita --queue=default,zips. En INSTALL.md está el archivo de servicio completo.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Esta instalación está limitada a :count cuentas de sistema. Elimina una o pide un plan más grande.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Esta instalación está limitada a :count clientes. Elimina uno o pide un plan más grande."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Las cuentas de sistema de esta instalación están limitadas a :count. Elimina una o pide un plan más grande.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Los clientes de esta instalación están limitados a :count. Elimina uno o pide un plan más grande."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Personne ne construit les téléchargements ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Un téléchargement ZIP attend depuis le :date et aucun processus d’arrière-plan ne l’a pris en charge. Les téléchargements ZIP passent désormais par leur propre file d’attente : un processus démarré avant cette version surveille donc la mauvaise — tout le reste, e-mail compris, continue de fonctionner.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "La commande de votre processus d’arrière-plan doit contenir --queue=default,zips. INSTALL.md donne le fichier de service complet.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Cette installation est limitée à :count comptes système. Supprimez-en un, ou demandez une formule plus large.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Cette installation est limitée à :count clients. Supprimez-en un, ou demandez une formule plus large."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Les comptes système de cette installation sont limités à :count. Supprimez-en un, ou demandez une formule plus large.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Les clients de cette installation sont limités à :count. Supprimez-en un, ou demandez une formule plus large."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Tidak ada yang membuat unduhan ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Sebuah unduhan ZIP sudah menunggu sejak :date dan tidak ada proses latar yang mengambilnya. Pembuatan ZIP kini berjalan di antrean sendiri, jadi proses yang dijalankan sebelum versi ini mengawasi antrean yang salah — selebihnya, termasuk email, tetap berjalan.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Perintah proses latarmu perlu --queue=default,zips. Berkas layanan lengkapnya ada di INSTALL.md.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Instalasi ini dibatasi :count akun sistem. Hapus satu, atau minta paket yang lebih besar.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Instalasi ini dibatasi :count klien. Hapus satu, atau minta paket yang lebih besar."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Akun sistem pada instalasi ini dibatasi hingga :count. Hapus satu, atau minta paket yang lebih besar.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Klien pada instalasi ini dibatasi hingga :count. Hapus satu, atau minta paket yang lebih besar."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Nessuno sta creando i download ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Un download ZIP è in attesa dal :date e nessun processo in background lo ha preso in carico. I download ZIP ora usano una coda propria, quindi un processo avviato prima di questa versione sta guardando la coda sbagliata — tutto il resto, email compresa, continua a funzionare.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Il comando del tuo processo in background ha bisogno di --queue=default,zips. In INSTALL.md c’è il file di servizio completo.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Questa installazione è limitata a :count account di sistema. Rimuovine uno o chiedi un piano più grande.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Questa installazione è limitata a :count clienti. Rimuovine uno o chiedi un piano più grande."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Gli account di sistema di questa installazione sono limitati a :count. Rimuovine uno o chiedi un piano più grande.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "I clienti di questa installazione sono limitati a :count. Rimuovine uno o chiedi un piano più grande."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "ZIP ダウンロードを作成しているものがありません",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": ":date から ZIP ダウンロードが待機したままで、どのバックグラウンド処理も取りかかっていません。ZIP の作成は専用のキューで実行されるようになったため、このバージョンより前に起動した処理は別のキューを見ています — メールを含め、ほかはすべて動いています。",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "バックグラウンド処理のコマンドに --queue=default,zips が必要です。完全なサービスファイルは INSTALL.md にあります。",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "このインストールはシステムアカウント :count 件までです。1 件削除するか、上位のプランをご依頼ください。",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "このインストールは取引先 :count 件までです。1 件削除するか、上位のプランをご依頼ください。"
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "このインストールのシステムアカウントの上限は :count です。1 件削除するか、上位のプランをご依頼ください。",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "このインストールの取引先の上限は :count です。1 件削除するか、上位のプランをご依頼ください。"
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Niemand bouwt de ZIP-downloads",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Een ZIP-download wacht al sinds :date en geen enkel achtergrondproces heeft hem opgepakt. ZIP-downloads gebruiken nu een eigen wachtrij, dus een proces dat vóór deze versie is gestart kijkt naar de verkeerde — al het andere, e-mail inbegrepen, werkt gewoon door.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Het commando van je achtergrondproces heeft --queue=default,zips nodig. In INSTALL.md staat het volledige servicebestand.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Deze installatie is beperkt tot :count systeemaccounts. Verwijder er een of vraag om een groter abonnement.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Deze installatie is beperkt tot :count klanten. Verwijder er een of vraag om een groter abonnement."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "De systeemaccounts van deze installatie zijn beperkt tot :count. Verwijder er een of vraag om een groter abonnement.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "De klanten van deze installatie zijn beperkt tot :count. Verwijder er een of vraag om een groter abonnement."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Nikt nie tworzy pobrań ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Pobranie ZIP czeka od :date i żaden proces w tle go nie podjął. Pobrania ZIP mają teraz własną kolejkę, więc proces uruchomiony przed tą wersją obserwuje niewłaściwą — wszystko inne, łącznie z pocztą, działa normalnie.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Polecenie twojego procesu w tle potrzebuje --queue=default,zips. Pełny plik usługi znajdziesz w INSTALL.md.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Ta instalacja jest ograniczona do :count kont systemowych. Usuń jedno lub poproś o większy plan.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Ta instalacja jest ograniczona do :count klientów. Usuń jednego lub poproś o większy plan."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Liczba kont systemowych w tej instalacji jest ograniczona do :count. Usuń jedno lub poproś o większy plan.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Liczba klientów w tej instalacji jest ograniczona do :count. Usuń jednego lub poproś o większy plan."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Ninguém está montando os downloads em ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Um download em ZIP está esperando desde :date e nenhum processo em segundo plano pegou ele. Downloads em ZIP agora usam uma fila própria, então um processo iniciado antes desta versão está olhando para a fila errada — todo o resto, inclusive e-mail, continua funcionando.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "O comando do seu processo em segundo plano precisa de --queue=default,zips. O INSTALL.md tem o arquivo de serviço completo.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Esta instalação está limitada a :count contas de sistema. Remova uma ou peça um plano maior.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Esta instalação está limitada a :count clientes. Remova um ou peça um plano maior."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "As contas de sistema desta instalação estão limitadas a :count. Remova uma ou peça um plano maior.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Os clientes desta instalação estão limitados a :count. Remova um ou peça um plano maior."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Никто не собирает ZIP-архивы",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "ZIP-архив ждёт с :date, и ни один фоновый обработчик его не взял. Сборка ZIP теперь идёт в отдельной очереди, поэтому обработчик, запущенный до этой версии, следит не за той — всё остальное, включая почту, работает как прежде.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "В команде вашего фонового обработчика нужен --queue=default,zips. Полный файл службы есть в INSTALL.md.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Эта установка ограничена :count системными учётными записями. Удалите одну или запросите более крупный тариф.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Эта установка ограничена :count клиентами. Удалите одного или запросите более крупный тариф."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Количество системных учётных записей в этой установке ограничено до :count. Удалите одну или запросите более крупный тариф.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Количество клиентов в этой установке ограничено до :count. Удалите одного или запросите более крупный тариф."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Hakuna kinachotengeneza upakuaji wa ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Upakuaji wa ZIP umesubiri tangu :date na hakuna mchakato wa nyuma uliouchukua. Utengenezaji wa ZIP sasa unaendeshwa kwenye foleni yake yenyewe, hivyo mchakato ulioanzishwa kabla ya toleo hili unaangalia foleni isiyo sahihi — kila kitu kingine, pamoja na barua pepe, kinaendelea kufanya kazi.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Amri ya mchakato wako wa nyuma inahitaji --queue=default,zips. Faili kamili ya huduma ipo katika INSTALL.md.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Usakinishaji huu umewekewa kikomo cha akaunti za mfumo :count. Ondoa moja, au omba mpango mkubwa zaidi.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Usakinishaji huu umewekewa kikomo cha wateja :count. Ondoa mmoja, au omba mpango mkubwa zaidi."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Akaunti za mfumo katika usakinishaji huu zimewekewa kikomo cha :count. Ondoa moja, au omba mpango mkubwa zaidi.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Wateja katika usakinishaji huu wamewekewa kikomo cha :count. Ondoa mmoja, au omba mpango mkubwa zaidi."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "ZIP indirmelerini kimse oluşturmuyor",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Bir ZIP indirmesi :date tarihinden beri bekliyor ve hiçbir arka plan işleyicisi onu almadı. ZIP indirmeleri artık kendi kuyruğunda çalışıyor, bu yüzden bu sürümden önce başlatılan bir işleyici yanlış kuyruğu izliyor — e-posta dahil diğer her şey çalışmaya devam ediyor.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Arka plan işleyicinin komutunda --queue=default,zips olmalı. Tam servis dosyası INSTALL.md içinde.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Bu kurulum :count sistem hesabıyla sınırlı. Birini kaldır ya da daha büyük bir plan iste.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Bu kurulum :count müşteriyle sınırlı. Birini kaldır ya da daha büyük bir plan iste."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Bu kurulumdaki sistem hesabı sayısı en fazla :count olabilir. Birini kaldır ya da daha büyük bir plan iste.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Bu kurulumdaki müşteri sayısı en fazla :count olabilir. Birini kaldır ya da daha büyük bir plan iste."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "Không có tiến trình nào đang tạo bản tải ZIP",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "Một bản tải ZIP đã chờ từ :date mà không tiến trình nền nào nhận. Việc tạo ZIP giờ chạy trên hàng đợi riêng, nên tiến trình khởi động trước phiên bản này đang theo dõi nhầm hàng đợi — mọi thứ khác, kể cả email, vẫn chạy bình thường.",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "Lệnh chạy tiến trình nền của bạn cần --queue=default,zips. Tệp dịch vụ đầy đủ có trong INSTALL.md.",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "Bản cài đặt này giới hạn :count tài khoản hệ thống. Hãy xoá bớt một tài khoản, hoặc yêu cầu gói lớn hơn.",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "Bản cài đặt này giới hạn :count khách hàng. Hãy xoá bớt một khách hàng, hoặc yêu cầu gói lớn hơn."
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "Số tài khoản hệ thống của bản cài đặt này giới hạn ở :count. Hãy xoá bớt một tài khoản, hoặc yêu cầu gói lớn hơn.",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "Số khách hàng của bản cài đặt này giới hạn ở :count. Hãy xoá bớt một khách hàng, hoặc yêu cầu gói lớn hơn."
|
||||
}
|
||||
|
||||
+2
-2
@@ -1901,6 +1901,6 @@
|
||||
"Nothing is building zip downloads": "没有任何进程在打包 ZIP 下载",
|
||||
"A zip download has been waiting since :date and no background worker has picked it up. Zip downloads run on their own queue now, so a worker started before this version watches the wrong one — everything else, including email, keeps working.": "有一个 ZIP 下载从 :date 起一直在等待,没有任何后台进程接手。ZIP 打包现在使用单独的队列,因此在此版本之前启动的进程盯着的是另一条队列 —— 其他一切,包括邮件,都照常工作。",
|
||||
"Your worker command needs --queue=default,zips. INSTALL.md has the full service file.": "你的后台进程命令需要加上 --queue=default,zips。完整的服务文件见 INSTALL.md。",
|
||||
"This installation is limited to :count staff accounts. Remove one, or ask for a larger plan.": "本安装最多允许 :count 个系统账户。请删除一个,或申请更大的套餐。",
|
||||
"This installation is limited to :count clients. Remove one, or ask for a larger plan.": "本安装最多允许 :count 个客户。请删除一个,或申请更大的套餐。"
|
||||
"Staff accounts on this installation are limited to :count. Remove one, or ask for a larger plan.": "本安装的系统账户上限为 :count。请删除一个,或申请更大的套餐。",
|
||||
"Clients on this installation are limited to :count. Remove one, or ask for a larger plan.": "本安装的客户上限为 :count。请删除一个,或申请更大的套餐。"
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Modules\Identity\Permissions\SystemRole;
|
||||
use App\Modules\Platform\Seats\SeatAllowance;
|
||||
use App\Modules\Platform\Settings\Setting;
|
||||
use App\Modules\Platform\Settings\Settings;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
|
||||
/**
|
||||
* A cap is only a cap if every door asks.
|
||||
@@ -234,3 +235,32 @@ test('room under the cap still lets an account through', function () {
|
||||
|
||||
expect(User::query()->where('email', 'second@example.test')->exists())->toBeTrue();
|
||||
});
|
||||
|
||||
it('names the limit without putting a noun after the number', function () {
|
||||
// The refusal used to read "limited to 1 staff accounts" — the number
|
||||
// sat directly in front of a countable noun, so no single wording could
|
||||
// be right for every value. English needs two forms; Polish, Czech and
|
||||
// Russian need three, and inflect the noun by the number in front of
|
||||
// it. Putting the number last means no language has to agree with it.
|
||||
config()->set('projectsend.platform.max_staff_users', 1);
|
||||
config()->set('projectsend.platform.max_clients', 1);
|
||||
|
||||
// Both seats have to be full for either guard to say anything at all.
|
||||
User::factory()->client()->create();
|
||||
|
||||
$allowance = app(SeatAllowance::class);
|
||||
|
||||
foreach (['guardStaff', 'guardClient'] as $guard) {
|
||||
try {
|
||||
$allowance->{$guard}();
|
||||
$this->fail($guard.'() should have refused at a limit of 1.');
|
||||
} catch (ValidationException $e) {
|
||||
$message = $e->validator->errors()->first();
|
||||
|
||||
expect($message)->toContain('limited to 1.')
|
||||
// A trailing noun is exactly what this is here to stop.
|
||||
->and($message)->not->toContain('1 staff accounts')
|
||||
->and($message)->not->toContain('1 clients');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user