Commit 96e5139d by Christine Lytwynec

Merge branch 'release'

Conflicts:
	common/lib/xmodule/xmodule/tests/test_video.py
parents 03cec2e0 0c202cb1
...@@ -5,6 +5,8 @@ These are notable changes in edx-platform. This is a rolling list of changes, ...@@ -5,6 +5,8 @@ These are notable changes in edx-platform. This is a rolling list of changes,
in roughly chronological order, most recent first. Add your entries at or near in roughly chronological order, most recent first. Add your entries at or near
the top. Include a label indicating the component affected. the top. Include a label indicating the component affected.
Blades: Redirect Chinese students to a Chinese CDN for video. BLD-1052.
Studio: Move Peer Assessment into advanced problems menu. Studio: Move Peer Assessment into advanced problems menu.
Studio: Support creation and editing of split_test instances (Content Experiments) Studio: Support creation and editing of split_test instances (Content Experiments)
......
...@@ -10,6 +10,7 @@ class CourseMetadata(object): ...@@ -10,6 +10,7 @@ class CourseMetadata(object):
The objects have no predefined attrs but instead are obj encodings of the The objects have no predefined attrs but instead are obj encodings of the
editable metadata. editable metadata.
''' '''
# The list of fields that wouldn't be shown in Advanced Settings.
FILTERED_LIST = ['xml_attributes', FILTERED_LIST = ['xml_attributes',
'start', 'start',
'end', 'end',
...@@ -21,6 +22,7 @@ class CourseMetadata(object): ...@@ -21,6 +22,7 @@ class CourseMetadata(object):
'show_timezone', 'show_timezone',
'format', 'format',
'graded', 'graded',
'video_speed_optimizations',
] ]
@classmethod @classmethod
......
"""
Middleware to identify the country of origin of page requests.
Middleware adds `country_code` in session.
Usage:
# To enable the Geoinfo feature on a per-view basis, use:
decorator `django.utils.decorators.decorator_from_middleware(middleware_class)`
"""
import logging
import pygeoip
from ipware.ip import get_real_ip
from django.conf import settings
log = logging.getLogger(__name__)
class CountryMiddleware(object):
"""
Identify the country by IP address.
"""
def process_request(self, request):
"""
Identify the country by IP address.
Store country code in session.
"""
new_ip_address = get_real_ip(request)
old_ip_address = request.session.get('ip_address', None)
if new_ip_address != old_ip_address:
country_code = pygeoip.GeoIP(settings.GEOIP_PATH).country_code_by_addr(new_ip_address)
request.session['country_code'] = country_code
request.session['ip_address'] = new_ip_address
log.debug('Country code for IP: %s is set to %s', new_ip_address, country_code)
"""
Tests for CountryMiddleware.
"""
from mock import Mock, patch
import pygeoip
from django.test import TestCase
from django.test.utils import override_settings
from django.test.client import RequestFactory
from courseware.tests.tests import TEST_DATA_MONGO_MODULESTORE
from student.models import CourseEnrollment
from student.tests.factories import UserFactory, AnonymousUserFactory
from django.contrib.sessions.middleware import SessionMiddleware
from geoinfo.middleware import CountryMiddleware
@override_settings(MODULESTORE=TEST_DATA_MONGO_MODULESTORE)
class CountryMiddlewareTests(TestCase):
"""
Tests of CountryMiddleware.
"""
def setUp(self):
self.country_middleware = CountryMiddleware()
self.session_middleware = SessionMiddleware()
self.authenticated_user = UserFactory.create()
self.anonymous_user = AnonymousUserFactory.create()
self.request_factory = RequestFactory()
self.patcher = patch.object(pygeoip.GeoIP, 'country_code_by_addr', self.mock_country_code_by_addr)
self.patcher.start()
def tearDown(self):
self.patcher.stop()
def mock_country_code_by_addr(self, ip_addr):
"""
Gives us a fake set of IPs
"""
ip_dict = {
'117.79.83.1': 'CN',
'117.79.83.100': 'CN',
'4.0.0.0': 'SD',
}
return ip_dict.get(ip_addr, 'US')
def test_country_code_added(self):
request = self.request_factory.get('/somewhere',
HTTP_X_FORWARDED_FOR='117.79.83.1')
request.user = self.authenticated_user
self.session_middleware.process_request(request)
# No country code exists before request.
self.assertNotIn('country_code', request.session)
self.assertNotIn('ip_address', request.session)
self.country_middleware.process_request(request)
# Country code added to session.
self.assertEqual('CN', request.session.get('country_code'))
self.assertEqual('117.79.83.1', request.session.get('ip_address'))
def test_ip_address_changed(self):
request = self.request_factory.get('/somewhere',
HTTP_X_FORWARDED_FOR='4.0.0.0')
request.user = self.anonymous_user
self.session_middleware.process_request(request)
request.session['country_code'] = 'CN'
request.session['ip_address'] = '117.79.83.1'
self.country_middleware.process_request(request)
# Country code is changed.
self.assertEqual('SD', request.session.get('country_code'))
self.assertEqual('4.0.0.0', request.session.get('ip_address'))
def test_ip_address_is_not_changed(self):
request = self.request_factory.get('/somewhere',
HTTP_X_FORWARDED_FOR='117.79.83.1')
request.user = self.anonymous_user
self.session_middleware.process_request(request)
request.session['country_code'] = 'CN'
request.session['ip_address'] = '117.79.83.1'
self.country_middleware.process_request(request)
# Country code is not changed.
self.assertEqual('CN', request.session.get('country_code'))
self.assertEqual('117.79.83.1', request.session.get('ip_address'))
def test_same_country_different_ip(self):
request = self.request_factory.get('/somewhere',
HTTP_X_FORWARDED_FOR='117.79.83.100')
request.user = self.anonymous_user
self.session_middleware.process_request(request)
request.session['country_code'] = 'CN'
request.session['ip_address'] = '117.79.83.1'
self.country_middleware.process_request(request)
# Country code is not changed.
self.assertEqual('CN', request.session.get('country_code'))
self.assertEqual('117.79.83.100', request.session.get('ip_address'))
...@@ -113,6 +113,11 @@ class InheritanceMixin(XBlockMixin): ...@@ -113,6 +113,11 @@ class InheritanceMixin(XBlockMixin):
default=[], default=[],
scope=Scope.settings scope=Scope.settings
) )
video_speed_optimizations = Boolean(
help="Enable Video CDN.",
default=True,
scope=Scope.settings
)
def compute_inherited_metadata(descriptor): def compute_inherited_metadata(descriptor):
......
...@@ -91,6 +91,7 @@ def get_test_system(course_id=SlashSeparatedCourseKey('org', 'course', 'run')): ...@@ -91,6 +91,7 @@ def get_test_system(course_id=SlashSeparatedCourseKey('org', 'course', 'run')):
error_descriptor_class=ErrorDescriptor, error_descriptor_class=ErrorDescriptor,
get_user_role=Mock(is_staff=False), get_user_role=Mock(is_staff=False),
descriptor_runtime=get_test_descriptor_system(), descriptor_runtime=get_test_descriptor_system(),
user_location=Mock(),
) )
......
...@@ -14,12 +14,12 @@ the course, section, subsection, unit, etc. ...@@ -14,12 +14,12 @@ the course, section, subsection, unit, etc.
""" """
import unittest import unittest
import datetime import datetime
from mock import Mock from mock import Mock, patch
from . import LogicTest from . import LogicTest
from lxml import etree from lxml import etree
from opaque_keys.edx.locations import SlashSeparatedCourseKey from opaque_keys.edx.locations import SlashSeparatedCourseKey
from xmodule.video_module import VideoDescriptor, create_youtube_string from xmodule.video_module import VideoDescriptor, create_youtube_string, get_video_from_cdn
from .test_import import DummySystem from .test_import import DummySystem
from xblock.field_data import DictFieldData from xblock.field_data import DictFieldData
from xblock.fields import ScopeIds from xblock.fields import ScopeIds
...@@ -551,3 +551,33 @@ class VideoExportTestCase(VideoDescriptorTestBase): ...@@ -551,3 +551,33 @@ class VideoExportTestCase(VideoDescriptorTestBase):
xml = self.descriptor.definition_to_xml(None) xml = self.descriptor.definition_to_xml(None)
expected = '<video url_name="SampleProblem"/>\n' expected = '<video url_name="SampleProblem"/>\n'
self.assertEquals(expected, etree.tostring(xml, pretty_print=True)) self.assertEquals(expected, etree.tostring(xml, pretty_print=True))
class VideoCdnTest(unittest.TestCase):
"""
Tests for Video CDN.
"""
@patch('requests.get')
def test_get_video_success(self, cdn_response):
"""
Test successful CDN request.
"""
original_video_url = "http://www.original_video.com/original_video.mp4"
cdn_response_video_url = "http://www.cdn_video.com/cdn_video.mp4"
cdn_response_content = '{{"sources":["{cdn_url}"]}}'.format(cdn_url=cdn_response_video_url)
cdn_response.return_value=Mock(status_code=200, content=cdn_response_content)
fake_cdn_url = 'http://fake_cdn.com/'
self.assertEqual(
get_video_from_cdn(fake_cdn_url, original_video_url),
cdn_response_video_url
)
@patch('requests.get')
def test_get_no_video_exists(self, cdn_response):
"""
Test if no alternative video in CDN exists.
"""
original_video_url = "http://www.original_video.com/original_video.mp4"
cdn_response.return_value=Mock(status_code=404)
fake_cdn_url = 'http://fake_cdn.com/'
self.assertIsNone(get_video_from_cdn(fake_cdn_url, original_video_url))
...@@ -36,7 +36,7 @@ from xmodule.editing_module import TabsEditingDescriptor ...@@ -36,7 +36,7 @@ from xmodule.editing_module import TabsEditingDescriptor
from xmodule.raw_module import EmptyDataRawDescriptor from xmodule.raw_module import EmptyDataRawDescriptor
from xmodule.xml_module import is_pointer_tag, name_to_pathname, deserialize_field from xmodule.xml_module import is_pointer_tag, name_to_pathname, deserialize_field
from .video_utils import create_youtube_string from .video_utils import create_youtube_string, get_video_from_cdn
from .video_xfields import VideoFields from .video_xfields import VideoFields
from .video_handlers import VideoStudentViewHandlers, VideoStudioViewHandlers from .video_handlers import VideoStudentViewHandlers, VideoStudioViewHandlers
...@@ -93,12 +93,25 @@ class VideoModule(VideoFields, VideoStudentViewHandlers, XModule): ...@@ -93,12 +93,25 @@ class VideoModule(VideoFields, VideoStudentViewHandlers, XModule):
]} ]}
js_module_name = "Video" js_module_name = "Video"
def get_html(self): def get_html(self):
track_url = None track_url = None
download_video_link = None download_video_link = None
transcript_download_format = self.transcript_download_format transcript_download_format = self.transcript_download_format
sources = filter(None, self.html5_sources) sources = filter(None, self.html5_sources)
# If the user comes from China use China CDN for html5 videos.
# 'CN' is China ISO 3166-1 country code.
# Video caching is disabled for Studio. User_location is always None in Studio.
# CountryMiddleware disabled for Studio.
cdn_url = getattr(settings, 'VIDEO_CDN_URL', {}).get(self.system.user_location)
if getattr(self, 'video_speed_optimizations', True) and cdn_url:
for index, source_url in enumerate(sources):
new_url = get_video_from_cdn(cdn_url, source_url)
if new_url:
sources[index] = new_url
if self.download_video: if self.download_video:
if self.source: if self.source:
download_video_link = self.source download_video_link = self.source
......
""" """
Module containts utils specific for video_module but not for transcripts. Module containts utils specific for video_module but not for transcripts.
""" """
import json
import logging
import urllib
import requests
from requests.exceptions import RequestException
log = logging.getLogger(__name__)
def create_youtube_string(module): def create_youtube_string(module):
...@@ -23,3 +31,41 @@ def create_youtube_string(module): ...@@ -23,3 +31,41 @@ def create_youtube_string(module):
in zip(youtube_speeds, youtube_ids) in zip(youtube_speeds, youtube_ids)
if pair[1] if pair[1]
]) ])
def get_video_from_cdn(cdn_base_url, original_video_url):
"""
Get video URL from CDN.
`original_video_url` is the existing video url.
Currently `cdn_base_url` equals 'http://api.xuetangx.com/edx/video?s3_url='
Example of CDN outcome:
{
"sources":
[
"http://cm12.c110.play.bokecc.com/flvs/ca/QxcVl/u39EQbA0Ra-20.mp4",
"http://bm1.42.play.bokecc.com/flvs/ca/QxcVl/u39EQbA0Ra-20.mp4"
],
"s3_url": "http://s3.amazonaws.com/BESTech/CS169/download/CS169_v13_w5l2s3.mp4"
}
where `s3_url` is requested original video url and `sources` is the list of
alternative links.
"""
if not cdn_base_url:
return None
request_url = cdn_base_url + urllib.quote(original_video_url)
try:
cdn_response = requests.get(request_url, timeout=0.5)
except RequestException as err:
log.warning("Error requesting from CDN server at %s", request_url)
log.exception(err)
return None
if cdn_response.status_code == 200:
cdn_content = json.loads(cdn_response.content)
return cdn_content['sources'][0]
else:
return None
...@@ -1244,7 +1244,7 @@ class ModuleSystem(MetricsMixin, ConfigurableFragmentWrapper, Runtime): # pylin ...@@ -1244,7 +1244,7 @@ class ModuleSystem(MetricsMixin, ConfigurableFragmentWrapper, Runtime): # pylin
cache=None, can_execute_unsafe_code=None, replace_course_urls=None, cache=None, can_execute_unsafe_code=None, replace_course_urls=None,
replace_jump_to_id_urls=None, error_descriptor_class=None, get_real_user=None, replace_jump_to_id_urls=None, error_descriptor_class=None, get_real_user=None,
field_data=None, get_user_role=None, rebind_noauth_module_to_user=None, field_data=None, get_user_role=None, rebind_noauth_module_to_user=None,
**kwargs): user_location=None, **kwargs):
""" """
Create a closure around the system environment. Create a closure around the system environment.
...@@ -1340,6 +1340,7 @@ class ModuleSystem(MetricsMixin, ConfigurableFragmentWrapper, Runtime): # pylin ...@@ -1340,6 +1340,7 @@ class ModuleSystem(MetricsMixin, ConfigurableFragmentWrapper, Runtime): # pylin
self.xmodule_instance = None self.xmodule_instance = None
self.get_real_user = get_real_user self.get_real_user = get_real_user
self.user_location = user_location
self.get_user_role = get_user_role self.get_user_role = get_user_role
self.descriptor_runtime = descriptor_runtime self.descriptor_runtime = descriptor_runtime
......
...@@ -16,8 +16,10 @@ locales: ...@@ -16,8 +16,10 @@ locales:
- da # Danish - da # Danish
- de_DE # German (Germany) - de_DE # German (Germany)
- el # Greek - el # Greek
- en@lolcat # LOLCAT English # Don't pull these until we figure out why pages randomly display in these locales,
- en@pirate # Pirate English # when the user's browser is in English and the user is not logged in.
# - en@lolcat # LOLCAT English
# - en@pirate # Pirate English
- es_419 # Spanish (Latin America) - es_419 # Spanish (Latin America)
- es_AR # Spanish (Argentina) - es_AR # Spanish (Argentina)
- es_EC # Spanish (Ecuador) - es_EC # Spanish (Ecuador)
......
This source diff could not be displayed because it is too large. You can view the blob instead.
# #-#-#-#-# djangojs-partial.po (edx-platform) #-#-#-#-#
# edX community translations have been downloaded from LOLCAT English (http://www.transifex.com/projects/p/edx-platform/language/en@lolcat/).
# Copyright (C) 2014 EdX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
# Marco Morales, 2014
# Sarina Canelake <sarina@edx.org>, 2014
# #-#-#-#-# djangojs-studio.po (edx-platform) #-#-#-#-#
# edX translation file.
# Copyright (C) 2014 EdX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
# #-#-#-#-# underscore.po (edx-platform) #-#-#-#-#
# edX translation file
# Copyright (C) 2014 edX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
# #-#-#-#-# underscore-studio.po (edx-platform) #-#-#-#-#
# edX translation file
# Copyright (C) 2014 edX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2014-06-19 00:15-0400\n"
"PO-Revision-Date: 2014-06-19 04:17+0000\n"
"Last-Translator: Sarina Canelake <sarina@edx.org>\n"
"Language-Team: LOLCAT English (http://www.transifex.com/projects/p/edx-platform/language/en@lolcat/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
"Language: en@lolcat\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cms/static/coffee/src/views/tabs.js
#: cms/static/js/views/course_info_update.js
#: cms/static/js/views/modals/edit_xblock.js
#: common/static/coffee/src/discussion/utils.js
msgid "OK"
msgstr "K"
#: cms/static/coffee/src/views/tabs.js cms/static/js/base.js
#: cms/static/js/views/asset.js cms/static/js/views/baseview.js
#: cms/static/js/views/course_info_update.js
#: cms/static/js/views/show_textbook.js cms/static/js/views/validation.js
#: cms/static/js/views/modals/base_modal.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Cancel"
msgstr "CANCL"
#: cms/static/js/base.js lms/static/js/verify_student/photocapture.js
msgid "This link will open in a new browser window/tab"
msgstr "DIS LYNK WILL OPEN IN A NEW BROWSR WINDOW/TAB"
#: cms/static/js/views/asset.js cms/static/js/views/show_textbook.js
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
#: cms/templates/js/course_grade_policy.underscore
#: cms/templates/js/show-textbook.underscore
msgid "Delete"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Show Annotations"
msgstr "SHOW ANNOTASHUNS"
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Hide Annotations"
msgstr "HIDE ANNOTASHUNS"
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Expand Instructions"
msgstr "XPAND INSTRUCSHUNS"
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Collapse Instructions"
msgstr "COLLAPSE INSTRUCSHUNS"
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Commentary"
msgstr "COMMENTARY"
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Reply to Annotation"
msgstr "REPLI 2 ANNOTASHUN"
#. Translators: %(earned)s is the number of points earned. %(total)s is the
#. total number of points (examples: 0/1, 1/1, 2/3, 5/10). The total number of
#. points will always be at least 1. We pluralize based on the total number of
#. points (example: 0/1 point; 1/2 points);
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "(%(earned)s/%(possible)s point)"
msgid_plural "(%(earned)s/%(possible)s points)"
msgstr[0] "(%(earned)s/%(possible)s POINT)"
msgstr[1] "(%(earned)s/%(possible)s POINTZ)"
#. Translators: %(num_points)s is the number of points possible (examples: 1,
#. 3, 10). There will always be at least 1 point possible.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "(%(num_points)s point possible)"
msgid_plural "(%(num_points)s points possible)"
msgstr[0] "(%(num_points)s POINT POSIBL)"
msgstr[1] "(%(num_points)s POINTZ POSIBL)"
#: common/lib/xmodule/xmodule/js/src/capa/display.js
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Answer:"
msgstr "ANSER:"
#. Translators: the word Answer here refers to the answer to a problem the
#. student must solve.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Hide Answer"
msgstr "HIDE TEH ANSER"
#. Translators: the word Answer here refers to the answer to a problem the
#. student must solve.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Show Answer"
msgstr "SHOW TEH ANSER"
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Reveal Answer"
msgstr "REVEEL TEH ANSER"
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Answer hidden"
msgstr "TEH ANSER IZ HIDED"
#. Translators: the word unanswered here is about answering a problem the
#. student must solve.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "unanswered"
msgstr "U HAS NOT ANSWERD DIS"
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Status: unsubmitted"
msgstr "STATUS: U HAS NOT SUBMITTD DIS"
#. Translators: A "rating" is a score a student gives to indicate how well
#. they feel they were graded on this problem
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "You need to pick a rating before you can submit."
msgstr "U NEED 2 PIK A RATIN B4 U CAN HAZ SUBMIT."
#. Translators: this message appears when transitioning between openended
#. grading
#. types (i.e. self assesment to peer assessment). Sometimes, if a student
#. did not perform well at one step, they cannot move on to the next one.
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Your score did not meet the criteria to move to the next step."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Submit"
msgstr "SUBMIT"
#. Translators: one clicks this button after one has finished filling out the
#. grading
#. form for an openended assessment
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Submit assessment"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"Your response has been submitted. Please check back later for your grade."
msgstr ""
#. Translators: this button is clicked to submit a student's rating of
#. an evaluator's assessment
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Submit post-assessment"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Answer saved, but not yet submitted."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"Please confirm that you wish to submit your work. You will not be able to "
"make any changes after submitting."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"You are trying to upload a file that is too large for our system. Please "
"choose a file under 2MB or paste a link to it into the answer box."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"Are you sure you want to remove your previous response to this question?"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Moved to next step."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"File uploads are required for this question, but are not supported in your "
"browser. Try the newest version of Google Chrome. Alternatively, if you have"
" uploaded the image to another website, you can paste a link to it into the "
"answer box."
msgstr ""
#. Translators: "Show Question" is some text that, when clicked, shows a
#. question's
#. content that had been hidden
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Show Question"
msgstr "SHOW TEH QUESHUN"
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Hide Question"
msgstr "HIDE TEH QUESHUN"
#: common/lib/xmodule/xmodule/js/src/sequence/display.js
msgid ""
"Sequence error! Cannot navigate to tab %(tab_name)s in the current "
"SequenceModule. Please contact the course staff."
msgstr ""
"SEQUENCE ERROR! WEZ CANT NAVIGATE 2 TAB %(tab_name)s IN TEH CURENT "
"SEQUENCEMODULE. PLZ CONTACT TEH COURSE STAFF."
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Volume"
msgstr "VOLUM"
#. Translators: Volume level equals 0%.
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Muted"
msgstr "MUTED"
#. Translators: Volume level in range ]0,20]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Very low"
msgstr "BERY LOW"
#. Translators: Volume level in range ]20,40]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Low"
msgstr "LOW"
#. Translators: Volume level in range ]40,60]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Average"
msgstr "AVERAGE"
#. Translators: Volume level in range ]60,80]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Loud"
msgstr "LOWD"
#. Translators: Volume level in range ]80,99]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Very loud"
msgstr "BERY LOWD"
#. Translators: Volume level equals 100%.
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Maximum"
msgstr "MAXYMUM"
#: common/lib/xmodule/xmodule/js/src/video/02_html5_video.js
msgid ""
"VideoPlayer: Element corresponding to the given selector was not found."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/02_html5_video.js
msgid "This browser cannot play .mp4, .ogg, or .webm files."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/02_html5_video.js
msgid "Try using a different browser, such as Google Chrome."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Video slider"
msgstr "VIDEO SLIDR"
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Pause"
msgstr "PAWS"
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Play"
msgstr "PULAY"
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Fill browser"
msgstr "FILL TEH BROWSR"
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Exit full browser"
msgstr "XIT FULL BROWSR"
#: common/lib/xmodule/xmodule/js/src/video/05_video_quality_control.js
msgid "HD on"
msgstr "HD ON"
#: common/lib/xmodule/xmodule/js/src/video/05_video_quality_control.js
msgid "HD off"
msgstr "HD OFF"
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "Video position"
msgstr "VIDEO POSISHUN"
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "Video ended"
msgstr "VIDEO ENDD"
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "%(value)s hour"
msgid_plural "%(value)s hours"
msgstr[0] "%(value)s HOUR"
msgstr[1] "%(value)s HOURZ"
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "%(value)s minute"
msgid_plural "%(value)s minutes"
msgstr[0] "%(value)s MINIT"
msgstr[1] "%(value)s MINITS"
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "%(value)s second"
msgid_plural "%(value)s seconds"
msgstr[0] "%(value)s SECUND"
msgstr[1] "%(value)s SECUNDZ"
#: common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
msgid "Caption will be displayed when "
msgstr "CAPSHUN WILL BE DISPULAYD WHEN"
#: common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
msgid "Turn on captions"
msgstr "TURN ON CAPSHUNS"
#: common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
msgid "Turn off captions"
msgstr "TURN OFF CAPSHUNS"
#: common/static/coffee/src/discussion/discussion_module_view.js
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid "Hide Discussion"
msgstr "HIDE TEH DISCUSHUN"
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid "Show Discussion"
msgstr "SHOW DISCUSHUN"
#: common/static/coffee/src/discussion/discussion_module_view.js
#: common/static/coffee/src/discussion/discussion_module_view.js
#: common/static/coffee/src/discussion/utils.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
#: common/static/coffee/src/discussion/views/discussion_user_profile_view.js
#: common/static/coffee/src/discussion/views/response_comment_view.js
msgid "Sorry"
msgstr "OMG!1!! SRY SRY!1!"
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid "We had some trouble loading the discussion. Please try again."
msgstr ""
"SRY WE HAZ SUM TRUBLE LOADIN TEH DISCUSHUN D: CAN U HAS ANUTHER TRI PLZ? "
"THANKS U!1!"
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid ""
"We had some trouble loading the threads you requested. Please try again."
msgstr ""
"SRY BUT WE HAZ SUM TRUBLE LOADIN TEH FWEADZ U REQUESTD. CAN U HAS ANOTHER "
"TRI PLZ??"
#: common/static/coffee/src/discussion/utils.js
msgid "Loading content"
msgstr "LOADIN CONTENT"
#: common/static/coffee/src/discussion/utils.js
msgid ""
"We had some trouble processing your request. Please ensure you have copied "
"any unsaved work and then reload the page."
msgstr ""
"SRY BUT WE HAZ SUM TRUBLE PROCESSIN UR REQUEST. PLZ MAKE SURE U HAS COPYD NE"
" UNSAVD WORK AN DEN PLZ RELOAD TEH PAEG. THANKS U!11!"
#: common/static/coffee/src/discussion/utils.js
msgid "We had some trouble processing your request. Please try again."
msgstr ""
"SRY!1! WE HAZ SUM TRUBLE PROCESIN UR REQUEST. CAN U PLZZZZ HAS ANUTHAR "
"TRI!?1?! K THX!!"
#: common/static/coffee/src/discussion/utils.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/new_post_view.js
#: common/static/coffee/src/discussion/views/new_post_view.js
#: common/static/coffee/src/discussion/views/new_post_view.js
msgid "…"
msgstr "..."
#: common/static/coffee/src/discussion/views/discussion_content_view.js
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "Close"
msgstr "CLOSE"
#: common/static/coffee/src/discussion/views/discussion_content_view.js
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "Open"
msgstr "OPEN"
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "remove vote"
msgstr "REMOOV VOAT"
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "vote"
msgstr "VOAT"
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "vote (click to remove your vote)"
msgid_plural "votes (click to remove your vote)"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "vote (click to vote)"
msgid_plural "votes (click to vote)"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "Load more"
msgstr "LOAD MOAR"
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "Loading more threads"
msgstr "LOADIN MOAR FWEADZ"
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "We had some trouble loading more threads. Please try again."
msgstr ""
"SRY WE HAZ SUM TRUBLE LOADIN MOAR FWEADZ D: CAN U HAS ANUTHAR TRI PLZ?? "
"THANKS U!1!"
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "%(unread_count)s new comment"
msgid_plural "%(unread_count)s new comments"
msgstr[0] "%(unread_count)s NEW COMMENT"
msgstr[1] "%(unread_count)s NEW COMMENTZ"
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "Loading thread list"
msgstr "LOADIN FWEADZ LIST"
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid ""
"No results found for %(original_query)s. Showing results for "
"%(suggested_query)s."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Click to remove report"
msgstr "CLIK 2 REMOOV TEH REPORT"
#. Translators: The text between start_sr_span and end_span is not shown
#. in most browsers but will be read by screen readers.
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Misuse Reported%(start_sr_span)s, click to remove report%(end_span)s"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Report Misuse"
msgstr "REPORT BAD USE"
#. Translators: The text between start_sr_span and end_span is not shown
#. in most browsers but will be read by screen readers.
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Pinned%(start_sr_span)s, click to unpin%(end_span)s"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Click to unpin"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Pinned"
msgstr "PINND"
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Pin Thread"
msgstr "PIN DIS FWEAD"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid ""
"The thread you selected has been deleted. Please select another thread."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "We had some trouble loading responses. Please reload the page."
msgstr ""
"SRY!!1! WE HAZ SUM TRUBLE LOADIN RESPONSEZ D: CAN U HAS ANUTHAR TRI OV "
"RELOADIN TEH PAEG?? THANK U!1!"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "We had some trouble loading more responses. Please try again."
msgstr ""
"SRY BUT WE HAZ SUM TRUBLE LOADIN RESPONSEZ D: CAN U HAS ANUTHAR TRI PLZ?? "
"THANKS U!1!"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "%(numResponses)s response"
msgid_plural "%(numResponses)s responses"
msgstr[0] "%(numResponses)s RESPONSE"
msgstr[1] "%(numResponses)s RESPONSEZ"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Showing all responses"
msgstr "SHOWIN ALL TEH RESPONSEZ"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Showing first response"
msgid_plural "Showing first %(numResponses)s responses"
msgstr[0] "SHOWIN TEH FURST RESPONSE"
msgstr[1] "SHOWIN TEH FURST %(numResponses)s RESPONSEZ"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Load all responses"
msgstr "LOAD ALL RESPONSEZ"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Load next %(numResponses)s responses"
msgstr "LOAD NEXT %(numResponses)s RESPONSEZ"
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Are you sure you want to delete this post?"
msgstr "O HAI. R U SHUR U WANT 2 DELET DIS POST??"
#: common/static/coffee/src/discussion/views/discussion_user_profile_view.js
msgid "We had some trouble loading the page you requested. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
msgid "anonymous"
msgstr "ANYMOUZ"
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "staff"
msgstr "STAFF"
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Community TA"
msgstr "COMUNITY TA"
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Misuse Reported, click to remove report"
msgstr "MISUSE WUZ REPORTD, CLIK 2 REMOOV REPORT"
#: common/static/coffee/src/discussion/views/response_comment_view.js
msgid "Are you sure you want to delete this comment?"
msgstr "O HAI. R U SHUR U WANT 2 DELET DIS COMMENT??"
#: common/static/coffee/src/discussion/views/response_comment_view.js
msgid "We had some trouble deleting this comment. Please try again."
msgstr ""
"SRY!1! WE HAZ SUM TRUBLE DELETIN DIS COMMENT. CAN U PLZZZZ HAS ANUTHAR "
"TRI!?1?! K THX!!"
#: common/static/coffee/src/discussion/views/thread_response_view.js
msgid "Are you sure you want to delete this response?"
msgstr "O HAI. R U SHUR U WANT 2 DELET DIS RESPONSE??"
#: common/static/js/capa/drag_and_drop/base_image.js
msgid "Drop target image"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dragging out of slider"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dragging"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dropped in slider"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dropped on target"
msgstr ""
#. Translators: %s will be a time quantity, such as "4 minutes" or "1 day"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%s ago"
msgstr "%s AGO"
#. Translators: %s will be a time quantity, such as "4 minutes" or "1 day"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%s from now"
msgstr "%s FRUM NAO"
#: common/static/js/src/jquery.timeago.locale.js
msgid "less than a minute"
msgstr "LES DAN A MINIT"
#: common/static/js/src/jquery.timeago.locale.js
msgid "about a minute"
msgstr "BOUT A MINIT"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d minute"
msgid_plural "%d minutes"
msgstr[0] "%d MINIT"
msgstr[1] "%d MINITS"
#: common/static/js/src/jquery.timeago.locale.js
msgid "about an hour"
msgstr "BOUT A HOUR"
#: common/static/js/src/jquery.timeago.locale.js
msgid "about %d hour"
msgid_plural "about %d hours"
msgstr[0] "BOUT %d HOURE"
msgstr[1] "BOUT %d HOURZ"
#: common/static/js/src/jquery.timeago.locale.js
msgid "a day"
msgstr "A DAI"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d day"
msgid_plural "%d days"
msgstr[0] "%d DAI"
msgstr[1] "%d DAIS"
#: common/static/js/src/jquery.timeago.locale.js
msgid "about a month"
msgstr "BOUT A MONF"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d month"
msgid_plural "%d months"
msgstr[0] "%d MONF"
msgstr[1] "%d MONFZ"
#: common/static/js/src/jquery.timeago.locale.js
msgid "about a year"
msgstr "BOUT A YER"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d year"
msgid_plural "%d years"
msgstr[0] "%d YER"
msgstr[1] "%d YERZ"
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "User"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Annotation"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Start"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "End"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "#Replies"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Date posted"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "More"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "My Notes"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Instructor"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Public"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Search"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Users"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Tags"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Annotation Text"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
#: cms/templates/js/metadata-dict-entry.underscore
#: cms/templates/js/metadata-file-uploader-entry.underscore
#: cms/templates/js/metadata-list-entry.underscore
#: cms/templates/js/metadata-number-entry.underscore
#: cms/templates/js/metadata-option-entry.underscore
#: cms/templates/js/metadata-string-entry.underscore
#: cms/templates/js/mock/mock-xmodule-editor.underscore
#: cms/templates/js/mock/mock-xmodule-settings-only-editor.underscore
#: cms/templates/js/video/metadata-translations-entry.underscore
msgid "Clear"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Text"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Video"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Image"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Reply"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: cms/templates/js/show-textbook.underscore
#: cms/templates/js/mock/mock-container-page.underscore
msgid "Edit"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Tags:"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Available %s"
msgstr "AVAILABBABLE %s"
#: lms/static/admin/js/SelectFilter2.js
msgid ""
"This is the list of available %s. You may choose some by selecting them in "
"the box below and then clicking the \"Choose\" arrow between the two boxes."
msgstr ""
"DIS AR TEH LIST OV AVAILABLE %s. PLZ CHOOSE SUM BY SELECTIN DEM IN DA BOX "
"BELOW AN DEN CLICKIN TEH \"CHOOSE\" ARROW TWEEN TEH 2 BOXEZ."
#: lms/static/admin/js/SelectFilter2.js
msgid "Type into this box to filter down the list of available %s."
msgstr "TYPE IN2 DIS BOX 2 FILTR TEH LIST OV AVAILABLE %s"
#: lms/static/admin/js/SelectFilter2.js
msgid "Filter"
msgstr "FILTR"
#: lms/static/admin/js/SelectFilter2.js
msgid "Choose all"
msgstr "CHUSE ALL"
#: lms/static/admin/js/SelectFilter2.js
msgid "Click to choose all %s at once."
msgstr "CLIK 2 CHUSE ALL %s AT ONE TIEM"
#: lms/static/admin/js/SelectFilter2.js
msgid "Choose"
msgstr "CHUSE"
#: lms/static/admin/js/SelectFilter2.js
msgid "Remove"
msgstr "REMOOV"
#: lms/static/admin/js/SelectFilter2.js
msgid "Chosen %s"
msgstr "CHUSED %s"
#: lms/static/admin/js/SelectFilter2.js
msgid ""
"This is the list of chosen %s. You may remove some by selecting them in the "
"box below and then clicking the \"Remove\" arrow between the two boxes."
msgstr ""
"DIS AR TEH LIST OV CHUSED %s. U CUD REMOOV SUM BY SELECTIN DEM IN DA BOX "
"BELOW AN DEN CLICKIN TEH \"REMOOV\" ARROW TWEEN TEH 2 BOXEZ."
#: lms/static/admin/js/SelectFilter2.js
msgid "Remove all"
msgstr "REMOOV ALL"
#: lms/static/admin/js/SelectFilter2.js
msgid "Click to remove all chosen %s at once."
msgstr "CLIK 2 REMOOV ALL CHUSED %s AT ONE TIEM."
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid "%(sel)s of %(cnt)s selected"
msgid_plural "%(sel)s of %(cnt)s selected"
msgstr[0] "%(sel)s OV %(cnt)s SELECTED"
msgstr[1] "%(sel)s OV %(cnt)s SELECTD"
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid ""
"You have unsaved changes on individual editable fields. If you run an "
"action, your unsaved changes will be lost."
msgstr ""
"O NOES! U HAS UNSAVD CHANGEZ ON INDIVIDUAL EDITABLE FEILDS AN IF U RUN A "
"ACTSHUN, UR UNSAVD CHANGEZ WILL B DISAPPEARD!!1!"
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid ""
"You have selected an action, but you haven't saved your changes to "
"individual fields yet. Please click OK to save. You'll need to re-run the "
"action."
msgstr ""
"U HAS SELECTD A ACTSHUN BUT U HASNT SAVD UR CHANGEZ 2 INDIVIDUAL FEILDS "
"YET!1! PLZ CLIK OK 2 SAV. ULL NEED 2 RERUN TEH ACTSHUN D: SRY D: D:"
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid ""
"You have selected an action, and you haven't made any changes on individual "
"fields. You're probably looking for the Go button rather than the Save "
"button."
msgstr ""
"U HAS SELECTD A ACTSHUN AN U HASNT MADE NE CHANGEZ ON INDIVIDUAL FEILDS!1! "
"UR PROLLY LOOKIN 4 TEH GO BUTTON AN NOT TEH SAVE BUTTON."
#. Translators: the names of months, keep the pipe (|) separators.
#: lms/static/admin/js/calendar.js lms/static/admin/js/dateparse.js
msgid ""
"January|February|March|April|May|June|July|August|September|October|November|December"
msgstr ""
"JANUAREH|FEBUAREH|MARCHE|APRL|MAI|JUN|JULAI|AUGUS|SEPTEMBR|OCTOBR|NOVEMBR|DECMBR"
#. Translators: abbreviations for days of the week, keep the pipe (|)
#. separators.
#: lms/static/admin/js/calendar.js
msgid "S|M|T|W|T|F|S"
msgstr "S|M|T|W|T|F|S"
#: lms/static/admin/js/collapse.js lms/static/admin/js/collapse.js.c
#: lms/static/admin/js/collapse.min.js
msgid "Show"
msgstr "SHOW"
#: lms/static/admin/js/collapse.js lms/static/admin/js/collapse.min.js
msgid "Hide"
msgstr "HIDE"
#. Translators: the names of days, keep the pipe (|) separators.
#: lms/static/admin/js/dateparse.js
msgid "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday"
msgstr "SUMDAI|MUNDAI|TUSDAI|WENDSDAI|FURSDAI|FRYDAI|SATERDAI"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Now"
msgstr "NAO"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Clock"
msgstr "CLOCK"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Choose a time"
msgstr "CHUSE A TIEM"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Midnight"
msgstr "MIDNITE"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "6 a.m."
msgstr "6 AM"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Noon"
msgstr "NOOON"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Today"
msgstr "2DAY"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Calendar"
msgstr "CALENDAR"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Yesterday"
msgstr "YESTURDAI"
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Tomorrow"
msgstr "2MORROW"
#: lms/static/coffee/src/calculator.js
msgid "Open Calculator"
msgstr "OPEN CALCULATOW"
#: lms/static/coffee/src/calculator.js
msgid "Close Calculator"
msgstr "CLOSE CALCULATOW"
#: lms/static/coffee/src/customwmd.js
msgid "Preview"
msgstr "PREVIEW"
#: lms/static/coffee/src/customwmd.js
msgid "Post body"
msgstr "POST BODI"
#. Translators: "Distribution" refers to a grade distribution. This error
#. message appears when there is an error getting the data on grade
#. distribution.;
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Error fetching distribution."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Unavailable metric display."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Error fetching grade distributions."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Last Updated: <%= timestamp %>"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "<%= num_students %> students scored."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Loading..."
msgstr "LOADIN... PLZ WAIT THX"
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Error getting student list."
msgstr "O NOES!!1! THAR WUZ ERROR GETTIN TEH STUDENT LIST D:"
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Error retrieving grading configuration."
msgstr "O NOES!!1! THAR WUZ ERROR GETTIN TEH GRADIN CONFIGUASHUN D:"
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Error generating grades. Please try again."
msgstr ""
"O NOES!!1! THAR WUZ ERROR GENERATIN TEH GRADEZ D: U CAN HAS ANUTHR TRI, "
"PLZ??"
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "File Name"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid ""
"Links are generated on demand and expire within 5 minutes due to the "
"sensitive nature of student information."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Username"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Email"
msgstr "EMAIL"
#: lms/static/coffee/src/instructor_dashboard/membership.js
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Revoke access"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Enter username or email"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Please enter a username or email."
msgstr ""
#. Translators: A rolename appears this sentence. A rolename is something like
#. "staff" or "beta tester".;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error fetching list for role"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error changing user's permissions."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Could not find a user with username or email address '<%= identifier %>'."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Error: User '<%= username %>' has not yet activated their account. Users "
"must create and activate their accounts before they can be assigned a role."
msgstr ""
"ERROR: USR '<%= username %>' HAZ NOT ACTUVATD DER ACCOUNT. USERZ MUST CREATE"
" AN ACTIVATE DER ACCOUNTZ B4 DEY CAN B ASSIGND A ROLE, WE IZ SRY BOUT DAT."
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error: You cannot remove yourself from the Instructor group!"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error adding/removing users as beta testers."
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were successfully added as beta testers:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were successfully removed as beta testers:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were not added as beta testers:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were not removed as beta testers:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Users must create and activate their account before they can be promoted to "
"beta tester."
msgstr ""
"USRZ MUST CREATE AN ACTIVATE DER ACCOUNTZ B4 DEY CAN B PROMOTED 2 BETA "
"TESTR, SRY BOUT DAT."
#. Translators: A list of identifiers (which are email addresses and/or
#. usernames) appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Could not find users associated with the following identifiers:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error enrolling/unenrolling users."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "The following email addresses and/or usernames are invalid:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Successfully enrolled and sent email to the following users:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Successfully enrolled the following users:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Successfully sent enrollment emails to the following users. They will be "
"allowed to enroll once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users will be allowed to enroll once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Successfully sent enrollment emails to the following users. They will be "
"enrolled once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users will be enrolled once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Emails successfully sent. The following users are no longer enrolled in the "
"course:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "The following users are no longer enrolled in the course:"
msgstr ""
#. Translators: A list of users appears after this sentence. This situation
#. arises when a staff member tries to unenroll a user who is not currently
#. enrolled in this course.;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"These users were not affiliated with the course so could not be unenrolled:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Your message must have a subject."
msgstr "UR MSG MUST HAS A SUBJECT, SRY"
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Your message cannot be blank."
msgstr "UR MSG NO CAN B BLANK, SRY"
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Your email was successfully queued for sending."
msgstr "YAYYY!1!! SUCCESS!1! UR EMAIL WUZ QUEUD 4 SENDIN!!1!"
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"You are about to send an email titled '<%= subject %>' to yourself. Is this "
"OK?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"You are about to send an email titled '<%= subject %>' to everyone who is "
"staff or instructor on this course. Is this OK?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"You are about to send an email titled '<%= subject %>' to ALL (everyone who "
"is enrolled in this course as student, staff, or instructor). Is this OK?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"Your email was successfully queued for sending. Please note that for large "
"classes, it may take up to an hour (or more, if other courses are "
"simultaneously sending email) to send all emails."
msgstr ""
"YAYYY!1!! SUCCESS!1! UR EMAIL WUZ QUEUD 4 SENDIN!!1! PLZ NOTE DAT 4 LARGE "
"CLASSEZ, IT CULD TAKE UP 2 AN HOUR (OR MOAR, IF ODDER COURSEZ R SENDIN EMAIL"
" AT TEH SAME TYME) 2 SEND ALL TEH EMAILS."
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Error sending email."
msgstr "O NOES!!1! THAR WUZ ERROR SENDIN TEH EMAIL D:"
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "There is no email history for this course."
msgstr "THAR IZ NO EMAIL HIZTORI 4 DIS COURSE D: SRY!1!"
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "There was an error obtaining email task history for this course."
msgstr "THAR WUZ ERROR OBTANIN EMAIL TASK HISTORI 4 DIS COURSE D: SRY!1!"
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Please enter a student email address or username."
msgstr "PLZ ENTER A STUDENT EMAIL ADDRESS OR USRNAYM"
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error getting student progress url for '<%= student_id %>'. Make sure that "
"the student identifier is spelled correctly."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Please enter a problem location."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Success! Problem attempts reset for problem '<%= problem_id %>' and student "
"'<%= student_id %>'."
msgstr ""
"YAYYY!1!! SUCCESS!1! PROBLM ATTEMPTZ WUZ RESET 4 PROBLM '<%= problem_id %>' "
"AN STUDYNT '<%= student_id %>'."
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error resetting problem attempts for problem '<%= problem_id %>' and student"
" '<%= student_id %>'. Make sure that the problem and student identifiers are"
" complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Delete student '<%= student_id %>'s state on problem '<%= problem_id %>'?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error deleting student '<%= student_id %>'s state on problem '<%= problem_id"
" %>'. Make sure that the problem and student identifiers are complete and "
"correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Module state successfully deleted."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Started rescore problem task for problem '<%= problem_id %>' and student "
"'<%= student_id %>'. Click the 'Show Background Task History for Student' "
"button to see the status of the task."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error starting a task to rescore problem '<%= problem_id %>' for student "
"'<%= student_id %>'. Make sure that the the problem and student identifiers "
"are complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error getting task history for problem '<%= problem_id %>' and student '<%= "
"student_id %>'. Make sure that the problem and student identifiers are "
"complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Reset attempts for all students on problem '<%= problem_id %>'?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Successfully started task to reset attempts for problem '<%= problem_id %>'."
" Click the 'Show Background Task History for Problem' button to see the "
"status of the task."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error starting a task to reset attempts for all students on problem '<%= "
"problem_id %>'. Make sure that the problem identifier is complete and "
"correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Rescore problem '<%= problem_id %>' for all students?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Successfully started task to rescore problem '<%= problem_id %>' for all "
"students. Click the 'Show Background Task History for Problem' button to see"
" the status of the task."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error starting a task to rescore problem '<%= problem_id %>'. Make sure that"
" the problem identifier is complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Error listing task history for this student and problem."
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task Type"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task inputs"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task ID"
msgstr ""
#. Translators: a "Requester" is a username that requested a task such as
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Requester"
msgstr ""
#. Translators: A timestamp of when a task (eg, sending email) was submitted
#. appears after this
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Submitted"
msgstr "SUBMITTD"
#. Translators: The length of a task (eg, sending email) in seconds appears
#. this
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Duration (sec)"
msgstr ""
#. Translators: The state (eg, "In progress") of a task (eg, sending email)
#. appears after this.
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "State"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task Status"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task Progress"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Grades saved. Fetching the next submission to grade."
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Problem Name"
msgstr "PROBLM NAYM"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Graded"
msgstr "GRADYD"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Available to Grade"
msgstr "AVAILABL 2 GRADE"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Required"
msgstr "REQUIRD"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Progress"
msgstr "PROGRES"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Back to problem list"
msgstr "BAK 2 PROBLM LIST"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Try loading again"
msgstr "O HAI, U CAN PLZ TRI LOADIN AGAIN?! KTHX"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "<%= num %> available "
msgstr "<%= num %> AVAILABL"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "<%= num %> graded "
msgstr "<%= num %> GRADYD"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "<%= num %> more needed to start ML"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Re-check for submissions"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "System got into invalid state: <%= state %>"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "System got into invalid state for submission: "
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "(Hide)"
msgstr "(HIDE)"
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "(Show)"
msgstr "(SHOW)"
#: lms/static/js/Markdown.Editor.js
msgid "Insert Hyperlink"
msgstr ""
#. Translators: Please keep the quotation marks (") around this text
#: lms/static/js/Markdown.Editor.js lms/static/js/Markdown.Editor.js.c
msgid "\"optional title\""
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Insert Image (upload file or type url)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Markdown Editing Help"
msgstr "MARKDOWN EDITIN HALP!11!!1! IF U NEEDZ IT!1!"
#: lms/static/js/Markdown.Editor.js
msgid "Bold (Ctrl+B)"
msgstr "BOLD IZ (CTRL+B)"
#: lms/static/js/Markdown.Editor.js
msgid "Italic (Ctrl+I)"
msgstr "ITALICZ IS (CTRL+I)"
#: lms/static/js/Markdown.Editor.js
msgid "Hyperlink (Ctrl+L)"
msgstr "HYPR LINK IZ (CTRL+L)"
#: lms/static/js/Markdown.Editor.js
msgid "Blockquote (Ctrl+Q)"
msgstr "BLOCKQUOTE IZ (CTRL+Q)"
#: lms/static/js/Markdown.Editor.js
msgid "Code Sample (Ctrl+K)"
msgstr "CODE SAMPL IZ (CTRL+K)"
#: lms/static/js/Markdown.Editor.js
msgid "Image (Ctrl+G)"
msgstr "IMAGE IZ (CTRL+G)"
#: lms/static/js/Markdown.Editor.js
msgid "Numbered List (Ctrl+O)"
msgstr "NUMBRD LYST IZ (CTRL+O)"
#: lms/static/js/Markdown.Editor.js
msgid "Bulleted List (Ctrl+U)"
msgstr "BULLETD LYST IZ (CTRL+U)"
#: lms/static/js/Markdown.Editor.js
msgid "Heading (Ctrl+H)"
msgstr "HEADIN IZ (CTRL+H)"
#: lms/static/js/Markdown.Editor.js
msgid "Horizontal Rule (Ctrl+R)"
msgstr "HORYZONTEL RULE IZ (CTRL+R)"
#: lms/static/js/Markdown.Editor.js
msgid "Undo (Ctrl+Z)"
msgstr "UNDU IZ (CTRL+Z)"
#: lms/static/js/Markdown.Editor.js
msgid "Redo (Ctrl+Y)"
msgstr "REDU IZ (CTRL+Y)"
#: lms/static/js/Markdown.Editor.js
msgid "Redo (Ctrl+Shift+Z)"
msgstr "REDU IZ (CTRL+SHYFT+Z)"
#: lms/static/js/Markdown.Editor.js
msgid "strong text"
msgstr "STRONG TXT"
#: lms/static/js/Markdown.Editor.js
msgid "emphasized text"
msgstr "EMPHYSIZD TXT"
#: lms/static/js/Markdown.Editor.js
msgid "enter image description here"
msgstr "ENTR IMG DESCRYPSHUN HERE"
#: lms/static/js/Markdown.Editor.js
msgid "enter link description here"
msgstr "ENTR LYNK DESCRYPSHUN HERE"
#: lms/static/js/Markdown.Editor.js
msgid "Blockquote"
msgstr "BLOCKQUOTE"
#: lms/static/js/Markdown.Editor.js lms/static/js/Markdown.Editor.js
msgid "enter code here"
msgstr "ENTR CODE HERE"
#: lms/static/js/Markdown.Editor.js
msgid "List item"
msgstr "LYST ITEM"
#: lms/static/js/Markdown.Editor.js
msgid "Heading"
msgstr "HEADIN"
#: lms/static/js/staff_debug_actions.js
msgid "Unknown Error Occurred."
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Successfully reset the attempts for user {user}"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Failed to reset attempts."
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Successfully deleted student state for user {user}"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Failed to delete student state."
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Successfully rescored problem for user {user}"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Failed to rescore problem."
msgstr ""
#: lms/templates/class_dashboard/all_section_metrics.js
#: lms/templates/class_dashboard/all_section_metrics.js
msgid "Unable to retrieve data, please try again later."
msgstr ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "%(num_students)s student opened Subsection"
msgid_plural "%(num_students)s students opened Subsection"
msgstr[0] ""
msgstr[1] ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "%(num_students)s student"
msgid_plural "%(num_students)s students"
msgstr[0] ""
msgstr[1] ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "%(num_questions)s question"
msgid_plural "%(num_questions)s questions"
msgstr[0] ""
msgstr[1] ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "Number of Students"
msgstr ""
#: cms/static/coffee/src/main.js
msgid ""
"This may be happening because of an error with our server or your internet "
"connection. Try refreshing the page or making sure you are online."
msgstr ""
#: cms/static/coffee/src/main.js
msgid "Studio's having trouble saving your work"
msgstr ""
#: cms/static/coffee/src/views/tabs.js cms/static/coffee/src/views/tabs.js
#: cms/static/coffee/src/views/unit.js
#: cms/static/coffee/src/xblock/cms.runtime.v1.js
#: cms/static/js/models/section.js cms/static/js/utils/drag_and_drop.js
#: cms/static/js/views/asset.js cms/static/js/views/container.js
#: cms/static/js/views/course_info_handout.js
#: cms/static/js/views/course_info_update.js cms/static/js/views/overview.js
#: cms/static/js/views/xblock_editor.js
msgid "Saving&hellip;"
msgstr ""
#: cms/static/coffee/src/views/tabs.js
msgid "Delete Page Confirmation"
msgstr ""
#: cms/static/coffee/src/views/tabs.js
msgid ""
"Are you sure you want to delete this page? This action cannot be undone."
msgstr ""
#: cms/static/coffee/src/views/tabs.js cms/static/coffee/src/views/unit.js
#: cms/static/js/base.js cms/static/js/views/course_info_update.js
#: cms/static/js/views/pages/container.js
msgid "Deleting&hellip;"
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Duplicating&hellip;"
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Delete this component?"
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Deleting this component is permanent and cannot be undone."
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Yes, delete this component"
msgstr ""
#: cms/static/js/base.js
msgid "This link will open in a modal window"
msgstr ""
#: cms/static/js/base.js
msgid "Delete this "
msgstr ""
#: cms/static/js/base.js
msgid "Deleting this "
msgstr ""
#: cms/static/js/base.js
msgid "Yes, delete this "
msgstr ""
#: cms/static/js/index.js
msgid "Please do not use any spaces in this field."
msgstr ""
#: cms/static/js/index.js
msgid "Please do not use any spaces or special characters in this field."
msgstr ""
#: cms/static/js/index.js
msgid ""
"The combined length of the organization, course number, and course run "
"fields cannot be more than 65 characters."
msgstr ""
#: cms/static/js/index.js
msgid "Required field."
msgstr ""
#: cms/static/js/sock.js
msgid "Hide Studio Help"
msgstr ""
#: cms/static/js/sock.js
msgid "Looking for Help with Studio?"
msgstr ""
#: cms/static/js/models/course.js cms/static/js/models/section.js
msgid "You must specify a name"
msgstr ""
#: cms/static/js/models/uploads.js
msgid ""
"Only <%= fileTypes %> files can be uploaded. Please select a file ending in "
"<%= fileExtensions %> to upload."
msgstr ""
#: cms/static/js/models/uploads.js
msgid "or"
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The course must have an assigned start date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The course end date cannot be before the course start date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The course start date cannot be before the enrollment start date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The enrollment start date cannot be after the enrollment end date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The enrollment end date cannot be after the course end date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "Key should only contain letters, numbers, _, or -"
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "There's already another assignment type with this name."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Please enter an integer between 0 and 100."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Please enter an integer greater than 0."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Please enter non-negative integer."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Cannot drop more <% attrs.types %> than will assigned."
msgstr ""
#: cms/static/js/models/settings/course_grading_policy.js
msgid "Grace period must be specified in HH:MM format."
msgstr ""
#: cms/static/js/views/asset.js
msgid "Delete File Confirmation"
msgstr ""
#: cms/static/js/views/asset.js
msgid ""
"Are you sure you wish to delete this item. It cannot be reversed!\n"
"\n"
"Also any content that links/refers to this item will no longer work (e.g. broken images and/or links)"
msgstr ""
#: cms/static/js/views/asset.js
msgid "Your file has been deleted."
msgstr ""
#: cms/static/js/views/assets.js cms/templates/js/asset-library.underscore
msgid "Name"
msgstr ""
#: cms/static/js/views/assets.js cms/templates/js/asset-library.underscore
msgid "Date Added"
msgstr ""
#: cms/static/js/views/assets.js
msgid "Uploading…"
msgstr ""
#: cms/static/js/views/assets.js
#: cms/templates/js/asset-upload-modal.underscore
msgid "Choose File"
msgstr ""
#: cms/static/js/views/assets.js
#: cms/templates/js/asset-upload-modal.underscore
msgid "Upload New File"
msgstr ""
#: cms/static/js/views/assets.js
msgid "Load Another File"
msgstr ""
#: cms/static/js/views/course_info_update.js
msgid "Are you sure you want to delete this update?"
msgstr ""
#: cms/static/js/views/course_info_update.js
msgid "This action cannot be undone."
msgstr ""
#: cms/static/js/views/edit_chapter.js
msgid "Upload a new PDF to “<%= name %>”"
msgstr ""
#: cms/static/js/views/edit_chapter.js
msgid "Please select a PDF file to upload."
msgstr ""
#: cms/static/js/views/edit_textbook.js
#: cms/static/js/views/overview_assignment_grader.js
msgid "Saving"
msgstr ""
#: cms/static/js/views/import.js
msgid "There was an error with the upload"
msgstr ""
#: cms/static/js/views/import.js
msgid ""
"File format not supported. Please upload a file with a <code>tar.gz</code> "
"extension."
msgstr ""
#: cms/static/js/views/metadata.js
msgid "Upload File"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Collapse All Sections"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Expand All Sections"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Release date:"
msgstr ""
#: cms/static/js/views/overview.js
msgid "{month}/{day}/{year} at {hour}:{minute} UTC"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Edit section release date"
msgstr ""
#: cms/static/js/views/overview_assignment_grader.js
msgid "Not Graded"
msgstr ""
#. Translators: sample result: "Showing 0-9 out of 25 total, sorted by Date
#. Added ascending"
#: cms/static/js/views/paging_header.js
msgid ""
"Showing %(current_item_range)s out of %(total_items_count)s, sorted by "
"%(sort_name)s ascending"
msgstr ""
#. Translators: sample result: "Showing 0-9 out of 25 total, sorted by Date
#. Added descending"
#: cms/static/js/views/paging_header.js
msgid ""
"Showing %(current_item_range)s out of %(total_items_count)s, sorted by "
"%(sort_name)s descending"
msgstr ""
#. Translators: turns into "25 total" to be used in other sentences, e.g.
#. "Showing 0-9 out of 25 total".
#: cms/static/js/views/paging_header.js
msgid "%(total_items)s total"
msgstr ""
#: cms/static/js/views/section_edit.js
msgid "Your change could not be saved"
msgstr ""
#: cms/static/js/views/section_edit.js
msgid "Return and resolve this issue"
msgstr ""
#: cms/static/js/views/show_textbook.js
msgid "Delete “<%= name %>”?"
msgstr ""
#: cms/static/js/views/show_textbook.js
msgid ""
"Deleting a textbook cannot be undone and once deleted any reference to it in"
" your courseware's navigation will also be removed."
msgstr ""
#: cms/static/js/views/show_textbook.js
msgid "Deleting"
msgstr ""
#: cms/static/js/views/uploads.js
#: cms/templates/js/metadata-file-uploader-item.underscore
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Upload"
msgstr ""
#: cms/static/js/views/uploads.js
msgid "We're sorry, there was an error"
msgstr ""
#: cms/static/js/views/validation.js
msgid "You've made some changes"
msgstr ""
#: cms/static/js/views/validation.js
msgid "Your changes will not take effect until you save your progress."
msgstr ""
#: cms/static/js/views/validation.js
msgid "You've made some changes, but there are some errors"
msgstr ""
#: cms/static/js/views/validation.js
msgid ""
"Please address the errors on this page first, and then save your progress."
msgstr ""
#: cms/static/js/views/validation.js
msgid "Save Changes"
msgstr ""
#: cms/static/js/views/validation.js
msgid "Your changes have been saved."
msgstr ""
#: cms/static/js/views/xblock_editor.js
msgid "Editor"
msgstr ""
#: cms/static/js/views/xblock_editor.js
msgid "Settings"
msgstr ""
#: cms/static/js/views/components/add_xblock.js
msgid "Adding&hellip;"
msgstr ""
#: cms/static/js/views/modals/base_modal.js
#: cms/templates/js/edit-textbook.underscore
#: cms/templates/js/section-name-edit.underscore
msgid "Save"
msgstr ""
#: cms/static/js/views/modals/edit_xblock.js
msgid "Component"
msgstr ""
#: cms/static/js/views/modals/edit_xblock.js
msgid "Editing: %(title)s"
msgstr ""
#: cms/static/js/views/settings/advanced.js
msgid ""
"Your changes will not take effect until you save your progress. Take care "
"with key and value formatting, as validation is not implemented."
msgstr ""
#: cms/static/js/views/settings/advanced.js
msgid "Your policy changes have been saved."
msgstr ""
#: cms/static/js/views/settings/advanced.js
msgid ""
"Please note that validation of your policy key and value pairs is not "
"currently in place yet. If you are having difficulties, please review your "
"policy pairs."
msgstr ""
#: cms/static/js/views/settings/main.js
msgid "Upload your course image."
msgstr ""
#: cms/static/js/views/settings/main.js
msgid "Files must be in JPEG or PNG format."
msgstr ""
#: cms/static/js/views/video/translations_editor.js
msgid ""
"Sorry, there was an error parsing the subtitles that you uploaded. Please "
"check the format and try again."
msgstr ""
#: cms/static/js/views/video/translations_editor.js
msgid "Upload translation"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Fullscreen"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Large"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Zoom In"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Zoom Out"
msgstr ""
#: cms/templates/js/add-xblock-component-menu-problem.underscore
msgid "Common Problem Types"
msgstr ""
#: cms/templates/js/add-xblock-component-menu-problem.underscore
msgid "Advanced"
msgstr ""
#: cms/templates/js/add-xblock-component.underscore
msgid "Add New Component"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "List of uploaded files and assets in this course"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "Embed URL"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "External URL"
msgstr ""
#: cms/templates/js/asset-library.underscore
#: cms/templates/js/basic-modal.underscore
msgid "Actions"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "You haven't added any assets to this course yet."
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "Upload your first asset"
msgstr ""
#: cms/templates/js/asset-upload-modal.underscore
msgid "close"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Open/download this file"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Delete this asset"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Lock this asset"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Lock/unlock file"
msgstr ""
#: cms/templates/js/checklist.underscore
msgid "{number}% of checklists completed"
msgstr ""
#: cms/templates/js/checklist.underscore
msgid "Tasks Completed:"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Assignment Type Name"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "e.g. Homework, Midterm Exams"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Abbreviation"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "e.g. HW, Midterm"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Weight of Total Grade"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "as a percent, e.g. 40"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Total Number"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "total exercises assigned"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Number of Droppable"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "total exercises that won't be graded"
msgstr ""
#: cms/templates/js/course_info_handouts.underscore
msgid "You have no handouts defined"
msgstr ""
#: cms/templates/js/course_info_handouts.underscore
msgid ""
"There is invalid code in your content. Please check to make sure it is valid"
" HTML."
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Chapter Name"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Chapter %s"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "provide the title/name of the chapter that will be used in navigating"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Chapter Asset"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "path/to/introductionToCookieBaking-CH%d.pdf"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "upload a PDF file or provide the path to a Studio asset file"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Upload PDF"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "delete chapter"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "error.message"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Textbook information"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Textbook Name"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Introduction to Cookie Baking"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid ""
"provide the title/name of the text book as you would like your students to "
"see it"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Chapter information"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Add a Chapter"
msgstr ""
#: cms/templates/js/metadata-dict-entry.underscore
#: cms/templates/js/metadata-list-entry.underscore
#: cms/templates/js/video/metadata-translations-entry.underscore
msgid "Add"
msgstr ""
#: cms/templates/js/metadata-dict-entry.underscore
#: cms/templates/js/metadata-file-uploader-entry.underscore
#: cms/templates/js/metadata-list-entry.underscore
#: cms/templates/js/metadata-number-entry.underscore
#: cms/templates/js/metadata-option-entry.underscore
#: cms/templates/js/metadata-string-entry.underscore
#: cms/templates/js/mock/mock-xmodule-editor.underscore
#: cms/templates/js/mock/mock-xmodule-settings-only-editor.underscore
#: cms/templates/js/video/metadata-translations-entry.underscore
msgid "Clear Value"
msgstr ""
#: cms/templates/js/metadata-file-uploader-item.underscore
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Replace"
msgstr ""
#: cms/templates/js/metadata-file-uploader-item.underscore
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Download"
msgstr ""
#: cms/templates/js/no-textbooks.underscore
msgid "You haven't added any textbooks to this course yet."
msgstr ""
#: cms/templates/js/no-textbooks.underscore
msgid "Add your first textbook"
msgstr ""
#: cms/templates/js/paging-footer.underscore
#: cms/templates/js/paging-header.underscore
msgid "Previous"
msgstr ""
#: cms/templates/js/paging-footer.underscore
msgid "Page number"
msgstr ""
#: cms/templates/js/paging-footer.underscore
#: cms/templates/js/paging-header.underscore
msgid "Next"
msgstr ""
#: cms/templates/js/show-textbook.underscore
msgid "View Live"
msgstr ""
#: cms/templates/js/upload-dialog.underscore
msgid "File upload succeeded"
msgstr ""
#: cms/templates/js/video/transcripts/metadata-videolist-entry.underscore
msgid "Add URLs for additional versions"
msgstr ""
#: cms/templates/js/video/transcripts/metadata-videolist-entry.underscore
msgid ""
"To be sure all students can access the video, we recommend providing both an"
" .mp4 and a .webm version of your video. Click below to add a URL for "
"another version. These URLs cannot be YouTube URLs. The first listed video "
"that\\'s compatible with the student\\'s computer will play."
msgstr ""
#: cms/templates/js/video/transcripts/metadata-videolist-entry.underscore
msgid "Default Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid "Timed Transcript Conflict"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
msgid ""
"The timed transcript for the first video file does not appear to be the same"
" as the timed transcript for the second video file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
msgid "Which timed transcript would you like to use?"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Error."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
msgid "Timed Transcript from"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
msgid "Timed Transcript Found"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
msgid ""
"EdX has a timed transcript for this video. If you want to edit this "
"transcript, you can download, edit, and re-upload the existing transcript. "
"If you want to replace this transcript, upload a new .srt transcript file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Upload New Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid "Upload New .srt Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
msgid "Download Transcript for Editing"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid "No EdX Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid ""
"EdX doesn\\'t have a timed transcript for this video in Studio, but we found"
" a transcript on YouTube. You can import the YouTube transcript or upload "
"your own .srt transcript file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid "Import YouTube Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
msgid "No Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
msgid ""
"EdX doesn\\'t have a timed transcript for this video. Please upload an .srt "
"file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid ""
"The timed transcript for this video on edX is out of date, but YouTube has a"
" current timed transcript for this video."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid "Do you want to replace the edX transcript with the YouTube transcript?"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid "Yes, replace the edX transcript with the YouTube transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
msgid "Timed Transcript Uploaded Successfully"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
msgid ""
"EdX has a timed transcript for this video. If you want to replace this "
"transcript, upload a new .srt transcript file. If you want to edit this "
"transcript, you can download, edit, and re-upload the existing transcript."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Confirm Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid ""
"You changed a video URL, but did not change the timed transcript file. Do "
"you want to use the current timed transcript or upload a new .srt transcript"
" file?"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Use Current Transcript"
msgstr ""
This source diff could not be displayed because it is too large. You can view the blob instead.
# #-#-#-#-# djangojs-partial.po (edx-platform) #-#-#-#-#
# edX community translations have been downloaded from Pirate English (http://www.transifex.com/projects/p/edx-platform/language/en@pirate/).
# Copyright (C) 2014 EdX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
# David Baumgold <david@davidbaumgold.com>, 2014
# dkh <dkh@edx.org>, 2014
# #-#-#-#-# djangojs-studio.po (edx-platform) #-#-#-#-#
# edX translation file.
# Copyright (C) 2014 EdX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
# #-#-#-#-# underscore.po (edx-platform) #-#-#-#-#
# edX translation file
# Copyright (C) 2014 edX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
# #-#-#-#-# underscore-studio.po (edx-platform) #-#-#-#-#
# edX translation file
# Copyright (C) 2014 edX
# This file is distributed under the GNU AFFERO GENERAL PUBLIC LICENSE.
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: edx-platform\n"
"Report-Msgid-Bugs-To: openedx-translation@googlegroups.com\n"
"POT-Creation-Date: 2014-06-19 00:15-0400\n"
"PO-Revision-Date: 2014-06-19 04:17+0000\n"
"Last-Translator: Sarina Canelake <sarina@edx.org>\n"
"Language-Team: Pirate English (http://www.transifex.com/projects/p/edx-platform/language/en@pirate/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 1.3\n"
"Language: en@pirate\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: cms/static/coffee/src/views/tabs.js
#: cms/static/js/views/course_info_update.js
#: cms/static/js/views/modals/edit_xblock.js
#: common/static/coffee/src/discussion/utils.js
msgid "OK"
msgstr ""
#: cms/static/coffee/src/views/tabs.js cms/static/js/base.js
#: cms/static/js/views/asset.js cms/static/js/views/baseview.js
#: cms/static/js/views/course_info_update.js
#: cms/static/js/views/show_textbook.js cms/static/js/views/validation.js
#: cms/static/js/views/modals/base_modal.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Cancel"
msgstr "Belay"
#: cms/static/js/base.js lms/static/js/verify_student/photocapture.js
#: cms/templates/js/checklist.underscore
msgid "This link will open in a new browser window/tab"
msgstr ""
#: cms/static/js/views/asset.js cms/static/js/views/show_textbook.js
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
#: cms/templates/js/course_grade_policy.underscore
#: cms/templates/js/show-textbook.underscore
msgid "Delete"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Show Annotations"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Hide Annotations"
msgstr "Hide Ye Annotations"
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Expand Instructions"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Collapse Instructions"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Commentary"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/annotatable/display.js
msgid "Reply to Annotation"
msgstr ""
#. Translators: %(earned)s is the number of points earned. %(total)s is the
#. total number of points (examples: 0/1, 1/1, 2/3, 5/10). The total number of
#. points will always be at least 1. We pluralize based on the total number of
#. points (example: 0/1 point; 1/2 points);
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "(%(earned)s/%(possible)s point)"
msgid_plural "(%(earned)s/%(possible)s points)"
msgstr[0] ""
msgstr[1] ""
#. Translators: %(num_points)s is the number of points possible (examples: 1,
#. 3, 10). There will always be at least 1 point possible.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "(%(num_points)s point possible)"
msgid_plural "(%(num_points)s points possible)"
msgstr[0] ""
msgstr[1] ""
#: common/lib/xmodule/xmodule/js/src/capa/display.js
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Answer:"
msgstr ""
#. Translators: the word Answer here refers to the answer to a problem the
#. student must solve.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Hide Answer"
msgstr ""
#. Translators: the word Answer here refers to the answer to a problem the
#. student must solve.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Show Answer"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Reveal Answer"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Answer hidden"
msgstr ""
#. Translators: the word unanswered here is about answering a problem the
#. student must solve.;
#: common/lib/xmodule/xmodule/js/src/capa/display.js
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "unanswered"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/capa/display.js
msgid "Status: unsubmitted"
msgstr ""
#. Translators: A "rating" is a score a student gives to indicate how well
#. they feel they were graded on this problem
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "You need to pick a rating before you can submit."
msgstr ""
#. Translators: this message appears when transitioning between openended
#. grading
#. types (i.e. self assesment to peer assessment). Sometimes, if a student
#. did not perform well at one step, they cannot move on to the next one.
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Your score did not meet the criteria to move to the next step."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Submit"
msgstr ""
#. Translators: one clicks this button after one has finished filling out the
#. grading
#. form for an openended assessment
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Submit assessment"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"Your response has been submitted. Please check back later for your grade."
msgstr ""
#. Translators: this button is clicked to submit a student's rating of
#. an evaluator's assessment
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Submit post-assessment"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Answer saved, but not yet submitted."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"Please confirm that you wish to submit your work. You will not be able to "
"make any changes after submitting."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"You are trying to upload a file that is too large for our system. Please "
"choose a file under 2MB or paste a link to it into the answer box."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"Are you sure you want to remove your previous response to this question?"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Moved to next step."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid ""
"File uploads are required for this question, but are not supported in your "
"browser. Try the newest version of Google Chrome. Alternatively, if you have"
" uploaded the image to another website, you can paste a link to it into the "
"answer box."
msgstr ""
#. Translators: "Show Question" is some text that, when clicked, shows a
#. question's
#. content that had been hidden
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Show Question"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
#: common/lib/xmodule/xmodule/js/src/combinedopenended/display.js
msgid "Hide Question"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/sequence/display.js
msgid ""
"Sequence error! Cannot navigate to tab %(tab_name)s in the current "
"SequenceModule. Please contact the course staff."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Volume"
msgstr ""
#. Translators: Volume level equals 0%.
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Muted"
msgstr ""
#. Translators: Volume level in range ]0,20]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Very low"
msgstr ""
#. Translators: Volume level in range ]20,40]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Low"
msgstr ""
#. Translators: Volume level in range ]40,60]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Average"
msgstr ""
#. Translators: Volume level in range ]60,80]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Loud"
msgstr ""
#. Translators: Volume level in range ]80,99]%
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Very loud"
msgstr ""
#. Translators: Volume level equals 100%.
#: common/lib/xmodule/xmodule/js/src/video/00_i18n.js
msgid "Maximum"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/02_html5_video.js
msgid ""
"VideoPlayer: Element corresponding to the given selector was not found."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/02_html5_video.js
msgid "This browser cannot play .mp4, .ogg, or .webm files."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/02_html5_video.js
msgid "Try using a different browser, such as Google Chrome."
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Video slider"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Pause"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Play"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Fill browser"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/04_video_control.js
msgid "Exit full browser"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/05_video_quality_control.js
msgid "HD on"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/05_video_quality_control.js
msgid "HD off"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "Video position"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "Video ended"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "%(value)s hour"
msgid_plural "%(value)s hours"
msgstr[0] ""
msgstr[1] ""
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "%(value)s minute"
msgid_plural "%(value)s minutes"
msgstr[0] ""
msgstr[1] ""
#: common/lib/xmodule/xmodule/js/src/video/06_video_progress_slider.js
msgid "%(value)s second"
msgid_plural "%(value)s seconds"
msgstr[0] ""
msgstr[1] ""
#: common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
msgid "Caption will be displayed when "
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
msgid "Turn on captions"
msgstr ""
#: common/lib/xmodule/xmodule/js/src/video/09_video_caption.js
msgid "Turn off captions"
msgstr ""
#: common/static/coffee/src/discussion/discussion_module_view.js
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid "Hide Discussion"
msgstr ""
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid "Show Discussion"
msgstr ""
#: common/static/coffee/src/discussion/discussion_module_view.js
#: common/static/coffee/src/discussion/discussion_module_view.js
#: common/static/coffee/src/discussion/utils.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
#: common/static/coffee/src/discussion/views/discussion_user_profile_view.js
#: common/static/coffee/src/discussion/views/response_comment_view.js
msgid "Sorry"
msgstr ""
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid "We had some trouble loading the discussion. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/discussion_module_view.js
msgid ""
"We had some trouble loading the threads you requested. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/utils.js
msgid "Loading content"
msgstr ""
#: common/static/coffee/src/discussion/utils.js
msgid ""
"We had some trouble processing your request. Please ensure you have copied "
"any unsaved work and then reload the page."
msgstr ""
#: common/static/coffee/src/discussion/utils.js
msgid "We had some trouble processing your request. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/utils.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
#: common/static/coffee/src/discussion/views/new_post_view.js
#: common/static/coffee/src/discussion/views/new_post_view.js
#: common/static/coffee/src/discussion/views/new_post_view.js
msgid "…"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
#: common/static/coffee/src/discussion/views/discussion_content_view.js
#: common/templates/js/image-modal.underscore
msgid "Close"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "Open"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "remove vote"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "vote"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "vote (click to remove your vote)"
msgid_plural "votes (click to remove your vote)"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_content_view.js
msgid "vote (click to vote)"
msgid_plural "votes (click to vote)"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "Load more"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "Loading more threads"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "We had some trouble loading more threads. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "%(unread_count)s new comment"
msgid_plural "%(unread_count)s new comments"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid "Loading thread list"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_list_view.js
msgid ""
"No results found for %(original_query)s. Showing results for "
"%(suggested_query)s."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Click to remove report"
msgstr ""
#. Translators: The text between start_sr_span and end_span is not shown
#. in most browsers but will be read by screen readers.
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Misuse Reported%(start_sr_span)s, click to remove report%(end_span)s"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Report Misuse"
msgstr ""
#. Translators: The text between start_sr_span and end_span is not shown
#. in most browsers but will be read by screen readers.
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Pinned%(start_sr_span)s, click to unpin%(end_span)s"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Click to unpin"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Pinned"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_show_view.js
msgid "Pin Thread"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid ""
"The thread you selected has been deleted. Please select another thread."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "We had some trouble loading responses. Please reload the page."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "We had some trouble loading more responses. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "%(numResponses)s response"
msgid_plural "%(numResponses)s responses"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Showing all responses"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Showing first response"
msgid_plural "Showing first %(numResponses)s responses"
msgstr[0] ""
msgstr[1] ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Load all responses"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Load next %(numResponses)s responses"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_thread_view.js
msgid "Are you sure you want to delete this post?"
msgstr ""
#: common/static/coffee/src/discussion/views/discussion_user_profile_view.js
msgid "We had some trouble loading the page you requested. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
msgid "anonymous"
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "staff"
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Community TA"
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/response_comment_show_view.js
#: common/static/coffee/src/discussion/views/thread_response_show_view.js
msgid "Misuse Reported, click to remove report"
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_view.js
msgid "Are you sure you want to delete this comment?"
msgstr ""
#: common/static/coffee/src/discussion/views/response_comment_view.js
msgid "We had some trouble deleting this comment. Please try again."
msgstr ""
#: common/static/coffee/src/discussion/views/thread_response_view.js
msgid "Are you sure you want to delete this response?"
msgstr ""
#: common/static/js/capa/drag_and_drop/base_image.js
msgid "Drop target image"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dragging out of slider"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dragging"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dropped in slider"
msgstr ""
#: common/static/js/capa/drag_and_drop/draggable_events.js
msgid "dropped on target"
msgstr ""
#. Translators: %s will be a time quantity, such as "4 minutes" or "1 day"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%s ago"
msgstr ""
#. Translators: %s will be a time quantity, such as "4 minutes" or "1 day"
#: common/static/js/src/jquery.timeago.locale.js
msgid "%s from now"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "less than a minute"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "about a minute"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d minute"
msgid_plural "%d minutes"
msgstr[0] ""
msgstr[1] ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "about an hour"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "about %d hour"
msgid_plural "about %d hours"
msgstr[0] ""
msgstr[1] ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "a day"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d day"
msgid_plural "%d days"
msgstr[0] ""
msgstr[1] ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "about a month"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d month"
msgid_plural "%d months"
msgstr[0] ""
msgstr[1] ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "about a year"
msgstr ""
#: common/static/js/src/jquery.timeago.locale.js
msgid "%d year"
msgid_plural "%d years"
msgstr[0] ""
msgstr[1] ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "User"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Annotation"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Start"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "End"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "#Replies"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Date posted"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "More"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "My Notes"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Instructor"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Public"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Search"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Users"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Tags"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Annotation Text"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: common/static/js/vendor/ova/catch/js/catch.js
#: cms/templates/js/metadata-dict-entry.underscore
#: cms/templates/js/metadata-file-uploader-entry.underscore
#: cms/templates/js/metadata-list-entry.underscore
#: cms/templates/js/metadata-number-entry.underscore
#: cms/templates/js/metadata-option-entry.underscore
#: cms/templates/js/metadata-string-entry.underscore
#: cms/templates/js/mock/mock-xmodule-editor.underscore
#: cms/templates/js/mock/mock-xmodule-settings-only-editor.underscore
#: cms/templates/js/video/metadata-translations-entry.underscore
msgid "Clear"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Text"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Video"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Image"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Reply"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
#: cms/templates/js/show-textbook.underscore
#: cms/templates/js/mock/mock-container-page.underscore
msgid "Edit"
msgstr ""
#: common/static/js/vendor/ova/catch/js/catch.js
msgid "Tags:"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Available %s"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid ""
"This is the list of available %s. You may choose some by selecting them in "
"the box below and then clicking the \"Choose\" arrow between the two boxes."
msgstr ""
"This be the list o' available %s. Ye may choose some by selecting them in "
"that thar box belowdecks, and then click the \"Be Choosin'\" arrow 'tween "
"the two boxes."
#: lms/static/admin/js/SelectFilter2.js
msgid "Type into this box to filter down the list of available %s."
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Filter"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Choose all"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Click to choose all %s at once."
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Choose"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Remove"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Chosen %s"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid ""
"This is the list of chosen %s. You may remove some by selecting them in the "
"box below and then clicking the \"Remove\" arrow between the two boxes."
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Remove all"
msgstr ""
#: lms/static/admin/js/SelectFilter2.js
msgid "Click to remove all chosen %s at once."
msgstr ""
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid "%(sel)s of %(cnt)s selected"
msgid_plural "%(sel)s of %(cnt)s selected"
msgstr[0] ""
msgstr[1] ""
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid ""
"You have unsaved changes on individual editable fields. If you run an "
"action, your unsaved changes will be lost."
msgstr ""
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid ""
"You have selected an action, but you haven't saved your changes to "
"individual fields yet. Please click OK to save. You'll need to re-run the "
"action."
msgstr ""
#: lms/static/admin/js/actions.js lms/static/admin/js/actions.min.js
msgid ""
"You have selected an action, and you haven't made any changes on individual "
"fields. You're probably looking for the Go button rather than the Save "
"button."
msgstr ""
#. Translators: the names of months, keep the pipe (|) separators.
#: lms/static/admin/js/calendar.js lms/static/admin/js/dateparse.js
msgid ""
"January|February|March|April|May|June|July|August|September|October|November|December"
msgstr ""
#. Translators: abbreviations for days of the week, keep the pipe (|)
#. separators.
#: lms/static/admin/js/calendar.js
msgid "S|M|T|W|T|F|S"
msgstr ""
#: lms/static/admin/js/collapse.js lms/static/admin/js/collapse.js.c
#: lms/static/admin/js/collapse.min.js
msgid "Show"
msgstr ""
#: lms/static/admin/js/collapse.js lms/static/admin/js/collapse.min.js
msgid "Hide"
msgstr ""
#. Translators: the names of days, keep the pipe (|) separators.
#: lms/static/admin/js/dateparse.js
msgid "Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Now"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Clock"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Choose a time"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Midnight"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "6 a.m."
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Noon"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Today"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Calendar"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Yesterday"
msgstr ""
#: lms/static/admin/js/admin/DateTimeShortcuts.js
msgid "Tomorrow"
msgstr ""
#: lms/static/coffee/src/calculator.js
msgid "Open Calculator"
msgstr "Be Openin' yer Electric Abacus"
#: lms/static/coffee/src/calculator.js
msgid "Close Calculator"
msgstr ""
#: lms/static/coffee/src/customwmd.js
#: cms/templates/js/asset-library.underscore
msgid "Preview"
msgstr ""
#: lms/static/coffee/src/customwmd.js
msgid "Post body"
msgstr ""
#. Translators: "Distribution" refers to a grade distribution. This error
#. message appears when there is an error getting the data on grade
#. distribution.;
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Error fetching distribution."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Unavailable metric display."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Error fetching grade distributions."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "Last Updated: <%= timestamp %>"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/analytics.js
msgid "<%= num_students %> students scored."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Loading..."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Error getting student list."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Error retrieving grading configuration."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "Error generating grades. Please try again."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid "File Name"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/data_download.js
msgid ""
"Links are generated on demand and expire within 5 minutes due to the "
"sensitive nature of student information."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Username"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Email"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Revoke access"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Enter username or email"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Please enter a username or email."
msgstr ""
#. Translators: A rolename appears this sentence. A rolename is something like
#. "staff" or "beta tester".;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error fetching list for role"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error changing user's permissions."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Could not find a user with username or email address '<%= identifier %>'."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Error: User '<%= username %>' has not yet activated their account. Users "
"must create and activate their accounts before they can be assigned a role."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error: You cannot remove yourself from the Instructor group!"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error adding/removing users as beta testers."
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were successfully added as beta testers:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were successfully removed as beta testers:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were not added as beta testers:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users were not removed as beta testers:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Users must create and activate their account before they can be promoted to "
"beta tester."
msgstr ""
#. Translators: A list of identifiers (which are email addresses and/or
#. usernames) appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Could not find users associated with the following identifiers:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Error enrolling/unenrolling users."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "The following email addresses and/or usernames are invalid:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Successfully enrolled and sent email to the following users:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "Successfully enrolled the following users:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Successfully sent enrollment emails to the following users. They will be "
"allowed to enroll once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users will be allowed to enroll once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Successfully sent enrollment emails to the following users. They will be "
"enrolled once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "These users will be enrolled once they register:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"Emails successfully sent. The following users are no longer enrolled in the "
"course:"
msgstr ""
#. Translators: A list of users appears after this sentence;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid "The following users are no longer enrolled in the course:"
msgstr ""
#. Translators: A list of users appears after this sentence. This situation
#. arises when a staff member tries to unenroll a user who is not currently
#. enrolled in this course.;
#: lms/static/coffee/src/instructor_dashboard/membership.js
msgid ""
"These users were not affiliated with the course so could not be unenrolled:"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Your message must have a subject."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Your message cannot be blank."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Your email was successfully queued for sending."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"You are about to send an email titled '<%= subject %>' to yourself. Is this "
"OK?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"You are about to send an email titled '<%= subject %>' to everyone who is "
"staff or instructor on this course. Is this OK?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"You are about to send an email titled '<%= subject %>' to ALL (everyone who "
"is enrolled in this course as student, staff, or instructor). Is this OK?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid ""
"Your email was successfully queued for sending. Please note that for large "
"classes, it may take up to an hour (or more, if other courses are "
"simultaneously sending email) to send all emails."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "Error sending email."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "There is no email history for this course."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/send_email.js
msgid "There was an error obtaining email task history for this course."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Please enter a student email address or username."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error getting student progress url for '<%= student_id %>'. Make sure that "
"the student identifier is spelled correctly."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Please enter a problem location."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Success! Problem attempts reset for problem '<%= problem_id %>' and student "
"'<%= student_id %>'."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error resetting problem attempts for problem '<%= problem_id %>' and student"
" '<%= student_id %>'. Make sure that the problem and student identifiers are"
" complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Delete student '<%= student_id %>'s state on problem '<%= problem_id %>'?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error deleting student '<%= student_id %>'s state on problem '<%= problem_id"
" %>'. Make sure that the problem and student identifiers are complete and "
"correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Module state successfully deleted."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Started rescore problem task for problem '<%= problem_id %>' and student "
"'<%= student_id %>'. Click the 'Show Background Task History for Student' "
"button to see the status of the task."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error starting a task to rescore problem '<%= problem_id %>' for student "
"'<%= student_id %>'. Make sure that the the problem and student identifiers "
"are complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error getting task history for problem '<%= problem_id %>' and student '<%= "
"student_id %>'. Make sure that the problem and student identifiers are "
"complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Reset attempts for all students on problem '<%= problem_id %>'?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Successfully started task to reset attempts for problem '<%= problem_id %>'."
" Click the 'Show Background Task History for Problem' button to see the "
"status of the task."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error starting a task to reset attempts for all students on problem '<%= "
"problem_id %>'. Make sure that the problem identifier is complete and "
"correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Rescore problem '<%= problem_id %>' for all students?"
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Successfully started task to rescore problem '<%= problem_id %>' for all "
"students. Click the 'Show Background Task History for Problem' button to see"
" the status of the task."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid ""
"Error starting a task to rescore problem '<%= problem_id %>'. Make sure that"
" the problem identifier is complete and correct."
msgstr ""
#: lms/static/coffee/src/instructor_dashboard/student_admin.js
msgid "Error listing task history for this student and problem."
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task Type"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task inputs"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task ID"
msgstr ""
#. Translators: a "Requester" is a username that requested a task such as
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Requester"
msgstr ""
#. Translators: A timestamp of when a task (eg, sending email) was submitted
#. appears after this
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Submitted"
msgstr ""
#. Translators: The length of a task (eg, sending email) in seconds appears
#. this
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Duration (sec)"
msgstr ""
#. Translators: The state (eg, "In progress") of a task (eg, sending email)
#. appears after this.
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "State"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task Status"
msgstr ""
#. Translators: a "Task" is a background process such as grading students or
#. sending email
#: lms/static/coffee/src/instructor_dashboard/util.js
msgid "Task Progress"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Grades saved. Fetching the next submission to grade."
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Problem Name"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Graded"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Available to Grade"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Required"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Progress"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Back to problem list"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Try loading again"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "<%= num %> available "
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "<%= num %> graded "
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "<%= num %> more needed to start ML"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "Re-check for submissions"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "System got into invalid state: <%= state %>"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "System got into invalid state for submission: "
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "(Hide)"
msgstr ""
#: lms/static/coffee/src/staff_grading/staff_grading.js
msgid "(Show)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Insert Hyperlink"
msgstr ""
#. Translators: Please keep the quotation marks (") around this text
#: lms/static/js/Markdown.Editor.js lms/static/js/Markdown.Editor.js.c
msgid "\"optional title\""
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Insert Image (upload file or type url)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Markdown Editing Help"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Bold (Ctrl+B)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Italic (Ctrl+I)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Hyperlink (Ctrl+L)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Blockquote (Ctrl+Q)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Code Sample (Ctrl+K)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Image (Ctrl+G)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Numbered List (Ctrl+O)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Bulleted List (Ctrl+U)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Heading (Ctrl+H)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Horizontal Rule (Ctrl+R)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Undo (Ctrl+Z)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Redo (Ctrl+Y)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Redo (Ctrl+Shift+Z)"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "strong text"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "emphasized text"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "enter image description here"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "enter link description here"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Blockquote"
msgstr ""
#: lms/static/js/Markdown.Editor.js lms/static/js/Markdown.Editor.js
msgid "enter code here"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "List item"
msgstr ""
#: lms/static/js/Markdown.Editor.js
msgid "Heading"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Unknown Error Occurred."
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Successfully reset the attempts for user {user}"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Failed to reset attempts."
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Successfully deleted student state for user {user}"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Failed to delete student state."
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Successfully rescored problem for user {user}"
msgstr ""
#: lms/static/js/staff_debug_actions.js
msgid "Failed to rescore problem."
msgstr ""
#: lms/templates/class_dashboard/all_section_metrics.js
#: lms/templates/class_dashboard/all_section_metrics.js
msgid "Unable to retrieve data, please try again later."
msgstr ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "%(num_students)s student opened Subsection"
msgid_plural "%(num_students)s students opened Subsection"
msgstr[0] ""
msgstr[1] ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "%(num_students)s student"
msgid_plural "%(num_students)s students"
msgstr[0] ""
msgstr[1] ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "%(num_questions)s question"
msgid_plural "%(num_questions)s questions"
msgstr[0] ""
msgstr[1] ""
#: lms/templates/class_dashboard/d3_stacked_bar_graph.js
msgid "Number of Students"
msgstr ""
#: cms/static/coffee/src/main.js
msgid ""
"This may be happening because of an error with our server or your internet "
"connection. Try refreshing the page or making sure you are online."
msgstr ""
#: cms/static/coffee/src/main.js
msgid "Studio's having trouble saving your work"
msgstr ""
#: cms/static/coffee/src/views/tabs.js cms/static/coffee/src/views/tabs.js
#: cms/static/coffee/src/views/unit.js
#: cms/static/coffee/src/xblock/cms.runtime.v1.js
#: cms/static/js/models/section.js cms/static/js/utils/drag_and_drop.js
#: cms/static/js/views/asset.js cms/static/js/views/container.js
#: cms/static/js/views/course_info_handout.js
#: cms/static/js/views/course_info_update.js cms/static/js/views/overview.js
#: cms/static/js/views/xblock_editor.js
msgid "Saving&hellip;"
msgstr ""
#: cms/static/coffee/src/views/tabs.js
msgid "Delete Page Confirmation"
msgstr ""
#: cms/static/coffee/src/views/tabs.js
msgid ""
"Are you sure you want to delete this page? This action cannot be undone."
msgstr ""
#: cms/static/coffee/src/views/tabs.js cms/static/coffee/src/views/unit.js
#: cms/static/js/base.js cms/static/js/views/course_info_update.js
#: cms/static/js/views/pages/container.js
msgid "Deleting&hellip;"
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Duplicating&hellip;"
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Delete this component?"
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Deleting this component is permanent and cannot be undone."
msgstr ""
#: cms/static/coffee/src/views/unit.js cms/static/js/views/pages/container.js
msgid "Yes, delete this component"
msgstr ""
#: cms/static/js/base.js
msgid "This link will open in a modal window"
msgstr ""
#: cms/static/js/base.js
msgid "Delete this "
msgstr ""
#: cms/static/js/base.js
msgid "Deleting this "
msgstr ""
#: cms/static/js/base.js
msgid "Yes, delete this "
msgstr ""
#: cms/static/js/index.js
msgid "Please do not use any spaces in this field."
msgstr ""
#: cms/static/js/index.js
msgid "Please do not use any spaces or special characters in this field."
msgstr ""
#: cms/static/js/index.js
msgid ""
"The combined length of the organization, course number, and course run "
"fields cannot be more than 65 characters."
msgstr ""
#: cms/static/js/index.js
msgid "Required field."
msgstr ""
#: cms/static/js/sock.js
msgid "Hide Studio Help"
msgstr ""
#: cms/static/js/sock.js
msgid "Looking for Help with Studio?"
msgstr ""
#: cms/static/js/models/course.js cms/static/js/models/section.js
msgid "You must specify a name"
msgstr ""
#: cms/static/js/models/uploads.js
msgid ""
"Only <%= fileTypes %> files can be uploaded. Please select a file ending in "
"<%= fileExtensions %> to upload."
msgstr ""
#: cms/static/js/models/uploads.js
msgid "or"
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The course must have an assigned start date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The course end date cannot be before the course start date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The course start date cannot be before the enrollment start date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The enrollment start date cannot be after the enrollment end date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "The enrollment end date cannot be after the course end date."
msgstr ""
#: cms/static/js/models/settings/course_details.js
msgid "Key should only contain letters, numbers, _, or -"
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "There's already another assignment type with this name."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Please enter an integer between 0 and 100."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Please enter an integer greater than 0."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Please enter non-negative integer."
msgstr ""
#: cms/static/js/models/settings/course_grader.js
msgid "Cannot drop more <% attrs.types %> than will assigned."
msgstr ""
#: cms/static/js/models/settings/course_grading_policy.js
msgid "Grace period must be specified in HH:MM format."
msgstr ""
#: cms/static/js/views/asset.js
msgid "Delete File Confirmation"
msgstr ""
#: cms/static/js/views/asset.js
msgid ""
"Are you sure you wish to delete this item. It cannot be reversed!\n"
"\n"
"Also any content that links/refers to this item will no longer work (e.g. broken images and/or links)"
msgstr ""
#: cms/static/js/views/asset.js
msgid "Your file has been deleted."
msgstr ""
#: cms/static/js/views/assets.js cms/templates/js/asset-library.underscore
msgid "Name"
msgstr ""
#: cms/static/js/views/assets.js cms/templates/js/asset-library.underscore
msgid "Date Added"
msgstr ""
#: cms/static/js/views/assets.js
msgid "Uploading…"
msgstr ""
#: cms/static/js/views/assets.js
#: cms/templates/js/asset-upload-modal.underscore
msgid "Choose File"
msgstr ""
#: cms/static/js/views/assets.js
#: cms/templates/js/asset-upload-modal.underscore
msgid "Upload New File"
msgstr ""
#: cms/static/js/views/assets.js
msgid "Load Another File"
msgstr ""
#: cms/static/js/views/course_info_update.js
msgid "Are you sure you want to delete this update?"
msgstr ""
#: cms/static/js/views/course_info_update.js
msgid "This action cannot be undone."
msgstr ""
#: cms/static/js/views/edit_chapter.js
msgid "Upload a new PDF to “<%= name %>”"
msgstr ""
#: cms/static/js/views/edit_chapter.js
msgid "Please select a PDF file to upload."
msgstr ""
#: cms/static/js/views/edit_textbook.js
#: cms/static/js/views/overview_assignment_grader.js
msgid "Saving"
msgstr ""
#: cms/static/js/views/import.js
msgid "There was an error with the upload"
msgstr ""
#: cms/static/js/views/import.js
msgid ""
"File format not supported. Please upload a file with a <code>tar.gz</code> "
"extension."
msgstr ""
#: cms/static/js/views/metadata.js
msgid "Upload File"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Collapse All Sections"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Expand All Sections"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Release date:"
msgstr ""
#: cms/static/js/views/overview.js
msgid "{month}/{day}/{year} at {hour}:{minute} UTC"
msgstr ""
#: cms/static/js/views/overview.js
msgid "Edit section release date"
msgstr ""
#: cms/static/js/views/overview_assignment_grader.js
msgid "Not Graded"
msgstr ""
#. Translators: sample result: "Showing 0-9 out of 25 total, sorted by Date
#. Added ascending"
#: cms/static/js/views/paging_header.js
msgid ""
"Showing %(current_item_range)s out of %(total_items_count)s, sorted by "
"%(sort_name)s ascending"
msgstr ""
#. Translators: sample result: "Showing 0-9 out of 25 total, sorted by Date
#. Added descending"
#: cms/static/js/views/paging_header.js
msgid ""
"Showing %(current_item_range)s out of %(total_items_count)s, sorted by "
"%(sort_name)s descending"
msgstr ""
#. Translators: turns into "25 total" to be used in other sentences, e.g.
#. "Showing 0-9 out of 25 total".
#: cms/static/js/views/paging_header.js
msgid "%(total_items)s total"
msgstr ""
#: cms/static/js/views/section_edit.js
msgid "Your change could not be saved"
msgstr ""
#: cms/static/js/views/section_edit.js
msgid "Return and resolve this issue"
msgstr ""
#: cms/static/js/views/show_textbook.js
msgid "Delete “<%= name %>”?"
msgstr ""
#: cms/static/js/views/show_textbook.js
msgid ""
"Deleting a textbook cannot be undone and once deleted any reference to it in"
" your courseware's navigation will also be removed."
msgstr ""
#: cms/static/js/views/show_textbook.js
msgid "Deleting"
msgstr ""
#: cms/static/js/views/uploads.js
#: cms/templates/js/metadata-file-uploader-item.underscore
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Upload"
msgstr ""
#: cms/static/js/views/uploads.js
msgid "We're sorry, there was an error"
msgstr ""
#: cms/static/js/views/validation.js
msgid "You've made some changes"
msgstr ""
#: cms/static/js/views/validation.js
msgid "Your changes will not take effect until you save your progress."
msgstr ""
#: cms/static/js/views/validation.js
msgid "You've made some changes, but there are some errors"
msgstr ""
#: cms/static/js/views/validation.js
msgid ""
"Please address the errors on this page first, and then save your progress."
msgstr ""
#: cms/static/js/views/validation.js
msgid "Save Changes"
msgstr ""
#: cms/static/js/views/validation.js
msgid "Your changes have been saved."
msgstr ""
#: cms/static/js/views/xblock_editor.js
msgid "Editor"
msgstr ""
#: cms/static/js/views/xblock_editor.js
msgid "Settings"
msgstr ""
#: cms/static/js/views/components/add_xblock.js
msgid "Adding&hellip;"
msgstr ""
#: cms/static/js/views/modals/base_modal.js
#: cms/templates/js/edit-textbook.underscore
#: cms/templates/js/section-name-edit.underscore
msgid "Save"
msgstr ""
#: cms/static/js/views/modals/edit_xblock.js
msgid "Component"
msgstr ""
#: cms/static/js/views/modals/edit_xblock.js
msgid "Editing: %(title)s"
msgstr ""
#: cms/static/js/views/settings/advanced.js
msgid ""
"Your changes will not take effect until you save your progress. Take care "
"with key and value formatting, as validation is not implemented."
msgstr ""
#: cms/static/js/views/settings/advanced.js
msgid "Your policy changes have been saved."
msgstr ""
#: cms/static/js/views/settings/advanced.js
msgid ""
"Please note that validation of your policy key and value pairs is not "
"currently in place yet. If you are having difficulties, please review your "
"policy pairs."
msgstr ""
#: cms/static/js/views/settings/main.js
msgid "Upload your course image."
msgstr ""
#: cms/static/js/views/settings/main.js
msgid "Files must be in JPEG or PNG format."
msgstr ""
#: cms/static/js/views/video/translations_editor.js
msgid ""
"Sorry, there was an error parsing the subtitles that you uploaded. Please "
"check the format and try again."
msgstr ""
#: cms/static/js/views/video/translations_editor.js
msgid "Upload translation"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Fullscreen"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Large"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Zoom In"
msgstr ""
#: common/templates/js/image-modal.underscore
msgid "Zoom Out"
msgstr ""
#: cms/templates/js/add-xblock-component-menu-problem.underscore
msgid "Common Problem Types"
msgstr ""
#: cms/templates/js/add-xblock-component-menu-problem.underscore
msgid "Advanced"
msgstr ""
#: cms/templates/js/add-xblock-component.underscore
msgid "Add New Component"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "List of uploaded files and assets in this course"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "Embed URL"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "External URL"
msgstr ""
#: cms/templates/js/asset-library.underscore
#: cms/templates/js/basic-modal.underscore
msgid "Actions"
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "You haven't added any assets to this course yet."
msgstr ""
#: cms/templates/js/asset-library.underscore
msgid "Upload your first asset"
msgstr ""
#: cms/templates/js/asset-upload-modal.underscore
msgid "close"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Open/download this file"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Delete this asset"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Lock this asset"
msgstr ""
#: cms/templates/js/asset.underscore
msgid "Lock/unlock file"
msgstr ""
#: cms/templates/js/checklist.underscore
msgid "{number}% of checklists completed"
msgstr ""
#: cms/templates/js/checklist.underscore
msgid "Tasks Completed:"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Assignment Type Name"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "e.g. Homework, Midterm Exams"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Abbreviation"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "e.g. HW, Midterm"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Weight of Total Grade"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "as a percent, e.g. 40"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Total Number"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "total exercises assigned"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "Number of Droppable"
msgstr ""
#: cms/templates/js/course_grade_policy.underscore
msgid "total exercises that won't be graded"
msgstr ""
#: cms/templates/js/course_info_handouts.underscore
msgid "You have no handouts defined"
msgstr ""
#: cms/templates/js/course_info_handouts.underscore
msgid ""
"There is invalid code in your content. Please check to make sure it is valid"
" HTML."
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Chapter Name"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Chapter %s"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "provide the title/name of the chapter that will be used in navigating"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Chapter Asset"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "path/to/introductionToCookieBaking-CH%d.pdf"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "upload a PDF file or provide the path to a Studio asset file"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "Upload PDF"
msgstr ""
#: cms/templates/js/edit-chapter.underscore
msgid "delete chapter"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "error.message"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Textbook information"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Textbook Name"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Introduction to Cookie Baking"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid ""
"provide the title/name of the text book as you would like your students to "
"see it"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Chapter information"
msgstr ""
#: cms/templates/js/edit-textbook.underscore
msgid "Add a Chapter"
msgstr ""
#: cms/templates/js/metadata-dict-entry.underscore
#: cms/templates/js/metadata-list-entry.underscore
#: cms/templates/js/video/metadata-translations-entry.underscore
msgid "Add"
msgstr ""
#: cms/templates/js/metadata-dict-entry.underscore
#: cms/templates/js/metadata-file-uploader-entry.underscore
#: cms/templates/js/metadata-list-entry.underscore
#: cms/templates/js/metadata-number-entry.underscore
#: cms/templates/js/metadata-option-entry.underscore
#: cms/templates/js/metadata-string-entry.underscore
#: cms/templates/js/mock/mock-xmodule-editor.underscore
#: cms/templates/js/mock/mock-xmodule-settings-only-editor.underscore
#: cms/templates/js/video/metadata-translations-entry.underscore
msgid "Clear Value"
msgstr ""
#: cms/templates/js/metadata-file-uploader-item.underscore
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Replace"
msgstr ""
#: cms/templates/js/metadata-file-uploader-item.underscore
#: cms/templates/js/video/metadata-translations-item.underscore
msgid "Download"
msgstr ""
#: cms/templates/js/no-textbooks.underscore
msgid "You haven't added any textbooks to this course yet."
msgstr ""
#: cms/templates/js/no-textbooks.underscore
msgid "Add your first textbook"
msgstr ""
#: cms/templates/js/paging-footer.underscore
#: cms/templates/js/paging-header.underscore
msgid "Previous"
msgstr ""
#: cms/templates/js/paging-footer.underscore
msgid "Page number"
msgstr ""
#: cms/templates/js/paging-footer.underscore
#: cms/templates/js/paging-header.underscore
msgid "Next"
msgstr ""
#: cms/templates/js/show-textbook.underscore
msgid "View Live"
msgstr ""
#: cms/templates/js/upload-dialog.underscore
msgid "File upload succeeded"
msgstr ""
#: cms/templates/js/video/transcripts/metadata-videolist-entry.underscore
msgid "Add URLs for additional versions"
msgstr ""
#: cms/templates/js/video/transcripts/metadata-videolist-entry.underscore
msgid ""
"To be sure all students can access the video, we recommend providing both an"
" .mp4 and a .webm version of your video. Click below to add a URL for "
"another version. These URLs cannot be YouTube URLs. The first listed video "
"that\\'s compatible with the student\\'s computer will play."
msgstr ""
#: cms/templates/js/video/transcripts/metadata-videolist-entry.underscore
msgid "Default Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid "Timed Transcript Conflict"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
msgid ""
"The timed transcript for the first video file does not appear to be the same"
" as the timed transcript for the second video file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
msgid "Which timed transcript would you like to use?"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Error."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-choose.underscore
msgid "Timed Transcript from"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
msgid "Timed Transcript Found"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
msgid ""
"EdX has a timed transcript for this video. If you want to edit this "
"transcript, you can download, edit, and re-upload the existing transcript. "
"If you want to replace this transcript, upload a new .srt transcript file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Upload New Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid "Upload New .srt Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
msgid "Download Transcript for Editing"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid "No EdX Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid ""
"EdX doesn\\'t have a timed transcript for this video in Studio, but we found"
" a transcript on YouTube. You can import the YouTube transcript or upload "
"your own .srt transcript file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-import.underscore
msgid "Import YouTube Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
msgid "No Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-not-found.underscore
msgid ""
"EdX doesn\\'t have a timed transcript for this video. Please upload an .srt "
"file."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid ""
"The timed transcript for this video on edX is out of date, but YouTube has a"
" current timed transcript for this video."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid "Do you want to replace the edX transcript with the YouTube transcript?"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-replace.underscore
msgid "Yes, replace the edX transcript with the YouTube transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
msgid "Timed Transcript Uploaded Successfully"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-uploaded.underscore
msgid ""
"EdX has a timed transcript for this video. If you want to replace this "
"transcript, upload a new .srt transcript file. If you want to edit this "
"transcript, you can download, edit, and re-upload the existing transcript."
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Confirm Timed Transcript"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid ""
"You changed a video URL, but did not change the timed transcript file. Do "
"you want to use the current timed transcript or upload a new .srt transcript"
" file?"
msgstr ""
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
#: cms/templates/js/video/transcripts/messages/transcripts-use-existing.underscore
msgid "Use Current Transcript"
msgstr ""
...@@ -218,17 +218,19 @@ def get_module_for_descriptor(user, request, descriptor, field_data_cache, cours ...@@ -218,17 +218,19 @@ def get_module_for_descriptor(user, request, descriptor, field_data_cache, cours
track_function = make_track_function(request) track_function = make_track_function(request)
xqueue_callback_url_prefix = get_xqueue_callback_url_prefix(request) xqueue_callback_url_prefix = get_xqueue_callback_url_prefix(request)
user_location = getattr(request, 'session', {}).get('country_code')
return get_module_for_descriptor_internal(user, descriptor, field_data_cache, course_id, return get_module_for_descriptor_internal(user, descriptor, field_data_cache, course_id,
track_function, xqueue_callback_url_prefix, track_function, xqueue_callback_url_prefix,
position, wrap_xmodule_display, grade_bucket_type, position, wrap_xmodule_display, grade_bucket_type,
static_asset_path) static_asset_path, user_location)
def get_module_system_for_user(user, field_data_cache, def get_module_system_for_user(user, field_data_cache,
# Arguments preceding this comment have user binding, those following don't # Arguments preceding this comment have user binding, those following don't
descriptor, course_id, track_function, xqueue_callback_url_prefix, descriptor, course_id, track_function, xqueue_callback_url_prefix,
position=None, wrap_xmodule_display=True, grade_bucket_type=None, position=None, wrap_xmodule_display=True, grade_bucket_type=None,
static_asset_path=''): static_asset_path='', user_location=None):
""" """
Helper function that returns a module system and student_data bound to a user and a descriptor. Helper function that returns a module system and student_data bound to a user and a descriptor.
...@@ -310,7 +312,7 @@ def get_module_system_for_user(user, field_data_cache, ...@@ -310,7 +312,7 @@ def get_module_system_for_user(user, field_data_cache,
return get_module_for_descriptor_internal(user, descriptor, field_data_cache, course_id, return get_module_for_descriptor_internal(user, descriptor, field_data_cache, course_id,
track_function, make_xqueue_callback, track_function, make_xqueue_callback,
position, wrap_xmodule_display, grade_bucket_type, position, wrap_xmodule_display, grade_bucket_type,
static_asset_path) static_asset_path, user_location)
def handle_grade_event(block, event_type, event): def handle_grade_event(block, event_type, event):
user_id = event.get('user_id', user.id) user_id = event.get('user_id', user.id)
...@@ -379,7 +381,7 @@ def get_module_system_for_user(user, field_data_cache, ...@@ -379,7 +381,7 @@ def get_module_system_for_user(user, field_data_cache,
(inner_system, inner_student_data) = get_module_system_for_user( (inner_system, inner_student_data) = get_module_system_for_user(
real_user, field_data_cache_real_user, # These have implicit user bindings, rest of args considered not to real_user, field_data_cache_real_user, # These have implicit user bindings, rest of args considered not to
module.descriptor, course_id, track_function, xqueue_callback_url_prefix, position, wrap_xmodule_display, module.descriptor, course_id, track_function, xqueue_callback_url_prefix, position, wrap_xmodule_display,
grade_bucket_type, static_asset_path grade_bucket_type, static_asset_path, user_location
) )
# rebinds module to a different student. We'll change system, student_data, and scope_ids # rebinds module to a different student. We'll change system, student_data, and scope_ids
module.descriptor.bind_for_student( module.descriptor.bind_for_student(
...@@ -500,6 +502,7 @@ def get_module_system_for_user(user, field_data_cache, ...@@ -500,6 +502,7 @@ def get_module_system_for_user(user, field_data_cache,
get_user_role=lambda: get_user_role(user, course_id), get_user_role=lambda: get_user_role(user, course_id),
descriptor_runtime=descriptor.runtime, descriptor_runtime=descriptor.runtime,
rebind_noauth_module_to_user=rebind_noauth_module_to_user, rebind_noauth_module_to_user=rebind_noauth_module_to_user,
user_location=user_location,
) )
# pass position specified in URL to module through ModuleSystem # pass position specified in URL to module through ModuleSystem
...@@ -525,7 +528,7 @@ def get_module_system_for_user(user, field_data_cache, ...@@ -525,7 +528,7 @@ def get_module_system_for_user(user, field_data_cache,
def get_module_for_descriptor_internal(user, descriptor, field_data_cache, course_id, # pylint: disable=invalid-name def get_module_for_descriptor_internal(user, descriptor, field_data_cache, course_id, # pylint: disable=invalid-name
track_function, xqueue_callback_url_prefix, track_function, xqueue_callback_url_prefix,
position=None, wrap_xmodule_display=True, grade_bucket_type=None, position=None, wrap_xmodule_display=True, grade_bucket_type=None,
static_asset_path=''): static_asset_path='', user_location=None):
""" """
Actually implement get_module, without requiring a request. Actually implement get_module, without requiring a request.
...@@ -541,7 +544,7 @@ def get_module_for_descriptor_internal(user, descriptor, field_data_cache, cours ...@@ -541,7 +544,7 @@ def get_module_for_descriptor_internal(user, descriptor, field_data_cache, cours
(system, student_data) = get_module_system_for_user( (system, student_data) = get_module_system_for_user(
user, field_data_cache, # These have implicit user bindings, the rest of args are considered not to user, field_data_cache, # These have implicit user bindings, the rest of args are considered not to
descriptor, course_id, track_function, xqueue_callback_url_prefix, position, wrap_xmodule_display, descriptor, course_id, track_function, xqueue_callback_url_prefix, position, wrap_xmodule_display,
grade_bucket_type, static_asset_path grade_bucket_type, static_asset_path, user_location
) )
descriptor.bind_for_student(system, LmsFieldData(descriptor._field_data, student_data)) # pylint: disable=protected-access descriptor.bind_for_student(system, LmsFieldData(descriptor._field_data, student_data)) # pylint: disable=protected-access
......
...@@ -365,6 +365,105 @@ class TestGetHtmlMethod(BaseTestXmodule): ...@@ -365,6 +365,105 @@ class TestGetHtmlMethod(BaseTestXmodule):
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context) self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
) )
@patch('xmodule.video_module.video_module.get_video_from_cdn')
def test_get_html_cdn_source(self, mocked_get_video):
"""
Test if sources got from CDN.
"""
def side_effect(*args, **kwargs):
cdn = {
'http://example.com/example.mp4': 'http://cdn_example.com/example.mp4',
'http://example.com/example.webm': 'http://cdn_example.com/example.webm',
}
return cdn.get(args[1])
mocked_get_video.side_effect = side_effect
SOURCE_XML = """
<video show_captions="true"
display_name="A Name"
sub="a_sub_file.srt.sjson" source="{source}"
download_video="{download_video}"
start_time="01:00:03" end_time="01:00:10"
>
{sources}
</video>
"""
cases = [
#
{
'download_video': 'true',
'source': 'example_source.mp4',
'sources': """
<source src="http://example.com/example.mp4"/>
<source src="http://example.com/example.webm"/>
""",
'result': {
'download_video_link': u'example_source.mp4',
'sources': json.dumps(
[
u'http://cdn_example.com/example.mp4',
u'http://cdn_example.com/example.webm'
]
),
},
},
]
initial_context = {
'data_dir': getattr(self, 'data_dir', None),
'show_captions': 'true',
'handout': None,
'display_name': u'A Name',
'download_video_link': None,
'end': 3610.0,
'id': None,
'sources': '[]',
'speed': 'null',
'general_speed': 1.0,
'start': 3603.0,
'saved_video_position': 0.0,
'sub': u'a_sub_file.srt.sjson',
'track': None,
'youtube_streams': '1.00:OEoXaMPEzfM',
'autoplay': settings.FEATURES.get('AUTOPLAY_VIDEOS', True),
'yt_test_timeout': 1500,
'yt_api_url': 'www.youtube.com/iframe_api',
'yt_test_url': 'gdata.youtube.com/feeds/api/videos/',
'transcript_download_format': 'srt',
'transcript_download_formats_list': [{'display_name': 'SubRip (.srt) file', 'value': 'srt'}, {'display_name': 'Text (.txt) file', 'value': 'txt'}],
'transcript_language': u'en',
'transcript_languages': '{"en": "English"}',
}
for data in cases:
DATA = SOURCE_XML.format(
download_video=data['download_video'],
source=data['source'],
sources=data['sources']
)
self.initialize_module(data=DATA)
self.item_descriptor.xmodule_runtime.user_location = 'CN'
context = self.item_descriptor.render('student_view').content
expected_context = dict(initial_context)
expected_context.update({
'transcript_translation_url': self.item_descriptor.xmodule_runtime.handler_url(
self.item_descriptor, 'transcript', 'translation'
).rstrip('/?'),
'transcript_available_translations_url': self.item_descriptor.xmodule_runtime.handler_url(
self.item_descriptor, 'transcript', 'available_translations'
).rstrip('/?'),
'ajax_url': self.item_descriptor.xmodule_runtime.ajax_url + '/save_user_state',
'id': self.item_descriptor.location.html_id(),
})
expected_context.update(data['result'])
self.assertEqual(
context,
self.item_descriptor.xmodule_runtime.render_template('video.html', expected_context)
)
class TestVideoDescriptorInitialization(BaseTestXmodule): class TestVideoDescriptorInitialization(BaseTestXmodule):
""" """
......
...@@ -7,6 +7,8 @@ from django.http import Http404 ...@@ -7,6 +7,8 @@ from django.http import Http404
from edxmako.shortcuts import render_to_response from edxmako.shortcuts import render_to_response
from opaque_keys.edx.locations import SlashSeparatedCourseKey from opaque_keys.edx.locations import SlashSeparatedCourseKey
from xmodule.annotator_token import retrieve_token
from courseware.access import has_access from courseware.access import has_access
from courseware.courses import get_course_with_access from courseware.courses import get_course_with_access
from notes.utils import notes_enabled_for_course from notes.utils import notes_enabled_for_course
...@@ -170,5 +172,7 @@ def html_index(request, course_id, book_index, chapter=None): ...@@ -170,5 +172,7 @@ def html_index(request, course_id, book_index, chapter=None):
'student': student, 'student': student,
'staff_access': staff_access, 'staff_access': staff_access,
'notes_enabled': notes_enabled, 'notes_enabled': notes_enabled,
'storage': course.annotation_storage_url,
'token': retrieve_token(student.email, course.annotation_token_secret),
}, },
) )
...@@ -282,6 +282,10 @@ if FEATURES.get('AUTH_USE_CAS'): ...@@ -282,6 +282,10 @@ if FEATURES.get('AUTH_USE_CAS'):
HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS = ENV_TOKENS.get('HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS',{}) HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS = ENV_TOKENS.get('HOSTNAME_MODULESTORE_DEFAULT_MAPPINGS',{})
# Video Caching. Pairing country codes with CDN URLs.
# Example: {'CN': 'http://api.xuetangx.com/edx/video?s3_url='}
VIDEO_CDN_URL = ENV_TOKENS.get('VIDEO_CDN_URL', {})
############################## SECURE AUTH ITEMS ############### ############################## SECURE AUTH ITEMS ###############
# Secret things: passwords, access keys, etc. # Secret things: passwords, access keys, etc.
......
...@@ -784,6 +784,7 @@ MIDDLEWARE_CLASSES = ( ...@@ -784,6 +784,7 @@ MIDDLEWARE_CLASSES = (
# Allows us to dark-launch particular languages # Allows us to dark-launch particular languages
'dark_lang.middleware.DarkLangMiddleware', 'dark_lang.middleware.DarkLangMiddleware',
'geoinfo.middleware.CountryMiddleware',
'embargo.middleware.EmbargoMiddleware', 'embargo.middleware.EmbargoMiddleware',
# Allows us to set user preferences # Allows us to set user preferences
......
...@@ -326,3 +326,7 @@ VERIFY_STUDENT["SOFTWARE_SECURE"] = { ...@@ -326,3 +326,7 @@ VERIFY_STUDENT["SOFTWARE_SECURE"] = {
"API_ACCESS_KEY": "BBBBBBBBBBBBBBBBBBBB", "API_ACCESS_KEY": "BBBBBBBBBBBBBBBBBBBB",
"API_SECRET_KEY": "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", "API_SECRET_KEY": "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC",
} }
VIDEO_CDN_URL = {
'CN': 'http://api.xuetangx.com/edx/video?s3_url='
}
...@@ -13,10 +13,9 @@ class StudentNotes ...@@ -13,10 +13,9 @@ class StudentNotes
$(el).data('notes-instance', @) $(el).data('notes-instance', @)
# Initializes annotations on a container element in response to an init event. # Initializes annotations on a container element in response to an init event.
onInitNotes: (event, uri=null) => onInitNotes: (event, uri=null, storage_url=null, token=null) =>
event.stopPropagation() event.stopPropagation()
storeConfig = @getStoreConfig uri
found = @targets.some (target) -> target is event.target found = @targets.some (target) -> target is event.target
# Get uri # Get uri
...@@ -47,10 +46,10 @@ class StudentNotes ...@@ -47,10 +46,10 @@ class StudentNotes
return user.id if user and user.id return user.id if user and user.id
user user
auth: auth:
tokenUrl: location.protocol+'//'+location.host+"/token?course_id="+courseid token: token
store: store:
prefix: 'http://catch.aws.af.cm/annotator' prefix: storage_url
annotationData: uri:uri annotationData: uri:uri
...@@ -88,33 +87,6 @@ class StudentNotes ...@@ -88,33 +87,6 @@ class StudentNotes
else else
@targets.push(event.target) @targets.push(event.target)
# Returns a JSON config object that can be passed to the annotator Store plugin
getStoreConfig: (uri) ->
prefix = @getPrefix()
if uri is null
uri = @getURIPath()
storeConfig =
prefix: prefix
loadFromSearch:
uri: uri
limit: 0
annotationData:
uri: uri
storeConfig
# Returns the API endpoint for the annotation store
getPrefix: () ->
re = /^(\/courses\/[^/]+\/[^/]+\/[^/]+)/
match = re.exec(@getURIPath())
prefix = (if match then match[1] else '')
return "#{prefix}/notes/api"
# Returns the URI path of the current page for filtering annotations
getURIPath: () ->
window.location.href.toString().split(window.location.host)[1]
# Enable notes by default on the document root. # Enable notes by default on the document root.
# To initialize annotations on a container element in the document: # To initialize annotations on a container element in the document:
# #
......
...@@ -11,8 +11,9 @@ ...@@ -11,8 +11,9 @@
</%block> </%block>
<%block name="js_extra"> <%block name="js_extra">
<script type="text/javascript" src="${static.url('js/vendor/tinymce/js/tinymce/tinymce.full.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/tinymce/js/tinymce/jquery.tinymce.min.js')}"></script>
<script type="text/javascript"> <script type="text/javascript">
tinyMCE.baseURL = "${settings.STATIC_URL}" + "js/vendor/ova";
(function($) { (function($) {
$.fn.myHTMLViewer = function(options) { $.fn.myHTMLViewer = function(options) {
var urlToLoad = null; var urlToLoad = null;
...@@ -38,7 +39,7 @@ ...@@ -38,7 +39,7 @@
if(options.notesEnabled) { if(options.notesEnabled) {
onComplete = function(url) { onComplete = function(url) {
return function() { return function() {
$('#viewerContainer').trigger('notes:init', [url]); $('#viewerContainer').trigger('notes:init', [url, "${storage}", "${token}"]);
} }
}; };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment