Moodle:如何添加新的独立的全球语言文件?
Moodle: How to add new independent global language file?
我正在一个新项目中定制moodle。我想将我的有限字符串添加到我的特殊语言文件中,以便在任何地方调用它。所以我需要向语言包添加一个新文件,例如bahar.php
- 我应该把这个文件放在哪里?
- 我应该怎么称呼我的 get_translate
功能?
对于本地插件,文件夹是
/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 代码添加其他语言。例如添加 Persian/Farsi 代码是 fa
。所以创建一个额外的文件夹:
/local/yourpluginname/lang/fa/local_yourpluginname.php
然后在文件中添加:
defined('MOODLE_INTERNAL') || die();
$string['pluginname'] = 'نام افزونه شما';
$string['mycustomstring'] = 'رشته های سفارشی';
您还需要安装波斯语语言包。转到站点管理 -> 语言包或直接转到 yourmoodlesite.com/admin/tool/langimport/index.php
和 select 波斯语。
如果您想翻译现有的 Moodle 字符串,那么通过 AMOS 翻译它们可能会更好。然后每个人都会从翻译中受益。 https://docs.moodle.org/dev/Contributing_a_translation
我将解释如何为通用 PHP 项目执行此操作,该项目也适用于 Moodle。
首先在您的项目中创建一个名为 lang 的单独文件夹。此文件夹可用于放置您的语言包和 unicode 处理程序库。
对于 unicode 处理,将以下文件保存为 lang 文件夹中的 portable-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 代码添加到页面顶部,用一行代码替换上面给出的字符串,如果该字符串不存在,则将其添加到您的语言包文件中。
如果您需要任何进一步的解释,请告诉我。
我正在一个新项目中定制moodle。我想将我的有限字符串添加到我的特殊语言文件中,以便在任何地方调用它。所以我需要向语言包添加一个新文件,例如bahar.php
- 我应该把这个文件放在哪里?
- 我应该怎么称呼我的 get_translate 功能?
对于本地插件,文件夹是
/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 代码添加其他语言。例如添加 Persian/Farsi 代码是 fa
。所以创建一个额外的文件夹:
/local/yourpluginname/lang/fa/local_yourpluginname.php
然后在文件中添加:
defined('MOODLE_INTERNAL') || die();
$string['pluginname'] = 'نام افزونه شما';
$string['mycustomstring'] = 'رشته های سفارشی';
您还需要安装波斯语语言包。转到站点管理 -> 语言包或直接转到 yourmoodlesite.com/admin/tool/langimport/index.php
和 select 波斯语。
如果您想翻译现有的 Moodle 字符串,那么通过 AMOS 翻译它们可能会更好。然后每个人都会从翻译中受益。 https://docs.moodle.org/dev/Contributing_a_translation
我将解释如何为通用 PHP 项目执行此操作,该项目也适用于 Moodle。 首先在您的项目中创建一个名为 lang 的单独文件夹。此文件夹可用于放置您的语言包和 unicode 处理程序库。 对于 unicode 处理,将以下文件保存为 lang 文件夹中的 portable-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 代码添加到页面顶部,用一行代码替换上面给出的字符串,如果该字符串不存在,则将其添加到您的语言包文件中。 如果您需要任何进一步的解释,请告诉我。