【问题标题】:Correct way to load translated data Laravel 5.2加载翻译数据 Laravel 5.2 的正确方法
【发布时间】:2016-05-30 11:22:26
【问题描述】:

我正在构建我的第一个多语言 Laravel 网站。

对于我使用这个包的翻译:laravel-localization.

在我的数据库中,我的列设置如下:

  • 标题(英文标题)
  • title_nl(荷兰语标题)
  • title_fr(法语标题)

我已阅读有关本地化的 laravel documentation 并以这种方式设置我的错误消息。但是现在我很困惑如何正确地为我的视图显示不同的语言。

我应该这样做吗:

@if( LaravelLocalization::getCurrentLocale() == 'nl')
<p>{{$post->title_nl}}</p>

@elseif(LaravelLocalization::getCurrentLocale() == 'fr' )
 <p>{{$post->title_fr}}</p>

@else
  <p>{{$post->title}}</p>
 @endif

这看起来非常混乱,而且不是处理这个问题的正确方法,因为扩展这将是一场噩梦。

或者我是否需要像这样使用内置的本地化功能:

{{ trans('post.title') }}

或者这是否违背了我正在使用的包的目的?

【问题讨论】:

  • 只能使用{{ trans('post.title') }},不需要添加lang后缀。只检测 lang @if( LaravelLocalization::getCurrentLocale() == 'nl') 等。
  • @mcklayin 所以这意味着我必须在我的 post.php 文件中为每种语言加载我的模型?并循环遍历语言文件本身的字段?

标签: php laravel-5 localization laravel-localization


【解决方案1】:

使用多维数组的键值对

在数据库中添加翻译并在需要时加载到数组中

$language['word_key']="word";

在代码中保留单词键,因为它只是根据语言在数组中加载翻译

在数据库中创建 2 个表 1 用于作为主表的关键字,其他用于具有关键字表外键的翻译

编写一个语言类,可以为您提供键 => 值对数组以在代码中使用

简单的php示例

echo $language['kw_hi'];

如果您使用英语运行,它会在法语“Salut”中打印“Hi” 代码保持不变只是内容更改

{!! Form::label($dictionary['apo_add_subject'], $dictionary['apo_add_subject']) !!}

字典上方有关键字 apo_add_subject 。我创建了一个表,其中包含关键字 id、keyword_name 和第二个表翻译 id、kw_id、语言、翻译然后基于语言和模块我使用中间将其加载到数组中,然后传递到查看上面编写的代码将使用的位置。

只需在保持相同关键字的数组中加载不同的值

【讨论】:

  • 我并不完全理解这个解决方案。你能用我在开篇文章中给出的例子举个例子吗?
猜你喜欢
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多