From d2af9489b6398831e11466807f5490c7887c308f Mon Sep 17 00:00:00 2001 From: Samir Sabri Date: Sat, 21 Oct 2023 17:37:37 +0300 Subject: [PATCH] feat!: remove Transifex calls for OEP-58 --- .gitignore | 1 + .tx/config | 8 -- Makefile | 26 +--- src/i18n/index.js | 40 +----- src/i18n/messages/ar.json | 250 ---------------------------------- src/i18n/messages/ca.json | 1 - src/i18n/messages/es_419.json | 250 ---------------------------------- src/i18n/messages/fr.json | 250 ---------------------------------- src/i18n/messages/he.json | 1 - src/i18n/messages/id.json | 1 - src/i18n/messages/ko_kr.json | 1 - src/i18n/messages/pl.json | 1 - src/i18n/messages/pt_br.json | 1 - src/i18n/messages/ru.json | 1 - src/i18n/messages/th.json | 1 - src/i18n/messages/uk.json | 1 - src/i18n/messages/zh_CN.json | 250 ---------------------------------- 17 files changed, 5 insertions(+), 1079 deletions(-) delete mode 100644 .tx/config delete mode 100644 src/i18n/messages/ar.json delete mode 100644 src/i18n/messages/ca.json delete mode 100644 src/i18n/messages/es_419.json delete mode 100644 src/i18n/messages/fr.json delete mode 100644 src/i18n/messages/he.json delete mode 100644 src/i18n/messages/id.json delete mode 100644 src/i18n/messages/ko_kr.json delete mode 100644 src/i18n/messages/pl.json delete mode 100644 src/i18n/messages/pt_br.json delete mode 100644 src/i18n/messages/ru.json delete mode 100644 src/i18n/messages/th.json delete mode 100644 src/i18n/messages/uk.json delete mode 100644 src/i18n/messages/zh_CN.json diff --git a/.gitignore b/.gitignore index 4e93143e..460c197f 100755 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ temp/babel-plugin-react-intl /temp /.vscode /module.config.js +src/i18n/messages \ No newline at end of file diff --git a/.tx/config b/.tx/config deleted file mode 100644 index b01c6cc4..00000000 --- a/.tx/config +++ /dev/null @@ -1,8 +0,0 @@ -[main] -host = https://www.transifex.com - -[o:open-edx:p:edx-platform:r:frontend-app-library-authoring] -file_filter = src/i18n/messages/.json -source_file = src/i18n/transifex_input.json -source_lang = en -type = KEYVALUEJSON diff --git a/Makefile b/Makefile index b79c21e3..b8a208d1 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,3 @@ -export TRANSIFEX_RESOURCE = frontend-app-library-authoring -transifex_langs = "ar,fr,es_419,zh_CN" - intl_imports = ./node_modules/.bin/intl-imports.js transifex_utils = ./node_modules/.bin/transifex-utils.js i18n = ./src/i18n @@ -35,34 +32,17 @@ detect_changed_source_translations: # Checking for changed translations... git diff --exit-code $(i18n) -# Pushes translations to Transifex. You must run make extract_translations first. -push_translations: - # Pushing strings to Transifex... - tx push -s - # Fetching hashes from Transifex... - ./node_modules/@edx/reactifex/bash_scripts/get_hashed_strings_v3.sh - # Writing out comments to file... - $(transifex_utils) $(transifex_temp) --comments --v3-scripts-path - # Pushing comments to Transifex... - ./node_modules/@edx/reactifex/bash_scripts/put_comments_v3.sh - -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: rm -rf src/i18n/messages mkdir src/i18n/messages cd src/i18n/messages \ - && atlas pull --filter=$(transifex_langs) \ + && atlas pull $(ATLAS_OPTIONS) \ + translations/frontend-platform/src/i18n/messages:frontend-platform \ translations/frontend-component-footer/src/i18n/messages:frontend-component-footer \ translations/paragon/src/i18n/messages:paragon \ translations/frontend-app-library-authoring/src/i18n/messages:frontend-app-library-authoring - $(intl_imports) frontend-component-footer paragon frontend-app-library-authoring -endif + $(intl_imports) frontend-platform frontend-component-footer paragon frontend-app-library-authoring # This target is used by CI. validate-no-uncommitted-package-lock-changes: diff --git a/src/i18n/index.js b/src/i18n/index.js index 67468903..d6d1738d 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -1,39 +1 @@ -import { messages as footerMessages } from '@edx/frontend-component-footer'; -import { messages as paragonMessages } from '@edx/paragon'; - -import arMessages from './messages/ar.json'; -import caMessages from './messages/ca.json'; -// no need to import en messages-- they are in the defaultMessage field -import es419Messages from './messages/es_419.json'; -import frMessages from './messages/fr.json'; -import zhcnMessages from './messages/zh_CN.json'; -import heMessages from './messages/he.json'; -import idMessages from './messages/id.json'; -import kokrMessages from './messages/ko_kr.json'; -import plMessages from './messages/pl.json'; -import ptbrMessages from './messages/pt_br.json'; -import ruMessages from './messages/ru.json'; -import thMessages from './messages/th.json'; -import ukMessages from './messages/uk.json'; - -const appMessages = { - ar: arMessages, - 'es-419': es419Messages, - fr: frMessages, - 'zh-cn': zhcnMessages, - ca: caMessages, - he: heMessages, - id: idMessages, - 'ko-kr': kokrMessages, - pl: plMessages, - 'pt-br': ptbrMessages, - ru: ruMessages, - th: thMessages, - uk: ukMessages, -}; - -export default [ - footerMessages, - paragonMessages, - appMessages, -]; +export default []; diff --git a/src/i18n/messages/ar.json b/src/i18n/messages/ar.json deleted file mode 100644 index 6acb1aed..00000000 --- a/src/i18n/messages/ar.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "error.notfound.message": "الصفحة التي تبحث عنها غير متوفرة أو هناك خطأ في العنوان. رجاءً تحقق من العنوان و حاول مجددًا.", - "library.detail.page.heading": "مكتبة المحتوى", - "library.detail.loading.message": "التحميل جارٍ...", - "library.detail.loading.error": "الخطأ: {errorMessage}", - "library.detail.component.showingCount": "عرض {currentViewRange} من إجمالي {total} ، مرتبة حسب تاريخ الإضافة، تصاعديًا", - "library.detail.new.component": "مكون جديد", - "library.detail.add.new.component.item": "إضافة عنصر المكتبة", - "library.detail.add.new.component": "إضافة مكون جديد", - "library.detail.add.new.component.html": "النص", - "library.detail.add.new.component.problem": "مشكلة", - "library.detail.add.new.component.video": "فيديو", - "library.detail.add.new.component.type": "النوع", - "library.detail.add.new.component.slug": "عنوان مختصر", - "library.detail.add.new.component.button": "إضافة مكون", - "library.detail.block.unpublished_changes": "تغييرات غير منشورة", - "library.detail.block.view_link": "استعراض", - "library.detail.block.edit_link": "تعديل", - "library.detail.aside.title": "جاري إضافة المحتوى إلى مكتبتك", - "library.detail.aside.text.1": "أضف مكونات إلى مكتبتك لاستخدامها في الدورات التدريبية. لاحظ أن الارتباط التقريبي يصبح جزءًا من معرف الاستخدام ومعرف التعريف، ولا يمكن تغييره.", - "library.detail.aside.text.2": "يتم إدراج المكونات بالترتيب الذي تمت إضافتها به، مع إضافة أحدث المكونات في الأسفل.", - "library.detail.aside.help.link": "اعرف المزيد عن مكتبات المحتوى", - "library.detail.aside.draft": "مسودّة (تغييرات غير منشورة)", - "library.detail.aside.published": "تم النشر", - "library.detail.aside.publish": "نشر", - "library.detail.aside.discard": "تجاهل التغييرات", - "library.detail.block.copy_lti_url": "انسخ عنوان LTI", - "library.detail.block.edit": "تعديل", - "library.detail.block.delete": "حذف", - "library.detail.block.delete.modal.title": "حذف هذا العنصر؟", - "library.detail.block.delete.modal.body": "حذف هذا العنصر سيكون دائماً ولا يمكن الرجوع عنه.", - "library.detail.block.delete.modal.cancel.button": "لا", - "library.detail.block.delete.modal.confirmation.button": "حذف", - "library.detail.block.copy": "نسخ", - "library.detail.search": "بحث...", - "library.detail.all_types": "كل الانواع", - "library.detail.other_component": "عنصر آخر", - "library.detail.add_component_heading": "إضافة مكون جديد", - "library.detail.add_video": "أضف فيديو", - "library.detail.add_problem": "أضف مشكلة", - "library.detail.add_complex": "أضف مكونًا", - "library.detail.show_previews": "عرض المعاينات", - "library.detail.hide_previews": "إخفاء المعاينات", - "library.detail.sidebar.adding.heading": "جاري إضافة المحتوى إلى مكتبتك", - "library.detail.sidebar.adding.first": "أضف مكونات إلى مكتبتك لاستخدامها في الدورات التدريبية.", - "library.detail.sidebar.adding.second": "يتم إدراج المكونات بالترتيب الذي تمت إضافتها به، مع إضافة أحدث المكونات في الأسفل.", - "library.detail.sidebar.using.heading": "استخدام محتوى المكتبة في المساقات", - "library.detail.sidebar.using.first": "استخدم محتوى المكتبة في الدورات التدريبية عن طريق إضافة مفتاح نهج "library_content" إلى "قائمة الوحدات النمطية المتقدمة" في "الإعدادات المتقدمة" للدورة التدريبية ، ثم إضافة "كتلة المحتوى العشوائي" إلى مناهجك التعليمية. في إعدادات كل كتلة محتوى عشوائية ، حدد هذه المكتبة كمكتبة مصدر ، وحدد عدد المشكلات التي سيتم تحديدها عشوائيًا وعرضها لكل طالب.", - "library.detail.breadcrumbs.libraries": "المكتبات", - "library.detail.settings.menu": "الإعدادات", - "library.detail.settings.details": "التفاصيل", - "library.detail.settings.access": "وصول المستخدم", - "library.detail.settings.import": "الاستيراد", - "library.common.tabs.courses": "المساقات", - "library.common.tabs.libraries": "المكتبات", - "library.common.forms.button.cancel": "لا", - "library.common.forms.button.ok": "حسنًا", - "library.common.forms.button.submit": "تأكيد", - "library.common.forms.button.create": "إنشاء", - "library.common.forms.button.submitting": "تقديم...", - "library.common.forms.button.creating": "خلق...", - "library.common.forms.button.yes": "نعم.", - "library.server.error.generic": "كانت لدينا مشكلة في الاتصال بالخادم. الرجاء معاودة المحاولة في وقت لاحق!", - "library.common.fields.license.label": "نوع الرخصة", - "library.common.fields.license.learn_more": "تعرف على المزيد حول المشاع الإبداعي", - "library.common.fields.license.cc.options": "خيارات المشاع الإبداعي", - "library.common.fields.license.attribution": "السماح للآخرين بنسخ عملك محفوظ الحقوق وتوزيعه وعرضه وتأديته بشرط نسب العمل إليك بالشكل الذي تطلبه. وهذا الخيار مطلوب حاليًا.", - "library.common.fields.license.noncommercial": "السماح للآخرين بنسخ عملك - والأعمال المقتبسة المبنية عليه - وتوزيعه وعرضه وتأديته، لكن فقط للأغراض غير التجارية.", - "library.common.fields.license.no_derivatives": "السماح للآخرين بنَسْخ نُسَخ حرفية من عملك - وليس أي أعمال مقتبسة عنه - وتوزيعها وعرضها وتأديتها. ولا يتوافق هذا الخيار مع خيار \"مشاركة بالتساوي\".", - "library.common.fields.license.share_alike": "السماح للآخرين بتوزيع أعمال مقتبسة بموجب ترخيص مطابق لترخيص عملك. ولا يتوافق هذا الخيار مع خيار \"عدم الاقتباس\".", - "library.common.license.cc": "النقاط المشتركة المبتكرة", - "library.common.license.cc.preface": "محتوى مرخّص كمشاع إبداعي وفق الشروط التالية:", - "library.common.license.cc.attribution": "الإسناد (Attribution)", - "library.common.license.cc.noncommercial": "غير تجاري (Non-Commercial)", - "library.common.license.cc.no_derivatives": "لا المشتقات", - "library.common.license.cc.share_alike": "شارك بالمثل", - "library.common.license.cc.postscript": "بعض الحقوق محفوظة.", - "library.common.license.none": "جميع الحقوق محفوظة", - "library.common.license..preview.title": "معاينة الترخيص", - "library.common.license..preview.message": "سيتم عرض الرسالة التالية حيثما كان ذلك مناسبًا:", - "library.common.pagination.labels.previous": "السابق", - "library.common.pagination.labels.next": "التالي", - "library.common.pagination.labels.page": "الصفحة", - "library.common.pagination.labels.currentPage": "الصفحه الحاليه", - "library.common.pagination.labels.pageOfCount": "PageOfCount", - "library.common.footer.hyperlink.about": "تعرف على المزيد حول المكتبات", - "library.common.breadcrumbs.studio": "الإستوديو", - "library.edit.loading.message": "التحميل جارٍ...", - "library.edit.page.heading": "مكتبة المحتوى", - "library.edit.title.label": "عنوان المكتبة *", - "library.edit.title.placeholder": "مثلًا، مسائل علوم الكمبيوتر", - "library.edit.title.help": "عنوان مكتبتك.", - "library.edit.description.label": "وصف المكتبة *", - "library.edit.description.placeholder": "على سبيل المثال ، تحتوي هذه المكتبة على مجموعة من مشكلات علوم الكمبيوتر.", - "library.edit.description.help": "وصف مكتبتك.", - "library.edit.type.label": "نوع المكتبة *", - "library.edit.type.help": "نوع المكتبة.", - "library.edit.type.label.video": "فيديو (تجريبي)", - "library.edit.type.label.problem": "مشكلة (تجريبي)", - "library.edit.type.label.complex": "مركب (تجريبي)", - "library.edit.public_learning.label": "السماح بالتعلم العام", - "library.edit.public_read.label": "السماح للقراءة العامة", - "library.edit.button.submit": "تأكيد", - "library.edit.button.submitting": "الإرسال جارٍ", - "library.edit.button.cancel": "لا", - "library.edit.aside.title": "تحرير تفاصيل مكتبتك", - "library.edit.aside.text": "قم بتحرير تفاصيل مكتبتك باستخدام النموذج الموجود على اليسار.", - "library.edit.aside.help.link": "اعرف المزيد عن مكتبات المحتوى", - "library.course_import.loading.message": "التحميل جارٍ...", - "library.course_import.page.parent_heading": "الإعدادات", - "library.course_import.page.heading": "استيراد الدورة", - "library.course_import.aside.course_list.title": "لا تستطيع رؤية دورتك؟", - "library.course_import.aside.course_list.text.first": "لاستيراد دورة تدريبية ، يجب أن تكون مسؤولاً عن تلك الدورة التدريبية.", - "library.course_import.aside.course_list.text.second": "إذا كنت لا ترى دورتك التدريبية هنا ، فاتصل بمالكي الدورة واطلب منهم الوصول.", - "library.course_import.aside.import_task_list.title": "لا يمكنك مشاهدة عمليات الاستيراد السابقة؟", - "library.course_import.aside.import_task_list.text.first": "ستظهر عمليات الاستيراد السابقة إذا تمت جدولة استيراد واحد على الأقل.", - "library.course_import.aside.import_task_list.text.second": "لجدولة استيراد جديد ، انقر فوق "إظهار الدورات التدريبية القابلة للاستيراد" وحدد الدورة التدريبية المطلوبة لاستيراد المجموعات منها.", - "library.course_import.course_filter.title": "يستوجب المساق {course_id} المتطلّب السابق {prerequisite_course_id}", - "library.course_import.course_filter.input.default": "أدخل المعرف أو المسمى الوظيفي أو المنظمة.", - "library.course_import.course_filter.options.org.label": "المنظمة", - "library.course_import.course_filter.options.org.all": "الكل", - "library.course_import.course_filter.options.org.organizations": "المنظمات", - "library.course_import.new_import.label": "دورة الاستيراد", - "library.course_import.ongoing_import.label": "جدولة ...", - "library.course_import.import_scheduled.label": "جدول الاستيراد", - "library.course_import.import_schedule_failed.label": "إعادة محاولة استيراد المقرر الدراسي", - "library.course_import.importable_courses.show": "إظهار الدورات التدريبية القابلة للاستيراد", - "library.course_import.importable_courses.hide": "إخفاء الدورات التدريبية القابلة للاستيراد", - "library.course_import.importable_courses.no_item": "لا توجد دورات متاحة.", - "library.course_import.import_tasks.no_item": "لا توجد مهام استيراد متاحة.", - "library.course_import.list_item.id": "معرف بالطبع:", - "library.course_import.list_item.organization": "المنظمة: ", - "library.library.course_import.list_item.state": "ولاية:", - "library.course_import.list_item.created_at": "أنشئت في:", - "library.course_import.list_item.title": "استيراد {courseId}", - "library.form.generic.error.title": "لم نتمكن من حفظ التغييرات الخاصة بك.", - "library.form.generic.error.description": "رجاءً تحقق من مدخلاتك و حاول مجددًا.", - "library.form.field.error.empty": "قد لا يكون هذا الحقل فارغًا.", - "library.form.field.error.empty.title": "أدخل اسم المكتبة", - "library.form.field.error.empty.org": "حدد منظمة", - "library.form.field.error.empty.slug": "أدخل معرف المكتبة", - "library.form.field.error.mismatch.org": "يجب تحديد المنظمة من قائمة الخيارات.", - "library.form.field.error.invalid.slug": "أدخل "slug" صالحًا يتكون من أحرف Unicode أو أرقام أو شرطات سفلية أو واصلات.", - "library.form.create.library": "أنشئ مكتبة جديدة", - "library.form.title.label": "اسم المكتبة", - "library.form.title.placeholder": "مثلًا، مسائل علوم الكمبيوتر", - "library.form.title.help": "اسم مكتبتك", - "library.form.org.label": "المنظمة", - "library.form.org.placeholder": "مثلًا: UniversityX أو OrganizationX", - "library.form.org.help": "اسم المنظمة العامة لمكتبتك. لا يمكن تغيير هذا.", - "library.form.slug.label": "رقم المكتبة", - "library.form.slug.placeholder": "مثلًا، CSPROB", - "library.form.slug.help": "الرمز الفريد الذي يحدد this library . ملحوظة: this هو جزء من library URL ، لذا لا يُسمح بمسافات أو characters الخاصة. لا يمكن تغيير this .", - "library.form.button.cancel": "لا", - "library.form.breadcrumbs.home": "الإستوديو", - "library.form.breadcrumbs.list": "المكتبات", - "library.form.breadcrumbs.current": "تأليف المكتبة", - "library.form.modal.title": "التغييرات غير المحفوظة", - "library.form.modal.description": "هل أنت متأكد أنك تريد مغادرة هذه الصفحة؟ ستفقد التغييرات التي أجريتها إذا تابعت.", - "library.organizations.list.empty": "لم يعثر على نتائج", - "library.block.page.heading": "عنصر", - "library.block.page.back_to_library": "العودة إلى المكتبة", - "library.block.loading.message": "التحميل جارٍ...", - "library.block.loading.error": "الخطأ: {errorMessage}", - "library.block.block.unpublished_changes": "تغييرات غير منشورة", - "library.block.block.view_link": "استعراض", - "library.block.block.edit_link": "تعديل", - "library.block.aside.title": "جاري إضافة المحتوى إلى مكتبتك", - "library.block.aside.text.1": "أضف مكونًا إلى مكتبتك لاستخدامه في الدورات التدريبية.", - "library.block.aside.help.link": "اعرف المزيد عن مكتبات المحتوى", - "library.block.aside.publish": "مكتبة النشر", - "library.block.aside.discard": "تجاهل تغييرات المكتبة", - "library.block.aside.delete": "حذف الكتلة", - "library.list.empty.body": "content libraries provide طريقة مرنة to المؤلف content للاستخدام in واحد أو أكثر courses . بالإضافة إلى ذلك، يمكنك تأليف content قبل to مع العلم بالضبط Course location ، وإدراجه بسهولة in الخاص بك Course لاحقًا.", - "library.list.empty.heading": "أضف مكتبتك الأولى للبدء", - "library.list.empty.new.library": "مكتبة جديدة", - "library.access.loading.message": "التحميل جارٍ...", - "library.access.page.parent_heading": "الإعدادات", - "library.access.page.heading": "إمكانية دخول المستخدم", - "library.access.aside.title": "الأدوار التي تتيح الدخول إلى المكتبة ", - "library.access.aside.text.first": "هناك ثلاثة أدوار تتيح الدخول إلى المكتبات: المستخدم وطاقم المساق والمشرِف.", - "library.access.aside.text.second": "يمكن لمستخدمي المكتبات مشاهدة محتوى المكتبة والرجوع إلى مكوِّناتها أو استخدامها في مساقاتهم، لكن لا يمكنهم تعديل محتويات أي مكتبة.", - "library.access.aside.text.third": "يُعدّ طاقم المكتبة مجموعة من المؤلّفين المشارِكين للمحتوى، ولديهم كامل صلاحيات تحرير محتويات المكتبة.", - "library.access.aside.text.fourth": "يملك المشرفون على المكتبات كامل صلاحيات التحرير، كما يمكنهم إضافة أعضاء الفريق الآخرين وحذفهم. ويجب أن يكون لدى مستخدم واحد على الأقلّ صلاحيات المشرِف في أي مكتبة.", - "library.access.new.user": "عضو جديد في الفريق", - "library.access.well.title": "إضافة المزيد من المستخدمين إلى هذه المكتبة", - "library.access.well.text": "امنح أعضاء آخرين من فريق المقرر الدراسي الخاص بك حق الوصول إلى هذه المكتبة. يجب أن يكون لدى مستخدمي المكتبة الجدد حساب Studio نشط.", - "library.access.well.button": "إضافة مستخدم جديد", - "library.access.form.title": "منح حق الوصول إلى هذه المكتبة", - "library.access.form.email.help": "إدخال عنوان البريد الإلكتروني للمستخدم الذي تريد أن تضيفه", - "library.access.form.email.label": "البريد الإلكتروني", - "library.access.form.email.placeholder": "مثال: username@domain.com", - "library.access.form.button.submit": "تأكيد", - "library.access.form.button.submitting": "تقديم...", - "library.access.info.admin_unlock": "قم بترقية عضو آخر إلى المسؤول لإزالة حقوق المسؤول الخاصة بهذا المستخدم", - "library.access.info.self": "أنت!", - "library.access.info.admin": "المشرِف", - "library.access.info.author": "الكاتب", - "library.access.info.read": "يقرأ فقط", - "library.access.add_admin": "إضافة صلاحية الوصول الخاصة بالمشرف", - "library.access.remove_admin": "إلغاء صلاحية الوصول الخاصة بالمشرف", - "library.access.add_author": "إضافة وصول المؤلف", - "library.access.remove_author": "إزالة وصول المؤلف", - "library.access.remove_user": "إزالة المستخدم", - "library.access.modal.remove.title": "هل ترغب بالتأكيد؟", - "library.access.modal.remove.body": "هل أنت متأكد أنك تريد حذف {email} من مكتبة "{library}"؟", - "library.access.modal.remove.footer.cancel": "لا", - "library.access.modal.remove.footer.delete": "حذف", - "library.access.modal.remove_admin.title": "هل ترغب بالتأكيد؟", - "library.access.modal.remove_admin.body": "هل تريد بالتأكيد إلغاء امتيازات المسؤول لـ {email} من المكتبة "{library}"؟", - "library.list.page.heading": "المكتبات", - "library.list.new.library": "مكتبة جديدة", - "library.list.loading.message": "التحميل جارٍ...", - "library.list.loading.error": "الخطأ: {errorMessage}", - "library.list.item.type": "يكتب:", - "library.list.item.type.video": "فيديو (تجريبي)", - "library.list.item.type.problem": "مشكلة (تجريبي)", - "library.list.item.type.complex": "مركب (تجريبي)", - "library.list.item.type.legacy": "إرث", - "library.list.organization": "المنظمة: ", - "library.list.slug": "سبيكة مكتبة:", - "library.list.filter.title": "ابحث عن مكتبة", - "library.list.filter.input.default": "أدخل المعرف أو المسمى الوظيفي أو المنظمة.", - "library.list.filter.options.org.label": "المنظمة", - "library.list.filter.options.org.all": "الكل", - "library.list.filter.options.org.organizations": "المنظمات", - "library.list.filter.options.type.label": "النوع", - "library.list.filter.options.type.types": "أنواع", - "library.list.filter.options.type.legacy": "إرث", - "library.list.filter.options.type.complex": "مركب (تجريبي)", - "library.list.filter.options.type.video": "فيديو (تجريبي)", - "library.list.filter.options.type.problem": "مشكلة (تجريبي)", - "library.list.aside.title": "جديد في الاستوديو؟", - "library.list.aside.text": "أُنقر "أبحث عن مساعدة بشأن studio " في أسفل الصفحة to وصول وثائقنا التي يتم تحديثها باستمرار وموارد Other studio .", - "library.list.aside.help.link": "الشروع في العمل مع الاستوديو", - "library.list.breadcrumbs.libraries": "المكتبات", - "library.header.logo.alt": "مكتبات المحتوى", - "library.header.settings.menu": "الإعدادات", - "library.header.settings.details": "التفاصيل", - "library.header.settings.access": "وصول المستخدم", - "library.header.settings.import": "الاستيراد", - "library.header.nav.help.title": "مساعدة على الانترنت", - "library.header.nav.help": "المساعدة", - "library.header.account.label": "الحساب", - "library.header.account.navigation": "التنقل في الحساب", - "library.header.account.signedinas": "دخولك مسجَّل حاليًّا كـ:", - "library.header.account.studiohome": "استوديو المنزل", - "library.header.account.maintenance": "الصيانة", - "library.header.account.signout": "تسجيل الخروج" -} \ No newline at end of file diff --git a/src/i18n/messages/ca.json b/src/i18n/messages/ca.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/ca.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/es_419.json b/src/i18n/messages/es_419.json deleted file mode 100644 index 9ad86450..00000000 --- a/src/i18n/messages/es_419.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "error.notfound.message": "La página que está buscando no está disponible o hay un error en la URL. Por favor, verifique la URL y vuelva a intentarlo.", - "library.detail.page.heading": "Biblioteca de contenido", - "library.detail.loading.message": "Cargando...", - "library.detail.loading.error": "Error: {errorMessage}", - "library.detail.component.showingCount": "Mostrando {currentViewRange} del total de {total} , ordenado por fecha de adición, ascendente", - "library.detail.new.component": "Nuevo componente", - "library.detail.add.new.component.item": "Agregar elemento biblioteca", - "library.detail.add.new.component": "Agregar un nuevo componente", - "library.detail.add.new.component.html": "Texto", - "library.detail.add.new.component.problem": "Problema", - "library.detail.add.new.component.video": "Video", - "library.detail.add.new.component.type": "Tipo", - "library.detail.add.new.component.slug": "Slug", - "library.detail.add.new.component.button": "Agregar componente", - "library.detail.block.unpublished_changes": "Cambios no publicados", - "library.detail.block.view_link": "Ver", - "library.detail.block.edit_link": "Editar", - "library.detail.aside.title": "Agregando contenido a su librería", - "library.detail.aside.text.1": "Agregue en a su biblioteca para usarlos en cursos. Tenga en cuenta que el slug pasa a formar parte del ID de uso y ID de definición y no se puede cambiar.", - "library.detail.aside.text.2": "Los componentes se enumeran en el orden en en que se agregan, con los que fueron agregados más recientemente en en la parte inferior.", - "library.detail.aside.help.link": "Aprender más acerca de los contenidos de las Librerías", - "library.detail.aside.draft": "Borrador (Cambios no publicados)", - "library.detail.aside.published": "Publicado", - "library.detail.aside.publish": "Publicar", - "library.detail.aside.discard": "Descartar los cambios", - "library.detail.block.copy_lti_url": "Copiar URL de LTI", - "library.detail.block.edit": "Editar", - "library.detail.block.delete": "Borrar", - "library.detail.block.delete.modal.title": "¿Desea borrar este componente?", - "library.detail.block.delete.modal.body": "Borrar este componente es una acción permanente y no puede ser revertida.", - "library.detail.block.delete.modal.cancel.button": "Cancelar", - "library.detail.block.delete.modal.confirmation.button": "Borrar", - "library.detail.block.copy": "Copiar", - "library.detail.search": "Buscar...", - "library.detail.all_types": "Todos los tipos", - "library.detail.other_component": "Otro componente", - "library.detail.add_component_heading": "Agregar un nuevo componente", - "library.detail.add_video": "Agregar video", - "library.detail.add_problem": "Agregar un problema", - "library.detail.add_complex": "Agregar un componente", - "library.detail.show_previews": "Mostrar vistas previas", - "library.detail.hide_previews": "Ocultar vistas previas", - "library.detail.sidebar.adding.heading": "Agregando contenido a su librería", - "library.detail.sidebar.adding.first": "Agregue los componentes en a su librería para usarlos en los cursos.", - "library.detail.sidebar.adding.second": "Los componentes se enumeran en el orden en en que se agregan, con los que fueron agregados más recientemente en en la parte inferior.", - "library.detail.sidebar.using.heading": "Utilizando contenido de la Librería en los cursos", - "library.detail.sidebar.using.first": "Para utilizar el contenido de la biblioteca en los cursos, añade la clave de política \"library_content\" al Listado de módulos avanzados en el menú \"Configuración Avanzada\" del curso y, seguidamente, añade también un Bloque de contenido aleatorio al contenido del curso. En la configuración de cada Bloque de contenido aleatorio, selecciona esta biblioteca como la biblioteca de origen y especifica el número de problemas que se seleccionarán aleatoriamente y se mostrarán a cada estudiante.", - "library.detail.breadcrumbs.libraries": "Librerías", - "library.detail.settings.menu": "Configuración", - "library.detail.settings.details": "Detalles", - "library.detail.settings.access": "Acceso de usuario", - "library.detail.settings.import": "Importar", - "library.common.tabs.courses": "Cursos", - "library.common.tabs.libraries": "Librerías", - "library.common.forms.button.cancel": "Cancelar", - "library.common.forms.button.ok": "Aceptar", - "library.common.forms.button.submit": "Enviar", - "library.common.forms.button.create": "Crear", - "library.common.forms.button.submitting": "Enviando...", - "library.common.forms.button.creating": "Creando...", - "library.common.forms.button.yes": "Sí.", - "library.server.error.generic": "Tuvimos un problema al contactar con el servidor. ¡Por favor, intentar de nuevo más tarde!", - "library.common.fields.license.label": "Tipo de licencia", - "library.common.fields.license.learn_more": "Más información sobre Creative Commons", - "library.common.fields.license.cc.options": "Opciones para Creative Commons", - "library.common.fields.license.attribution": "Permitir que otros copien, distribuyan, muestren y representen tu trabajo con derechos de autor, siempre y cuando se reconozca el crédito correspondiente de la forma que tú especifiques. Actualmente, esta opción es necesaria.", - "library.common.fields.license.noncommercial": "Permitir que otros copien, distribuyan, muestren y representen tu trabajo – y otros trabajos derivados basados en este – pero solamente para fines no comerciales.", - "library.common.fields.license.no_derivatives": "Permitir que otros copien, distribuyan, muestren y representen solamente copias literales de tu trabajo, pero no trabajos derivados basados en este. Esta opción es incompatible con “Compartir lo mismo”", - "library.common.fields.license.share_alike": "Permitir la distribución de obras derivadas solamente bajo una licencia idéntica a la licencia que regula la obra original. Esta opción es incompatible con “No Derivadas”. ", - "library.common.license.cc": "Creative Commons", - "library.common.license.cc.preface": "Contenido con licencia Creative Commons, con las siguientes condiciones:", - "library.common.license.cc.attribution": "Atribución", - "library.common.license.cc.noncommercial": "No comercial", - "library.common.license.cc.no_derivatives": "Sin derivados", - "library.common.license.cc.share_alike": "Compartir por igual", - "library.common.license.cc.postscript": "Algunos derechos reservados.", - "library.common.license.none": "Todos los derechos están reservados.", - "library.common.license..preview.title": "Vista previa de licencia", - "library.common.license..preview.message": "Se mostrará el siguiente mensaje cuando corresponda:", - "library.common.pagination.labels.previous": "Anterior", - "library.common.pagination.labels.next": "Siguiente", - "library.common.pagination.labels.page": "Página", - "library.common.pagination.labels.currentPage": "Página actual", - "library.common.pagination.labels.pageOfCount": "PáginaDeRecuento", - "library.common.footer.hyperlink.about": "Aprender más acerca de los contenidos de las Librerías", - "library.common.breadcrumbs.studio": "Studio", - "library.edit.loading.message": "Cargando...", - "library.edit.page.heading": "Biblioteca de contenido", - "library.edit.title.label": "Título de la biblioteca *", - "library.edit.title.placeholder": "ej.: Problemas de Ciencias de la Computación", - "library.edit.title.help": "El título de su librería.", - "library.edit.description.label": "Descripción de la biblioteca *", - "library.edit.description.placeholder": "Por ejemplo, esta librería contiene una colección de problemas de CS.", - "library.edit.description.help": "La descripción de su librería.", - "library.edit.type.label": "Tipo de biblioteca *", - "library.edit.type.help": "El tipo de librería.", - "library.edit.type.label.video": "Vídeo (beta)", - "library.edit.type.label.problem": "Problema (beta)", - "library.edit.type.label.complex": "Complejo (beta)", - "library.edit.public_learning.label": "Permitir el aprendizaje público", - "library.edit.public_read.label": "Permitir lectura pública", - "library.edit.button.submit": "Enviar", - "library.edit.button.submitting": "Enviando", - "library.edit.button.cancel": "Cancelar", - "library.edit.aside.title": "Edición de los detalles de su librería", - "library.edit.aside.text": "Editar los detalles de su librería usando el formulario de la izquierda.", - "library.edit.aside.help.link": "Aprender más acerca de los contenidos de las Librerías", - "library.course_import.loading.message": "Cargando...", - "library.course_import.page.parent_heading": "Configuración", - "library.course_import.page.heading": "Importación de cursos", - "library.course_import.aside.course_list.title": "¿No puede ver su curso?", - "library.course_import.aside.course_list.text.first": "Para importar un curso, deberá ser administrador de ese curso.", - "library.course_import.aside.course_list.text.second": "Si no ve su curso aquí, comuníquese con los propietarios del curso y pídales acceso.", - "library.course_import.aside.import_task_list.title": "¿No puede ver las importaciones anteriores?", - "library.course_import.aside.import_task_list.text.first": "Las importaciones anteriores mostrarán si al menos una importación está programada.", - "library.course_import.aside.import_task_list.text.second": "Para programar una nueva importación, haz clic en \"Mostrar cursos importables\" y selecciona el curso cuyos bloques deseas importar.", - "library.course_import.course_filter.title": "Encontrar un curso", - "library.course_import.course_filter.input.default": "Ingresar ID, título u organización.", - "library.course_import.course_filter.options.org.label": "Organización", - "library.course_import.course_filter.options.org.all": "Todo", - "library.course_import.course_filter.options.org.organizations": "Organizaciones", - "library.course_import.new_import.label": "Importar curso", - "library.course_import.ongoing_import.label": "Planificación...", - "library.course_import.import_scheduled.label": "Importación programada", - "library.course_import.import_schedule_failed.label": "Reintentar la importación del curso", - "library.course_import.importable_courses.show": "Mostrar cursos importables", - "library.course_import.importable_courses.hide": "Ocultar cursos importables", - "library.course_import.importable_courses.no_item": "No hay cursos disponibles.", - "library.course_import.import_tasks.no_item": "No hay tareas de importación disponibles.", - "library.course_import.list_item.id": "Identificación del curso:", - "library.course_import.list_item.organization": "Organización:", - "library.library.course_import.list_item.state": "Estado:", - "library.course_import.list_item.created_at": "Creado en:", - "library.course_import.list_item.title": "Importación de {courseId}", - "library.form.generic.error.title": "No pudimos guardar sus cambios.", - "library.form.generic.error.description": "Por favor, verificar sus respuestas y volver a intentarlo.", - "library.form.field.error.empty": "Este campo no puede estar en blanco.", - "library.form.field.error.empty.title": "Introducir el nombre de la librería", - "library.form.field.error.empty.org": "Seleccionar una organización", - "library.form.field.error.empty.slug": "Ingresar el ID de la librería", - "library.form.field.error.mismatch.org": "La organización debe ser seleccionada de la lista de opciones.", - "library.form.field.error.invalid.slug": "Introduzca un indicador válido compuesto por letras Unicode, números, guiones bajos o guiones.", - "library.form.create.library": "Crear nueva biblioteca", - "library.form.title.label": "Nombre de la biblioteca", - "library.form.title.placeholder": "ej.: Problemas de Ciencias de la Computación", - "library.form.title.help": "El nombre de su librería.", - "library.form.org.label": "Organización", - "library.form.org.placeholder": "Ej: UniversidadX u OrganizaciónX", - "library.form.org.help": "El nombre de la organización pública de su librería. Esto no se puede cambiar.", - "library.form.slug.label": "ID de la librería", - "library.form.slug.placeholder": "ej: PROBCC", - "library.form.slug.help": "El código único que identifica esta biblioteca. Nota: Esto es parte de la URL de su librería, por lo que no se permiten espacios ni caracteres especiales. Esto no se puede cambiar.", - "library.form.button.cancel": "Cancelar", - "library.form.breadcrumbs.home": "Studio", - "library.form.breadcrumbs.list": "Librerías", - "library.form.breadcrumbs.current": "Autoría de bibliotecas", - "library.form.modal.title": "Cambios no guardados", - "library.form.modal.description": "¿Seguro que quieres salir de esta página? Los cambios que haya realizado se perderán si continúa.", - "library.organizations.list.empty": "No se han encontrado resultados", - "library.block.page.heading": "Componente", - "library.block.page.back_to_library": "volver a la biblioteca", - "library.block.loading.message": "Cargando...", - "library.block.loading.error": "Error: {errorMessage}", - "library.block.block.unpublished_changes": "Cambios no publicados", - "library.block.block.view_link": "Ver", - "library.block.block.edit_link": "Editar", - "library.block.aside.title": "Agregando contenido a su librería", - "library.block.aside.text.1": "Agregar un componente a su biblioteca para usar en los cursos.", - "library.block.aside.help.link": "Aprender más acerca de los contenidos de las Librerías", - "library.block.aside.publish": "Publicar librería", - "library.block.aside.discard": "Descartar cambios de la librería", - "library.block.aside.delete": "Eliminar bloque", - "library.list.empty.body": "Las librerías de contenido proporcionan una forma flexible de crear contenido para su uso en uno o varios cursos. Además, puede crear contenido antes de conocer la ubicación exacta del curso e incluirlo fácilmente en su curso más adelante.", - "library.list.empty.heading": "Agregar la primera librería para comenzar", - "library.list.empty.new.library": "Nueva biblioteca", - "library.access.loading.message": "Cargando...", - "library.access.page.parent_heading": "Configuración", - "library.access.page.heading": "Acceso de usuario", - "library.access.aside.title": "Roles de acceso a la librería", - "library.access.aside.text.first": "Hay tres roles de acceso a las librerías: Usuario, Miembro del equipo y Administrador.", - "library.access.aside.text.second": "Los usuarios de la librería pueden ver el contenido de la misma y pueden referenciar o utilizar los elementos de la libriria en sus cursos, sin embargo no pueden editar los contenidos de la librería.", - "library.access.aside.text.third": "Los miembros de la librería son coautores del curso. Tienen todos los privilegios de edición de los contenidos de la librería.", - "library.access.aside.text.fourth": "Los administradores de librerías tienen privilegios de edición y también pueden añadir o remover a otros miembros. Toda librería siempre debe tener al menos un usuario administrador.", - "library.access.new.user": "Nuevo miembro del equipo", - "library.access.well.title": "Añadir más usuarios a Esta Librería", - "library.access.well.text": "Otorgar acceso a esta librería a otros miembros de su equipo del curso. Los nuevos usuarios de la librería deben tener una cuenta de Studio activa.", - "library.access.well.button": "Añadir un nuevo Usuario", - "library.access.form.title": "Otorgar acceso a esta librería ", - "library.access.form.email.help": "Proporcionar la dirección de correo electrónico del usuario que desea agregar", - "library.access.form.email.label": "Correo electrónico", - "library.access.form.email.placeholder": "ejemplo: usuario@dominio.com", - "library.access.form.button.submit": "Enviar", - "library.access.form.button.submitting": "Enviando...", - "library.access.info.admin_unlock": "Promover a otro miembro a administrador para eliminar los derechos de administrador de este usuario", - "library.access.info.self": "¡Usted!", - "library.access.info.admin": "Administrador", - "library.access.info.author": "Autor", - "library.access.info.read": "Solo lectura", - "library.access.add_admin": "Agregar accesso de administrador", - "library.access.remove_admin": "Quitar acceso de administrador", - "library.access.add_author": "Agregar acceso de autor", - "library.access.remove_author": "Quitar acceso de autor", - "library.access.remove_user": "Quitar usuario", - "library.access.modal.remove.title": "¿Está seguro?", - "library.access.modal.remove.body": "¿Seguro que desea eliminar {email} de la librería \"{library}\"?", - "library.access.modal.remove.footer.cancel": "Cancelar", - "library.access.modal.remove.footer.delete": "Borrar", - "library.access.modal.remove_admin.title": "¿Está seguro?", - "library.access.modal.remove_admin.body": "¿Seguro que deseas revocar los privilegios de administrador para {email} de la librería \"{library}\"?", - "library.list.page.heading": "Librerías", - "library.list.new.library": "Nueva biblioteca", - "library.list.loading.message": "Cargando...", - "library.list.loading.error": "Error: {errorMessage}", - "library.list.item.type": "Tipo:", - "library.list.item.type.video": "Vídeo (beta)", - "library.list.item.type.problem": "Problema (beta)", - "library.list.item.type.complex": "Complejo (beta)", - "library.list.item.type.legacy": "Legado", - "library.list.organization": "Organización:", - "library.list.slug": "Nombre de la librería:", - "library.list.filter.title": "Encontrar una librería", - "library.list.filter.input.default": "Ingrese ID, título u organización.", - "library.list.filter.options.org.label": "Organización", - "library.list.filter.options.org.all": "Todo", - "library.list.filter.options.org.organizations": "Organizaciones", - "library.list.filter.options.type.label": "Tipo", - "library.list.filter.options.type.types": "Tipos", - "library.list.filter.options.type.legacy": "Legado", - "library.list.filter.options.type.complex": "Complejo (beta)", - "library.list.filter.options.type.video": "Vídeo (beta)", - "library.list.filter.options.type.problem": "Problema (beta)", - "library.list.aside.title": "¿Nuevo en Studio?", - "library.list.aside.text": "Haga clic en \"Buscando ayuda con Studio\"; en la parte inferior de la página para acceder a nuestra documentación actualizada continuamente y a otros recursos de Studio.", - "library.list.aside.help.link": "Introducción a Studio", - "library.list.breadcrumbs.libraries": "Librerías", - "library.header.logo.alt": "Bibliotecas de contenido", - "library.header.settings.menu": "Configuración", - "library.header.settings.details": "Detalles", - "library.header.settings.access": "Acceso de usuario", - "library.header.settings.import": "Importar", - "library.header.nav.help.title": "Ayuda en línea", - "library.header.nav.help": "Ayuda", - "library.header.account.label": "Cuenta", - "library.header.account.navigation": "Navegación de cuenta", - "library.header.account.signedinas": "Ha iniciado sesión como:", - "library.header.account.studiohome": "Inicio Studio", - "library.header.account.maintenance": "Mantenimiento", - "library.header.account.signout": "Cerrar sesión" -} \ 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 75e7cf18..00000000 --- a/src/i18n/messages/fr.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "error.notfound.message": "La page que vous recherchez n'est pas disponible ou il y a une erreur dans l'URL. Veuillez vérifier l'URL et réessayer.", - "library.detail.page.heading": "", - "library.detail.loading.message": "Chargement...", - "library.detail.loading.error": "", - "library.detail.component.showingCount": "", - "library.detail.new.component": "", - "library.detail.add.new.component.item": "", - "library.detail.add.new.component": "", - "library.detail.add.new.component.html": "Texte", - "library.detail.add.new.component.problem": "Exercice", - "library.detail.add.new.component.video": "Vidéo", - "library.detail.add.new.component.type": "Type", - "library.detail.add.new.component.slug": "Slug", - "library.detail.add.new.component.button": "", - "library.detail.block.unpublished_changes": "", - "library.detail.block.view_link": "Voir", - "library.detail.block.edit_link": "Modifier", - "library.detail.aside.title": "Ajouter du contenu à votre bibliothèque", - "library.detail.aside.text.1": "", - "library.detail.aside.text.2": "", - "library.detail.aside.help.link": "En savoir plus sur les bibliothèques de contenu", - "library.detail.aside.draft": "Brouillon (changements non publiés)", - "library.detail.aside.published": "Publié", - "library.detail.aside.publish": "Publier", - "library.detail.aside.discard": "", - "library.detail.block.copy_lti_url": "", - "library.detail.block.edit": "Modifier", - "library.detail.block.delete": "Supprimer", - "library.detail.block.delete.modal.title": "Supprimer ce composant ?", - "library.detail.block.delete.modal.body": "Supprimer ce composant est définitif et ne peut pas être annulé.", - "library.detail.block.delete.modal.cancel.button": "Annuler", - "library.detail.block.delete.modal.confirmation.button": "Supprimer", - "library.detail.block.copy": "Copier", - "library.detail.search": "Recherche...", - "library.detail.all_types": "", - "library.detail.other_component": "", - "library.detail.add_component_heading": "", - "library.detail.add_video": "", - "library.detail.add_problem": "", - "library.detail.add_complex": "", - "library.detail.show_previews": "", - "library.detail.hide_previews": "", - "library.detail.sidebar.adding.heading": "Ajouter du contenu à votre bibliothèque", - "library.detail.sidebar.adding.first": "", - "library.detail.sidebar.adding.second": "", - "library.detail.sidebar.using.heading": "Utiliser la bibliothèque dans un cours", - "library.detail.sidebar.using.first": "", - "library.detail.breadcrumbs.libraries": "Bibliothèques", - "library.detail.settings.menu": "Paramètres", - "library.detail.settings.details": "Détails", - "library.detail.settings.access": "", - "library.detail.settings.import": "Importer", - "library.common.tabs.courses": "Cours", - "library.common.tabs.libraries": "Bibliothèques", - "library.common.forms.button.cancel": "Annuler", - "library.common.forms.button.ok": "Ok", - "library.common.forms.button.submit": "Envoyez", - "library.common.forms.button.create": "Créer", - "library.common.forms.button.submitting": "", - "library.common.forms.button.creating": "", - "library.common.forms.button.yes": "", - "library.server.error.generic": "", - "library.common.fields.license.label": "", - "library.common.fields.license.learn_more": "", - "library.common.fields.license.cc.options": "", - "library.common.fields.license.attribution": "Autoriser d'autres personnes à copier, diffuser, montrer et interpréter votre œuvre sous copyright mais seulement s'ils vous citent de la manière dont vous souhaitez. Pour l'instant, cette option est requise.", - "library.common.fields.license.noncommercial": "Autoriser d'autres personnes à copier, distribuer, montrer et interpréter votre œuvre - et toute œuvre qui en est dérivée - mais seulement à des fins non commerciales.", - "library.common.fields.license.no_derivatives": "Autoriser d'autres personnes à copier, diffuser, montrer et interpréter uniquement des copies à l'identique de votre œuvre et non pas des œuvres qui en seraient dérivées. Cette option est incompatible avec \"Partage à l'identique\".", - "library.common.fields.license.share_alike": "Autoriser d'autres personnes à distribuer des travaux dérivés sous une licence identique à celle s'appliquant à votre œuvre. Cette option est incompatible avec \"Pas de dérivés\".", - "library.common.license.cc": "Creative Commons", - "library.common.license.cc.preface": "Contenu sous license Creative Commons, avec les conditions suivantes:", - "library.common.license.cc.attribution": "Crédit", - "library.common.license.cc.noncommercial": "Non commercial", - "library.common.license.cc.no_derivatives": "", - "library.common.license.cc.share_alike": "", - "library.common.license.cc.postscript": "", - "library.common.license.none": "Tous droits réservés", - "library.common.license..preview.title": "", - "library.common.license..preview.message": "", - "library.common.pagination.labels.previous": "Précédent", - "library.common.pagination.labels.next": "Suivant", - "library.common.pagination.labels.page": "Page", - "library.common.pagination.labels.currentPage": "", - "library.common.pagination.labels.pageOfCount": "", - "library.common.footer.hyperlink.about": "", - "library.common.breadcrumbs.studio": "Studio", - "library.edit.loading.message": "Chargement...", - "library.edit.page.heading": "", - "library.edit.title.label": "", - "library.edit.title.placeholder": "exemple: Exercices d'introduction à l'Informatique", - "library.edit.title.help": "", - "library.edit.description.label": "", - "library.edit.description.placeholder": "", - "library.edit.description.help": "", - "library.edit.type.label": "", - "library.edit.type.help": "", - "library.edit.type.label.video": "", - "library.edit.type.label.problem": "", - "library.edit.type.label.complex": "", - "library.edit.public_learning.label": "", - "library.edit.public_read.label": "", - "library.edit.button.submit": "Envoyez", - "library.edit.button.submitting": "Réponse", - "library.edit.button.cancel": "Annuler", - "library.edit.aside.title": "", - "library.edit.aside.text": "", - "library.edit.aside.help.link": "En savoir plus sur les bibliothèques de contenu", - "library.course_import.loading.message": "Chargement...", - "library.course_import.page.parent_heading": "Paramètres", - "library.course_import.page.heading": "", - "library.course_import.aside.course_list.title": "", - "library.course_import.aside.course_list.text.first": "", - "library.course_import.aside.course_list.text.second": "", - "library.course_import.aside.import_task_list.title": "", - "library.course_import.aside.import_task_list.text.first": "", - "library.course_import.aside.import_task_list.text.second": "", - "library.course_import.course_filter.title": "Trouver un cours", - "library.course_import.course_filter.input.default": "", - "library.course_import.course_filter.options.org.label": "Organisation", - "library.course_import.course_filter.options.org.all": "Tout", - "library.course_import.course_filter.options.org.organizations": "", - "library.course_import.new_import.label": "", - "library.course_import.ongoing_import.label": "", - "library.course_import.import_scheduled.label": "", - "library.course_import.import_schedule_failed.label": "", - "library.course_import.importable_courses.show": "", - "library.course_import.importable_courses.hide": "", - "library.course_import.importable_courses.no_item": "", - "library.course_import.import_tasks.no_item": "", - "library.course_import.list_item.id": "", - "library.course_import.list_item.organization": "Organisation:", - "library.library.course_import.list_item.state": "", - "library.course_import.list_item.created_at": "", - "library.course_import.list_item.title": "", - "library.form.generic.error.title": "", - "library.form.generic.error.description": "Veuillez vérifier vos entrées et réessayer.", - "library.form.field.error.empty": "", - "library.form.field.error.empty.title": "", - "library.form.field.error.empty.org": "Sélectionner une organisation", - "library.form.field.error.empty.slug": "", - "library.form.field.error.mismatch.org": "", - "library.form.field.error.invalid.slug": "", - "library.form.create.library": "", - "library.form.title.label": "", - "library.form.title.placeholder": "exemple: Exercices d'introduction à l'Informatique", - "library.form.title.help": "", - "library.form.org.label": "Organisation", - "library.form.org.placeholder": "par exemple, UniversitéX ou OrganisationX", - "library.form.org.help": "", - "library.form.slug.label": "", - "library.form.slug.placeholder": "MATHPROB par exemple", - "library.form.slug.help": "", - "library.form.button.cancel": "Annuler", - "library.form.breadcrumbs.home": "Studio", - "library.form.breadcrumbs.list": "Bibliothèques", - "library.form.breadcrumbs.current": "", - "library.form.modal.title": "", - "library.form.modal.description": "", - "library.organizations.list.empty": "Aucun résultat trouvé", - "library.block.page.heading": "Composante", - "library.block.page.back_to_library": "", - "library.block.loading.message": "Chargement...", - "library.block.loading.error": "", - "library.block.block.unpublished_changes": "", - "library.block.block.view_link": "Voir", - "library.block.block.edit_link": "Modifier", - "library.block.aside.title": "Ajouter du contenu à votre bibliothèque", - "library.block.aside.text.1": "", - "library.block.aside.help.link": "En savoir plus sur les bibliothèques de contenu", - "library.block.aside.publish": "", - "library.block.aside.discard": "", - "library.block.aside.delete": "", - "library.list.empty.body": "", - "library.list.empty.heading": "", - "library.list.empty.new.library": "", - "library.access.loading.message": "Chargement...", - "library.access.page.parent_heading": "Paramètres", - "library.access.page.heading": "Permettre l'accès à cette bibliothèque", - "library.access.aside.title": "Rôles d'accès à la bibliothèque", - "library.access.aside.text.first": "Il y a trois rôles d'accès pour les bibliothèques : User, Staff et Admin.", - "library.access.aside.text.second": "Les utilisateurs des bibliothèques peuvent voir le contenu de la bibliothèque et référencer ou utiliser les composantes de la bibliothèque dans leurs cours, mais ils ne peuvent éditer le contenu de la bibliothèque.", - "library.access.aside.text.third": "Les membres des bibliothèques sont co-auteurs de contenu. Ils ont les droits complets d'édition sur le contenu d'une bibliothèque.", - "library.access.aside.text.fourth": "Les administrateurs de bibliothèques ont les droits d'édition complets et peuvent aussi ajouter et supprimer les autres membres de l'équipe. Il doit y avoir au minimum un utilisateur avec le rôle Admin dans la bibliothèque.", - "library.access.new.user": "Nouveau membre d'équipe", - "library.access.well.title": "Ajouter d'autres utilisateurs à cette bibliothèque", - "library.access.well.text": "", - "library.access.well.button": "Ajouter un nouvel utilisateur", - "library.access.form.title": "", - "library.access.form.email.help": "Fournir l'adresse email de l'utilisateur que vous désirez ajouter", - "library.access.form.email.label": "Email", - "library.access.form.email.placeholder": "exemple : jean.dupont@domaine.com", - "library.access.form.button.submit": "Envoyez", - "library.access.form.button.submitting": "", - "library.access.info.admin_unlock": "", - "library.access.info.self": "Vous !", - "library.access.info.admin": "Administrateur", - "library.access.info.author": "Auteur", - "library.access.info.read": "", - "library.access.add_admin": "Ajouter l'accès Admin", - "library.access.remove_admin": "Retirer l'accès Admin", - "library.access.add_author": "", - "library.access.remove_author": "", - "library.access.remove_user": "", - "library.access.modal.remove.title": "Êtes-vous certain ?", - "library.access.modal.remove.body": "", - "library.access.modal.remove.footer.cancel": "Annuler", - "library.access.modal.remove.footer.delete": "Supprimer", - "library.access.modal.remove_admin.title": "Êtes-vous certain ?", - "library.access.modal.remove_admin.body": "", - "library.list.page.heading": "Bibliothèques", - "library.list.new.library": "", - "library.list.loading.message": "Chargement...", - "library.list.loading.error": "", - "library.list.item.type": "", - "library.list.item.type.video": "", - "library.list.item.type.problem": "", - "library.list.item.type.complex": "", - "library.list.item.type.legacy": "", - "library.list.organization": "Organisation:", - "library.list.slug": "", - "library.list.filter.title": "", - "library.list.filter.input.default": "", - "library.list.filter.options.org.label": "Organisation", - "library.list.filter.options.org.all": "Tout", - "library.list.filter.options.org.organizations": "", - "library.list.filter.options.type.label": "Type", - "library.list.filter.options.type.types": "", - "library.list.filter.options.type.legacy": "", - "library.list.filter.options.type.complex": "", - "library.list.filter.options.type.video": "", - "library.list.filter.options.type.problem": "", - "library.list.aside.title": "", - "library.list.aside.text": "", - "library.list.aside.help.link": "", - "library.list.breadcrumbs.libraries": "Bibliothèques", - "library.header.logo.alt": "", - "library.header.settings.menu": "Paramètres", - "library.header.settings.details": "Détails", - "library.header.settings.access": "", - "library.header.settings.import": "Importer", - "library.header.nav.help.title": "", - "library.header.nav.help": "Aide", - "library.header.account.label": "Compte", - "library.header.account.navigation": "", - "library.header.account.signedinas": "Actuellement connecté en tant que :", - "library.header.account.studiohome": "", - "library.header.account.maintenance": "Maintenance", - "library.header.account.signout": "Déconnexion" -} \ No newline at end of file diff --git a/src/i18n/messages/he.json b/src/i18n/messages/he.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/he.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/id.json b/src/i18n/messages/id.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/id.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/ko_kr.json b/src/i18n/messages/ko_kr.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/ko_kr.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/pl.json b/src/i18n/messages/pl.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/pl.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/pt_br.json b/src/i18n/messages/pt_br.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/pt_br.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/ru.json b/src/i18n/messages/ru.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/ru.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/th.json b/src/i18n/messages/th.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/th.json +++ /dev/null @@ -1 +0,0 @@ -{} \ No newline at end of file diff --git a/src/i18n/messages/uk.json b/src/i18n/messages/uk.json deleted file mode 100644 index 9e26dfee..00000000 --- a/src/i18n/messages/uk.json +++ /dev/null @@ -1 +0,0 @@ -{} \ 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 4d66cc22..00000000 --- a/src/i18n/messages/zh_CN.json +++ /dev/null @@ -1,250 +0,0 @@ -{ - "error.notfound.message": "您要查找的页面不可用或 URL 中有错误。请检查 URL 并重试。", - "library.detail.page.heading": "", - "library.detail.loading.message": "载入中...", - "library.detail.loading.error": "错误:{errorMessage}", - "library.detail.component.showingCount": "", - "library.detail.new.component": "", - "library.detail.add.new.component.item": "", - "library.detail.add.new.component": "", - "library.detail.add.new.component.html": "文本", - "library.detail.add.new.component.problem": "问题", - "library.detail.add.new.component.video": "视频", - "library.detail.add.new.component.type": "类型", - "library.detail.add.new.component.slug": "縮略名", - "library.detail.add.new.component.button": "", - "library.detail.block.unpublished_changes": "", - "library.detail.block.view_link": "视图", - "library.detail.block.edit_link": "编辑", - "library.detail.aside.title": "将内容添加到图书馆", - "library.detail.aside.text.1": "", - "library.detail.aside.text.2": "", - "library.detail.aside.help.link": "了解有关内容图书馆的更多信息", - "library.detail.aside.draft": "草稿(未发布的更改)", - "library.detail.aside.published": "已发布", - "library.detail.aside.publish": "发布", - "library.detail.aside.discard": "放弃更改", - "library.detail.block.copy_lti_url": "复制 LTI 网址", - "library.detail.block.edit": "编辑", - "library.detail.block.delete": "删除", - "library.detail.block.delete.modal.title": "删除此组件?", - "library.detail.block.delete.modal.body": "删除此组件是永久性的,无法撤消。", - "library.detail.block.delete.modal.cancel.button": "取消", - "library.detail.block.delete.modal.confirmation.button": "删除", - "library.detail.block.copy": "复制", - "library.detail.search": "搜索...", - "library.detail.all_types": "所有类型", - "library.detail.other_component": "", - "library.detail.add_component_heading": "", - "library.detail.add_video": "", - "library.detail.add_problem": "", - "library.detail.add_complex": "", - "library.detail.show_previews": "", - "library.detail.hide_previews": "", - "library.detail.sidebar.adding.heading": "将内容添加到您的图书馆", - "library.detail.sidebar.adding.first": "", - "library.detail.sidebar.adding.second": "", - "library.detail.sidebar.using.heading": "在课程中使用图书馆内容", - "library.detail.sidebar.using.first": "通过将“library_content”策略键添加到课程高级设置中的高级模块列表,然后将随机内容块添加到您的课件,在课程中使用库内容。在每个随机内容块的设置中,选择此库作为源库,并指定要随机选择并显示给每个学生的问题数量。", - "library.detail.breadcrumbs.libraries": "图书馆", - "library.detail.settings.menu": "设置", - "library.detail.settings.details": "细节", - "library.detail.settings.access": "", - "library.detail.settings.import": "导入", - "library.common.tabs.courses": "课程", - "library.common.tabs.libraries": "图书馆", - "library.common.forms.button.cancel": "取消", - "library.common.forms.button.ok": "好的", - "library.common.forms.button.submit": "提交", - "library.common.forms.button.create": "创造", - "library.common.forms.button.submitting": "提交...", - "library.common.forms.button.creating": "创建中...", - "library.common.forms.button.yes": "是的。", - "library.server.error.generic": "我们在联系服务器时遇到问题。请稍后再试!", - "library.common.fields.license.label": "", - "library.common.fields.license.learn_more": "了解有关知识共享的更多信息", - "library.common.fields.license.cc.options": "知识共享选项", - "library.common.fields.license.attribution": "允许他人复制、分发、展示和表演您的受版权保护的作品,但前提是他们按照您的要求注明出处。目前,此选项是必需的。", - "library.common.fields.license.noncommercial": "允许其他人复制、分发、展示和表演您的作品 - 以及基于它的衍生作品 - 但仅限于非商业目的。", - "library.common.fields.license.no_derivatives": "允许其他人复制、分发、展示和执行您作品的逐字副本,而不是基于它的衍生作品。此选项与“相同方式共享”不兼容。", - "library.common.fields.license.share_alike": "允许其他人仅在与管理您的作品的许可相同的许可下分发衍生作品。此选项与“无衍生工具”不兼容。", - "library.common.license.cc": "创作共用", - "library.common.license.cc.preface": "知识共享许可内容,条款如下:", - "library.common.license.cc.attribution": "出自", - "library.common.license.cc.noncommercial": "非商业性", - "library.common.license.cc.no_derivatives": "", - "library.common.license.cc.share_alike": "", - "library.common.license.cc.postscript": "", - "library.common.license.none": "保留所有权利", - "library.common.license..preview.title": "", - "library.common.license..preview.message": "", - "library.common.pagination.labels.previous": "上一个", - "library.common.pagination.labels.next": "下一个", - "library.common.pagination.labels.page": "页", - "library.common.pagination.labels.currentPage": "当前页面", - "library.common.pagination.labels.pageOfCount": "页数", - "library.common.footer.hyperlink.about": "了解有关图书馆的更多信息", - "library.common.breadcrumbs.studio": "工作室", - "library.edit.loading.message": "加载中...", - "library.edit.page.heading": "", - "library.edit.title.label": "", - "library.edit.title.placeholder": "例如计算机科学问题", - "library.edit.title.help": "您图书馆的标题。", - "library.edit.description.label": "", - "library.edit.description.placeholder": "例如,该库包含一系列 CS 问题。", - "library.edit.description.help": "您的图书馆的描述。", - "library.edit.type.label": "", - "library.edit.type.help": "图书馆的类型。", - "library.edit.type.label.video": "视频(测试版)", - "library.edit.type.label.problem": "问题(测试版)", - "library.edit.type.label.complex": "系列问题(测试版)", - "library.edit.public_learning.label": "允许公共学习", - "library.edit.public_read.label": "允许公众阅读", - "library.edit.button.submit": "提交", - "library.edit.button.submitting": "提交中", - "library.edit.button.cancel": "取消", - "library.edit.aside.title": "编辑您的图书馆详细信息", - "library.edit.aside.text": "使用左侧的表格编辑图书馆的详细信息。", - "library.edit.aside.help.link": "了解有关内容图书馆的更多信息", - "library.course_import.loading.message": "加载中...", - "library.course_import.page.parent_heading": "设置", - "library.course_import.page.heading": "", - "library.course_import.aside.course_list.title": "看不到你的课程?", - "library.course_import.aside.course_list.text.first": "要导入课程,您需要成为该课程的管理员。", - "library.course_import.aside.course_list.text.second": "如果您在此处没有看到您的课程,请联系课程所有者并请求他们访问。", - "library.course_import.aside.import_task_list.title": "看不到以前的导入?", - "library.course_import.aside.import_task_list.text.first": "之前的导入将显示是否至少安排了一次导入。", - "library.course_import.aside.import_task_list.text.second": "要安排新的导入,请单击“显示可导入的课程”并选择要从中导入块的所需课程。", - "library.course_import.course_filter.title": "查找课程", - "library.course_import.course_filter.input.default": "输入 ID、职务或组织。", - "library.course_import.course_filter.options.org.label": "组织", - "library.course_import.course_filter.options.org.all": "全部", - "library.course_import.course_filter.options.org.organizations": "组织", - "library.course_import.new_import.label": "导入课程", - "library.course_import.ongoing_import.label": "排期中...", - "library.course_import.import_scheduled.label": "预定导入", - "library.course_import.import_schedule_failed.label": "重试课程导入", - "library.course_import.importable_courses.show": "显示可导入的课程", - "library.course_import.importable_courses.hide": "隐藏可导入的课程", - "library.course_import.importable_courses.no_item": "没有可用的课程。", - "library.course_import.import_tasks.no_item": "没有可用的导入任务。", - "library.course_import.list_item.id": "课程编号:", - "library.course_import.list_item.organization": "组织:", - "library.library.course_import.list_item.state": "状态:", - "library.course_import.list_item.created_at": "创建于:", - "library.course_import.list_item.title": "", - "library.form.generic.error.title": "我们无法保存您的更改。", - "library.form.generic.error.description": "请检查您的输入并重试。", - "library.form.field.error.empty": "该字段不能为空。", - "library.form.field.error.empty.title": "", - "library.form.field.error.empty.org": "选择一个组织机构", - "library.form.field.error.empty.slug": "", - "library.form.field.error.mismatch.org": "必须从选项列表中选择组织。", - "library.form.field.error.invalid.slug": "输入由 Unicode 字母、数字、下划线或连字符组成的有效“slug”。", - "library.form.create.library": "创建新库", - "library.form.title.label": "图书馆名", - "library.form.title.placeholder": "例如计算机科学问题", - "library.form.title.help": "您图书馆的名称", - "library.form.org.label": "组织", - "library.form.org.placeholder": "例如 UniversityX 或 OrganizationX", - "library.form.org.help": "您图书馆的公共组织名称。这是无法更改的。", - "library.form.slug.label": "图书馆编号", - "library.form.slug.placeholder": "例如CSPROB", - "library.form.slug.help": "", - "library.form.button.cancel": "取消", - "library.form.breadcrumbs.home": "工作室", - "library.form.breadcrumbs.list": "图书馆", - "library.form.breadcrumbs.current": "图书馆创作", - "library.form.modal.title": "未保存的更改", - "library.form.modal.description": "您确定要离开此页面吗?如果继续,您所做的更改将会丢失。", - "library.organizations.list.empty": "未找到结果", - "library.block.page.heading": "组件", - "library.block.page.back_to_library": "", - "library.block.loading.message": "加载中...", - "library.block.loading.error": "错误:{errorMessage}", - "library.block.block.unpublished_changes": "", - "library.block.block.view_link": "视图查看", - "library.block.block.edit_link": "编辑", - "library.block.aside.title": "将内容添加到您的图书馆", - "library.block.aside.text.1": "将组件添加到您的库中以在课程中使用。", - "library.block.aside.help.link": "了解有关内容图书馆的更多信息", - "library.block.aside.publish": "发布图书馆", - "library.block.aside.discard": "放弃图书馆更改", - "library.block.aside.delete": "删除模块", - "library.list.empty.body": "", - "library.list.empty.heading": "添加您的第一个图书馆资源库以开始", - "library.list.empty.new.library": "", - "library.access.loading.message": "加载中...", - "library.access.page.parent_heading": "设置", - "library.access.page.heading": "用户访问", - "library.access.aside.title": "图书馆资源库权限", - "library.access.aside.text.first": "图书馆有三种访问权限:用户、员工和管理员。", - "library.access.aside.text.second": "图书馆用户可以查看图书馆内容并可以在他们的课程中引用或使用图书馆组件,但他们不能编辑图书馆的内容。", - "library.access.aside.text.third": "图书馆工作人员是内容的共同作者。他们对图书馆的内容拥有完全的编辑权限。", - "library.access.aside.text.fourth": "图书馆管理员拥有完全的编辑权限,还可以添加和删除其他团队成员。库中必须至少有一个具有管理员角色的用户。", - "library.access.new.user": "新团队成员", - "library.access.well.title": "向该图书馆资源库添加更多用户", - "library.access.well.text": "授予课程团队的其他成员访问此库的权限。新图书馆用户必须拥有活跃的 Studio 帐户。", - "library.access.well.button": "添加新用户", - "library.access.form.title": "授予对此库的访问权限", - "library.access.form.email.help": "提供您要添加的用户的电子邮件地址", - "library.access.form.email.label": "电子邮件", - "library.access.form.email.placeholder": "示例:用户名@domain.com", - "library.access.form.button.submit": "提交", - "library.access.form.button.submitting": "提交...", - "library.access.info.admin_unlock": "将另一个成员提升为管理员以删除该用户的管理员权限", - "library.access.info.self": "你!", - "library.access.info.admin": "管理员", - "library.access.info.author": "作者", - "library.access.info.read": "只读", - "library.access.add_admin": "添加管理员权限", - "library.access.remove_admin": "删除管理员权限", - "library.access.add_author": "添加作者访问权限", - "library.access.remove_author": "", - "library.access.remove_user": "删除用户", - "library.access.modal.remove.title": "你确定吗?", - "library.access.modal.remove.body": "您确定要从库“{library}”中删除 {email} 吗?", - "library.access.modal.remove.footer.cancel": "取消", - "library.access.modal.remove.footer.delete": "删除", - "library.access.modal.remove_admin.title": "你确定吗?", - "library.access.modal.remove_admin.body": "您确定要从库“{library}”中撤销 {email} 的管理员权限吗?", - "library.list.page.heading": "图书馆", - "library.list.new.library": "", - "library.list.loading.message": "加载中...", - "library.list.loading.error": "错误:{errorMessage}", - "library.list.item.type": "类型:", - "library.list.item.type.video": "视频(测试版)", - "library.list.item.type.problem": "问题(测试版)", - "library.list.item.type.complex": "系列(测试版)", - "library.list.item.type.legacy": "退休系统/文档", - "library.list.organization": "组织:", - "library.list.slug": "图书馆识别:", - "library.list.filter.title": "找图书馆", - "library.list.filter.input.default": "输入 ID、职务或组织。", - "library.list.filter.options.org.label": "组织", - "library.list.filter.options.org.all": "全部", - "library.list.filter.options.org.organizations": "组织", - "library.list.filter.options.type.label": "类型", - "library.list.filter.options.type.types": "类型", - "library.list.filter.options.type.legacy": "退休系统/文档", - "library.list.filter.options.type.complex": "系列(测试版)", - "library.list.filter.options.type.video": "视频(测试版)", - "library.list.filter.options.type.problem": "问题(测试版)", - "library.list.aside.title": "刚接触工作室?", - "library.list.aside.text": "", - "library.list.aside.help.link": "Studio 入门", - "library.list.breadcrumbs.libraries": "图书馆", - "library.header.logo.alt": "", - "library.header.settings.menu": "设置", - "library.header.settings.details": "细节", - "library.header.settings.access": "", - "library.header.settings.import": "导入", - "library.header.nav.help.title": "", - "library.header.nav.help": "帮助", - "library.header.account.label": "账户", - "library.header.account.navigation": "", - "library.header.account.signedinas": "当前登录用户:", - "library.header.account.studiohome": "", - "library.header.account.maintenance": "维护", - "library.header.account.signout": "退出" -} \ No newline at end of file