Moodle:如何添加新的独立的全球语言文件?

Moodle: How to add new independent global language file?

我正在一个新项目中定制moodle。我想将我的有限字符串添加到我的特殊语言文件中,以便在任何地方调用它。所以我需要向语言包添加一个新文件,例如bahar.php

对于本地插件,文件夹是

/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。

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 代码添加到页面顶部,用一行代码替换上面给出的字符串,如果该字符串不存在,则将其添加到您的语言包文件中。 如果您需要任何进一步的解释,请告诉我。