Moodle: Как добавить новый независимый глобальный языковой файл?

Я настраиваю Moodle в новом проекте. Я хочу добавить мои ограниченные строки в мой специальный языковой файл, чтобы вызывать его в любом месте. Поэтому мне нужно добавить новый файл в языковые пакеты, например, bahar.php

  • Где я должен положить этот файл?
  • Как я должен назвать мой get_translate
    функционировать?

1

Решение

Для локального плагина папка

/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

1

Другие решения

Я объясню, как это сделать для общего проекта PHP, который должен работать и для Moodle.
Сначала создайте отдельную папку с именем lang в вашем проекте. Эта папка может использоваться для размещения ваших языковых пакетов и библиотек обработчиков юникода.
Для обработки Unicode сохраните следующий файл как portable-utf8.php в папке lang.

портативный-utf8.php

Файлы вашего языкового пакета могут быть названы как 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 вверху вашей страницы, заменить строку, как указано выше, одной строкой кода и добавить строку в файл языкового пакета, если он не существует.
Если вам нужны дальнейшие объяснения, пожалуйста, дайте мне знать.

0

По вопросам рекламы [email protected]