Tier model: registered=basic (recipes, 12 photos, QR), PRO=verified or admin-activated (HSL, tools/gradient mask, RAW, export > source longest edge); admin users table gets Activated Pro column
This commit is contained in:
@@ -137,7 +137,7 @@ export const en: Dict = {
|
||||
'auth.loggedInAs': 'Signed in as {email}',
|
||||
'auth.verifyTitle': 'Verify your email',
|
||||
'auth.verifyBody': 'We sent a six-digit code to {email}. Type it below — or open the link in the mail — to unlock the PRO features.',
|
||||
'auth.verifyProHint': 'Until then the account works exactly like a guest: exports stay 2048px with a watermark, and nothing can be saved.',
|
||||
'auth.verifyProHint': 'Until then the account stays on the basic tier: recipes, saved photos (12 max), and an export inside the long edge of the photo being edited. PRO features (HSL, TOOLS, RAW, exports past it) need the account to be activated.',
|
||||
'auth.verifySent': 'A new code has been sent.',
|
||||
'auth.codePlaceholder': 'The six digits from the mail',
|
||||
'auth.verifyBtn': 'VERIFY',
|
||||
@@ -149,11 +149,14 @@ export const en: Dict = {
|
||||
// whom, and until when.
|
||||
'notice.trial': 'Some features are on trial for registered users until 1 December; after that they open only in the Android app.',
|
||||
|
||||
// The PRO gate. Signed in but unproven is served as a guest, so the studio
|
||||
// needs one place that says why and one way to ask for the letter again.
|
||||
'pro.verifyChip': 'VERIFY EMAIL TO USE PRO',
|
||||
// The PRO gate. A signed-in account the operator has not activated has the
|
||||
// basic tier, so the studio needs one place that says what that means (the
|
||||
// bar), one reason per locked tab (the chips), and one answer for a click on
|
||||
// either of them.
|
||||
'pro.hslChip': 'HSL IS A PRO FEATURE',
|
||||
'pro.unverifiedBar': 'Account {email} is not verified — it works like a guest.',
|
||||
'pro.toolsChip': 'TOOLS & GRADIENT MASK ARE PRO FEATURES',
|
||||
'pro.basicBar': 'Account {email} is on the basic tier — PRO features need an account the operator has activated.',
|
||||
'pro.locked': 'PRO feature — this account has not been activated. Ask the operator to tick "Activated Pro".',
|
||||
'pro.resend': 'RESEND VERIFICATION EMAIL',
|
||||
'pro.resent': 'SENT',
|
||||
|
||||
@@ -210,7 +213,7 @@ export const en: Dict = {
|
||||
'export.4k': 'EXPORT 4K (4096px)',
|
||||
'export.customLabel': 'Longest edge (px)',
|
||||
'export.custom': 'EXPORT',
|
||||
'export.cap': 'Guest exports are capped at {px}px.',
|
||||
'export.cap': 'This account can export up to {px}px.',
|
||||
|
||||
'photo.uploading': 'UPLOADING…',
|
||||
|
||||
@@ -325,6 +328,7 @@ export const en: Dict = {
|
||||
'adm.userName': 'Name',
|
||||
'adm.userEmail': 'Email',
|
||||
'adm.userRole': 'Role',
|
||||
'adm.userPro': 'Activated Pro',
|
||||
'adm.userPhotos': 'Photos',
|
||||
'adm.userJoined': 'Joined',
|
||||
'adm.roleAdmin': 'Admin',
|
||||
|
||||
@@ -150,7 +150,7 @@ export const vi = {
|
||||
'auth.loggedInAs': 'Đã đăng nhập: {email}',
|
||||
'auth.verifyTitle': 'Xác thực email',
|
||||
'auth.verifyBody': 'Đã gửi mã xác thực 6 số tới {email}. Nhập mã vào ô dưới đây — hoặc mở liên kết trong email — để dùng được các tính năng PRO.',
|
||||
'auth.verifyProHint': 'Khi chưa xác thực, tài khoản dùng y như khách: ảnh xuất ra tối đa 2048px kèm watermark và không lưu được gì.',
|
||||
'auth.verifyProHint': 'Khi chưa xác thực, tài khoản vẫn ở bản cơ bản: lưu công thức, lưu ảnh (tối đa 12) và xuất ảnh trong giới hạn cạnh dài của ảnh đang chỉnh sửa. Các tính năng PRO (HSL, TOOLS, RAW, xuất lớn hơn) cần tài khoản được kích hoạt.',
|
||||
'auth.verifySent': 'Đã gửi lại mã xác thực.',
|
||||
'auth.codePlaceholder': 'Mã 6 số trong email',
|
||||
'auth.verifyBtn': 'XÁC THỰC',
|
||||
@@ -162,11 +162,14 @@ export const vi = {
|
||||
// whom, and until when.
|
||||
'notice.trial': 'Một vài tính năng sẽ được sử dụng thử với người đã đăng ký đến ngày 1/12, sau đó chỉ mở các tính năng này trên ứng dụng android',
|
||||
|
||||
// The PRO gate. Signed in but unproven is served as a guest, so the studio
|
||||
// needs one place that says why and one way to ask for the letter again.
|
||||
'pro.verifyChip': 'XÁC THỰC EMAIL ĐỂ DÙNG PRO',
|
||||
// The PRO gate. A signed-in account the operator has not activated has the
|
||||
// basic tier, so the studio needs one place that says what that means (the
|
||||
// bar), one reason per locked tab (the chips), and one answer for a click on
|
||||
// either of them.
|
||||
'pro.hslChip': 'HSL LÀ TÍNH NĂNG PRO',
|
||||
'pro.unverifiedBar': 'Tài khoản {email} chưa xác thực email — đang dùng như khách.',
|
||||
'pro.toolsChip': 'TOOLS & GRADIENT MASK LÀ TÍNH NĂNG PRO',
|
||||
'pro.basicBar': 'Tài khoản {email} đang ở bản cơ bản — tính năng PRO cần tài khoản được kích hoạt.',
|
||||
'pro.locked': 'Tính năng PRO — tài khoản chưa được kích hoạt. Nhờ quản trị viên tích "Kích hoạt PRO".',
|
||||
'pro.resend': 'GỬI LẠI EMAIL XÁC THỰC',
|
||||
'pro.resent': 'ĐÃ GỬI',
|
||||
|
||||
@@ -223,7 +226,7 @@ export const vi = {
|
||||
'export.4k': 'XUẤT 4K (4096px)',
|
||||
'export.customLabel': 'Cạnh dài nhất (px)',
|
||||
'export.custom': 'XUẤT',
|
||||
'export.cap': 'Bản khách giới hạn ở {px}px.',
|
||||
'export.cap': 'Tài khoản này xuất tối đa {px}px.',
|
||||
|
||||
'photo.uploading': 'ĐANG TẢI…',
|
||||
|
||||
@@ -334,6 +337,7 @@ export const vi = {
|
||||
'adm.userName': 'Tên',
|
||||
'adm.userEmail': 'Email',
|
||||
'adm.userRole': 'Quyền',
|
||||
'adm.userPro': 'Kích hoạt PRO',
|
||||
'adm.userPhotos': 'Số ảnh',
|
||||
'adm.userJoined': 'Ngày tạo',
|
||||
'adm.roleAdmin': 'Quản trị',
|
||||
|
||||
Reference in New Issue
Block a user