MOBILE-2656 lang: Update component languages

main
Pau Ferrer Ocaña 2018-10-05 10:17:55 +02:00
parent 89332fdd20
commit 1db6326908
18 changed files with 266 additions and 143 deletions

1
.gitignore vendored
View File

@ -39,4 +39,3 @@ e2e/build
!/desktop/assets/
!/desktop/electron.js
src/configconstants.ts
scripts/local_moodlemobileapp.php

View File

@ -10,8 +10,23 @@ if [ $TRAVIS_BRANCH == 'integration' ] || [ $TRAVIS_BRANCH == 'master' ] || [ -z
git remote set-url origin https://$GIT_TOKEN@github.com/$TRAVIS_REPO_SLUG.git
git fetch -q origin
git add src/assets/lang
git add */en.json
git commit -m 'Update lang files [ci skip]'
git push origin HEAD:$TRAVIS_BRANCH
version=`grep versionname src/config.json| cut -d: -f2|cut -d'"' -f2`
date=`date +%Y%m%d`'00'
pushd ../../moodle-local_moodlemobileapp
sed -ie "s/release[ ]*=[ ]*'[^']*';/release = '$version';/1" version.php
sed -ie "s/version[ ]*=[ ]*[0-9]*;/version = $date;/1" version.php
rm version.phpe
git remote set-url origin https://$GIT_TOKEN@github.com/moodlehq/moodle-local_moodlemobileapp.git
git fetch -q origin
git add .
git commit -m "Update lang files from $version"
git push
popd
fi
sed -ie $'s~throw new Error("No ResourceLoader.*~url = "templates/" + url;\\\nvar resolve;\\\nvar reject;\\\nvar promise = new Promise(function (res, rej) {\\\nresolve = res;\\\nreject = rej;\\\n});\\\nvar xhr = new XMLHttpRequest();\\\nxhr.open("GET", url, true);\\\nxhr.responseType = "text";\\\nxhr.onload = function () {\\\nvar response = xhr.response || xhr.responseText;\\\nvar status = xhr.status === 1223 ? 204 : xhr.status;\\\nif (status === 0) {\\\nstatus = response ? 200 : 0;\\\n}\\\nif (200 <= status \&\& status <= 300) {\\\nresolve(response);\\\n}\\\nelse {\\\nreject("Failed to load " + url);\\\n}\\\n};\\\nxhr.onerror = function () { reject("Failed to load " + url); };\\\nxhr.send();\\\nreturn promise;\\\n~g' node_modules/@angular/platform-browser-dynamic/esm5/platform-browser-dynamic.js
@ -24,7 +39,7 @@ fi
if [ ! -z $GIT_ORG ] && [ ! -z $GIT_TOKEN ] ; then
gitfolder=${PWD##*/}
cd ..
git clone https://github.com/$GIT_ORG/moodlemobile-phonegapbuild.git pgb
git clone --depth 1 --no-single-branch https://github.com/$GIT_ORG/moodlemobile-phonegapbuild.git pgb
cd pgb
git checkout $TRAVIS_BRANCH
rm -Rf assets build index.html templates

View File

@ -3,14 +3,17 @@ source "functions.sh"
forceLang=$1
print_title 'Getting languages'
git clone https://git.in.moodle.com/moodle/moodle-langpacks.git $LANGPACKSFOLDER
git clone --depth 1 --no-single-branch https://git.in.moodle.com/moodle/moodle-langpacks.git $LANGPACKSFOLDER
pushd $LANGPACKSFOLDER
BRANCHES=($(git br -r --format="%(refname:lstrip=3)" --sort="refname" | grep MOODLE_))
BRANCHES=($(git branch -r --format="%(refname:lstrip=3)" --sort="refname" | grep MOODLE_))
BRANCH=${BRANCHES[${#BRANCHES[@]}-1]}
git checkout $BRANCH
git pull
popd
print_title 'Getting local mobile langs'
git clone --depth 1 https://github.com/moodlehq/moodle-local_moodlemobileapp.git ../../moodle-local_moodlemobileapp
if [ -z $forceLang ]; then
php -f moodle_to_json.php
else

View File

@ -1,12 +1,6 @@
#!/bin/bash
source "functions.sh"
#Saves the key and value on a temporary local_moodlemobileapp.php
function save_local {
val=`echo $value | sed "s/\'/\\\\\'/g"`
echo "\$string['$key'] = '$val';" >> local_moodlemobileapp.php
}
#Saves or updates a key on langindex_old.json
function save_key {
key=$1
@ -53,30 +47,6 @@ function exists_in_file {
function exists_in_mobile {
file='local_moodlemobileapp'
exists_in_file $file $key
if [ $found == 0 ]; then
case $type in
'addon')
mobileid="mma.$component.$plainid"
exists_in_file $file $mobileid
;;
'core')
if [ "$component" == 'moodle' ]; then
mobileid="mm.core.$plainid"
elif [ "$component" == 'mainmenu' ]; then
mobileid="mm.sidemenu.$plainid"
else
mobileid="mm.$component.$plainid"
fi
exists_in_file $file $mobileid
;;
*)
return
esac
fi
if [ $found != 0 ]; then
save_local
fi
}
function do_match {
@ -114,8 +84,8 @@ function find_matches {
return
fi
print_error "No match found for $key adding to local_moodlemobileapp"
save_local
print_message "No match found for $key add it to local_moodlemobileapp"
save_key $key "local_moodlemobileapp"
}
function find_single_matches {
@ -239,6 +209,11 @@ function find_better_file {
if [ $found == 0 ]; then
print_error "Indexed string '$key' not found on current place '$current'"
if [ $currentFile != 'local_moodlemobileapp' ]; then
print_error "Execute this on AMOS
CPY [$currentStr,$currentFile],[$key,local_moodlemobileapp]"
save_key $key "local_moodlemobileapp"
fi
fi
}
@ -266,7 +241,7 @@ gulp lang
print_title 'Getting languages'
git clone https://git.in.moodle.com/moodle/moodle-langpacks.git $LANGPACKSFOLDER
pushd $LANGPACKSFOLDER
BRANCHES=($(git br -r --format="%(refname:lstrip=3)" --sort="refname" | grep MOODLE_))
BRANCHES=($(git branch -r --format="%(refname:lstrip=3)" --sort="refname" | grep MOODLE_))
BRANCH=${BRANCHES[${#BRANCHES[@]}-1]}
git checkout $BRANCH
git pull
@ -277,13 +252,12 @@ print_title 'Processing file'
if [ ! -f 'langindex.json' ]; then
echo "{}" > langindex.json
fi
echo "<?php" > local_moodlemobileapp.php
parse_file '../src/assets/lang/en.json'
echo
jq -S --indent 4 -s '.[0]' langindex.json > langindex_new.json
jq -S --indent 2 -s '.[0]' langindex.json > langindex_new.json
mv langindex_new.json langindex.json
rm langindex_old.json

View File

@ -108,6 +108,8 @@
"addon.messages.contactlistempty": "local_moodlemobileapp",
"addon.messages.contactname": "local_moodlemobileapp",
"addon.messages.contacts": "message",
"addon.messages.deletemessage": "local_moodlemobileapp",
"addon.messages.deletemessageconfirmation": "local_moodlemobileapp",
"addon.messages.errordeletemessage": "local_moodlemobileapp",
"addon.messages.errorwhileretrievingcontacts": "local_moodlemobileapp",
"addon.messages.errorwhileretrievingdiscussions": "local_moodlemobileapp",
@ -693,6 +695,7 @@
"addon.mod_workshop.submissiongrade": "workshop",
"addon.mod_workshop.submissiongradeof": "workshop",
"addon.mod_workshop.submissionrequiredcontent": "workshop",
"addon.mod_workshop.submissionrequiredtitle": "local_moodlemobileapp",
"addon.mod_workshop.submissionsreport": "workshop",
"addon.mod_workshop.submissiontitle": "workshop",
"addon.mod_workshop.switchphase10": "workshop",
@ -1111,6 +1114,7 @@
"core.course.manualcompletionnotsynced": "local_moodlemobileapp",
"core.course.nocontentavailable": "local_moodlemobileapp",
"core.course.overriddennotice": "grades",
"core.course.refreshcourse": "local_moodlemobileapp",
"core.course.sections": "moodle",
"core.course.useactivityonbrowser": "local_moodlemobileapp",
"core.course.warningmanualcompletionmodified": "local_moodlemobileapp",
@ -1137,7 +1141,7 @@
"core.courses.mycourses": "moodle",
"core.courses.next30days": "block_timeline",
"core.courses.next7days": "block_timeline",
"core.courses.nocourses": "local_moodlemobileapp",
"core.courses.nocourses": "my",
"core.courses.nocoursesfuture": "block_myoverview",
"core.courses.nocoursesinprogress": "block_myoverview",
"core.courses.nocoursesoverview": "moodle/nocourses",
@ -1151,6 +1155,7 @@
"core.courses.past": "block_myoverview",
"core.courses.paymentrequired": "moodle",
"core.courses.paypalaccepted": "enrol_paypal",
"core.courses.recentlyoverdue": "local_moodlemobileapp",
"core.courses.search": "moodle",
"core.courses.searchcourses": "moodle",
"core.courses.searchcoursesadvice": "local_moodlemobileapp",
@ -1195,6 +1200,7 @@
"core.errorinvalidform": "local_moodlemobileapp",
"core.errorinvalidresponse": "local_moodlemobileapp",
"core.errorloadingcontent": "local_moodlemobileapp",
"core.errorofflinedisabled": "local_moodlemobileapp",
"core.erroropenfilenoapp": "local_moodlemobileapp",
"core.erroropenfilenoextension": "local_moodlemobileapp",
"core.erroropenpopup": "local_moodlemobileapp",
@ -1204,7 +1210,7 @@
"core.explanationdigitalminor": "moodle",
"core.filename": "repository",
"core.filenameexist": "local_moodlemobileapp",
"core.fileuploader.addfiletext": "local_moodlemobileapp",
"core.fileuploader.addfiletext": "repository",
"core.fileuploader.audio": "local_moodlemobileapp",
"core.fileuploader.camera": "local_moodlemobileapp",
"core.fileuploader.confirmuploadfile": "local_moodlemobileapp",
@ -1218,7 +1224,7 @@
"core.fileuploader.errorreadingfile": "local_moodlemobileapp",
"core.fileuploader.errorwhileuploading": "local_moodlemobileapp",
"core.fileuploader.file": "local_moodlemobileapp",
"core.fileuploader.filesofthesetypes": "local_moodlemobileapp",
"core.fileuploader.filesofthesetypes": "form",
"core.fileuploader.fileuploaded": "local_moodlemobileapp",
"core.fileuploader.invalidfiletype": "repository",
"core.fileuploader.maxbytesfile": "local_moodlemobileapp",
@ -1304,6 +1310,8 @@
"core.login.invalidurl": "scorm",
"core.login.invalidvaluemax": "local_moodlemobileapp",
"core.login.invalidvaluemin": "local_moodlemobileapp",
"core.login.legacymoodleversion": "local_moodlemobileapp",
"core.login.legacymoodleversiondesktop": "local_moodlemobileapp",
"core.login.localmobileunexpectedresponse": "local_moodlemobileapp",
"core.login.loggedoutssodescription": "local_moodlemobileapp",
"core.login.login": "moodle",
@ -1330,6 +1338,8 @@
"core.login.problemconnectingerrorcontinue": "local_moodlemobileapp",
"core.login.profileinvaliddata": "admin",
"core.login.recaptchachallengeimage": "local_moodlemobileapp",
"core.login.recaptchaexpired": "local_moodlemobileapp",
"core.login.recaptchaincorrect": "local_moodlemobileapp",
"core.login.reconnect": "local_moodlemobileapp",
"core.login.reconnectdescription": "local_moodlemobileapp",
"core.login.reconnectssodescription": "local_moodlemobileapp",
@ -1464,6 +1474,7 @@
"core.settings.appready": "local_moodlemobileapp",
"core.settings.cannotsyncoffline": "local_moodlemobileapp",
"core.settings.cannotsyncwithoutwifi": "local_moodlemobileapp",
"core.settings.compilationinfo": "local_moodlemobileapp",
"core.settings.cordovadevicemodel": "local_moodlemobileapp",
"core.settings.cordovadeviceosversion": "local_moodlemobileapp",
"core.settings.cordovadeviceplatform": "local_moodlemobileapp",
@ -1563,6 +1574,7 @@
"core.user.editingteacher": "local_moodlemobileapp",
"core.user.email": "moodle",
"core.user.emailagain": "moodle",
"core.user.errorloaduser": "local_moodlemobileapp",
"core.user.firstname": "moodle",
"core.user.interests": "moodle",
"core.user.lastname": "moodle",
@ -1582,6 +1594,8 @@
"core.usernotfullysetup": "error",
"core.users": "moodle",
"core.view": "moodle",
"core.viewcode": "local_moodlemobileapp",
"core.vieweditor": "local_moodlemobileapp",
"core.viewprofile": "moodle",
"core.warningofflinedatadeleted": "local_moodlemobileapp",
"core.whatisyourage": "moodle",

View File

@ -49,31 +49,6 @@ foreach ($keys as $key => $value) {
if ($value == 'local_moodlemobileapp') {
$map->file = $value;
$map->string = $key;
$exp = explode('.', $key, 3);
$type = $exp[0];
if (count($exp) == 3) {
$component = $exp[1];
$plainid = $exp[2];
} else {
$component = 'moodle';
$plainid = $exp[1];
}
switch($type) {
case 'addon':
$map->string_local = "mma.$component.$plainid";
break;
case 'core':
if ($component == 'moodle') {
$map->string_local = "mm.core.$plainid";
} else if ($component == 'mainmenu') {
$map->string_local = "mm.sidemenu.$plainid";
} else {
$map->string_local = "mm.$component.$plainid";
}
break;
}
} else {
$exp = explode('/', $value, 2);
$map->file = $exp[0];
@ -151,6 +126,7 @@ function add_langs_to_config($langs, $config) {
}
if ($changed) {
// Sort languages by key.
$config['languages'] = json_decode( json_encode( $config['languages'] ), true );
ksort($config['languages']);
$config['languages'] = json_decode( json_encode( $config['languages'] ), false );
@ -160,6 +136,7 @@ function add_langs_to_config($langs, $config) {
function build_lang($lang, $keys, $total) {
$local = 0;
$langFile = false;
$translations = [];
$langfoldername = str_replace('-', '_', $lang);
@ -190,10 +167,17 @@ function build_lang($lang, $keys, $total) {
include($file);
if (!isset($string[$value->string])) {
if ($value->file != 'local_moodlemobileapp' || !isset($string[$value->string_local])) {
continue;
// Not yet translated. Do not override.
if (!$langFile) {
// Load lang fils just once.
$langFile = file_get_contents(ASSETSPATH.$lang.'.json');
$langFile = (array) json_decode($langFile);
}
$text = $string[$value->string_local];
if (is_array($langFile) && isset($langFile[$key])) {
$translations[$key] = $langFile[$key];
$local++;
}
continue;
} else {
$text = $string[$value->string];
}
@ -219,6 +203,11 @@ function build_lang($lang, $keys, $total) {
$percentage = floor($success/$total *100);
echo "\t\t$success of $total -> $percentage% ($local local)\n";
if ($lang == 'en') {
generate_local_moodlemobileapp($keys, $translations);
override_component_lang_files($keys, $translations);
}
return true;
}
@ -259,10 +248,7 @@ function detect_lang($lang, $keys, $total) {
include($file);
if (!isset($string[$value->string])) {
if ($value->file != 'local_moodlemobileapp' || !isset($string[$value->string_local])) {
continue;
}
$text = $string[$value->string_local];
continue;
} else {
$text = $string[$value->string];
}
@ -285,3 +271,116 @@ function detect_lang($lang, $keys, $total) {
return false;
}
function save_key($key, $value, $path) {
$filePath = $path . '/en.json';
$file = file_get_contents($filePath);
$file = (array) json_decode($file);
if ($file[$key] != $value) {
$file[$key] = $value;
file_put_contents($filePath, str_replace('\/', '/', json_encode($file, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)));
}
}
function override_component_lang_files($keys, $translations) {
echo "Override component lang files.\n";
foreach ($translations as $key => $value) {
$path = '../src/';
$exp = explode('.', $key, 3);
$type = $exp[0];
if (count($exp) == 3) {
$component = $exp[1];
$plainid = $exp[2];
} else {
$component = 'moodle';
$plainid = $exp[1];
}
switch($type) {
case 'core':
case 'addon':
switch($component) {
case 'moodle':
$path .= 'lang';
break;
default:
$path .= $type.'/'.str_replace('_', '/', $component).'/lang';
break;
}
break;
case 'assets':
$path .= $type.'/'.$component;
break;
}
if (is_file($path.'/en.json')) {
save_key($plainid, $value, $path);
}
}
}
/**
* Generates local moodle mobile app file to update languages in AMOS.
*
* @param [array] $keys Translation keys.
* @param [array] $translations English translations.
*/
function generate_local_moodlemobileapp($keys, $translations) {
echo "Generate local_moodlemobileapp.\n";
$string = '<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Version details.
*
* @package local
* @subpackage moodlemobileapp
* @copyright 2014 Juan Leyva <juanleyvadelgado@gmail.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
$string[\'appstoredescription\'] = \'NOTE: This official Moodle Mobile app will ONLY work with Moodle sites that have been set up to allow it. Please talk to your Moodle administrator if you have any problems connecting.
If your Moodle site has been configured correctly, you can use this app to:
- browse the content of your courses, even when offline
- receive instant notifications of messages and other events
- quickly find and contact other people in your courses
- upload images, audio, videos and other files from your mobile device
- view your course grades
- and more!
Please see http://docs.moodle.org/en/Mobile_app for all the latest information.
Wed really appreciate any good reviews about the functionality so far, and your suggestions on what else you want this app to do!
The app requires the following permissions:
Record audio - For recording audio to upload to Moodle
Read and modify the contents of your SD card - Contents are downloaded to the SD Card so you can see them offline
Network access - To be able to connect with your Moodle site and check if you are connected or not to switch to offline mode
Run at startup - So you receive local notifications even when the app is running in the background
Prevent phone from sleeping - So you can receive push notifications anytime\';'."\n";
foreach ($keys as $key => $value) {
if (isset($translations[$key]) && $value->file == 'local_moodlemobileapp') {
$string .= '$string[\''.$key.'\'] = \''.str_replace("'", "\'", $translations[$key]).'\';'."\n";
}
}
$string .= '$string[\'pluginname\'] = \'Moodle Mobile language strings\';'."\n";
file_put_contents('../../moodle-local_moodlemobileapp/lang/en/local_moodlemobileapp.php', $string."\n");
}

View File

@ -2,7 +2,7 @@
"couldnotloadfiles": "The list of files could not be loaded.",
"emptyfilelist": "There are no files to show.",
"erroruploadnotworking": "Unfortunately it is currently not possible to upload files to your site.",
"files": "My files",
"files": "Files",
"privatefiles": "Private files",
"sitefiles": "Site files"
}

View File

@ -65,7 +65,7 @@
"numberofsubmittedassignments": "Submitted",
"numberofsubmissionsneedgrading": "Needs grading",
"numberofteams": "Groups",
"numwords": "({{$a}} words)",
"numwords": "{{$a}} words",
"outof": "{{$a.current}} out of {{$a.total}}",
"overdue": "<font color=\"red\">Assignment is overdue by: {{$a}}</font>",
"savechanges": "Save changes",
@ -82,7 +82,6 @@
"submissionstatus_submitted": "Submitted for grading",
"submissionstatus_": "No submission",
"submissionstatus": "Submission status",
"submissionstatusheading": "Submission status",
"submissionteam": "Group",
"submitassignment_help": "Once this assignment is submitted you will not be able to make any more changes.",
"submitassignment": "Submit assignment",

View File

@ -5,8 +5,8 @@
"average": "Average",
"captchaofflinewarning": "Feedback with CAPTCHA cannot be completed offline, or if not configured, or if the server is down.",
"completed_feedbacks": "Submitted answers",
"complete_the_form": "Answer the questions...",
"continue_the_form": "Continue the form",
"complete_the_form": "Answer the questions",
"continue_the_form": "Continue answering the questions",
"feedbackclose": "Allow answers to",
"feedbackopen": "Allow answers from",
"feedback_is_not_open": "The feedback is not open",

View File

@ -17,7 +17,7 @@
"detailedstats": "Detailed statistics",
"didnotanswerquestion": "Did not answer this question.",
"displayofgrade": "Display of grade (for students only)",
"displayscorewithessays": "<p>You earned {{$a.score}} out of {{$a.tempmaxgrade}} for the automatically graded questions.</p><p>Your {{$a.essayquestions}} essay question(s) will be graded and added into your final score at a later date.</p><p>Your current grade without the essay question(s) is {{$a.score}} out of {{$a.grade}}.</p>",
"displayscorewithessays": "<p>You earned {{$a.score}} out of {{$a.tempmaxgrade}} for the automatically graded questions.</p>\n<p>Your {{$a.essayquestions}} essay question(s) will be graded and added into your final score at a later date.</p>\n<p>Your current grade without the essay question(s) is {{$a.score}} out of {{$a.grade}}.</p>",
"displayscorewithoutessays": "Your score is {{$a.score}} (out of {{$a.grade}}).",
"emptypassword": "Password cannot be empty",
"enterpassword": "Please enter the password:",

View File

@ -2,7 +2,7 @@
"addnewnote": "Add a new note",
"coursenotes": "Course notes",
"eventnotecreated": "Note created",
"nonotes": "There are no notes of this type yet.",
"nonotes": "There are no notes of this type yet",
"note": "Note",
"notes": "Notes",
"personalnotes": "Personal notes",

View File

@ -108,6 +108,8 @@
"addon.messages.contactlistempty": "The contact list is empty",
"addon.messages.contactname": "Contact name",
"addon.messages.contacts": "Contacts",
"addon.messages.deletemessage": "Delete message",
"addon.messages.deletemessageconfirmation": "Are you sure you want to delete this message? It will only be deleted from your messaging history and will still be viewable by the user who sent or received the message.",
"addon.messages.errordeletemessage": "Error while deleting the message.",
"addon.messages.errorwhileretrievingcontacts": "Error while retrieving contacts from the server.",
"addon.messages.errorwhileretrievingdiscussions": "Error while retrieving discussions from the server.",
@ -693,6 +695,7 @@
"addon.mod_workshop.submissiongrade": "Grade for submission",
"addon.mod_workshop.submissiongradeof": "Grade for submission (of {{$a}})",
"addon.mod_workshop.submissionrequiredcontent": "You need to enter some text or add a file.",
"addon.mod_workshop.submissionrequiredtitle": "You need to enter a title.",
"addon.mod_workshop.submissionsreport": "Workshop submissions report",
"addon.mod_workshop.submissiontitle": "Title",
"addon.mod_workshop.switchphase10": "Switch to the setup phase",
@ -1108,10 +1111,14 @@
"core.course.errorgetmodule": "Error getting activity data.",
"core.course.hiddenfromstudents": "Hidden from students",
"core.course.hiddenoncoursepage": "Available but not shown on course page",
"core.course.manualcompletionnotsynced": "Manual completion not synchronised.",
"core.course.nocontentavailable": "No content available at the moment.",
"core.course.overriddennotice": "Your final grade from this activity was manually adjusted.",
"core.course.refreshcourse": "Refresh course",
"core.course.sections": "Sections",
"core.course.useactivityonbrowser": "You can still use it using your device's web browser.",
"core.course.warningmanualcompletionmodified": "The manual completion of an activity was modified on the site.",
"core.course.warningofflinemanualcompletiondeleted": "Some offline manual completion of course '{{name}}' has been deleted. {{error}}",
"core.coursedetails": "Course details",
"core.courses.allowguests": "This course allows guest users to enter",
"core.courses.availablecourses": "Available courses",
@ -1148,6 +1155,7 @@
"core.courses.past": "Past",
"core.courses.paymentrequired": "This course requires a payment for entry.",
"core.courses.paypalaccepted": "PayPal payments accepted",
"core.courses.recentlyoverdue": "Recently overdue",
"core.courses.search": "Search",
"core.courses.searchcourses": "Search courses",
"core.courses.searchcoursesadvice": "You can use the search courses button to find courses to access as a guest or enrol yourself in courses that allow it.",
@ -1192,6 +1200,7 @@
"core.errorinvalidform": "The form contains invalid data. Please check that all required fields are filled in and that the data is valid.",
"core.errorinvalidresponse": "Invalid response received. Please contact your site administrator if the error persists.",
"core.errorloadingcontent": "Error loading content.",
"core.errorofflinedisabled": "Offline browsing is disabled on your site. You need to be connected to the internet to use the app.",
"core.erroropenfilenoapp": "Error opening file: no app found to open this type of file.",
"core.erroropenfilenoextension": "Error opening file: the file doesn't have an extension.",
"core.erroropenpopup": "This activity is trying to open a popup. This is not supported in the app.",
@ -1301,6 +1310,8 @@
"core.login.invalidurl": "Invalid URL specified",
"core.login.invalidvaluemax": "The maximum value is {{$a}}",
"core.login.invalidvaluemin": "The minimum value is {{$a}}",
"core.login.legacymoodleversion": "You are trying to connect to an unsupported Moodle version. Please, download the Moodle Classic app to access this Moodle site.",
"core.login.legacymoodleversiondesktop": "You are trying to connect to <b>{{$a}}</b>.<br><br>This site is running an outdated unsupported version of Moodle which will not work with this Moodle Desktop App.<br><br>If this is your site please contact your local moodle partner to get assistance to update it.<br><br>See <a href=\"https://moodle.com/contact\">our contact page</a> to submit a request for assistance.",
"core.login.localmobileunexpectedresponse": "Moodle Mobile Additional Features check returned an unexpected response. You will be authenticated using the standard mobile service.",
"core.login.loggedoutssodescription": "You have to authenticate again. You need to log in to the site in a browser window.",
"core.login.login": "Log in",
@ -1327,6 +1338,8 @@
"core.login.problemconnectingerrorcontinue": "Double check you've entered the address correctly and try again.",
"core.login.profileinvaliddata": "Invalid value",
"core.login.recaptchachallengeimage": "reCAPTCHA challenge image",
"core.login.recaptchaexpired": "Verification expired. Answer the security question again.",
"core.login.recaptchaincorrect": "The security question answer is incorrect.",
"core.login.reconnect": "Reconnect",
"core.login.reconnectdescription": "Your authentication token is invalid or has expired. You have to reconnect to the site.",
"core.login.reconnectssodescription": "Your authentication token is invalid or has expired. You have to reconnect to the site. You need to log in to the site in a browser window.",
@ -1412,6 +1425,7 @@
"core.openinbrowser": "Open in browser",
"core.othergroups": "Other groups",
"core.pagea": "Page {{$a}}",
"core.parentlanguage": "",
"core.paymentinstant": "Use the button below to pay and be enrolled within minutes!",
"core.percentagenumber": "{{$a}}%",
"core.phone": "Phone",
@ -1438,7 +1452,7 @@
"core.question.questionmessage": "Question {{$a}}: {{$b}}",
"core.question.questionno": "Question {{$a}}",
"core.question.requiresgrading": "Requires grading",
"core.question.unknown": "Cannot determine status",
"core.question.unknown": "Unknown",
"core.quotausage": "You have currently used {{$a.used}} of your {{$a.total}} limit.",
"core.redirectingtosite": "You will be redirected to the site.",
"core.refresh": "Refresh",
@ -1460,12 +1474,15 @@
"core.settings.appready": "App ready",
"core.settings.cannotsyncoffline": "Cannot synchronise offline.",
"core.settings.cannotsyncwithoutwifi": "Cannot synchronise because the current settings only allow to synchronise when connected to Wi-Fi. Please connect to a Wi-Fi network.",
"core.settings.compilationinfo": "Compilation info",
"core.settings.cordovadevicemodel": "Cordova device model",
"core.settings.cordovadeviceosversion": "Cordova device OS version",
"core.settings.cordovadeviceplatform": "Cordova device platform",
"core.settings.cordovadeviceuuid": "Cordova device UUID",
"core.settings.cordovaversion": "Cordova version",
"core.settings.currentlanguage": "Current language",
"core.settings.debugdisplay": "Display debug messages",
"core.settings.debugdisplaydescription": "If enabled, error modals will display more data about the error if possible.",
"core.settings.deletesitefiles": "Are you sure that you want to delete the downloaded files from the site '{{sitename}}'?",
"core.settings.deletesitefilestitle": "Delete site files",
"core.settings.deviceinfo": "Device info",
@ -1557,6 +1574,7 @@
"core.user.editingteacher": "Teacher",
"core.user.email": "Email address",
"core.user.emailagain": "Email (again)",
"core.user.errorloaduser": "Error loading user.",
"core.user.firstname": "First name",
"core.user.interests": "Interests",
"core.user.lastname": "Surname",
@ -1576,6 +1594,8 @@
"core.usernotfullysetup": "User not fully set-up",
"core.users": "Users",
"core.view": "View",
"core.viewcode": "View code",
"core.vieweditor": "View editor",
"core.viewprofile": "View profile",
"core.warningofflinedatadeleted": "Offline data from {{component}} '{{name}}' has been deleted. {{error}}",
"core.whatisyourage": "What is your age?",

View File

@ -27,7 +27,7 @@
"nocoursespast": "No past courses",
"nocoursesyet": "No courses in this category",
"noevents": "No upcoming activities due",
"nosearchresults": "There were no results from your search",
"nosearchresults": "No results",
"notenroled": "You are not enrolled in this course",
"notenrollable": "You cannot enrol yourself in this course.",
"password": "Enrolment key",

View File

@ -10,23 +10,23 @@
"connect": "Connect!",
"connecttomoodle": "Connect to Moodle",
"contactyouradministrator": "Contact your site administrator for further help.",
"contactyouradministratorissue": "Please, ask the administrator to check the following issue: {{$a}}",
"contactyouradministratorissue": "Please ask your site administrator to check the following issue: {{$a}}",
"emailconfirmsent": "<p>An email should have been sent to your address at <b>{{$a}}</b></p><p>It contains easy instructions to complete your registration.</p><p>If you continue to have difficulty, contact the site administrator.</p>",
"emailnotmatch": "Emails do not match",
"enterthewordsabove": "Enter the words above",
"erroraccesscontrolalloworigin": "The Cross-Origin call you're trying to perform has been rejected. Please check https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"erroraccesscontrolalloworigin": "The cross-origin call you're trying to perform has been rejected. Please check https://docs.moodle.org/dev/Moodle_Mobile_development_using_Chrome_or_Chromium",
"errordeletesite": "An error occurred while deleting this site. Please try again.",
"errorupdatesite": "An error ocurred while updating the site's token.",
"errorupdatesite": "An error occurred while updating the site's token.",
"firsttime": "Is this your first time here?",
"forgotten": "Forgotten your username or password?",
"getanothercaptcha": "Get another CAPTCHA",
"help": "Help",
"helpmelogin": "<p>There are many thousands of Moodle sites around the world. This app can only connect to Moodle sites that have specifically enabled Mobile app access.</p><p>If you can't connect to your Moodle site then you need to contact a Moodle administrator at the place where you want to connect and ask them to read <a href=\"http://docs.moodle.org/en/Mobile_app\" target=\"_blank\">http://docs.moodle.org/en/Mobile_app</a></p><p>To test the app in a Moodle demo site type <i>teacher</i> or <i>student</i> in the <i>Site address</i> field and click the <b>Connect button</b>.</p>",
"helpmelogin": "<p>There are many thousands of Moodle sites around the world. This app can only connect to Moodle sites that have specifically enabled Mobile app access.</p><p>If you can't connect to your Moodle site then you need to contact your site administrator and ask them to read <a href=\"http://docs.moodle.org/en/Mobile_app\" target=\"_blank\">http://docs.moodle.org/en/Mobile_app</a></p><p>To test the app in a Moodle demo site type <i>teacher</i> or <i>student</i> in the <i>Site address</i> field and click the <b>Connect button</b>.</p>",
"instructions": "Instructions",
"invalidaccount": "Please check your login details or ask your site administrator to check the site configuration.",
"invaliddate": "Invalid date",
"invalidemail": "Invalid email address",
"invalidmoodleversion": "Invalid Moodle version. The minium version required is 2.4.",
"invalidmoodleversion": "Invalid Moodle version. The minimum version required is 2.4.",
"invalidsite": "The site URL is invalid.",
"invalidtime": "Invalid time",
"invalidurl": "Invalid URL specified",
@ -34,7 +34,7 @@
"invalidvaluemin": "The minimum value is {{$a}}",
"legacymoodleversion": "You are trying to connect to an unsupported Moodle version. Please, download the Moodle Classic app to access this Moodle site.",
"legacymoodleversiondesktop": "You are trying to connect to <b>{{$a}}</b>.<br><br>This site is running an outdated unsupported version of Moodle which will not work with this Moodle Desktop App.<br><br>If this is your site please contact your local moodle partner to get assistance to update it.<br><br>See <a href=\"https://moodle.com/contact\">our contact page</a> to submit a request for assistance.",
"localmobileunexpectedresponse": "Moodle Mobile Additional Features check returned an unexpected response, you will be authenticated using the standard Mobile service.",
"localmobileunexpectedresponse": "Moodle Mobile Additional Features check returned an unexpected response. You will be authenticated using the standard mobile service.",
"login": "Log in",
"loginbutton": "Log in",
"logininsiterequired": "You need to log in to the site in a browser window.",
@ -43,7 +43,7 @@
"missingemail": "Missing email address",
"missingfirstname": "Missing given name",
"missinglastname": "Missing surname",
"mobileservicesnotenabled": "Mobile Services are not enabled in your site. Please, contact your Moodle site administrator if you think mobile access should be enabled.",
"mobileservicesnotenabled": "Mobile access is not enabled on your site. Please contact your site administrator if you think it should be enabled.",
"newaccount": "New account",
"newsitedescription": "Please enter the URL of your Moodle site. Note that it might not be configured to work with this app.",
"notloggedin": "You need to be logged in.",
@ -63,8 +63,8 @@
"recaptchaexpired": "Verification expired. Answer the security question again.",
"recaptchaincorrect": "The security question answer is incorrect.",
"reconnect": "Reconnect",
"reconnectdescription": "Your authentication token is invalid or has expired, you have to reconnect to the site.",
"reconnectssodescription": "Your authentication token is invalid or has expired, you have to reconnect to the site. You need to log in to the site in a browser window.",
"reconnectdescription": "Your authentication token is invalid or has expired. You have to reconnect to the site.",
"reconnectssodescription": "Your authentication token is invalid or has expired. You have to reconnect to the site. You need to log in to the site in a browser window.",
"searchby": "Search by:",
"security_question": "Security question",
"selectacountry": "Select a country",
@ -74,7 +74,7 @@
"siteinmaintenance": "Your site is in maintenance mode",
"sitepolicynotagreederror": "Site policy not agreed.",
"siteurl": "Site URL",
"siteurlrequired": "Site URL required, i.e <i>http://www.yourmoodlesite.abc or https://www.yourmoodlesite.efg</i>",
"siteurlrequired": "Site URL required i.e <i>http://www.yourmoodlesite.org</i>",
"startsignup": "Create new account",
"stillcantconnect": "Still can't connect?",
"supplyinfo": "More details",
@ -83,5 +83,5 @@
"usernamerequired": "Username required",
"usernotaddederror": "User not added - error",
"visitchangepassword": "Do you want to visit the site to change the password?",
"webservicesnotenabled": "Web Services are not enabled in your site. Please, contact your Moodle site administrator if you think mobile access should be enabled."
"webservicesnotenabled": "Web services are not enabled in your site. Please contact your site administrator if you think they should be enabled."
}

View File

@ -18,5 +18,5 @@
"questionmessage": "Question {{$a}}: {{$b}}",
"questionno": "Question {{$a}}",
"requiresgrading": "Requires grading",
"unknown": "Cannot determine status"
"unknown": "Unknown"
}

View File

@ -22,7 +22,7 @@
"displayformat": "Display format",
"enabledownloadsection": "Enable download sections",
"enablerichtexteditor": "Enable text editor",
"enablerichtexteditordescription": "If enabled, a rich text editor will be shown when entering content. If disabled, plain text editor will be shown. You can toggle between both while editing.",
"enablerichtexteditordescription": "If enabled, a text editor will be available when entering content.",
"enablesyncwifi": "Allow sync only when on Wi-Fi",
"errordeletesitefiles": "Error deleting site files.",
"errorsyncsite": "Error synchronising site data. Please check your Internet connection and try again.",
@ -30,7 +30,7 @@
"filesystemroot": "File system root",
"general": "General",
"language": "Language",
"license": "License",
"license": "Licence",
"localnotifavailable": "Local notifications available",
"locationhref": "Web view URL",
"locked": "Locked",
@ -51,4 +51,4 @@
"versioncode": "Version code",
"versionname": "Version name",
"wificonnection": "Wi-Fi connection"
}
}

View File

@ -15,7 +15,7 @@
"lastname": "Surname",
"manager": "Manager",
"newpicture": "New picture",
"noparticipants": "No participants found for this course.",
"noparticipants": "No participants found for this course",
"participants": "Participants",
"phone1": "Phone",
"phone2": "Mobile phone",

View File

@ -9,8 +9,8 @@
"areyousure": "Are you sure?",
"back": "Back",
"cancel": "Cancel",
"cannotconnect": "Cannot connect: Verify that you have typed correctly the URL and that your site uses Moodle 2.4 or later.",
"cannotdownloadfiles": "File downloading is disabled in your Mobile service. Please, contact your site administrator.",
"cannotconnect": "Cannot connect: Verify that you have correctly typed the URL and that your site uses Moodle 2.4 or later.",
"cannotdownloadfiles": "File downloading is disabled. Please contact your site administrator.",
"captureaudio": "Record audio",
"capturedimage": "Taken picture.",
"captureimage": "Take picture",
@ -38,7 +38,7 @@
"confirmcanceledit": "Are you sure you want to leave this page? All changes will be lost.",
"confirmdeletefile": "Are you sure you want to delete this file?",
"confirmloss": "Are you sure? All changes will be lost.",
"confirmopeninbrowser": "Do you want to open it in browser?",
"confirmopeninbrowser": "Do you want to open it in a web browser?",
"considereddigitalminor": "You are considered to be a digital minor.",
"content": "Content",
"continue": "Continue",
@ -47,7 +47,7 @@
"course": "Course",
"coursedetails": "Course details",
"currentdevice": "Current device",
"datastoredoffline": "Data stored in the device because it couldn't be sent. It will automatically be sent later.",
"datastoredoffline": "Data stored in the device because it couldn't be sent. It will be sent automatically later.",
"date": "Date",
"day": "day",
"days": "days",
@ -71,23 +71,23 @@
"download": "Download",
"downloading": "Downloading",
"edit": "Edit",
"emptysplit": "This page will appear blank if the side panel is empty or is loading.",
"emptysplit": "This page will appear blank if the left panel is empty or is loading.",
"error": "Error",
"errorchangecompletion": "An error occurred while changing the completion status. Please try again.",
"errordeletefile": "Error deleting the file. Please try again.",
"errordownloading": "Error downloading file.",
"errordownloadingsomefiles": "Error downloading module files. Some files might be missing.",
"errorfileexistssamename": "There's already a file with this name.",
"errorinvalidform": "The form contains invalid data. Please make sure to fill all required fields and that the data is valid.",
"errorinvalidresponse": "Invalid response received. Please contact your Moodle site administrator if the error persists.",
"errordownloadingsomefiles": "Error downloading files. Some files might be missing.",
"errorfileexistssamename": "A file with this name already exists.",
"errorinvalidform": "The form contains invalid data. Please check that all required fields are filled in and that the data is valid.",
"errorinvalidresponse": "Invalid response received. Please contact your site administrator if the error persists.",
"errorloadingcontent": "Error loading content.",
"errorofflinedisabled": "Offline browsing is disabled on your site. You need to be connected to the internet to use the app.",
"erroropenfilenoapp": "Error opening the file: no app found to open this kind of file.",
"erroropenfilenoextension": "Error opening the file: the file doesn't have extension.",
"erroropenpopup": "This activity is trying to open a popup. This is not supported in this app.",
"errorrenamefile": "Error renaming the file. Please try again.",
"errorsync": "An error occurred while synchronizing. Please try again.",
"errorsyncblocked": "This {{$a}} cannot be synchronized right now because of an ongoing process. Please try again later. If the problem persists, try restarting the app.",
"erroropenfilenoapp": "Error opening file: no app found to open this type of file.",
"erroropenfilenoextension": "Error opening file: the file doesn't have an extension.",
"erroropenpopup": "This activity is trying to open a popup. This is not supported in the app.",
"errorrenamefile": "Error renaming file. Please try again.",
"errorsync": "An error occurred while synchronising. Please try again.",
"errorsyncblocked": "This {{$a}} cannot be synchronised right now because of an ongoing process. Please try again later. If the problem persists, try restarting the app.",
"explanationdigitalminor": "This information is required to determine if your age is over the digital age of consent. This is the age when an individual can consent to terms and conditions and their data being legally stored and processed.",
"filename": "Filename",
"filenameexist": "File name already exists: {{$a}}",
@ -97,34 +97,34 @@
"fullnameandsitename": "{{fullname}} ({{sitename}})",
"groupsseparate": "Separate groups",
"groupsvisible": "Visible groups",
"hasdatatosync": "This {{$a}} has offline data to be synchronized.",
"help" : "Help",
"hasdatatosync": "This {{$a}} has offline data to be synchronised.",
"help": "Help",
"hide": "Hide",
"hour" : "hour",
"hours" : "hours",
"hour": "hour",
"hours": "hours",
"humanreadablesize": "{{size}} {{unit}}",
"image": "Image",
"imageviewer": "Image viewer",
"info": "Info",
"info": "Information",
"ios": "iOS",
"labelsep": ": ",
"labelsep": ":",
"lastaccess": "Last access",
"lastdownloaded": "Last downloaded",
"lastmodified": "Last modified",
"lastsync": "Last synchronization",
"lastsync": "Last synchronisation",
"layoutgrid": "Grid",
"list": "List",
"listsep": ",",
"loading": "Loading",
"loadmore": "Load more",
"location": "Location",
"lostconnection": "Your authentication token is invalid or has expired, you will have to reconnect to the site.",
"lostconnection": "Your authentication token is invalid or has expired. You will have to reconnect to the site.",
"maxsizeandattachments": "Maximum size for new files: {{$a.size}}, maximum attachments: {{$a.attachments}}",
"min" : "min",
"mins" : "mins",
"moduleintro" : "Description",
"min": "min",
"mins": "mins",
"moduleintro": "Description",
"mod_assign": "Assignment",
"mod_assignment": "Assignment",
"mod_assignment": "Assignment 2.2 (Disabled)",
"mod_book": "Book",
"mod_chat": "Chat",
"mod_choice": "Choice",
@ -143,13 +143,13 @@
"mod_lti": "External tool",
"mod_page": "Page",
"mod_quiz": "Quiz",
"mod_resource": "Resource",
"mod_resource": "File",
"mod_scorm": "SCORM package",
"mod_survey": "Survey",
"mod_url": "URL",
"mod_wiki": "Wiki",
"mod_workshop": "Workshop",
"more": "More",
"more": "more",
"mygroups": "My groups",
"name": "Name",
"nograde": "No grade",
@ -165,12 +165,12 @@
"notapplicable": "n/a",
"notice": "Notice",
"notsent": "Not sent",
"now" : "now",
"now": "now",
"numwords": "{{$a}} words",
"offline": "Offline",
"ok": "OK",
"online": "Online",
"openfullimage": "Click here to display the image at full size",
"openfullimage": "Click here to display the full size image",
"openinbrowser": "Open in browser",
"othergroups": "Other groups",
"pagea": "Page {{$a}}",
@ -183,18 +183,18 @@
"proceed": "Proceed",
"pulltorefresh": "Pull to refresh",
"quotausage": "You have currently used {{$a.used}} of your {{$a.total}} limit.",
"redirectingtosite": "You will be redirected to site.",
"redirectingtosite": "You will be redirected to the site.",
"refresh": "Refresh",
"required": "Required",
"requireduserdatamissing": "This user lacks some required profile data. Please, fill this data in your Moodle and try again.<br>{{$a}}",
"requireduserdatamissing": "This user lacks some required profile data. Please enter the data in your site and try again.<br>{{$a}}",
"restore": "Restore",
"retry": "Retry",
"save": "Save",
"search": " Search...",
"search": "Search",
"searching": "Searching",
"searchresults": "Search results",
"sec" : "sec",
"secs" : "secs",
"sec": "sec",
"secs": "secs",
"seemoredetail": "Click here to see more detail",
"send": "Send",
"sending": "Sending",
@ -215,7 +215,7 @@
"success": "Success",
"tablet": "Tablet",
"teachers": "Teachers",
"thereisdatatosync": "There are offline {{$a}} to be synchronized.",
"thereisdatatosync": "There are offline {{$a}} to be synchronised.",
"thisdirection": "ltr",
"time": "Time",
"timesup": "Time is up!",
@ -223,13 +223,13 @@
"twoparagraphs": "{{p1}}<br><br>{{p2}}",
"tryagain": "Try again",
"uhoh": "Uh oh!",
"unicodenotsupported" : "Some emojis are not supported on this site. Such characters will be removed when the message is sent.",
"unicodenotsupportedcleanerror" : "Empty text was found when cleaning Unicode chars.",
"unicodenotsupported": "Some emojis are not supported on this site. Such characters will be removed when the message is sent.",
"unicodenotsupportedcleanerror": "Empty text was found when cleaning Unicode chars.",
"unknown": "Unknown",
"unlimited": "Unlimited",
"unzipping": "Unzipping",
"upgraderunning": "Site is being upgraded, please retry later.",
"unexpectederror": "Unexepected error. Please close and reopen the application to try again",
"unexpectederror": "Unexpected error. Please close and reopen the application then try again.",
"userdeleted": "This user account has been deleted",
"userdetails": "User details",
"usernotfullysetup": "User not fully set-up",
@ -238,15 +238,15 @@
"viewcode": "View code",
"vieweditor": "View editor",
"viewprofile": "View profile",
"warningofflinedatadeleted": "Offline data of {{component}} '{{name}}' has been deleted. {{error}}",
"warningofflinedatadeleted": "Offline data from {{component}} '{{name}}' has been deleted. {{error}}",
"whatisyourage": "What is your age?",
"wheredoyoulive": "In which country do you live?",
"whoops": "Oops!",
"whyisthishappening": "Why is this happening?",
"whyisthisrequired": "Why is this required?",
"windowsphone": "Windows Phone",
"wsfunctionnotavailable": "The webservice function is not available.",
"year" : "year",
"wsfunctionnotavailable": "The web service function is not available.",
"year": "year",
"years": "years",
"yes": "Yes"
}
}