diff --git a/.gitignore b/.gitignore index c1089704..ef161cd9 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ coverage dist/ src/i18n/transifex_input.json src/data/i18n/default/src/ +src/i18n/messages/ temp/babel-plugin-react-intl ## Emacs ### diff --git a/.tx/config b/.tx/config deleted file mode 100644 index 4353d3bc..00000000 --- a/.tx/config +++ /dev/null @@ -1,8 +0,0 @@ -[main] -host = https://www.transifex.com - -[o:open-edx:p:edx-platform:r:studio-frontend] -file_filter = src/i18n/messages/.json -source_file = src/i18n/transifex_input.json -source_lang = en_US -type = KEYVALUEJSON diff --git a/Makefile b/Makefile index 484d8613..1109bb32 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,12 @@ UNAME := $(shell uname) -transifex_langs = "ar,fr,es_419,zh_CN" -i18n = ./src/i18n transifex_input = $(i18n)/transifex_input.json +i18n = ./src/i18 transifex_utils = ./node_modules/.bin/edx_reactifex # This directory must match .babelrc . transifex_temp = ./temp/babel-plugin-react-intl -export TRANSIFEX_RESOURCE = studio-frontend - # Help message borrowed from https://github.com/openedx/devstack, which borrowed it from https://github.com/pydanny/cookiecutter-djangopackage. help: ## display a help message @echo $(MAKEFILE_LIST) @@ -81,29 +78,13 @@ i18n.concat: i18n.pre_validate: | i18n.extract i18n.concat git diff --exit-code $(transifex_input) -# Pushes translations to Transifex. You must run make extract_translations first. -push_translations: - - # # Pushing strings to Transifex... - tx push -s - - ./node_modules/@edx/reactifex/bash_scripts/get_hashed_strings_v3.sh - $$(npm bin)/edx_reactifex $(transifex_temp) --comments --v3-scripts-path - ./node_modules/@edx/reactifex/bash_scripts/put_comments_v3.sh - +generate_supported_langs: ## generate the currentlySupportedLangs.jsx file + node src/utils/i18n/scripts/generateSupportedLangs.js src/i18n/messages -ifeq ($(OPENEDX_ATLAS_PULL),) -# Pulls translations from Transifex. -pull_translations: - tx pull -t -f --mode reviewed --languages=$(transifex_langs) -else -# Experimental: OEP-58 Pulls translations using atlas -pull_translations: +pull_translations: ## pull translations via atlas for development preview rm -rf src/i18n/messages - cd src/i18n/ \ - && atlas pull $(ATLAS_OPTIONS) translations/studio-frontend/src/i18n/messages:messages - node src/utils/i18n/scripts/generateSupportedLangs.js src/i18n/messages -endif + atlas pull $(ATLAS_OPTIONS) translations/studio-frontend/src/i18n/messages:src/i18n/messages + make generate_supported_langs copy-dist: for f in dist/*; do docker cp $$f edx.devstack.studio:/edx/app/edxapp/edx-platform/node_modules/@edx/studio-frontend/dist/; done diff --git a/src/data/i18n/locales b/src/data/i18n/locales deleted file mode 120000 index ae0726b5..00000000 --- a/src/data/i18n/locales +++ /dev/null @@ -1 +0,0 @@ -../../i18n/messages \ No newline at end of file diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json deleted file mode 100644 index 7a183754..00000000 --- a/src/i18n/messages/ar.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "a11yBodyPolicyLink": "سياسة إمكانية الوصول", - "a11yBodyPageHeader": "إجراء قابلية الوصول المفرد لصانعي المساقات.", - "a11yBodyIntroGraph": "نسعى في edX لفهم وتقدير احتياجات ومفاهيم مجتمع edX العالمي. ونقدر جميع فرق المساقات، ونلتزم بإتاحة الوصول للجميع، ومنهم صانعي فرق المساقات والمؤلفين ذوي الإعاقة. ولتحقيق هذه الغاية فقد طورنا {communityAccessibilityElement} وهذا الإجراء يهدف إلى السماح لمحرري فريق المساق والمؤلفين بطلب المساعدة عند عدم استطاعتهم تطوير ونشر المحتوى في منصتنا عن طريق الاستوديو بسبب إعاقتهم.", - "a11yBodyStepsHeader": "يجب على صانعي فريق المساق والمؤلفين الذين هم بحاجة للمساعدة اتباع الخطوات التالية:", - "a11yBodyEdxResponse": "سنتواصل معك حول تفضيلاتك واحتياجاتك في تحديد الحل المناسب، على الرغم من أن القرار النهائي سيكون قرارنا، شريطة أن يكون الحل فعالاً وفي الوقت المناسب. إن العوامل التي سنأخذها في عين الاعتبار عند اختيار حل إمكانية الوصول هي: الفعالية، والتوقيت المناسب (بالنسبة إلى المواعيد النهائية)، وسهولة التنفيذ، وسهولة الاستخدام بالنسبة إليك. سنخطرك بالقرار ونشرح الأساس الذي يستند إليه قرارنا في غضون 10 أيام عمل من مناقشة الموضوع معك.", - "a11yBodyEdxFollowUp": "بعد ذلك، سنتواصل معك أسبوعياً بشأن تقييمنا وقرارنا وتقدمنا في تنفيذ حل إمكانية الوصول. وسنقوم بإعلامك عند اكتمال تنفيذ حل إمكانية الوصول وستتابع معك ما قد يلزم لمعرفة ما إذا كان الحل فعالاً أم لا.", - "a11yBodyOngoingSupport": "سيوفر نظام EdX الدعم الفني المستمر حسب الحاجة وسيعالج أي مشاكل إضافية تنشأ بعد إنشاء المساق الأولي.", - "a11yBodyProcessContact": "إذا كان لديك أي أسئلة حول هذه العملية فيمكنك الاتصال بنا على {emailElement} أو {phoneNumber}.", - "a11yBodyA11yFeedback": "يرجى توجيه أي أسئلة أو اقتراحات حول كيفية تحسين إمكانية وصول الاستوديو إلى {emailElement} أو استخدام النموذج أدناه. نرحب بملاحظاتك.", - "a11yBodyEmailHeading": "أرسل رسالة بريد إلكتروني إلى {emailElement} بالمعلومات التالية.", - "a11yBodyNameEmail": "اسمك وعنوان البريد الإلكتروني.", - "a11yBodyInstitution": "المؤسسة العضو في edX التابعة لك؛", - "a11yBodyBarrier": "وصف مختصر للإشكال أو المعوّق لإمكانية الوصول الذي تواجهه؛ و", - "a11yBodyTimeConstraints": "مدى السرعة التي تحتاج إليها للوصول وإلى متى (على سبيل المثال، تاريخ بدء مساق مخطط له ، أو فيما يتعلق بموعد نهائي مرتبط بالمساق التعليمي مثل مقال نهائي).", - "a11yBodyReceipt": "سيجيب عليك فريق دعم edX لتأكيد الاستلام وإعادة توجيه طلبك إلى مدير شركاء edX الخاص بـ المؤسسة ومتخصص إمكانية الوصول في موقع ويب edX", - "a11yBodyExtraInfo": "بمساعدة أخصائي إمكانية الوصول على موقع ويب، سيتصل بك edX لمناقشة طلبك وجمع معلومات إضافية منك حول تفضيلاتك واحتياجاتك، لتحديد ما إذا كان هناك حل عملي قادر على دعم edX", - "a11yBodyFixesListHeader": "ستساعدك EdX فورًا وبشكل كامل حتى تتمكن من إنشاء محتوى على نظام إدارة المحتوى في إطار القيود الزمنية الخاصة بك. وقد تشمل هذه الجهود، على سبيل المثال لا الحصر، ما يلي:", - "a11yBodyThirdParty": "شراء أداة أو برنامج تابع لجهة خارجية للاستخدام على أساس فردي لمساعدتك في استخدام الاستوديو؛", - "a11yBodyContractor": "الاستعانة بمتعاقد مستقل مدرب لتوفير المساعدة البصرية والشفهية والبدنية الواقعية؛ أو", - "a11yBodyCodeFix": "تطوير رمز جديد لتنفيذ عملية إصلاح تقني.", - "accessibilityPolicyFormEmailLabel": "عنوان البريد الإلكتروني", - "accessibilityPolicyFormError": "خطأ", - "accessibilityPolicyFormErrorHighVolume": "إننا نواجه حاليًا ضغطًا هائلًا حاول مرة أخرى في وقت لاحق اليوم أو أرسل رسالة بريد إلكتروني إلى {emailLink}.", - "accessibilityPolicyFormErrorMissingFields": "تأكد من ملء جميع الحقول", - "accessibilityPolicyFormFieldsRequired": "جميع الحقول مطلوبة", - "accessibilityPolicyFormHeader": "ملاحظات وتعليقات إمكانية الوصول في الاستوديو", - "accessibilityPolicyFormMessageLabel": "الرسالة", - "accessibilityPolicyFormNameLabel": "الاسم", - "accessibilityPolicyFormSubmitAria": "إرسال نموذج ملاحظات وتعليقات إمكانية الوصول", - "accessibilityPolicyFormSubmitLabel": "تقديم", - "accessibilityPolicyFormSubmittingFeedbackLabel": "إرسال الملاحظات والتعليقات", - "accessibilityPolicyFormSuccess": "شكرًا لتواصلك مع فريق edX!", - "accessibilityPolicyFormSuccessDetails": "شكرًا لك على ملاحظاتك حول إمكانية الوصول إلى الاستوديو.ستتلقى الرد عادةً في غضون يوم عمل واحد ({DAY_START} إلى {DAY_END}، {time_START} إلى {time_end}).", - "accessibilityPolicyFormValidEmail": "أدخل عنوان بريد إلكتروني صحيح.", - "accessibilityPolicyFormValidMessage": "إدخال رسالة", - "accessibilityPolicyFormValidName": "إدخال اسم", - "assetsClearFiltersButtonLabel": "حذف جميع عناصر التصفية", - "assetsClearSearchButtonLabel": "حذف البحث", - "assetsDropZoneAriaLabel": "رفع الملحقات", - "assetsDropZoneBrowseLabel": "البحث في جهاز الكمبيوتر", - "assetsDropZoneHeader": "سحب وإسقاط", - "assetsDropZoneMaxFileSizeLabel": "الحجم الأقصى للملف: {maxFileSizeMB} MB", - "assetsFiltersAudio": "ملف صوتي", - "assetsFiltersCode": "رمز", - "assetsFiltersDocuments": "مستند", - "assetsFiltersImages": "صورة", - "assetsFiltersOther": "آخر", - "assetsFiltersSectionLabel": "تصفية حسب نوع الملف", - "assetsImagePreviewFilterLabel": "اخفاء عرض الملف", - "assetsListNoPreview": "المعاينة غير متوفرة", - "assetsListNameLabel": "الاسم", - "assetsListDateLabel": "تاريخ الإضافة", - "assetsPageNoResultsMessage": "0 ملف موجود", - "assetsPageNoAssetsMessage": "0 ملفات محمّلة", - "assetsPageSkipLink": "تخطي إلى جداول المحتوى", - "assetsResultsCountFiltered": "عرض {start}-{end} من {total, plural, one {{formatted_total} possible match} other {{formatted_total} possible matches}}.", - "assetsResultsCountTotal": "عرض {start}-{end} من {total, plural, one {{formatted_total} total file}other {{formatted_total} total files}}.", - "assetsSearchInputLabel": "البحث", - "assetsSearchSubmitLabel": "إرسال البحث", - "assetsTableGenericUpdateError": "لا يمكن إتمام هذا الإجراء، فضلًا حدّث الصفحة وحاول مرة أخرى.", - "assetsTableCantDelete": "تعذر حذف {assetName}.", - "assetsTableDeleteSuccess": "تم حذف {assetName}.", - "assetsTableUploadSuccess": "تم تحميل {uploaded_count} ملفات بنجاح.", - "assetsTableUploadInProgress": "{uploading_count} يتم الآن تحميل الملفات.", - "assetsTableTooManyFiles": "الحد الأقصى لعدد ملفات التحميل هو {max_count}. لم يتم تحميل أية ملفات.", - "assetsTableTooMuchData": "الحجم الأقصى لأي تحميل هو {max_size} ميغابايت، لم يتم تحميل أية ملفات.", - "assetsTableGenericError": "خطأ في تحميل {assetName}. حاول لاحقًا.", - "assetsTableFailedLock": "فشل تبديل القفل لـ {assetName}.", - "assetsTableLoadingStatus": "جاري التحميل", - "assetsTablePreviewLabel": "استعراض الصورة", - "assetsTableNameLabel": "الاسم", - "assetsTableTypeLable": "النوع", - "assetsTableDateLabel": "تاريخ الإضافة", - "assetsTableCaption": "جدول الملحقات", - "assetsTableCopyLabel": "نسخ الروابط", - "assetsTableDeleteLabel": "حذف الملحقات", - "assetsTableLockLabel": "قفل الملحقات", - "assetsTableNoDescription": "الوصف غير متوفر", - "assetsTableNoPreview": "المعاينة غير متوفرة", - "assetsTableLockedObject": "تم القفل {object}", - "assetsTableUnlockedObject": "تم إلغاء القفل {object}", - "assetsTableUpdateLock": "تحديث حالة القفل لِ {assetName}.", - "assetsTableStudioLink": "الإستوديو", - "assetsTableWebLink": "ويب", - "assetsTableCopiedStatus": "تم النسخ", - "assetsTableDetailedCopyLink": "{displayName} نسخ {label} URL", - "assetsTableDeleteObject": "حذف الملف", - "assetsTableCancel": "إلغاء", - "assetsTablePermaDelete": "حذف دائم", - "assetsTableLearnMore": "تعلم المزيد", - "assetsTableDeleteWarning": "حذف {displayName} لا يمكن الرجوع عنه.", - "assetsTableDeleteConsequences": "لن تعمل أية روابط أو مراجع لهذا الملف. {link}", - "assetsUploadConfirmMessage": "سيتم الكتابة فوق الملفات التالية: {listOfFiles}", - "assetsUploadConfirmTitle": "الكتابة فوق الملفات", - "assetsUploadConfirmOverwrite": "الكتابة فوق", - "assetsUploadConfirmCancel": "لا", - "welcomeMessageShortDescription": "إضافة رسالة ترحيبية", - "welcomeMessageLongDescription": "رحب بـ المتعلمين شخصيًا في المساق وهيئهم لتجربة إيجابية.", - "gradingPolicyShortDescription": "إنشاء سياسة تقييم المساق", - "gradingPolicyLongDescription": "إنشاء سياسة تقييم المساق، وتشمل أنواع واجب وعلامات النجاح. إجمالي مجموع الواجبات/التمارين هو 100%.", - "gradingPolicyComment": "مجموع آلية تقييمك الحالية {percent}%.", - "certificateShortDescription": "فعّل الشهادات", - "certificateLongDescription": "تأكد أن جميع النصوص صحيحة ، التوقيع مرفوع والشهادة مفعلة.", - "courseDatesShortDescription": "تحديد تواريخ المساق المهمة", - "courseDatesLongDescription": "أنشئ جدول مساقك ويشمل موعد بداية ونهاية المساق.", - "assignmentDeadlinesShortDescription": "التحقق من الموعد النهائي لتسليم الواجب", - "assignmentDeadlinesLongDescription": "تأكد أن الموعد النهائي لتسليم الواجب بين تواريخ بداية ونهاية المساق.", - "assignmentDeadlinesComment": "المهام التالية لها تواريخ نهائية لا تقع بين تواريخ بدء وانتهاء المساق", - "videoDurationShortDescription": "التحقق من مدة الفيديو", - "videoDurationLongDescription": "يزداد تفاعل الطلّاب عند مشاهدة مقاطع فيديو قصيرة متبوعة بفرصة للتمرين. أحرص أن تكون 80% أو أكثر من مقاطع الفيديو في المساق أقصر من 10 دقائق.", - "mobileFriendlyVideoShortDescription": "إنشاء فيديو يمكن مشاهدته عبر الجوال", - "mobileFriendlyVideoLongDescription": "مقاطع الفيديو التي يمكن مشاهدتها عبر الجوال وعلى أغلب الأجهزة المدعومة. تأكد من أن 90% من مقاطع الفيديو في مساقك على الأقل يمكن عرضها على العديد من الأجهزة والجوالات.", - "diverseSequencesShortDescription": "بناء سلسلة تعلم متنوعة", - "diverseSequencesLongDescription": "أظهرت الدراسات أن تجربة تعلم محتوى متنوع تحفّز مشاركة المتعلم. ننصح أن تكون 80% أو أكثر من سلاسل التعلم أو الأقسام الفرعية تحتوي على محتوى ومصادر وأدوات تعلم مختلفة (مثل مقطع الفديو، المحادثة، المسألة).", - "weeklyHighlightsShortDescription": "ضبط التلميحات الأسبوعية", - "weeklyHighlightsLongDescription": "فعّل و حدد خاصية التلميحات الأسبوعية لمساعدة المتعلمين على الاندماج في التعلّم والبقاء على المسار في مساقك.", - "unitDepthShortDescription": "إدارة عمق الوحدة", - "unitDepthLongDescription": "تقسيم محتوى المساق إلى أجزاء يحفز مشاركة المتعلم. ننصح ألا تحتوي الوحدات على أكثر من ثلاثة عناصر.", - "proctoringEmailShortDescription": "أضف بريدًا إلكترونيًا لتصعيد Proctortrack", - "proctoringEmailLongDescription": "تتطلب الدورات التي تستخدم Proctortrack بريدًا إلكترونيًا للتصعيد. تأكد من أن المتعلمين والدعم يمكنهم الاتصال بفريق الدورة التدريبية الخاص بك فيما يتعلق بقضايا المراقبة (مثل طلبات الاستئناف وإعادة تعيين الاختبارات وما إلى ذلك).", - "updateLinkLabel": "تحديث", - "completionCountLabel": "{completed}/{total} مكتمل", - "completedItemLabel": "مكتمل", - "uncompletedItemLabel": "غير مكتمل", - "loadingChecklistLabel": "جاري التحميل", - "launchChecklistLabel": "قائمة مراجعة الإطلاق", - "bestPracticesChecklistLabel": "قائمة أفضل الممارسات", - "doneLoadingChecklistStatusLabel": "جاري تحميل قائمة مراجعة الإطلاق", - "launchChecklistDoneLoadingLabel": "تم تحميل قائمة مراجعة الإطلاق", - "bestPracticesChecklistLoadingLabel": "جاري تحميل قائمة أفضل الممارسات", - "bestPracticesChecklistDoneLoadingLabel": "تم تحميل قائمة أفضل الممارسات", - "checklistsStatusLabel": "قوائم المراجعة", - "checklistStatusLoadingLabel": "جاري تحميل بيانات قوائم المراجعة", - "checklistStatusDoneLoadingLabel": "تم تحميل بيانات قوائم المراجعة", - "loadingIconLabel": "جاري التحميل", - "startDateStatusLabel": "تاريخ البدء", - "pacingTypeStatusLabel": "نوع السرعة", - "pacingTypeInstructorPaced": "تعلّم بإشراف مدرّس", - "pacingTypeSelfPaced": "تعلّم ذاتي", - "editImageModalAssetsListLoadingSpinner": "تحميل القرص الدوار", - "editImageModalAssetsListNoAssetsMessage": "0 صورة محمّلة", - "editImageModalAssetsListNoResultsMessage": "0 صورة موجودة", - "editImageModalCancelButton": "إلغاء", - "editImageModalFormError": "خطأ", - "editImageModalFormErrorMissingFields": "تأكد من ملء جميع الحقول", - "editImageModalFormValidImageDescription": "أضف وصفًا للصورة أو حدد الغرض من استخدام الصورة هو للزينة فقط.", - "editImageModalFormValidImageDimensions": "يجب أن تكون أبعاد الصورة أرقام موجبة.", - "editImageModalImageDescriptionDescription": "نص للمستخدمين الغير متمكنين من عرض الصور، مثال \"سماء وغيوم\".", - "editImageModalImageDescriptionLabel": "وصف الصورة (نص آخر\\Alt Text)", - "editImageModalImageDescriptionLegend": "وصف الصورة", - "editImageModalDimensionsLegend": "أبعاد الصورة", - "editImageModalImageHeight": "الارتفاع", - "editImageModalImageIsDecorativeCheckboxDescription": "هذه الصورة خلفية أو نوع آخر من الصور التي لا تحتاج نص آخر alternative text.", - "editImageModalImageIsDecorativeCheckboxLabel": "هذه صورة زخرفية فقط", - "editImageModalImagePreviewText": "استعراض الصورة", - "editImageModalInsertImageButton": "أدرج صورة", - "editImageModalLearnMore": "تعلم المزيد", - "editImageModalLockImageProportionsCheckboxLabel": "أقفل الأبعاد", - "editImageModalImageWidth": "عرض", - "editImageModalInsertTitle": "أضف صورة", - "editImageModalInsertHeader": "حدد صورة رفعت مسبقا", - "editImageModalEditTitle": "خيارات تعديل الصورة", - "editImageModalImageOrFields": "أو", - "editImageModalNextPageButton": "التالي", - "editImageModalPreviousPageButton": "رجوع", - "editImageModalInvalidFileType": "يجب أن تكون ملفات صور بصيغة .jpg, .png, و .tiff files، لم يتم تحميل أية ملفات.", - "editImageModalTooManyFiles": "يمكن تحميل ملف واحد فقط في كل مرة، لم يتم تحميل أية الملفات", - "paginationAriaLabel": "ترقيم صفحات المحتوى", - "paginationButtonDisabled": "الزر معطَّل", - "paginationNext": "التالي", - "paginationPrevious": "السابق", - "paginationPage": "الصفحة", - "paginationCurrentPage": "الصفحة الحالية", - "paginationOf": "من" -} \ No newline at end of file diff --git a/src/i18n/messages/currentlySupportedLangs.jsx b/src/i18n/messages/currentlySupportedLangs.jsx index e2debf9a..a67dc8c4 100644 --- a/src/i18n/messages/currentlySupportedLangs.jsx +++ b/src/i18n/messages/currentlySupportedLangs.jsx @@ -1,28 +1,45 @@ +// This file is generated by the "generateSupportedLangs.js" script. import arData from 'react-intl/locale-data/ar'; -import enData from 'react-intl/locale-data/en'; +import daData from 'react-intl/locale-data/da'; +import deData from 'react-intl/locale-data/de'; +import elData from 'react-intl/locale-data/el'; import esData from 'react-intl/locale-data/es'; +import faData from 'react-intl/locale-data/fa'; import frData from 'react-intl/locale-data/fr'; +import heData from 'react-intl/locale-data/he'; +import hiData from 'react-intl/locale-data/hi'; +import idData from 'react-intl/locale-data/id'; +import itData from 'react-intl/locale-data/it'; +import ptData from 'react-intl/locale-data/pt'; +import ruData from 'react-intl/locale-data/ru'; +import swData from 'react-intl/locale-data/sw'; +import teData from 'react-intl/locale-data/te'; +import thData from 'react-intl/locale-data/th'; +import trData from 'react-intl/locale-data/tr'; +import ukData from 'react-intl/locale-data/uk'; import zhData from 'react-intl/locale-data/zh'; -import './ar.json'; -import './es_419.json'; -import './fr.json'; -import './zh_CN.json'; - -// Methodology: These languages (plus the default english) are the only ones that appear on edx.org -// This was determined by inspecting the 'released_languages' method in the following file: -// https://github.com/openedx/edx-platform/blob/master/openedx/core/djangoapps/lang_pref/api.py -// -// Further, I hit the read replica in order to confirm the live values, which are currently: -// en, fr, zh-cn, es-419, ar -// If these values change, please also update the pull_translations command in Makefile - -const localeDataMap = { +export default { 'ar': arData, - 'en': enData, + 'da': daData, + 'de': deData, + 'de-de': deData, + 'el': elData, 'es-419': esData, - 'fr': frData, + 'es-es': esData, + 'fa': faData, + 'fr-ca': frData, + 'he': heData, + 'hi': hiData, + 'id': idData, + 'it-it': itData, + 'pt-br': ptData, + 'pt-pt': ptData, + 'ru': ruData, + 'sw': swData, + 'te': teData, + 'th': thData, + 'tr-tr': trData, + 'uk': ukData, 'zh-cn': zhData, }; - -export default localeDataMap; diff --git a/src/i18n/messages/es_419.json b/src/i18n/messages/es_419.json deleted file mode 100644 index b1fa0579..00000000 --- a/src/i18n/messages/es_419.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "a11yBodyPolicyLink": "Políticas de Accesibilidad del Sitio Web", - "a11yBodyPageHeader": "Proceso de Accesibilidad Individualizada para Creadores de Cursos", - "a11yBodyIntroGraph": "En edX, procuramos entender y respetar las necesidades y perspectivas únicas de la comunidad Global de edX. Valoramos cada equipo de curso y estamos comprometidos a expandir el acceso a todos, incluyendo creadores de curso y miembros del equipo del curso con alguna discapacidad. Para tal fin, Hemos adoptado la {communityAccessibilityElement} junto con este proceso para permitir a creadores de curso y miembros del equipo del curso solicitar asistencia si tienen dificultades debido a sus discapacidades para desarrollar y publicar contenido en nuestra plataforma vía Studio.", - "a11yBodyStepsHeader": "Creadores de cursos y miembros del equipo del curso que necesiten tal asistencia deberían seguir los siguientes pasos.", - "a11yBodyEdxResponse": "Nos pondremos en contacto para saber tus preferencias y necesidades para determinar la solución apropiada, aunque la decisión final será nuestra, siempre que la solución sea efectiva y oportuna. Al elegir una solución de accesibilidad consideraremos los siguientes factores: efectividad, puntualidad (relativa a tus fechas límite), facilidad de implementación y de uso para ti. Te notificaremos sobre la decisión y te explicaremos la base de nuestra decisión en un plazo de 10 días desde nuestra conversación.", - "a11yBodyEdxFollowUp": "Posteriormente, nos pondremos en contacto semanalmente sobre nuestra evaluación, decisión y progreso al implementar la solución de accesibilidad. Te notificaremos cuando se complete la implementación de tu solución de accesibilidad y haremos un seguimiento si es necesario para ver si la solución fue efectiva.", - "a11yBodyOngoingSupport": "EdX te proporcionará soporte técnico continuo en el caso de que sea necesario y trabajará en cualquier problema adicional que pueda surgir después de la creación inicial del curso.", - "a11yBodyProcessContact": "Si tienes cualquier pregunta sobre este proceso, nos puedes contactar a {emailElement} o {phoneNumber}.", - "a11yBodyA11yFeedback": "Por favor, dirige cualquier pregunta o sugerencia sobre cómo mejorar la accesibilidad de Studio a {emailElement} o mediante el siguiente formulario. Agradecemos tu opinión.", - "a11yBodyEmailHeading": "Envíe un correo a {emailElement}  con la siguiente información:", - "a11yBodyNameEmail": "Su nombre y correo electrónico;", - "a11yBodyInstitution": "La institución de miembros de edX a la cual está afiliado.", - "a11yBodyBarrier": "Una breve descripción del reto o barrera que está experimentando para acceder; y", - "a11yBodyTimeConstraints": "Que tan pronto o por cuanto tiempo necesita acceso(ejemplo, una fecha planeada para iniciar un curso o en relación con una fecha relacionada con las asignaciones en el curso como un ensayo final).", - "a11yBodyReceipt": "El equipo de soporte de edX responderá para confirmar recibido y reenvío de su solicitud hacía el socio administrador edX de su institución, así como al especialista de accesibilidad de página web.", - "a11yBodyExtraInfo": "Con la asesoría del especialista de accesibilidad de página web, edX lo contactará para discutir su solicitud y reunir información adicional de sus preferencias y necesidades para determinar si hay una solución factible que edX sea capaz de proporcionar.", - "a11yBodyFixesListHeader": "EdX te ayudará de forma rápida y exhaustiva con el fin de que puedas crear contenido en el CMS dentro de tus limitaciones de tiempo. Estos esfuerzos pueden incluir, pero no se limitan a:", - "a11yBodyThirdParty": "La compra de herramientas o software externo para uso individual para ayudarte a utilizar Studio;", - "a11yBodyContractor": "La ayuda visual, verbal o física en tiempo real de un contratista independiente entrenado; o", - "a11yBodyCodeFix": "El desarrollo de nuevo código para implementar una solución técnica.", - "accessibilityPolicyFormEmailLabel": "Dirección de correo electrónico", - "accessibilityPolicyFormError": "Error", - "accessibilityPolicyFormErrorHighVolume": "Actualmente estamos recibiendo una gran cantidad de peticiones. Intenta más tarde hoy o envía un mensaje por correo electrónico a {emailLink}.", - "accessibilityPolicyFormErrorMissingFields": "Asegúrate de rellenar todos los campos.", - "accessibilityPolicyFormFieldsRequired": "Todos los campos son necesarios.", - "accessibilityPolicyFormHeader": "Opinión Sobre la Accesibilidad de Studio", - "accessibilityPolicyFormMessageLabel": "Mensaje", - "accessibilityPolicyFormNameLabel": "Nombre", - "accessibilityPolicyFormSubmitAria": "Enviar Formulario con tu Opinión Sobre la Accesibilidad", - "accessibilityPolicyFormSubmitLabel": "Enviar", - "accessibilityPolicyFormSubmittingFeedbackLabel": "Enviando opinión", - "accessibilityPolicyFormSuccess": "¡Gracias por contactar con edX!", - "accessibilityPolicyFormSuccessDetails": "Gracias por enviarnos tu opinión sobre la accesibilidad de Studio. Normalmente respondemos en un día laborable ({day_start} a {day_end}, {time_start} a {time_end}).", - "accessibilityPolicyFormValidEmail": "Por favor escribe una dirección de correo electrónico válida.", - "accessibilityPolicyFormValidMessage": "Escribe un mensaje.", - "accessibilityPolicyFormValidName": "Escribe un nombre.", - "assetsClearFiltersButtonLabel": "Borrar todos los filtros", - "assetsClearSearchButtonLabel": "Reiniciar búsqueda", - "assetsDropZoneAriaLabel": "Subir archivos", - "assetsDropZoneBrowseLabel": "Buscar en tu computadora", - "assetsDropZoneHeader": "Arrastrar y soltar", - "assetsDropZoneMaxFileSizeLabel": "Tamaño máximo de archivo: {maxFileSizeMB} MB", - "assetsFiltersAudio": "Audio", - "assetsFiltersCode": "Código", - "assetsFiltersDocuments": "Documento", - "assetsFiltersImages": "Imagen", - "assetsFiltersOther": "Otro", - "assetsFiltersSectionLabel": "Filtrar por Tipo de Archivo", - "assetsImagePreviewFilterLabel": "Ocultar Vista Previa De Archivo", - "assetsListNoPreview": "Vista previa no disponible", - "assetsListNameLabel": "Nombre", - "assetsListDateLabel": "Fecha Añadida", - "assetsPageNoResultsMessage": "0 archivos encontrados", - "assetsPageNoAssetsMessage": "0 archivos subidos", - "assetsPageSkipLink": "Saltar a contenidos de la tabla", - "assetsResultsCountFiltered": "Mostrando {start}-{end} de {total, plural, one {{formatted_total} possible match} otro {{formatted_total} possible matches}}.", - "assetsResultsCountTotal": "Mostrando{start}-{end} de {total, plural, one {{formatted_total} total file} otro {{formatted_total} total files}}.", - "assetsSearchInputLabel": "Buscar", - "assetsSearchSubmitLabel": "Enviar búsqueda", - "assetsTableGenericUpdateError": "No se pudo completar la acción. Refresque la página e intente de nuevo.", - "assetsTableCantDelete": "Inhabilitado para eliminar {assetName}.", - "assetsTableDeleteSuccess": "{assetName} ha sido eliminado.", - "assetsTableUploadSuccess": "{uploaded_count} archivos cargados exitosamente.", - "assetsTableUploadInProgress": "{uploading_count} archivos cargados.", - "assetsTableTooManyFiles": "El número máximo de archivos que se puede subir es {max_count}. No se ha subido ningún archivo.", - "assetsTableTooMuchData": "El tamaño máximo que se puede subir es {max_size} MB. No se ha subido ningún archivo.", - "assetsTableGenericError": "Error subiendo {assetName}. Intenta de nuevo.", - "assetsTableFailedLock": "No se pudo alternar el bloqueo para {assetName}.", - "assetsTableLoadingStatus": "Cargando", - "assetsTablePreviewLabel": "Previsualización de Imagen", - "assetsTableNameLabel": "Nombre", - "assetsTableTypeLable": "Tipo", - "assetsTableDateLabel": "Fecha Añadida", - "assetsTableCaption": "Tabla de activos", - "assetsTableCopyLabel": "Copiar URLs", - "assetsTableDeleteLabel": "Eliminar Activo", - "assetsTableLockLabel": "Bloquear Activo", - "assetsTableNoDescription": "Descripción no disponible", - "assetsTableNoPreview": "Vista previa no disponible", - "assetsTableLockedObject": "Bloqueado {object}", - "assetsTableUnlockedObject": "Desbloqueado {object}", - "assetsTableUpdateLock": "Actualizando estado de bloqueo para {assetName}.", - "assetsTableStudioLink": "Studio", - "assetsTableWebLink": "Sitio Web", - "assetsTableCopiedStatus": "Copiado", - "assetsTableDetailedCopyLink": "{displayName} copiar {label} URL", - "assetsTableDeleteObject": "Borrar Archivo", - "assetsTableCancel": "Cancelar", - "assetsTablePermaDelete": "Eliminar permanentemente", - "assetsTableLearnMore": "Saber más.", - "assetsTableDeleteWarning": "La eliminación de {displayName} no se puede deshacer.", - "assetsTableDeleteConsequences": "Los enlaces o referencias a este archivo ya no funcionarán. {link}", - "assetsUploadConfirmMessage": "Se sobrescribirán los siguientes archivos: {listOfFiles}", - "assetsUploadConfirmTitle": "Sobrescribir archivos", - "assetsUploadConfirmOverwrite": "Sobrescribir", - "assetsUploadConfirmCancel": "Cancelar", - "welcomeMessageShortDescription": "Añada un mensaje de bienvenida", - "welcomeMessageLongDescription": "De la bienvenida a los estudiantes personalmente a su curso y prepárelos para una experiencia positiva en el curso.", - "gradingPolicyShortDescription": "Cree su política de calificaciones para el curso", - "gradingPolicyLongDescription": "Establezca su política de calificaciones, incluyendo tipos de tarea y porcentaje para pasar el curso. Todas las tareas suman 100%.", - "gradingPolicyComment": "Su política de calificaciones actual suma {percent}%.", - "certificateShortDescription": "Habilite su certificado", - "certificateLongDescription": "Asegúrese que todo el texto sea correcto, las firmas han sido subidas, y el certificado ha sido activado. ", - "courseDatesShortDescription": "Establezca las fechas importantes del curso.", - "courseDatesLongDescription": "Establezca el horario de su curso, incluyendo el inicio y fin del curso.", - "assignmentDeadlinesShortDescription": "Validar fechas límite para las tareas.", - "assignmentDeadlinesLongDescription": "Asegúrese que todas las fechas límite para las tareas están entre el rango de las fechas de inicio y fin del curso.", - "assignmentDeadlinesComment": "Las siguientes tareas tienen fechas límite que no están entre las fechas de inicio y fin del curso.", - "videoDurationShortDescription": "Revisar duración del vídeo", - "videoDurationLongDescription": "Los estudiantes se interesan más con vídeos cortos seguidos de oportunidades para practicar. Asegúrese que el 80% o más de los vídeos del curso tengan una duración menor a 10 minutos.", - "mobileFriendlyVideoShortDescription": "Crear vídeo que se puede visualizar en dispositivos móviles.", - "mobileFriendlyVideoLongDescription": "Los videos aptos para dispositivos móviles se pueden ver en todos los dispositivos compatibles. Asegúrese de que al menos el 90% de los videos del curso sean compatibles con dispositivos móviles subiendo videos del curso al canal de videos de edX.", - "diverseSequencesShortDescription": "Construya Secuencias de Aprendizaje Diversas", - "diverseSequencesLongDescription": "La investigación muestra que una experiencia de contenido diversa impulsa el compromiso del estudiante. Recomendamos que el 80% o más de sus secuencias de aprendizaje o subsecciones incluyan varios tipos de contenido (como vídeo, discusión o problema).", - "weeklyHighlightsShortDescription": "Establecer Destacados Semanales", - "weeklyHighlightsLongDescription": "Habilitar y especificar los aspectos destacados semanalmente para mantener a los alumnos involucrados y activos en su curso.", - "unitDepthShortDescription": "Administrar la Profundidad de la Unidad", - "unitDepthLongDescription": "Segmentar el contenido del curso en piezas manejables promueve el compromiso del estudiante. Recomendamos que las unidades no contengan más de tres componentes.", - "proctoringEmailShortDescription": "Agrega un correo electrónico de escalación de Proctortrack", - "proctoringEmailLongDescription": "Los cursos usando Proctortrack requieren de un correo electrónico de escalación. Asegúrate que los estudiantes y el equipo de soporte puedan contactar al equipo de curso para temas relacionados con problemas de supervisado (ejemplo: apelaciones, restablecimiento de exámenes, etc).", - "updateLinkLabel": "Actualizar", - "completionCountLabel": "{completed}/{total} Completado", - "completedItemLabel": "Completado", - "uncompletedItemLabel": "Incompleto", - "loadingChecklistLabel": "Cargando", - "launchChecklistLabel": "Lista de verificación del lanzamiento del curso", - "bestPracticesChecklistLabel": "Lista de verificación de mejores prácticas para el curso", - "doneLoadingChecklistStatusLabel": "Información de la lista de verificación del lanzamiento del curso está cargando", - "launchChecklistDoneLoadingLabel": "Información de la lista de verificación del lanzamiento del curso termino de cargar", - "bestPracticesChecklistLoadingLabel": "Lista de verificación de mejores prácticas para el curso está cargando", - "bestPracticesChecklistDoneLoadingLabel": "Lista de verificación de mejores prácticas para el curso ha terminado de cargar", - "checklistsStatusLabel": "Listas de chequeo", - "checklistStatusLoadingLabel": "La Información de las listas de verificación esta cargando.", - "checklistStatusDoneLoadingLabel": "La Información de las listas de verificación ha terminado de cargar", - "loadingIconLabel": "Cargando", - "startDateStatusLabel": "Fecha de inicio", - "pacingTypeStatusLabel": "Tipo de ritmo", - "pacingTypeInstructorPaced": "Ritmo del instructor", - "pacingTypeSelfPaced": "A ritmo propio.", - "editImageModalAssetsListLoadingSpinner": "Cargando spinner", - "editImageModalAssetsListNoAssetsMessage": "0 imágenes subidas", - "editImageModalAssetsListNoResultsMessage": "0 imágenes encontradas", - "editImageModalCancelButton": "Cancelar", - "editImageModalFormError": "Error", - "editImageModalFormErrorMissingFields": "Asegúrate de rellenar todos los campos.", - "editImageModalFormValidImageDescription": "Añada una descripción para la imagen o especifique que la imagen es solo decorativa.", - "editImageModalFormValidImageDimensions": "Las dimensiones de la imagen deben ser números positivos.", - "editImageModalImageDescriptionDescription": "Texto alternativo para usuarios que no pueden ver la imagen, como\"El cielo con nubes\".", - "editImageModalImageDescriptionLabel": "Descripción de la imagen (Alt Text)", - "editImageModalImageDescriptionLegend": "Descripción de la imagen", - "editImageModalDimensionsLegend": "Dimensiones de la imagen", - "editImageModalImageHeight": "Altura", - "editImageModalImageIsDecorativeCheckboxDescription": "Esta imagen es un fondo o otra imagen que no necesita un texto alternativo.", - "editImageModalImageIsDecorativeCheckboxLabel": "Esta es solo una imagen decorativa", - "editImageModalImagePreviewText": "Previsualización de Imagen", - "editImageModalInsertImageButton": "Insertar imagen", - "editImageModalLearnMore": "Saber más.", - "editImageModalLockImageProportionsCheckboxLabel": "Bloquear proporciones", - "editImageModalImageWidth": "Anchura", - "editImageModalInsertTitle": "Añadir una imagen", - "editImageModalInsertHeader": "Seleccionar una imagen subida anteriormente", - "editImageModalEditTitle": "Editar ajustes de la imagen", - "editImageModalImageOrFields": "o", - "editImageModalNextPageButton": "Siguiente", - "editImageModalPreviousPageButton": "Volver atrás", - "editImageModalInvalidFileType": "Los archivos deben ser imágenes, formatos como .jpg, .png, y .tiff. Ningún archivo fue subido.", - "editImageModalTooManyFiles": "Solo un archivo puede ser subido a la vez.Ningún archivo fue subido.", - "paginationAriaLabel": "Asignación de numero de página al contenido", - "paginationButtonDisabled": "el botón está desactivado", - "paginationNext": "siguiente", - "paginationPrevious": "anterior", - "paginationPage": "página", - "paginationCurrentPage": "página actual", - "paginationOf": "de" -} \ No newline at end of file diff --git a/src/i18n/messages/fr.json b/src/i18n/messages/fr.json deleted file mode 100644 index f2174bd9..00000000 --- a/src/i18n/messages/fr.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "a11yBodyPolicyLink": "Politique d'accessibilité du site", - "a11yBodyPageHeader": "Processus individualisé d'accessibilité pour les créateurs de cours", - "a11yBodyIntroGraph": "Chez edX, nous cherchons à comprendre et à respecter les besoins et les perspectives uniques de la communauté mondiale d'edX. Nous apprécions chaque équipe de cours et nous nous engageons à élargir l'accès à tous, y compris les créateurs d'équipes de cours et les auteurs handicapés. À cette fin, nous avons adopté un {communityAccessibilityElement} et ce processus pour permettre aux créateurs et aux auteurs des équipes de cours de demander de l'aide s'ils ne peuvent pas développer et publier du contenu sur notre plateforme via le Studio en raison de leur handicap.", - "a11yBodyStepsHeader": "Les créateurs et les auteurs des équipes de cours qui ont besoin d'une telle aide doivent suivre les étapes suivantes :", - "a11yBodyEdxResponse": "Nous communiquerons avec vous au sujet de vos préférences et de vos besoins pour déterminer la solution appropriée, bien que la décision finale soit la nôtre, à condition que la solution soit efficace et opportune. Les facteurs que nous considérerons dans le choix d'une solution d'accessibilité sont les suivants : l'efficacité ; la rapidité (par rapport à vos échéances) ; la facilité de mise en œuvre ; et la facilité d'utilisation pour vous. Nous vous aviserons de la décision et vous expliquerons la raison de notre décision dans les 10 jours ouvrables après avoir discuté avec vous.", - "a11yBodyEdxFollowUp": "Par la suite, nous communiquerons avec vous hebdomadairement au sujet de notre évaluation, de notre décision et des progrès réalisés dans la mise en œuvre de la solution d'accessibilité. Nous vous aviserons lorsque la mise en œuvre de votre solution d'accessibilité sera terminée et nous vous ferons le suivi nécessaire pour déterminer si la solution a été efficace.", - "a11yBodyOngoingSupport": "EdX fournira un support technique continu selon les besoins et traitera tous les problèmes supplémentaires survenant après la création du cours initial.", - "a11yBodyProcessContact": "Si vous avez des questions sur ce processus, vous pouvez nous contacter à {emailElement} ou {phoneNumber}.", - "a11yBodyA11yFeedback": "Veuillez adresser vos questions ou suggestions sur la façon d'améliorer l'accessibilité de Studio à {emailElement} ou utilisez le formulaire ci-dessous. Nous apprécions vos commentaires.", - "a11yBodyEmailHeading": "Envoyez un courrier électronique à {emailElement} avec les informations suivantes :", - "a11yBodyNameEmail": "votre nom et votre e-mail ;", - "a11yBodyInstitution": "l'institution membre de edX à laquelle vous êtes affilié ;", - "a11yBodyBarrier": "une brève description du défi ou de la barrière d'accès que vous rencontrez", - "a11yBodyTimeConstraints": "la date à laquelle vous devez avoir accès et pour combien de temps (par exemple, une date de début de cours prévue ou en relation avec une date limite liée au cours, comme une rédaction finale).", - "a11yBodyReceipt": "L'équipe d'assistance edX vous répondra pour confirmer la réception de votre demande et la transmettra au responsable des partenaires edX de votre institution et au spécialiste de l'accessibilité des sites web edX.", - "a11yBodyExtraInfo": "Avec les conseils du spécialiste de l'accessibilité des sites web, edX vous contactera pour discuter de votre demande et recueillir des informations supplémentaires sur vos préférences et vos besoins, afin de déterminer s'il existe une solution viable qu'edX est en mesure de prendre en charge.", - "a11yBodyFixesListHeader": "EdX vous assistera rapidement et en profondeur afin que vous puissiez créer du contenu sur le CMS dans les délais impartis. De tels efforts peuvent inclure, mais ne sont pas limités à:", - "a11yBodyThirdParty": "Acheter un outil ou un logiciel tiers pour une utilisation individuelle afin de vous aider à utiliser Studio;", - "a11yBodyContractor": "Engager un entrepreneur indépendant formé pour fournir une assistance visuelle, verbale et physique en temps réel; ou", - "a11yBodyCodeFix": "Développer un nouveau code pour implémenter un correctif technique.", - "accessibilityPolicyFormEmailLabel": "Adresse courriel", - "accessibilityPolicyFormError": "Erreur", - "accessibilityPolicyFormErrorHighVolume": "Il y actuellement un nombre élevé d'utilisateurs connectés. Veuillez réessayer plus tard dans la journée ou envoyez un courriel à {emailLink}.", - "accessibilityPolicyFormErrorMissingFields": "Assurez-vous de remplir tous les champs.", - "accessibilityPolicyFormFieldsRequired": "Tous les champs sont requis.", - "accessibilityPolicyFormHeader": "Commentaires sur l'accessibilité à Studio", - "accessibilityPolicyFormMessageLabel": "Message", - "accessibilityPolicyFormNameLabel": "Nom", - "accessibilityPolicyFormSubmitAria": "Soumettre le formulaire des commentaires sur l'accessibilité", - "accessibilityPolicyFormSubmitLabel": "Soumettre", - "accessibilityPolicyFormSubmittingFeedbackLabel": "Soumission des commentaires", - "accessibilityPolicyFormSuccess": "Merci d'avoir contacté EdX !", - "accessibilityPolicyFormSuccessDetails": "Merci pour vos commentaires concernant l'accessibilité à Studio. Nous répondons normalement dans les 24 heures ouvrables ({day_start} to {day_end}, {time_start} to {time_end}).", - "accessibilityPolicyFormValidEmail": "Entrer une adresse courriel valide.", - "accessibilityPolicyFormValidMessage": "Entrez un message.", - "accessibilityPolicyFormValidName": "Entrez un nom.", - "assetsClearFiltersButtonLabel": "Effacer tous les filtres", - "assetsClearSearchButtonLabel": "Effacer la recherche", - "assetsDropZoneAriaLabel": "Charger des ressources", - "assetsDropZoneBrowseLabel": "Parcourir votre ordinateur", - "assetsDropZoneHeader": "Glisser Déposer", - "assetsDropZoneMaxFileSizeLabel": "Taille maximale du fichier : {maxFileSizeMB} Mo", - "assetsFiltersAudio": "Audio", - "assetsFiltersCode": "Code", - "assetsFiltersDocuments": "Document", - "assetsFiltersImages": "Image", - "assetsFiltersOther": "Autre", - "assetsFiltersSectionLabel": "Filtrer par type de fichier", - "assetsImagePreviewFilterLabel": "Cacher l'aperçu de fichier", - "assetsListNoPreview": "Aperçu indisponible", - "assetsListNameLabel": "Nom", - "assetsListDateLabel": "Date ajoutée", - "assetsPageNoResultsMessage": "0 fichiers trouvés", - "assetsPageNoAssetsMessage": "0 fichiers chargés", - "assetsPageSkipLink": "Passer à la table des matières", - "assetsResultsCountFiltered": "Affichage de {start}-{end} des {total, plural, one {{formatted_total} possible match} sur {{formatted_total} possible matches}} autres.", - "assetsResultsCountTotal": "Affichage de {start}-{end} des {total, plural, one {{formatted_total} total file} sur {{formatted_total} total files}} autres.", - "assetsSearchInputLabel": "Recherche", - "assetsSearchSubmitLabel": "Lancer la recherche", - "assetsTableGenericUpdateError": "Cette action n'a pas pu être complétée. Rafraîchissez la page, puis réessayez.", - "assetsTableCantDelete": "Impossible de supprimer {assetName}.", - "assetsTableDeleteSuccess": "{assetName} a été supprimé.", - "assetsTableUploadSuccess": "{uploaded_count} fichiers ont bien été téléversés.", - "assetsTableUploadInProgress": "{uploading_count} fichiers sont en cours de téléversement.", - "assetsTableTooManyFiles": "Le nombre maximal de fichiers pouvant être téléversés est {max_count}. Aucun fichier n'a été téléversé.", - "assetsTableTooMuchData": "La taille maximale d'un fichier pouvant être téléversé est de {max_size} Mo. Aucun fichier n'a été téléversé.", - "assetsTableGenericError": "Erreur lors du téléversement de {assetName}. Veuillez réessayer.", - "assetsTableFailedLock": "Échec du verrouillage pour {assetName}.", - "assetsTableLoadingStatus": "Chargement en cours", - "assetsTablePreviewLabel": "Aperçu de l'image", - "assetsTableNameLabel": "Nom", - "assetsTableTypeLable": "Type", - "assetsTableDateLabel": "Date ajoutée", - "assetsTableCaption": "Tableau des ressources", - "assetsTableCopyLabel": "Copier les URL", - "assetsTableDeleteLabel": "Supprimer l'élément", - "assetsTableLockLabel": "Verrouiller l'élément", - "assetsTableNoDescription": "Description indisponible", - "assetsTableNoPreview": "Aperçu indisponible", - "assetsTableLockedObject": "Verrouillé {object}", - "assetsTableUnlockedObject": "Déverrouillé {object}", - "assetsTableUpdateLock": "Mise à jour de l'état de verrouillage pour {assetName}.", - "assetsTableStudioLink": "Studio", - "assetsTableWebLink": "Web", - "assetsTableCopiedStatus": "Copié", - "assetsTableDetailedCopyLink": "{displayName} copier l'URL {label}", - "assetsTableDeleteObject": "Supprimer le fichier", - "assetsTableCancel": "Annuler", - "assetsTablePermaDelete": "Supprimer indéfiniment", - "assetsTableLearnMore": "En savoir plus.", - "assetsTableDeleteWarning": "La suppression de {displayName} est permanente et ne peut pas être annulée.", - "assetsTableDeleteConsequences": "Les liens et références vers ce fichier ne fonctionneront plus. {link}", - "assetsUploadConfirmMessage": "", - "assetsUploadConfirmTitle": "", - "assetsUploadConfirmOverwrite": "", - "assetsUploadConfirmCancel": "Annuler", - "welcomeMessageShortDescription": "Ajouter un message de bienvenue", - "welcomeMessageLongDescription": "Faites un accueil personnel des étudiants dans votre cours et les préparer à une expérience positive du cours.", - "gradingPolicyShortDescription": "Établissez les règles de notation de votre cours", - "gradingPolicyLongDescription": "Établissez vos règles de notation, dont les types de devoirs et les notes de passage. La somme des toutes les notes de devoirs doit être égale à 100 %.", - "gradingPolicyComment": "Vos règles de notation actuelles atteignent {percent} %.", - "certificateShortDescription": "Activer votre certificat", - "certificateLongDescription": "Assurez-vous que l'ensemble du texte est correct, que les signatures ont été chargées, et que le certificat a bien été activé.", - "courseDatesShortDescription": "Définir les dates importantes du cours ", - "courseDatesLongDescription": "Établir votre planning du cours, y compris la date de début et celle de fin.", - "assignmentDeadlinesShortDescription": "Confirmez les dates d'échéance du devoir", - "assignmentDeadlinesLongDescription": "Assurez-vous que les dates d'échéance de tous les devoirs sont comprises entre la date début et celle de fin.", - "assignmentDeadlinesComment": "Les dates d'échéance des devoirs suivants ne sont pas comprises entre la date début et celle de fin.", - "videoDurationShortDescription": "Vérifier la durée de la vidéo", - "videoDurationLongDescription": "Les étudiants participent mieux avec de courtes vidéos suivies de la possibilité de s'exercer. Assurez-vous qu'au moins 80 % des vidéos de cours font moins de 10 minutes de long.", - "mobileFriendlyVideoShortDescription": "Créez une Vidéo accessible sur mobile", - "mobileFriendlyVideoLongDescription": "Les vidéos facilement visibles sur portable peuvent être vues sur tous les appareils pris en charge. Assurez-vous qu'au moins 90 % des vidéos de cours sont visibles facilement sur portable en chargeant des vidéos de cours sur le pipeline de vidéos edX.", - "diverseSequencesShortDescription": "Construire différentes séquences d'apprentissage", - "diverseSequencesLongDescription": "Les recherches prouvent que les expériences à contenu diversifié améliorent la participation de l'étudiant. Nous vous conseillons de créer des séquences d'apprentissages ou des sous-sections aux types de contenus divers (vidéo, discussion, problème).", - "weeklyHighlightsShortDescription": "Définir les faits marquants hebdomadaires", - "weeklyHighlightsLongDescription": "Activer et préciser les faits marquants de la semaine pour maintenir la participation et la motivation des étudiants pour votre cours.", - "unitDepthShortDescription": "Gérer la profondeur de l'unité", - "unitDepthLongDescription": "La division du contenu du cours en morceaux gérables encourage la participation de l'étudiant. Nous vous recommandons d'avoir trois composants par unités tout au plus.", - "proctoringEmailShortDescription": "Ajouter un courriel d'escalade Proctortrack", - "proctoringEmailLongDescription": "Les cours utilisant Proctortrack requièrent un courriel d'escalation. Veuillez vous assurer que les apprenants et le Support peuvent contacter votre équipe de cours pour les problèmes de surveillance (ex. appels, réinitialisation d'examen, etc.).", - "updateLinkLabel": "Mettre à jour", - "completionCountLabel": "{completed}/{total} achevée", - "completedItemLabel": "achevée", - "uncompletedItemLabel": "pas achevée", - "loadingChecklistLabel": "Chargement en cours", - "launchChecklistLabel": "Lancer la liste de vérification", - "bestPracticesChecklistLabel": "Checklist des bonnes pratiques", - "doneLoadingChecklistStatusLabel": "Démarrage checklist chargement des données en cours", - "launchChecklistDoneLoadingLabel": "Démarrage checklist chargement des données terminé", - "bestPracticesChecklistLoadingLabel": "Checklist des bonnes pratiques chargement de données en cours ", - "bestPracticesChecklistDoneLoadingLabel": "Checklist des bonnes pratiques chargement de données terminé", - "checklistsStatusLabel": "Checklists", - "checklistStatusLoadingLabel": "Chargement des données de la checklists", - "checklistStatusDoneLoadingLabel": "Le checklists des données est faite, chargement", - "loadingIconLabel": "Chargement en cours", - "startDateStatusLabel": "Date de début", - "pacingTypeStatusLabel": "Type de Rythme", - "pacingTypeInstructorPaced": "Rythmé par l'instructeur", - "pacingTypeSelfPaced": "Autorythmé", - "editImageModalAssetsListLoadingSpinner": "chargement des épingles ", - "editImageModalAssetsListNoAssetsMessage": "0 images chargées", - "editImageModalAssetsListNoResultsMessage": "0 images trouvées", - "editImageModalCancelButton": "Annuler", - "editImageModalFormError": "Erreur", - "editImageModalFormErrorMissingFields": "Assurez-vous de remplir tous les champs.", - "editImageModalFormValidImageDescription": "Ajouter une description de l'image ou précisez que l'image est purement décorative.", - "editImageModalFormValidImageDimensions": "Les dimensions de l'images doivent être en nombres positifs.", - "editImageModalImageDescriptionDescription": "Texte alternatif pour les utilisateurs qui ne peuvent voir l'image, exemple « Ciel avec des nuages ».", - "editImageModalImageDescriptionLabel": "Description de l'image (Alt Text)", - "editImageModalImageDescriptionLegend": "Description de l'Image", - "editImageModalDimensionsLegend": "Dimensions de l'image", - "editImageModalImageHeight": "Hauteur", - "editImageModalImageIsDecorativeCheckboxDescription": "C'est image de fond ou une autre image ne nécessitant pas de texte alternatif.", - "editImageModalImageIsDecorativeCheckboxLabel": "Cette image est purement décorative", - "editImageModalImagePreviewText": "Aperçu de l'image", - "editImageModalInsertImageButton": "Insérer l'image", - "editImageModalLearnMore": "En savoir plus.", - "editImageModalLockImageProportionsCheckboxLabel": "Verrouiller les proportions", - "editImageModalImageWidth": "Largeur", - "editImageModalInsertTitle": "Ajouter une image", - "editImageModalInsertHeader": "Sélectionner une image chargée précédemment", - "editImageModalEditTitle": "Modifier les paramètres d'images", - "editImageModalImageOrFields": "ou", - "editImageModalNextPageButton": "Suivant", - "editImageModalPreviousPageButton": "Retour", - "editImageModalInvalidFileType": "Les fichiers doivent être des images, du type .jpg, png, et .tiff. Aucun fichier n'a été chargé.", - "editImageModalTooManyFiles": "Un seul ficher peut être chargé à la fois. Aucun fichier n'a été chargé.", - "paginationAriaLabel": "Pagination du contenu.", - "paginationButtonDisabled": "le bouton est désactivé", - "paginationNext": "suivant", - "paginationPrevious": "précédent", - "paginationPage": "page", - "paginationCurrentPage": "page actuelle", - "paginationOf": "de" -} \ No newline at end of file diff --git a/src/i18n/messages/zh_CN.json b/src/i18n/messages/zh_CN.json deleted file mode 100644 index 9f9ecf42..00000000 --- a/src/i18n/messages/zh_CN.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "a11yBodyPolicyLink": "网站可访问策略", - "a11yBodyPageHeader": "课程创建者的个性化操作流程", - "a11yBodyIntroGraph": "在edX,我们理解和尊重 edX 全球用户的独特需求和观点。我们重视每个课程团队,并致力于成为为全球用户服务的领导者,包括残疾课程作者和创建者。为此,我们采用了{communityAccessibilityElement}和此流程,以确保残疾课程作者和创建者能够通过 Studio 在我们的平台上开发和发布内容。", - "a11yBodyStepsHeader": "需要协助的课程团队创建者和作者应采取以下步骤:", - "a11yBodyEdxResponse": "我们在确定合适的解决方案时,将与您沟通偏好和需求,但最终的决定将由我们做出,只要解决方案有效且及时。我们在选择访问问题相关的解决方案时,考虑的因素是:有效性,及时性(相对于您的截止日期),易于实施,并且易于使用。我们将在与您讨论后的 10 个工作日内通知您该决定并说明我们的决定依据。", - "a11yBodyEdxFollowUp": "此后,我们将每周与您联系,沟通我们在实施无障碍解决方案方面的评估、决策和进展。我们将在您的辅助功能解决方案完成后通知您,并随时与您联系,以确定该解决方案是否有效。", - "a11yBodyOngoingSupport": "EdX会根据您的需要持续提供技术支持,并处理创建课程后发生的任何问题。", - "a11yBodyProcessContact": "如果您对此流程有任何问题,请联系{emailElement} 或 {phoneNumber}。", - "a11yBodyA11yFeedback": "如果您有任何问题,或有任何改善 Studio 功能的建议,请发送邮件至{emailElement}或使用以下表格,欢迎您的反馈。", - "a11yBodyEmailHeading": "将下面的信息以邮件的形式发送给{emailElement}:", - "a11yBodyNameEmail": "你的名字和E-mail;", - "a11yBodyInstitution": "您所属的 edX 成员机构;", - "a11yBodyBarrier": "请简单描述一下您使用时所遇到的困难与阻碍;", - "a11yBodyTimeConstraints": "您最快需要什么时候访问,访问多久(例如,计划开课日期或与课程相关的截止日期,如期末论文的截止日期)。", - "a11yBodyReceipt": "在收到您请求后的48小时内,edX 支持团队会回复确认收到请求,并将请求发送至您所属机构的 edX 合作管理员和 edX 网站访问协调员。", - "a11yBodyExtraInfo": "在网站可访问性专家的指导下,edX 将与您联系以讨论您的请求并从您那里收集有关您的偏好和需求的其他信息,以确定是否有 edX 能够支持的可行解决方案。", - "a11yBodyFixesListHeader": "EdX 会为您提供快速且全面的帮助,以便您在限定的时间内创建 CMS 内容。EdX提供的帮助包括但不限于:", - "a11yBodyThirdParty": "购买第三方工具或软件,帮助您以个性化方式使用Studio;", - "a11yBodyContractor": "聘请训练有素的独立承包商提供实时视觉、口头和现场协助;或者", - "a11yBodyCodeFix": "开发新代码来解决技术问题。", - "accessibilityPolicyFormEmailLabel": "邮箱", - "accessibilityPolicyFormError": "错误", - "accessibilityPolicyFormErrorHighVolume": "我们正在处理大量问题,请稍后重试或发送邮件至{emailLink}。", - "accessibilityPolicyFormErrorMissingFields": "请不要留空输入框。", - "accessibilityPolicyFormFieldsRequired": "必须选项为必填", - "accessibilityPolicyFormHeader": "Studio 使用反馈", - "accessibilityPolicyFormMessageLabel": "消息", - "accessibilityPolicyFormNameLabel": "姓名", - "accessibilityPolicyFormSubmitAria": "提交反馈表格", - "accessibilityPolicyFormSubmitLabel": "提交", - "accessibilityPolicyFormSubmittingFeedbackLabel": "正在提交反馈", - "accessibilityPolicyFormSuccess": "感谢您的反馈!", - "accessibilityPolicyFormSuccessDetails": "感谢您反馈 Studio 的使用问题,我们一般会在 1 个工作日内进行回复( ({day_start}至{day_end},{time_start} 至 {time_end})。", - "accessibilityPolicyFormValidEmail": "输入一个有效的邮箱", - "accessibilityPolicyFormValidMessage": "输入信息。", - "accessibilityPolicyFormValidName": "输入姓名。", - "assetsClearFiltersButtonLabel": "清除所有筛选条件", - "assetsClearSearchButtonLabel": "清空搜索结果", - "assetsDropZoneAriaLabel": "上传资源", - "assetsDropZoneBrowseLabel": "浏览您的电脑", - "assetsDropZoneHeader": "拖放", - "assetsDropZoneMaxFileSizeLabel": "最大文件大小: {maxFileSizeMB} MB", - "assetsFiltersAudio": "音频", - "assetsFiltersCode": "代码", - "assetsFiltersDocuments": "文档", - "assetsFiltersImages": "图像", - "assetsFiltersOther": "其他", - "assetsFiltersSectionLabel": "按文件类型筛选", - "assetsImagePreviewFilterLabel": "隐藏文件预览", - "assetsListNoPreview": "不可预览", - "assetsListNameLabel": "姓名", - "assetsListDateLabel": "添加日期", - "assetsPageNoResultsMessage": "找到0个文件", - "assetsPageNoAssetsMessage": "已上传0个文件", - "assetsPageSkipLink": "跳转至表格内容", - "assetsResultsCountFiltered": "显示{start}-{end}的 {total, plural, one {{formatted_total} possible match}其他的 {{formatted_total} possible matches}}。", - "assetsResultsCountTotal": "显示{start}-{end}的 {total, plural, one {{formatted_total} total file}其他的 {{formatted_total} total files}}。", - "assetsSearchInputLabel": "搜索", - "assetsSearchSubmitLabel": "提交搜索", - "assetsTableGenericUpdateError": "操作无法完成,请刷新页面并重试。", - "assetsTableCantDelete": "无法删除{assetName}。", - "assetsTableDeleteSuccess": "已删除{assetName}。", - "assetsTableUploadSuccess": "成功上传{uploaded_count}个文件。", - "assetsTableUploadInProgress": "正在上传{uploading_count}个文件。", - "assetsTableTooManyFiles": "一次上传最多支持{max_count}个文件。未上传任何文件。", - "assetsTableTooMuchData": "一次上传文件不超过{max_size} MB。未上传任何文件。", - "assetsTableGenericError": "上传{assetName}时发生错误,请重试。", - "assetsTableFailedLock": "{assetName} 锁定失败。", - "assetsTableLoadingStatus": "正在加载", - "assetsTablePreviewLabel": "图片预览", - "assetsTableNameLabel": "姓名", - "assetsTableTypeLable": "类型", - "assetsTableDateLabel": "添加日期", - "assetsTableCaption": "资源表格", - "assetsTableCopyLabel": "复制链接", - "assetsTableDeleteLabel": "删除资源", - "assetsTableLockLabel": "锁定资源", - "assetsTableNoDescription": "描述不可用", - "assetsTableNoPreview": "不可预览", - "assetsTableLockedObject": "已锁定{object}", - "assetsTableUnlockedObject": "已解锁{object}", - "assetsTableUpdateLock": "正在更新{assetName}的锁定状态。", - "assetsTableStudioLink": "Studio", - "assetsTableWebLink": "网页", - "assetsTableCopiedStatus": "已复制", - "assetsTableDetailedCopyLink": " {displayName} 复制 {label} URL 地址", - "assetsTableDeleteObject": "删除文件", - "assetsTableCancel": "取消", - "assetsTablePermaDelete": "永久性删除", - "assetsTableLearnMore": "了解更多。", - "assetsTableDeleteWarning": "删除{displayName}的操作将无法撤销。", - "assetsTableDeleteConsequences": "此文件的所有链接或引用都将失效。{link}", - "assetsUploadConfirmMessage": "", - "assetsUploadConfirmTitle": "", - "assetsUploadConfirmOverwrite": "", - "assetsUploadConfirmCancel": "取消", - "welcomeMessageShortDescription": "添加欢迎消息", - "welcomeMessageLongDescription": "亲自欢迎学员进入您的课程并为他们准备精彩的课程学习体验。", - "gradingPolicyShortDescription": "创建您的课程评分政策", - "gradingPolicyLongDescription": "制定您的评分政策,包括作业类型和及格分数。所有作业加起来的总分为100%。", - "gradingPolicyComment": "您目前的评分标准加起来是 {percent}%。", - "certificateShortDescription": "启用您的证书", - "certificateLongDescription": "请确保所有文字正确、已上传签名、已激活证书。", - "courseDatesShortDescription": "设立重要课程日期", - "courseDatesLongDescription": "创建您的课程时间表,包括开课和结课时间。", - "assignmentDeadlinesShortDescription": "启用作业截止日期", - "assignmentDeadlinesLongDescription": "请确保所有的作业截止时间在开课与结课日期之间。", - "assignmentDeadlinesComment": "下列作业的截止时间不在开课与结课日期之间:", - "videoDurationShortDescription": "查看视频时长", - "videoDurationLongDescription": "简短的视频加上随之而来的习题能更好地促进学员参与度。请确保 80% 或更多的课程视频少于 10 分钟。", - "mobileFriendlyVideoShortDescription": "创建可在移动设备上观看的视频", - "mobileFriendlyVideoLongDescription": "支持移动设备的视频可以在所有适用的设备上观看。通过将课程视频上传到 edX 视频通道,确保至少 90% 的课程视频支持移动设备。", - "diverseSequencesShortDescription": "构建多样化的学习活动", - "diverseSequencesLongDescription": "研究表明,多样化的内容体验可以推动学员的积极参与。我们建议学习活动或小节的80%以上内容包含各种形式(如视频、讨论或回答问题)。", - "weeklyHighlightsShortDescription": "建立每周亮点", - "weeklyHighlightsLongDescription": "启用和发布每周亮点,以保持学习者对课程的参与和了解程度。", - "unitDepthShortDescription": "管理单元深度", - "unitDepthLongDescription": "将课程内容划分成可管理的部分可以促进学习者的参与。我们建议单元不超过三个组成部分。", - "proctoringEmailShortDescription": "添加电子邮件", - "proctoringEmailLongDescription": "使用 课程需要升级电子邮件。确保学习者和支持人员可以就监考问题(例如上诉、考试重置等)联系您的课程团队。", - "updateLinkLabel": "更新", - "completionCountLabel": "{completed}/{total} 完成", - "completedItemLabel": "完成", - "uncompletedItemLabel": "未完成", - "loadingChecklistLabel": "正在加载", - "launchChecklistLabel": "启动清单", - "bestPracticesChecklistLabel": "最佳活动清单", - "doneLoadingChecklistStatusLabel": "清单数据启动项正在加载中", - "launchChecklistDoneLoadingLabel": "清单数据启动项已完成加载", - "bestPracticesChecklistLoadingLabel": "最佳活动清单数据正在加载中", - "bestPracticesChecklistDoneLoadingLabel": "最佳活动清单数据已加载完成", - "checklistsStatusLabel": "清单", - "checklistStatusLoadingLabel": "清单数据正在加载中", - "checklistStatusDoneLoadingLabel": "清单数据已加载完成", - "loadingIconLabel": "正在加载", - "startDateStatusLabel": "开始日期", - "pacingTypeStatusLabel": "进度类型", - "pacingTypeInstructorPaced": "讲师进度", - "pacingTypeSelfPaced": "自定进度", - "editImageModalAssetsListLoadingSpinner": "加载滚轮", - "editImageModalAssetsListNoAssetsMessage": "已上传0张图片", - "editImageModalAssetsListNoResultsMessage": "发现0张图片", - "editImageModalCancelButton": "取消", - "editImageModalFormError": "错误", - "editImageModalFormErrorMissingFields": "请确保已填写所有项。", - "editImageModalFormValidImageDescription": "添加图片描述或指定图片仅为装饰。", - "editImageModalFormValidImageDimensions": "图片长宽比例必须是正数。", - "editImageModalImageDescriptionDescription": "无法查看图片的用户可选择使用文本,如“有云的天空”。", - "editImageModalImageDescriptionLabel": "图片描述(替代文本)", - "editImageModalImageDescriptionLegend": "图片描述", - "editImageModalDimensionsLegend": "图片长宽比例", - "editImageModalImageHeight": "高度", - "editImageModalImageIsDecorativeCheckboxDescription": "此图像是不需要替代文本的背景或其他图像。", - "editImageModalImageIsDecorativeCheckboxLabel": "此图片仅为装饰", - "editImageModalImagePreviewText": "图片预览", - "editImageModalInsertImageButton": "插入图片", - "editImageModalLearnMore": "了解更多。", - "editImageModalLockImageProportionsCheckboxLabel": "锁定纵横比", - "editImageModalImageWidth": "宽", - "editImageModalInsertTitle": "添加图片", - "editImageModalInsertHeader": "选择一张之前上传的图片", - "editImageModalEditTitle": "编辑图片设置", - "editImageModalImageOrFields": "或者", - "editImageModalNextPageButton": "下一步", - "editImageModalPreviousPageButton": "返回", - "editImageModalInvalidFileType": "文件必须是图片,例如 .jpg,.png 和 .tiff 文件。没有文件被上传。", - "editImageModalTooManyFiles": "一次只能上传一个文件。没有文件被上传。", - "paginationAriaLabel": "内容分页", - "paginationButtonDisabled": "按钮已禁用", - "paginationNext": "下一个", - "paginationPrevious": "上一项", - "paginationPage": "页", - "paginationCurrentPage": "当前页", - "paginationOf": "的" -} \ No newline at end of file diff --git a/src/i18n/transifex_input.json b/src/i18n/transifex_input.json deleted file mode 100644 index f8ed5bde..00000000 --- a/src/i18n/transifex_input.json +++ /dev/null @@ -1,176 +0,0 @@ -{ - "a11yBodyPolicyLink": "Website Accessibility Policy", - "a11yBodyPageHeader": "Individualized Accessibility Process for Course Creators", - "a11yBodyIntroGraph": "At edX, we seek to understand and respect the unique needs and perspectives of the edX global community. We value every course team and are committed to expanding access to all, including course team creators and authors with disabilities. To that end, we have adopted a {communityAccessibilityElement} and this process to allow course team creators and authors to request assistance if they are unable to develop and post content on our platform via Studio because of their disabilities.", - "a11yBodyStepsHeader": "Course team creators and authors needing such assistance should take the following steps:", - "a11yBodyEdxResponse": "We will communicate with you about your preferences and needs in determining the appropriate solution, although the ultimate decision will be ours, provided that the solution is effective and timely. The factors we will consider in choosing an accessibility solution are: effectiveness; timeliness (relative to your deadlines); ease of implementation; and ease of use for you. We will notify you of the decision and explain the basis for our decision within 10 business days of discussing with you.", - "a11yBodyEdxFollowUp": "Thereafter, we will communicate with you on a weekly basis regarding our evaluation, decision, and progress in implementing the accessibility solution. We will notify you when implementation of your accessibility solution is complete and will follow-up with you as may be necessary to see if the solution was effective.", - "a11yBodyOngoingSupport": "EdX will provide ongoing technical support as needed and will address any additional issues that arise after the initial course creation.", - "a11yBodyProcessContact": "If you have any questions about this process, you may contact us at {emailElement} or {phoneNumber}.", - "a11yBodyA11yFeedback": "Please direct any questions or suggestions on how to improve the accessibility of Studio to {emailElement} or use the form below. We welcome your feedback.", - "a11yBodyEmailHeading": "Send an email to {emailElement} with the following information:", - "a11yBodyNameEmail": "your name and email address;", - "a11yBodyInstitution": "the edX member institution that you are affiliated with;", - "a11yBodyBarrier": "a brief description of the challenge or barrier to access that you are experiencing; and", - "a11yBodyTimeConstraints": "how soon you need access and for how long (e.g., a planned course start date or in connection with a course-related deadline such as a final essay).", - "a11yBodyReceipt": "The edX Support Team will respond to confirm receipt and forward your request to the edX Partner Manager for your institution and the edX Website Accessibility Specialist.", - "a11yBodyExtraInfo": "With guidance from the Website Accessibility Specialist, edX will contact you to discuss your request and gather additional information from you about your preferences and needs, to determine if there’s a workable solution that edX is able to support.", - "a11yBodyFixesListHeader": "EdX will assist you promptly and thoroughly so that you are able to create content on the CMS within your time constraints. Such efforts may include, but are not limited to:", - "a11yBodyThirdParty": "Purchasing a third-party tool or software for use on an individual basis to assist your use of Studio;", - "a11yBodyContractor": "Engaging a trained independent contractor to provide real-time visual, verbal and physical assistance; or", - "a11yBodyCodeFix": "Developing new code to implement a technical fix.", - "accessibilityPolicyFormEmailLabel": "Email Address", - "accessibilityPolicyFormError": "Error", - "accessibilityPolicyFormErrorHighVolume": "We are currently experiencing high volume. Try again later today or send an email message to {emailLink}.", - "accessibilityPolicyFormErrorMissingFields": "Make sure to fill in all fields.", - "accessibilityPolicyFormFieldsRequired": "All fields are required.", - "accessibilityPolicyFormHeader": "Studio Accessibility Feedback", - "accessibilityPolicyFormMessageLabel": "Message", - "accessibilityPolicyFormNameLabel": "Name", - "accessibilityPolicyFormSubmitAria": "Submit Accessibility Feedback Form", - "accessibilityPolicyFormSubmitLabel": "Submit", - "accessibilityPolicyFormSubmittingFeedbackLabel": "Submitting feedback", - "accessibilityPolicyFormSuccess": "Thank you for contacting edX!", - "accessibilityPolicyFormSuccessDetails": "Thank you for your feedback regarding the accessibility of Studio. We typically respond within one business day ({day_start} to {day_end}, {time_start} to {time_end}).", - "accessibilityPolicyFormValidEmail": "Enter a valid email address.", - "accessibilityPolicyFormValidMessage": "Enter a message.", - "accessibilityPolicyFormValidName": "Enter a name.", - "assetsClearFiltersButtonLabel": "Clear all filters", - "assetsClearSearchButtonLabel": "Clear search", - "assetsDropZoneAriaLabel": "Upload assets", - "assetsDropZoneBrowseLabel": "Browse your computer", - "assetsDropZoneHeader": "Drag and Drop", - "assetsDropZoneMaxFileSizeLabel": "Maximum file size: {maxFileSizeMB} MB", - "assetsFiltersAudio": "Audio", - "assetsFiltersCode": "Code", - "assetsFiltersDocuments": "Document", - "assetsFiltersImages": "Image", - "assetsFiltersOther": "Other", - "assetsFiltersSectionLabel": "Filter by File Type", - "assetsImagePreviewFilterLabel": "Hide File Preview", - "assetsListNoPreview": "Preview not available", - "assetsListNameLabel": "Name", - "assetsListDateLabel": "Date Added", - "assetsPageNoResultsMessage": "0 files found", - "assetsPageNoAssetsMessage": "0 files uploaded", - "assetsPageSkipLink": "Skip to table contents", - "assetsResultsCountFiltered": "Showing {start}-{end} out of {total, plural, one {{formatted_total} possible match} other {{formatted_total} possible matches}}.", - "assetsResultsCountTotal": "Showing {start}-{end} out of {total, plural, one {{formatted_total} total file} other {{formatted_total} total files}}.", - "assetsSearchInputLabel": "Search", - "assetsSearchSubmitLabel": "Submit search", - "assetsTableGenericUpdateError": "The action could not be completed. Refresh the page, and then try the action again.", - "assetsTableCantDelete": "Unable to delete {assetName}.", - "assetsTableDeleteSuccess": "{assetName} has been deleted.", - "assetsTableUploadSuccess": "{uploaded_count} files successfully uploaded.", - "assetsTableUploadInProgress": "{uploading_count} files uploading.", - "assetsTableTooManyFiles": "The maximum number of files for an upload is {max_count}. No files were uploaded.", - "assetsTableTooMuchData": "The maximum size for an upload is {max_size} MB. No files were uploaded.", - "assetsTableGenericError": "Error uploading {assetName}. Try again.", - "assetsTableFailedLock": "Failed to toggle lock for {assetName}.", - "assetsTableLoadingStatus": "Loading", - "assetsTablePreviewLabel": "Image Preview", - "assetsTableNameLabel": "Name", - "assetsTableTypeLable": "Type", - "assetsTableDateLabel": "Date Added", - "assetsTableCaption": "Assets Table", - "assetsTableCopyLabel": "Copy URLs", - "assetsTableDeleteLabel": "Delete Asset", - "assetsTableLockLabel": "Lock Asset", - "assetsTableNoDescription": "Description not available", - "assetsTableNoPreview": "Preview not available", - "assetsTableLockedObject": "Locked {object}", - "assetsTableUnlockedObject": "Unlocked {object}", - "assetsTableUpdateLock": "Updating lock status for {assetName}.", - "assetsTableStudioLink": "Studio", - "assetsTableWebLink": "Web", - "assetsTableCopiedStatus": "Copied", - "assetsTableDetailedCopyLink": "{displayName} copy {label} URL", - "assetsTableDeleteObject": "Delete File", - "assetsTableCancel": "Cancel", - "assetsTablePermaDelete": "Permanently delete", - "assetsTableLearnMore": "Learn more.", - "assetsTableDeleteWarning": "Deleting {displayName} cannot be undone.", - "assetsTableDeleteConsequences": "Any links or references to this file will no longer work. {link}", - "assetsUploadConfirmMessage": "The following files will be overwritten: {listOfFiles}", - "assetsUploadConfirmTitle": "Overwrite Files", - "assetsUploadConfirmOverwrite": "Overwrite", - "assetsUploadConfirmCancel": "Cancel", - "welcomeMessageShortDescription": "Add a Welcome Message", - "welcomeMessageLongDescription": "Personally welcome learners into your course and prepare learners for a positive course experience.", - "gradingPolicyShortDescription": "Create Your Course Grading Policy", - "gradingPolicyLongDescription": "Establish your grading policy, including assignment types and passing score. All assignments add up to 100%.", - "gradingPolicyComment": "Your current grading policy adds up to {percent}%.", - "certificateShortDescription": "Enable Your Certificate", - "certificateLongDescription": "Make sure that all text is correct, signatures have been uploaded, and the certificate has been activated.", - "courseDatesShortDescription": "Set Important Course Dates", - "courseDatesLongDescription": "Establish your course schedule, including when the course starts and ends.", - "assignmentDeadlinesShortDescription": "Validate Assignment Deadlines", - "assignmentDeadlinesLongDescription": "Ensure all assignment deadlines are between course start and end dates.", - "assignmentDeadlinesComment": "The following assignments have deadlines that do not fall between course start and end date:", - "videoDurationShortDescription": "Check Video Duration", - "videoDurationLongDescription": "Learners engage best with short videos followed by opportunities to practice. Ensure that 80% or more of course videos are less than 10 minutes long.", - "mobileFriendlyVideoShortDescription": "Create Mobile-Friendly Video", - "mobileFriendlyVideoLongDescription": "Mobile-friendly videos can be viewed across all supported devices. Ensure that at least 90% of course videos are mobile friendly by uploading course videos to the edX video pipeline.", - "diverseSequencesShortDescription": "Build Diverse Learning Sequences", - "diverseSequencesLongDescription": "Research shows that a diverse content experience drives learner engagement. We recommend that 80% or more of your learning sequences or subsections include multiple content types (such as video, discussion, or problem).", - "weeklyHighlightsShortDescription": "Set Weekly Highlights", - "weeklyHighlightsLongDescription": "Enable and specify weekly highlights to keep learners engaged and on track in your course.", - "unitDepthShortDescription": "Manage Unit Depth", - "unitDepthLongDescription": "Breaking up course content into manageable pieces promotes learner engagement. We recommend units contain no more than three components.", - "proctoringEmailShortDescription": "Add a Proctortrack Escalation Email", - "proctoringEmailLongDescription": "Courses using Proctortrack require an escalation email. Ensure learners and Support can contact your course team regarding proctoring issues (e.g. appeals, exam resets, etc).", - "updateLinkLabel": "Update", - "completionCountLabel": "{completed}/{total} completed", - "completedItemLabel": "completed", - "uncompletedItemLabel": "uncompleted", - "loadingChecklistLabel": "Loading", - "launchChecklistLabel": "Launch Checklist", - "bestPracticesChecklistLabel": "Best Practices Checklist", - "doneLoadingChecklistStatusLabel": "Launch Checklist data is loading", - "launchChecklistDoneLoadingLabel": "Launch Checklist data is done loading", - "bestPracticesChecklistLoadingLabel": "Best Practices Checklist data is loading", - "bestPracticesChecklistDoneLoadingLabel": "Best Practices Checklist data is done loading", - "checklistsStatusLabel": "Checklists", - "checklistStatusLoadingLabel": "Checklists data is loading", - "checklistStatusDoneLoadingLabel": "Checklists data is done loading", - "loadingIconLabel": "Loading", - "startDateStatusLabel": "Start Date", - "pacingTypeStatusLabel": "Pacing Type", - "pacingTypeInstructorPaced": "Instructor-Paced", - "pacingTypeSelfPaced": "Self-Paced", - "editImageModalAssetsListLoadingSpinner": "Loading spinner", - "editImageModalAssetsListNoAssetsMessage": "0 images uploaded", - "editImageModalAssetsListNoResultsMessage": "0 images found", - "editImageModalCancelButton": "Cancel", - "editImageModalFormError": "Error", - "editImageModalFormErrorMissingFields": "Make sure to fill in all fields.", - "editImageModalFormValidImageDescription": "Add an image description or specify that the image is decorative only.", - "editImageModalFormValidImageDimensions": "Image dimensions must be positive numbers.", - "editImageModalImageDescriptionDescription": "Alternative text for users who cannot view the image, such as \"The sky with clouds\".", - "editImageModalImageDescriptionLabel": "Image Description (Alt Text)", - "editImageModalImageDescriptionLegend": "Image Description", - "editImageModalDimensionsLegend": "Image Dimensions", - "editImageModalImageHeight": "Height", - "editImageModalImageIsDecorativeCheckboxDescription": "This image is a background or other image that does not require alternative text.", - "editImageModalImageIsDecorativeCheckboxLabel": "This image is decorative only", - "editImageModalImagePreviewText": "Image Preview", - "editImageModalInsertImageButton": "Insert Image", - "editImageModalLearnMore": "Learn more.", - "editImageModalLockImageProportionsCheckboxLabel": "Lock proportions", - "editImageModalImageWidth": "Width", - "editImageModalInsertTitle": "Add an Image", - "editImageModalInsertHeader": "Select a previously uploaded image", - "editImageModalEditTitle": "Edit Image Settings", - "editImageModalImageOrFields": "or", - "editImageModalNextPageButton": "Next", - "editImageModalPreviousPageButton": "Back", - "editImageModalInvalidFileType": "Files must be images, such as .jpg, .png, and .tiff files. No files were uploaded.", - "editImageModalTooManyFiles": "Only one file may be uploaded at a time. No files were uploaded.", - "paginationAriaLabel": "Content pagination", - "paginationButtonDisabled": "button is disabled", - "paginationNext": "next", - "paginationPrevious": "previous", - "paginationPage": "page", - "paginationCurrentPage": "current page", - "paginationOf": "of" -} \ No newline at end of file diff --git a/src/utils/i18n/scripts/generateSupportedLangs.js b/src/utils/i18n/scripts/generateSupportedLangs.js index 2d2ca23b..44aa57da 100755 --- a/src/utils/i18n/scripts/generateSupportedLangs.js +++ b/src/utils/i18n/scripts/generateSupportedLangs.js @@ -51,14 +51,6 @@ function generateSupportedLangsFile({ const importVariableName = `${languageFamilyCode.toLowerCase()}Data`; const dashLanguageCode = language.toLowerCase().replace(/_/g, '-'); importLines.push(`import ${importVariableName} from 'react-intl/locale-data/${languageFamilyCode}';`); - - // Note: These imports are not directly consumed by the studio-frontend React app. They're imported to ensure that - // the messages/*.json files exists and they can be loaded via the load_sfe_i18n_messages() function in - // the `edx-platform`. - // - // This pattern should probably be refactored to pull the translations directly within the `edx-platform`. - const jsonFilename = `${language}.json`; - importLines.push(`import './${jsonFilename}';`); exportLines.push(` '${dashLanguageCode}': ${importVariableName},`); }); diff --git a/src/utils/i18n/scripts/generateSupportedLangs.test.js b/src/utils/i18n/scripts/generateSupportedLangs.test.js index 26d3a325..e82a66d9 100755 --- a/src/utils/i18n/scripts/generateSupportedLangs.test.js +++ b/src/utils/i18n/scripts/generateSupportedLangs.test.js @@ -79,16 +79,11 @@ describe('generate with three languages', () => { expect(success).toBe(true); // Languages generated successfully // It should write the file with the following content: - // - import 'react-intl/locale-data/ar' and ar.json messages - // - import 'react-intl/locale-data/fr' and fr.json messages - // - import fr_CA.json messages without duplicating the `fr` import because it's the same language - // - import 'react-intl/locale-data/zh' and zh_CN.json messages + // - import 'react-intl/locale-data/ar' + // - import 'react-intl/locale-data/fr' once but export it for both fr and fr-CA + // - import 'react-intl/locale-data/zh' // - export the imported locale-data expect(writeFileHistory.latest.content).toEqual(`// This file is generated by the "generateSupportedLangs.js" script. -import './ar.json'; -import './fr.json'; -import './fr_CA.json'; -import './zh_CN.json'; import arData from 'react-intl/locale-data/ar'; import frData from 'react-intl/locale-data/fr'; import zhData from 'react-intl/locale-data/zh';