outcomes.invalid=\u4E0D\u662F\u5408\u6CD5\u5411\u5916\u8BF7\u6C42
outcomes.missing=\u6D88\u606F\u4E2D\u7F3A\u5C11\u8981\u6C42\u7684\u4FE1\u606F
outcomes.sourcedid=\u65E0\u6CD5\u5904\u7406\u6E90id
outcome.site.membership=\u4E0D\u662F\u6307\u5B9A\u7AD9\u70B9\u7684\u6210\u5458
outcome.no.assignment=\u6307\u5B9A\u7684\u8BC4\u5206\u4F5C\u4E1A\u4E0D\u5B58\u5728
outcome.grade.fail=\u50A8\u5B58\u6210\u7EE9\u5230\u6210\u7EE9\u518C\u5931\u8D25
outcome.no.validate=\u65E0\u6CD5\u9A8C\u8BC1\u6D88\u606F

setting.empty=\u7F3A\u5C11\u8BBE\u5B9A\u503C
setting.save.fail=\u4FDD\u5B58\u8BBE\u7F6E\u65F6\u53D1\u751F\u9519\u8BEF
setting.fail=\u65E0\u6CD5\u5904\u7406\u8BBE\u5B9A\u503C

request.bad.url=\u8BF7\u6C42URL\u5730\u5740\u9519\u8BEF
request.not.implemented=\u672A\u77E5\u8BF7\u6C42
deploy.register.valid=\u8BF7\u6C42\u683C\u5F0F\u4E0D\u6B63\u786E
deploy.register.credentials=\u90E8\u7F72\u7F3A\u5C11\u8BC1\u4E66
deploy.register.signature=OAuth\u7B7E\u540D\u5931\u8D25
deploy.register.parse=JSON\u89E3\u6790\u5931\u8D25
deploy.register.notools=Profile\u4E2D\u6CA1\u6709\u5DE5\u5177

# from BasicLTIUtil.parseToolProfile

deploy.register.launch=\u65E0\u6CD5\u786E\u5B9A\u51FA\u53D1URL
deploy.register.messages=resource_handler\u4E0D\u80FD\u6709\u591A\u4E2Abasic-lti-launch-request
deploy.register.nopath=basic-lti-launch-request\u4E2D\u5FC5\u987B\u8981\u6709\u8DEF\u5F84

