Yii2 实现多语言,使用PHP翻译接口实现首次自动翻译,后续从文件中读取翻译

前言

PHP翻译接口请看上一篇文件:https://blog.csdn.net/a1351218627/article/details/116998869

具体代码

修改config/web.php,在$config[‘components’] 增加一下元素

'components' => [ //往components中加入 i18n这个key
	'i18n' => [
	    'translations' => [
	         'app*' => [
	             'class' => 'yii\i18n\PhpMessageSource',
	             'basePath' => '@app/messages', //自定义翻译文件所在位置 根目录下面的messages目录
	             //'sourceLanguage' => 'en-US',
	             'fileMap' => [
	                 'app' => 'lang.php', 
	                 // 'app/error' => 'error.php',
	             ],
	         ],
	     ],
	 ],
]
使用案例:
echo translation('翻译一下');
//输出 “I have been translated”

//翻译语言
/**
* @param string $category the message category.
* @param string $message the message to be translated.
* @param array $params the parameters that will be used to replace the corresponding placeholders in the message.
* @param string $language the language code (e.g. `en-US`, `en`). If this is null, the current
*/
function translation($message, $params = [], $category = 'app', $language = null)
{
    set_time_limit(0);
    // 英文-翻译保存
    $file = __DIR__ . '/messages/en/lang.php';
    $array = include($file);
    $en_array = $array === 1 ? [] : $array;
    if (empty($en_array[$message])) {
		$res = Trans::transEN($message); //trans为实例化了上篇文章介绍的PHP翻译类,翻译类翻译文字
        $en_array[$message] = $res;
        //缓存
        if (false !== fopen($file, 'w+')) {
            $text = '<?php return ' . var_export($en_array, true) . ';';
            file_put_contents($file, $text, FILE_APPEND);
        }
    }

    // 高棉语-翻译保存
    $file = __DIR__ . '/messages/km/lang.php';
    $array = include($file);
    $km_array = $array === 1 ? [] : $array;
    if (empty($km_array[$message])) {
        $res = Trans::transKM($message); //trans为实例化了上篇文章介绍的PHP翻译类,翻译类翻译文字
        $en_array[$message] = $res;
        //缓存
        if (false !== fopen($file, 'w+')) {
            $text = '<?php return ' . var_export($km_array, true) . ';';
            file_put_contents($file, $text, FILE_APPEND);
        }
    }

    return \Yii::t($category, $message, $params, $language);
}

<?php
//Trans类
namespace app\translates;
use app\translates\Translatectory;

class Trans 
{
    function transKM($text = '') {
        //启动工厂
        $model = new Translatectory();
        //谷歌翻译1
       	$form = $model->GoogleTranslate();
       
        $form->target = "km"; //目标语言km-高棉语
        $form->source = "zh"; //源语言 zh-中文
        $form->text = $text;
        $form->translate();
        return $form->run();
    }

	function transEN($text = '') {
        //启动工厂
        $model = new Translatectory();
        //谷歌翻译1
       	$form = $model->GoogleTranslate();
       
        $form->target = "en"; //目标语言en-英语
        $form->source = "zh"; //源语言 zh-中文
        $form->text = $text;
        $form->translate();
        return $form->run();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值