Moodle: Как добавить новый независимый глобальный языковой файл?
Я настраиваю Moodle в новом проекте. Я хочу добавить свои ограниченные строки в мой специальный языковой файл, чтобы вызывать его в любом месте. Поэтому мне нужно добавить новый файл в языковые пакеты, например, bahar.php
- Где я должен положить этот файл?
- Как мне вызвать мою функцию get_translate?
2 ответа
Для локального плагина папка
/local/yourpluginname/lang/en/local_yourpluginname.php
Тогда файл должен содержать
defined('MOODLE_INTERNAL') || die();
$string['pluginname'] = 'Your plugin name';
$string['mycustomstring'] = 'A custom string';
Затем получите строку, используя
echo get_string('mycustomstring', 'local_yourpluginname');
По умолчанию вам нужно иметь en
папка с английскими строками.
Но тогда вы также можете добавить дополнительные языки, используя ISO-код. Например, чтобы добавить персидский / фарси код fa
, Итак, создайте дополнительную папку:
/local/yourpluginname/lang/fa/local_yourpluginname.php
Затем в файл добавьте:
defined('MOODLE_INTERNAL') || die();
$string['pluginname'] = 'نام افزونه شما';
$string['mycustomstring'] = 'رشته های سفارشی';
Вам также нужно будет установить языковой пакет на фарси. Зайдите на сайт администратора -> языковые пакеты или просто перейдите прямо к yourmoodlesite.com/admin/tool/langimport/index.php
и выберите фарси.
Если вы хотите перевести существующие строки Moodle, то может быть лучше перевести их через AMOS. Тогда все получат пользу от переводов. https://docs.moodle.org/dev/Contributing_a_translation
Я объясню, как это сделать для общего проекта PHP, который должен работать и для Moodle. Сначала создайте отдельную папку с именем lang в вашем проекте. Эта папка может использоваться для размещения ваших языковых пакетов и библиотек обработчиков юникода. Для обработки Unicode сохраните следующий файл как portable-utf8.php в папке lang.
Файлы вашего языкового пакета могут быть названы как bahar.php, tamil.php и т. Д. И сохранены в том же месте. Пример файла должен выглядеть следующим образом; со строкой ключевого слова, сопровождаемой переводом.
<?php
function get_translate($value){
$translations=array(
"yourstring1"=>"விஷேட அம்சங்கள்",
"yourstring2"=>"பின் செல்ல",
"yourstring3"=>"தொலைபேசி எண்",
"yourstring4"=>"தேர்ந்தெடுக்கப்பட்ட பண்ணை",
"yourstring5"=>"கிராமம்",
);
return utf8_html_encode($translations[$value]);
}
?>
Затем вам нужно изменить строки в нужных вам файлах следующим образом:
<?php echo get_translate("your_string");?>
Обратите внимание, что эта строка должна совпадать со строкой в вашем файле языкового пакета. Язык по вашему выбору передается от страницы к странице через метод GET. Так что вам нужно будет передать его при ссылке. При желании, если вы хотите выполнить динамический перевод одним нажатием кнопки, вы можете просто использовать этот код jQuery.
$("#yourid").on('click', function(e) {
var split = location.search.replace('?', '').split('=');
if(split[1]=='yourlang1'){
window.location.href="yourdir/yourfile1.php?lang=yourlang1";
}
else if (split[1]=='yourlang2'){
window.location.href="yourdir/yourfile2.php?lang=yourlang2";
}
else if (split[1]=='yourlang'){
window.location.href=""yourdir/yourfile3.php?lang=yourlang3";
}
else{
window.location.href="yourdir/yourfile4.php";
}
});
Наконец, вызовите ваш языковой пакет в верхней части PHP-файла, где необходимо выполнить перевод; как это:
<?php
$lng='';
// setting up language
require 'yourdir/lang/portable-utf8.php';
if(isset($_GET['lang'])){
$lng=$_GET['lang'];
if($_GET['lang']=="yourlang1"){
require 'yourdir/lang/yourlang1.php';
}
elseif ($_GET['lang']=="yourlang2")
{
require 'yourdir/lang/yourlang2.php';
}
else{
require 'yourdir/lang/yourlang3.php';
}
}else{
$lng='yourlangdefault';
require 'lang/yourlangdefualt.php';
}
?>
на первый взгляд это может показаться длинным, но когда вам нужно добавить сотни, а может и тысячи строк, это самый простой способ. Все, что вам нужно сделать, это добавить код PHP вверху страницы, заменить строку, как указано выше, одной строкой кода и добавить строку в файл языкового пакета, если он не существует. Если вам нужны дальнейшие объяснения, пожалуйста, дайте мне знать.