是否有更好的方法可以存储大量文本以便在laravel中进行本地化?如果我的整个页面只是纯文本很容易,但我的几个页面都有复杂的布局,我需要添加多个字符串来围绕内容,如图像/链接/媒体。
如果我需要使用斜体/粗体或为文本执行任何类型的HTML以及我需要将它们分成若干部分以便能够执行此操作,这是一种痛苦。
我正在使用的一个例子:
return array(
'exchange_rate' => array(
'title' => 'Exchange Rate',
'p1' => 'Disclaimer',
'p2' => 'Currency rate displayed is subject to change.',
'p3' => 'View All Rates to Date'
),
第一个数组是页面,第二个是页面的内容。对于更复杂的布局,我经常需要更深入地使用多个数组,例如:
return array(
'exchange_rate' => array(
'title' => 'Exchange Rate',
'p1' => 'Disclaimer',
'p2' => 'Currency rate displayed is subject to change.',
'p3' => 'View All Rates to Date',
'table1' => array(
'title' => 'Currency Table',
'row1' => array(
'l1' => 'Current Rate'
),
'row2' => array('etc')
)
);
我这样做了吗?有没有更好的方法来格式化我的语言文件,以便我可以在我的视图中解决布局?我只是好奇大型网站如何管理本地化。
非常感谢任何帮助,谢谢!!
编辑:我也知道您可以在本地化数组中添加占位符,例如:
'title' => ':title'
但是,在一个页面上添加所有链接,图像和媒体的占位符可能会变得混乱。 <\ n> Laravel也不支持语言数组中的HTML,所以我不能只在语言文件中插入内容。 - 是的,
现在看来,这里有两种不同的方式。
编辑(2015年2月10日):
经过大量搜索,我创建了一个适合我需求的包。它完全消除了对laravel中任何文本数组的需求。它会自动将文本添加到数据库并将其转换为您的设置区域设置。此外,您无需管理和破译带点标记的翻译路径。
答案 0 :(得分:10)
我已经编写了一个包来为您生成lang文件。编写模板,控制器......而不用翻译无聊。完成代码后,只需执行php artisan localisation:missing
,它将在lang/*/
目录中生成所有需要的文件。
它将同步翻译:
该软件包可在此处获取:https://github.com/potsky/laravel-localization-helpers
在日常使用中,它与po文件的工作流程相同。让我知道,如果你的生活现在变得更容易翻译Laravel真棒框架!
答案 1 :(得分:2)
您始终可以使用名为 Waavi translation
的程序包保持项目翻译的正确更新非常麻烦。 通常,翻译人员无法访问代码库,即使在何时 他们很难跟踪哪些翻译缺失 每种语言或对原始文本的更新都需要 翻译将被修改。
此软件包允许开发人员利用他们的数据库和缓存 管理多语言网站,同时仍在处理语言文件 在开发过程中,并从Laravel的所有功能中受益 翻译包就像复数或替换一样。
答案 2 :(得分:2)
我认为这里没有理想的解决方案,这取决于项目的规模。或许只为每种语言提供不同的视图,然后动态调用View :: make - 就像这样:
$view = 'pages.'.Lang::getLocale().'.mypage';
if (View::exists($view)) return View::make($page);
else App::abort(404);
答案 3 :(得分:2)
虽然作者创建了自己的翻译包,但我还要添加另一个: laravel-gettext
来自CakePHP世界,在我的laravel项目中使用.po文件处理翻译,我会使用上面的扩展名,因为:
扩展不是我的,我到目前为止还没有使用它,但我会在第一次出现。
答案 4 :(得分:1)
那么,
大型网站可能会使用某种CMS来编辑不同语言的文本。
我不太确定Laravel,但您希望用户能够编辑文本。你需要的解决方案并不多:
最常见的格式是 .po 文件,有些软件甚至允许您直接导入/导出包含PHP数组的文件。但这不适用于您的格式,因为您的文件是多维数组。
如果你这样做,this PHP PoParser class可以同时读写.po文件。