Yii2翻译动态内容的最佳实践
任何人都可以与Yii2分享自己实施多语言网站的经验和最佳实践吗?我想翻译存储在数据库中的用户输入。例如,文章的名称可能有三种不同的语言,正文和一些可翻译属性 Yii2是否有内置功能来翻译动态内容?或者我应该使用下面这些第三方扩展:Yii2翻译动态内容的最佳实践,yii2,yii2-advanced-app,Yii2,Yii2 Advanced App,任何人都可以与Yii2分享自己实施多语言网站的经验和最佳实践吗?我想翻译存储在数据库中的用户输入。例如,文章的名称可能有三种不同的语言,正文和一些可翻译属性 Yii2是否有内置功能来翻译动态内容?或者我应该使用下面这些第三方扩展: 您的帮助将不胜感激。使用Google translator API或Yandex API来实现多种语言的平滑翻译。 我在git上找到的链接很少 谷歌Api是一项付费服务,但是如果你是第一次使用谷歌Api的用户,你可以获得12个月的免费积分。好吧,我只能根据
您的帮助将不胜感激。使用Google translator API或Yandex API来实现多种语言的平滑翻译。 我在git上找到的链接很少
谷歌Api是一项付费服务,但是如果你是第一次使用谷歌Api的用户,你可以获得12个月的免费积分。好吧,我只能根据我所做的告诉你我的观点 翻译有很多地方
Yii::t('app/main','yourname is{0}'
作为示例来翻译存储在消息php文件中的字符串
现在,如果您翻译stings,您将需要翻译路由,以便在更改语言时使用/articles和/articulos等路由。
为此,您需要构建一个实现BootstrapInterface的类,该类将在应用程序引导过程中调用
这是我的settings.php的一个例子
namespace app\base;
use Yii;
use yii\base\BootstrapInterface;
class settings implements BootstrapInterface {
public function __construct() { }
public function bootstrap($app) {
/// Dynamic translated routes
$t_articles = Yii::t('app/route', 'articles');
$app->getUrlManager()->addRules([
'/'.$t_articles => '/articles',
], false);
}
}
记住在配置文件«i.e.web.php»中引导类
'bootstrap' => [
'log',
'app\base\settings',
],
最后,要翻译数据库中的文本,您可能需要创建一个支持翻译文本的表,如:
CREATE TABLE articles (
id INT,
title_en VARCHAR(20),
title_es VARCHAR(20)
);
因此,当你调用你的应用程序时,你可以在操作中使用类似于以下内容的方式提取数据(仅举一个简单的示例):
s->render('index',['articles'=>$articles,'lang'=>$lang])
或在以下视图中:
<p class="lead"><?=$articles['title_'.$lang]?></p>
我希望这能解释我翻译应用程序的方式。请参考@vishub的链接,该答案不处理动态内容。我使用yii2 translate manager,它工作得很好,但它不处理动态内容。请简要说明您提供的链接中解释了什么,以防它们死亡。
<p class="lead"><?=$articles['title_'.$lang]?></p>