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/assets/
!/desktop/electron.js !/desktop/electron.js
src/configconstants.ts 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 remote set-url origin https://$GIT_TOKEN@github.com/$TRAVIS_REPO_SLUG.git
git fetch -q origin git fetch -q origin
git add src/assets/lang git add src/assets/lang
git add */en.json
git commit -m 'Update lang files [ci skip]' git commit -m 'Update lang files [ci skip]'
git push origin HEAD:$TRAVIS_BRANCH 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 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 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 if [ ! -z $GIT_ORG ] && [ ! -z $GIT_TOKEN ] ; then
gitfolder=${PWD##*/} gitfolder=${PWD##*/}
cd .. 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 cd pgb
git checkout $TRAVIS_BRANCH git checkout $TRAVIS_BRANCH
rm -Rf assets build index.html templates rm -Rf assets build index.html templates

View File

@ -3,14 +3,17 @@ source "functions.sh"
forceLang=$1 forceLang=$1
print_title 'Getting languages' 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 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]} BRANCH=${BRANCHES[${#BRANCHES[@]}-1]}
git checkout $BRANCH git checkout $BRANCH
git pull git pull
popd 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 if [ -z $forceLang ]; then
php -f moodle_to_json.php php -f moodle_to_json.php
else else

View File

@ -1,12 +1,6 @@
#!/bin/bash #!/bin/bash
source "functions.sh" 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 #Saves or updates a key on langindex_old.json
function save_key { function save_key {
key=$1 key=$1
@ -53,30 +47,6 @@ function exists_in_file {
function exists_in_mobile { function exists_in_mobile {
file='local_moodlemobileapp' file='local_moodlemobileapp'
exists_in_file $file $key 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 { function do_match {
@ -114,8 +84,8 @@ function find_matches {
return return
fi fi
print_error "No match found for $key adding to local_moodlemobileapp" print_message "No match found for $key add it to local_moodlemobileapp"
save_local save_key $key "local_moodlemobileapp"
} }
function find_single_matches { function find_single_matches {
@ -239,6 +209,11 @@ function find_better_file {
if [ $found == 0 ]; then if [ $found == 0 ]; then
print_error "Indexed string '$key' not found on current place '$current'" 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 fi
} }
@ -266,7 +241,7 @@ gulp lang
print_title 'Getting languages' print_title 'Getting languages'
git clone https://git.in.moodle.com/moodle/moodle-langpacks.git $LANGPACKSFOLDER git clone https://git.in.moodle.com/moodle/moodle-langpacks.git $LANGPACKSFOLDER
pushd $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]} BRANCH=${BRANCHES[${#BRANCHES[@]}-1]}
git checkout $BRANCH git checkout $BRANCH
git pull git pull
@ -277,13 +252,12 @@ print_title 'Processing file'
if [ ! -f 'langindex.json' ]; then if [ ! -f 'langindex.json' ]; then
echo "{}" > langindex.json echo "{}" > langindex.json
fi fi
echo "<?php" > local_moodlemobileapp.php
parse_file '../src/assets/lang/en.json' parse_file '../src/assets/lang/en.json'
echo 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 mv langindex_new.json langindex.json
rm langindex_old.json rm langindex_old.json

View File

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

View File

@ -49,31 +49,6 @@ foreach ($keys as $key => $value) {
if ($value == 'local_moodlemobileapp') { if ($value == 'local_moodlemobileapp') {
$map->file = $value; $map->file = $value;
$map->string = $key; $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 { } else {
$exp = explode('/', $value, 2); $exp = explode('/', $value, 2);
$map->file = $exp[0]; $map->file = $exp[0];
@ -151,6 +126,7 @@ function add_langs_to_config($langs, $config) {
} }
if ($changed) { if ($changed) {
// Sort languages by key.
$config['languages'] = json_decode( json_encode( $config['languages'] ), true ); $config['languages'] = json_decode( json_encode( $config['languages'] ), true );
ksort($config['languages']); ksort($config['languages']);
$config['languages'] = json_decode( json_encode( $config['languages'] ), false ); $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) { function build_lang($lang, $keys, $total) {
$local = 0; $local = 0;
$langFile = false;
$translations = []; $translations = [];
$langfoldername = str_replace('-', '_', $lang); $langfoldername = str_replace('-', '_', $lang);
@ -190,10 +167,17 @@ function build_lang($lang, $keys, $total) {
include($file); include($file);
if (!isset($string[$value->string])) { if (!isset($string[$value->string])) {
if ($value->file != 'local_moodlemobileapp' || !isset($string[$value->string_local])) { // Not yet translated. Do not override.
continue; 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 { } else {
$text = $string[$value->string]; $text = $string[$value->string];
} }
@ -219,6 +203,11 @@ function build_lang($lang, $keys, $total) {
$percentage = floor($success/$total *100); $percentage = floor($success/$total *100);
echo "\t\t$success of $total -> $percentage% ($local local)\n"; 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; return true;
} }
@ -259,10 +248,7 @@ function detect_lang($lang, $keys, $total) {
include($file); include($file);
if (!isset($string[$value->string])) { if (!isset($string[$value->string])) {
if ($value->file != 'local_moodlemobileapp' || !isset($string[$value->string_local])) { continue;
continue;
}
$text = $string[$value->string_local];
} else { } else {
$text = $string[$value->string]; $text = $string[$value->string];
} }
@ -285,3 +271,116 @@ function detect_lang($lang, $keys, $total) {
return false; 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.", "couldnotloadfiles": "The list of files could not be loaded.",
"emptyfilelist": "There are no files to show.", "emptyfilelist": "There are no files to show.",
"erroruploadnotworking": "Unfortunately it is currently not possible to upload files to your site.", "erroruploadnotworking": "Unfortunately it is currently not possible to upload files to your site.",
"files": "My files", "files": "Files",
"privatefiles": "Private files", "privatefiles": "Private files",
"sitefiles": "Site files" "sitefiles": "Site files"
} }

View File

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

View File

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

View File

@ -17,7 +17,7 @@
"detailedstats": "Detailed statistics", "detailedstats": "Detailed statistics",
"didnotanswerquestion": "Did not answer this question.", "didnotanswerquestion": "Did not answer this question.",
"displayofgrade": "Display of grade (for students only)", "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}}).", "displayscorewithoutessays": "Your score is {{$a.score}} (out of {{$a.grade}}).",
"emptypassword": "Password cannot be empty", "emptypassword": "Password cannot be empty",
"enterpassword": "Please enter the password:", "enterpassword": "Please enter the password:",

View File

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

View File

@ -108,6 +108,8 @@
"addon.messages.contactlistempty": "The contact list is empty", "addon.messages.contactlistempty": "The contact list is empty",
"addon.messages.contactname": "Contact name", "addon.messages.contactname": "Contact name",
"addon.messages.contacts": "Contacts", "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.errordeletemessage": "Error while deleting the message.",
"addon.messages.errorwhileretrievingcontacts": "Error while retrieving contacts from the server.", "addon.messages.errorwhileretrievingcontacts": "Error while retrieving contacts from the server.",
"addon.messages.errorwhileretrievingdiscussions": "Error while retrieving discussions 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.submissiongrade": "Grade for submission",
"addon.mod_workshop.submissiongradeof": "Grade for submission (of {{$a}})", "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.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.submissionsreport": "Workshop submissions report",
"addon.mod_workshop.submissiontitle": "Title", "addon.mod_workshop.submissiontitle": "Title",
"addon.mod_workshop.switchphase10": "Switch to the setup phase", "addon.mod_workshop.switchphase10": "Switch to the setup phase",
@ -1108,10 +1111,14 @@
"core.course.errorgetmodule": "Error getting activity data.", "core.course.errorgetmodule": "Error getting activity data.",
"core.course.hiddenfromstudents": "Hidden from students", "core.course.hiddenfromstudents": "Hidden from students",
"core.course.hiddenoncoursepage": "Available but not shown on course page", "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.nocontentavailable": "No content available at the moment.",
"core.course.overriddennotice": "Your final grade from this activity was manually adjusted.", "core.course.overriddennotice": "Your final grade from this activity was manually adjusted.",
"core.course.refreshcourse": "Refresh course",
"core.course.sections": "Sections", "core.course.sections": "Sections",
"core.course.useactivityonbrowser": "You can still use it using your device's web browser.", "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.coursedetails": "Course details",
"core.courses.allowguests": "This course allows guest users to enter", "core.courses.allowguests": "This course allows guest users to enter",
"core.courses.availablecourses": "Available courses", "core.courses.availablecourses": "Available courses",
@ -1148,6 +1155,7 @@
"core.courses.past": "Past", "core.courses.past": "Past",
"core.courses.paymentrequired": "This course requires a payment for entry.", "core.courses.paymentrequired": "This course requires a payment for entry.",
"core.courses.paypalaccepted": "PayPal payments accepted", "core.courses.paypalaccepted": "PayPal payments accepted",
"core.courses.recentlyoverdue": "Recently overdue",
"core.courses.search": "Search", "core.courses.search": "Search",
"core.courses.searchcourses": "Search courses", "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.", "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.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.errorinvalidresponse": "Invalid response received. Please contact your site administrator if the error persists.",
"core.errorloadingcontent": "Error loading content.", "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.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.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.", "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.invalidurl": "Invalid URL specified",
"core.login.invalidvaluemax": "The maximum value is {{$a}}", "core.login.invalidvaluemax": "The maximum value is {{$a}}",
"core.login.invalidvaluemin": "The minimum 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.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.loggedoutssodescription": "You have to authenticate again. You need to log in to the site in a browser window.",
"core.login.login": "Log in", "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.problemconnectingerrorcontinue": "Double check you've entered the address correctly and try again.",
"core.login.profileinvaliddata": "Invalid value", "core.login.profileinvaliddata": "Invalid value",
"core.login.recaptchachallengeimage": "reCAPTCHA challenge image", "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.reconnect": "Reconnect",
"core.login.reconnectdescription": "Your authentication token is invalid or has expired. You have to reconnect to the site.", "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.", "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.openinbrowser": "Open in browser",
"core.othergroups": "Other groups", "core.othergroups": "Other groups",
"core.pagea": "Page {{$a}}", "core.pagea": "Page {{$a}}",
"core.parentlanguage": "",
"core.paymentinstant": "Use the button below to pay and be enrolled within minutes!", "core.paymentinstant": "Use the button below to pay and be enrolled within minutes!",
"core.percentagenumber": "{{$a}}%", "core.percentagenumber": "{{$a}}%",
"core.phone": "Phone", "core.phone": "Phone",
@ -1438,7 +1452,7 @@
"core.question.questionmessage": "Question {{$a}}: {{$b}}", "core.question.questionmessage": "Question {{$a}}: {{$b}}",
"core.question.questionno": "Question {{$a}}", "core.question.questionno": "Question {{$a}}",
"core.question.requiresgrading": "Requires grading", "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.quotausage": "You have currently used {{$a.used}} of your {{$a.total}} limit.",
"core.redirectingtosite": "You will be redirected to the site.", "core.redirectingtosite": "You will be redirected to the site.",
"core.refresh": "Refresh", "core.refresh": "Refresh",
@ -1460,12 +1474,15 @@
"core.settings.appready": "App ready", "core.settings.appready": "App ready",
"core.settings.cannotsyncoffline": "Cannot synchronise offline.", "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.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.cordovadevicemodel": "Cordova device model",
"core.settings.cordovadeviceosversion": "Cordova device OS version", "core.settings.cordovadeviceosversion": "Cordova device OS version",
"core.settings.cordovadeviceplatform": "Cordova device platform", "core.settings.cordovadeviceplatform": "Cordova device platform",
"core.settings.cordovadeviceuuid": "Cordova device UUID", "core.settings.cordovadeviceuuid": "Cordova device UUID",
"core.settings.cordovaversion": "Cordova version", "core.settings.cordovaversion": "Cordova version",
"core.settings.currentlanguage": "Current language", "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.deletesitefiles": "Are you sure that you want to delete the downloaded files from the site '{{sitename}}'?",
"core.settings.deletesitefilestitle": "Delete site files", "core.settings.deletesitefilestitle": "Delete site files",
"core.settings.deviceinfo": "Device info", "core.settings.deviceinfo": "Device info",
@ -1557,6 +1574,7 @@
"core.user.editingteacher": "Teacher", "core.user.editingteacher": "Teacher",
"core.user.email": "Email address", "core.user.email": "Email address",
"core.user.emailagain": "Email (again)", "core.user.emailagain": "Email (again)",
"core.user.errorloaduser": "Error loading user.",
"core.user.firstname": "First name", "core.user.firstname": "First name",
"core.user.interests": "Interests", "core.user.interests": "Interests",
"core.user.lastname": "Surname", "core.user.lastname": "Surname",
@ -1576,6 +1594,8 @@
"core.usernotfullysetup": "User not fully set-up", "core.usernotfullysetup": "User not fully set-up",
"core.users": "Users", "core.users": "Users",
"core.view": "View", "core.view": "View",
"core.viewcode": "View code",
"core.vieweditor": "View editor",
"core.viewprofile": "View profile", "core.viewprofile": "View profile",
"core.warningofflinedatadeleted": "Offline data from {{component}} '{{name}}' has been deleted. {{error}}", "core.warningofflinedatadeleted": "Offline data from {{component}} '{{name}}' has been deleted. {{error}}",
"core.whatisyourage": "What is your age?", "core.whatisyourage": "What is your age?",

View File

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

View File

@ -10,23 +10,23 @@
"connect": "Connect!", "connect": "Connect!",
"connecttomoodle": "Connect to Moodle", "connecttomoodle": "Connect to Moodle",
"contactyouradministrator": "Contact your site administrator for further help.", "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>", "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", "emailnotmatch": "Emails do not match",
"enterthewordsabove": "Enter the words above", "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.", "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?", "firsttime": "Is this your first time here?",
"forgotten": "Forgotten your username or password?", "forgotten": "Forgotten your username or password?",
"getanothercaptcha": "Get another CAPTCHA", "getanothercaptcha": "Get another CAPTCHA",
"help": "Help", "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", "instructions": "Instructions",
"invalidaccount": "Please check your login details or ask your site administrator to check the site configuration.", "invalidaccount": "Please check your login details or ask your site administrator to check the site configuration.",
"invaliddate": "Invalid date", "invaliddate": "Invalid date",
"invalidemail": "Invalid email address", "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.", "invalidsite": "The site URL is invalid.",
"invalidtime": "Invalid time", "invalidtime": "Invalid time",
"invalidurl": "Invalid URL specified", "invalidurl": "Invalid URL specified",
@ -34,7 +34,7 @@
"invalidvaluemin": "The minimum value is {{$a}}", "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.", "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.", "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", "login": "Log in",
"loginbutton": "Log in", "loginbutton": "Log in",
"logininsiterequired": "You need to log in to the site in a browser window.", "logininsiterequired": "You need to log in to the site in a browser window.",
@ -43,7 +43,7 @@
"missingemail": "Missing email address", "missingemail": "Missing email address",
"missingfirstname": "Missing given name", "missingfirstname": "Missing given name",
"missinglastname": "Missing surname", "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", "newaccount": "New account",
"newsitedescription": "Please enter the URL of your Moodle site. Note that it might not be configured to work with this app.", "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.", "notloggedin": "You need to be logged in.",
@ -63,8 +63,8 @@
"recaptchaexpired": "Verification expired. Answer the security question again.", "recaptchaexpired": "Verification expired. Answer the security question again.",
"recaptchaincorrect": "The security question answer is incorrect.", "recaptchaincorrect": "The security question answer is incorrect.",
"reconnect": "Reconnect", "reconnect": "Reconnect",
"reconnectdescription": "Your authentication token is invalid or has expired, you have to reconnect to the site.", "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.", "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:", "searchby": "Search by:",
"security_question": "Security question", "security_question": "Security question",
"selectacountry": "Select a country", "selectacountry": "Select a country",
@ -74,7 +74,7 @@
"siteinmaintenance": "Your site is in maintenance mode", "siteinmaintenance": "Your site is in maintenance mode",
"sitepolicynotagreederror": "Site policy not agreed.", "sitepolicynotagreederror": "Site policy not agreed.",
"siteurl": "Site URL", "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", "startsignup": "Create new account",
"stillcantconnect": "Still can't connect?", "stillcantconnect": "Still can't connect?",
"supplyinfo": "More details", "supplyinfo": "More details",
@ -83,5 +83,5 @@
"usernamerequired": "Username required", "usernamerequired": "Username required",
"usernotaddederror": "User not added - error", "usernotaddederror": "User not added - error",
"visitchangepassword": "Do you want to visit the site to change the password?", "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}}", "questionmessage": "Question {{$a}}: {{$b}}",
"questionno": "Question {{$a}}", "questionno": "Question {{$a}}",
"requiresgrading": "Requires grading", "requiresgrading": "Requires grading",
"unknown": "Cannot determine status" "unknown": "Unknown"
} }

View File

@ -22,7 +22,7 @@
"displayformat": "Display format", "displayformat": "Display format",
"enabledownloadsection": "Enable download sections", "enabledownloadsection": "Enable download sections",
"enablerichtexteditor": "Enable text editor", "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", "enablesyncwifi": "Allow sync only when on Wi-Fi",
"errordeletesitefiles": "Error deleting site files.", "errordeletesitefiles": "Error deleting site files.",
"errorsyncsite": "Error synchronising site data. Please check your Internet connection and try again.", "errorsyncsite": "Error synchronising site data. Please check your Internet connection and try again.",
@ -30,7 +30,7 @@
"filesystemroot": "File system root", "filesystemroot": "File system root",
"general": "General", "general": "General",
"language": "Language", "language": "Language",
"license": "License", "license": "Licence",
"localnotifavailable": "Local notifications available", "localnotifavailable": "Local notifications available",
"locationhref": "Web view URL", "locationhref": "Web view URL",
"locked": "Locked", "locked": "Locked",
@ -51,4 +51,4 @@
"versioncode": "Version code", "versioncode": "Version code",
"versionname": "Version name", "versionname": "Version name",
"wificonnection": "Wi-Fi connection" "wificonnection": "Wi-Fi connection"
} }

View File

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

View File

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