- New Translations + TranslationTexts NocoDB tables (auto-created on restart) - Full CRUD: list, create, update, delete, bulk-delete translations - Translation texts per language (add/edit/delete inline) - Review flow: submit-review generates public token link - Public review page: shows source + all translations, approve/reject/revision - Email notifications to approvers (registered users) - Sidebar nav under Marketing category - Bilingual i18n (80+ keys in en.json and ar.json) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
+84
-1
@@ -938,5 +938,88 @@
|
||||
"posts.deleteLanguage": "حذف هذه اللغة؟",
|
||||
"posts.deleteLanguageConfirm": "سيتم حذف محتوى اللغة من هذا الإصدار.",
|
||||
"posts.media": "الوسائط",
|
||||
"posts.noMedia": "لم يتم رفع ملفات وسائط"
|
||||
"posts.noMedia": "لم يتم رفع ملفات وسائط",
|
||||
|
||||
"nav.translations": "الترجمات",
|
||||
"translations.title": "الترجمات",
|
||||
"translations.subtitle": "إدارة ترجمات المحتوى مع سير عمل الموافقة",
|
||||
"translations.newTranslation": "ترجمة جديدة",
|
||||
"translations.createTranslation": "إنشاء ترجمة",
|
||||
"translations.searchTranslations": "البحث في الترجمات...",
|
||||
"translations.titleLabel": "العنوان",
|
||||
"translations.titlePlaceholder": "مثال: ترجمة شعار الحملة",
|
||||
"translations.sourceLanguage": "لغة المصدر",
|
||||
"translations.sourceContent": "المحتوى الأصلي",
|
||||
"translations.sourceContentPlaceholder": "أدخل المحتوى الأصلي المراد ترجمته...",
|
||||
"translations.description": "الوصف",
|
||||
"translations.descriptionLabel": "الوصف",
|
||||
"translations.descriptionPlaceholder": "سياق أو ملاحظات حول هذه الترجمة...",
|
||||
"translations.brand": "العلامة التجارية",
|
||||
"translations.creator": "المنشئ",
|
||||
"translations.approvers": "المراجعون",
|
||||
"translations.approversLabel": "المراجعون",
|
||||
"translations.status": "الحالة",
|
||||
"translations.languagesLabel": "اللغات",
|
||||
"translations.languagesCount": "لغات",
|
||||
"translations.updated": "تم التحديث",
|
||||
"translations.grid": "شبكة",
|
||||
"translations.list": "قائمة",
|
||||
"translations.allBrands": "جميع العلامات",
|
||||
"translations.allStatuses": "جميع الحالات",
|
||||
"translations.allCreators": "جميع المنشئين",
|
||||
"translations.status.draft": "مسودة",
|
||||
"translations.status.pendingReview": "بانتظار المراجعة",
|
||||
"translations.status.approved": "موافق عليه",
|
||||
"translations.status.rejected": "مرفوض",
|
||||
"translations.status.revisionRequested": "طلب تعديل",
|
||||
"translations.sortRecentlyUpdated": "آخر تحديث",
|
||||
"translations.sortNewest": "الأحدث أولاً",
|
||||
"translations.sortOldest": "الأقدم أولاً",
|
||||
"translations.sortTitleAZ": "العنوان أ-ي",
|
||||
"translations.noTranslations": "لم يتم العثور على ترجمات",
|
||||
"translations.loadFailed": "فشل تحميل الترجمات",
|
||||
"translations.titleRequired": "العنوان مطلوب",
|
||||
"translations.sourceContentRequired": "المحتوى الأصلي مطلوب",
|
||||
"translations.created": "تم إنشاء الترجمة!",
|
||||
"translations.createFailed": "فشل إنشاء الترجمة",
|
||||
"translations.creating": "جارٍ الإنشاء...",
|
||||
"translations.deleted": "تم حذف الترجمة!",
|
||||
"translations.deleteFailed": "فشل حذف الترجمة",
|
||||
"translations.details": "التفاصيل",
|
||||
"translations.translationTexts": "الترجمات",
|
||||
"translations.review": "المراجعة",
|
||||
"translations.draftSaved": "تم حفظ المسودة!",
|
||||
"translations.failedSaveDraft": "فشل حفظ المسودة",
|
||||
"translations.saveDraft": "حفظ المسودة",
|
||||
"translations.saveDraftTooltip": "حفظ التغييرات على العنوان والوصف والمحتوى الأصلي",
|
||||
"translations.savingDraft": "جارٍ الحفظ...",
|
||||
"translations.updated": "تم التحديث!",
|
||||
"translations.failedUpdate": "فشل التحديث",
|
||||
"translations.addTranslation": "إضافة ترجمة",
|
||||
"translations.translationAdded": "تمت إضافة الترجمة!",
|
||||
"translations.failedAddTranslation": "فشل إضافة الترجمة",
|
||||
"translations.translationDeleted": "تم حذف الترجمة!",
|
||||
"translations.failedDeleteTranslation": "فشل حذف الترجمة",
|
||||
"translations.noTranslationTexts": "لا توجد ترجمات بعد. أضف واحدة لكل لغة مستهدفة.",
|
||||
"translations.allFieldsRequired": "اللغة والمحتوى مطلوبان",
|
||||
"translations.languageLabel": "اللغة",
|
||||
"translations.selectLanguage": "اختر لغة",
|
||||
"translations.translatedContent": "المحتوى المترجم",
|
||||
"translations.enterTranslatedContent": "أدخل المحتوى المترجم...",
|
||||
"translations.deleteTranslation": "حذف الترجمة",
|
||||
"translations.deleteTranslationDesc": "سيتم حذف هذه الترجمة وجميع نسخ اللغات نهائيًا.",
|
||||
"translations.deleteTranslationText": "حذف نص الترجمة",
|
||||
"translations.deleteTranslationTextDesc": "سيتم حذف ترجمة هذه اللغة.",
|
||||
"translations.bulkDeleteDesc": "حذف الترجمات المحددة؟",
|
||||
"translations.submitForReview": "تقديم للمراجعة",
|
||||
"translations.submitting": "جارٍ التقديم...",
|
||||
"translations.submittedForReview": "تم التقديم للمراجعة!",
|
||||
"translations.failedSubmitReview": "فشل التقديم للمراجعة",
|
||||
"translations.reviewLinkTitle": "رابط المراجعة",
|
||||
"translations.linkCopied": "تم نسخ الرابط!",
|
||||
"translations.feedbackTitle": "ملاحظات المراجع",
|
||||
"translations.approvedByLabel": "وافق عليه",
|
||||
"translations.pendingReviewInfo": "هذه الترجمة بانتظار المراجعة حاليًا.",
|
||||
"translations.noReviewInfo": "لا توجد معلومات مراجعة متاحة.",
|
||||
"translations.failedDelete": "فشل الحذف"
|
||||
}
|
||||
+84
-1
@@ -938,5 +938,88 @@
|
||||
"posts.deleteLanguage": "Delete this language?",
|
||||
"posts.deleteLanguageConfirm": "This will remove the language content from this version.",
|
||||
"posts.media": "Media",
|
||||
"posts.noMedia": "No media files uploaded"
|
||||
"posts.noMedia": "No media files uploaded",
|
||||
|
||||
"nav.translations": "Translations",
|
||||
"translations.title": "Translations",
|
||||
"translations.subtitle": "Manage content translations with approval workflow",
|
||||
"translations.newTranslation": "New Translation",
|
||||
"translations.createTranslation": "Create Translation",
|
||||
"translations.searchTranslations": "Search translations...",
|
||||
"translations.titleLabel": "Title",
|
||||
"translations.titlePlaceholder": "e.g. Campaign tagline translation",
|
||||
"translations.sourceLanguage": "Source Language",
|
||||
"translations.sourceContent": "Source Content",
|
||||
"translations.sourceContentPlaceholder": "Enter the original content to translate...",
|
||||
"translations.description": "Description",
|
||||
"translations.descriptionLabel": "Description",
|
||||
"translations.descriptionPlaceholder": "Context or notes about this translation...",
|
||||
"translations.brand": "Brand",
|
||||
"translations.creator": "Creator",
|
||||
"translations.approvers": "Approvers",
|
||||
"translations.approversLabel": "Approvers",
|
||||
"translations.status": "Status",
|
||||
"translations.languagesLabel": "Languages",
|
||||
"translations.languagesCount": "languages",
|
||||
"translations.updated": "Updated",
|
||||
"translations.grid": "Grid",
|
||||
"translations.list": "List",
|
||||
"translations.allBrands": "All Brands",
|
||||
"translations.allStatuses": "All Statuses",
|
||||
"translations.allCreators": "All Creators",
|
||||
"translations.status.draft": "Draft",
|
||||
"translations.status.pendingReview": "Pending Review",
|
||||
"translations.status.approved": "Approved",
|
||||
"translations.status.rejected": "Rejected",
|
||||
"translations.status.revisionRequested": "Revision Requested",
|
||||
"translations.sortRecentlyUpdated": "Recently Updated",
|
||||
"translations.sortNewest": "Newest First",
|
||||
"translations.sortOldest": "Oldest First",
|
||||
"translations.sortTitleAZ": "Title A-Z",
|
||||
"translations.noTranslations": "No translations found",
|
||||
"translations.loadFailed": "Failed to load translations",
|
||||
"translations.titleRequired": "Title is required",
|
||||
"translations.sourceContentRequired": "Source content is required",
|
||||
"translations.created": "Translation created!",
|
||||
"translations.createFailed": "Failed to create translation",
|
||||
"translations.creating": "Creating...",
|
||||
"translations.deleted": "Translation deleted!",
|
||||
"translations.deleteFailed": "Failed to delete translation",
|
||||
"translations.details": "Details",
|
||||
"translations.translationTexts": "Translations",
|
||||
"translations.review": "Review",
|
||||
"translations.draftSaved": "Draft saved!",
|
||||
"translations.failedSaveDraft": "Failed to save draft",
|
||||
"translations.saveDraft": "Save Draft",
|
||||
"translations.saveDraftTooltip": "Save changes to title, description, and source content",
|
||||
"translations.savingDraft": "Saving...",
|
||||
"translations.updated": "Updated!",
|
||||
"translations.failedUpdate": "Failed to update",
|
||||
"translations.addTranslation": "Add Translation",
|
||||
"translations.translationAdded": "Translation added!",
|
||||
"translations.failedAddTranslation": "Failed to add translation",
|
||||
"translations.translationDeleted": "Translation deleted!",
|
||||
"translations.failedDeleteTranslation": "Failed to delete translation",
|
||||
"translations.noTranslationTexts": "No translations yet. Add one for each target language.",
|
||||
"translations.allFieldsRequired": "Language and content are required",
|
||||
"translations.languageLabel": "Language",
|
||||
"translations.selectLanguage": "Select a language",
|
||||
"translations.translatedContent": "Translated Content",
|
||||
"translations.enterTranslatedContent": "Enter the translated content...",
|
||||
"translations.deleteTranslation": "Delete Translation",
|
||||
"translations.deleteTranslationDesc": "This will permanently delete this translation and all its language versions.",
|
||||
"translations.deleteTranslationText": "Delete Translation Text",
|
||||
"translations.deleteTranslationTextDesc": "This will remove this language translation.",
|
||||
"translations.bulkDeleteDesc": "Delete selected translations?",
|
||||
"translations.submitForReview": "Submit for Review",
|
||||
"translations.submitting": "Submitting...",
|
||||
"translations.submittedForReview": "Submitted for review!",
|
||||
"translations.failedSubmitReview": "Failed to submit for review",
|
||||
"translations.reviewLinkTitle": "Review Link",
|
||||
"translations.linkCopied": "Link copied!",
|
||||
"translations.feedbackTitle": "Reviewer Feedback",
|
||||
"translations.approvedByLabel": "Approved by",
|
||||
"translations.pendingReviewInfo": "This translation is currently pending review.",
|
||||
"translations.noReviewInfo": "No review information available.",
|
||||
"translations.failedDelete": "Failed to delete"
|
||||
}
|
||||
Reference in New Issue
Block a user