drewneon / transui
TransUI 为 Laravel 5 提供了一个管理本地化字符串的网页界面。
Requires
- php: ~5.6|~7.0
- drewneon/lang4js: *
- illuminate/support: ~4.2|~5.0
This package is not auto-updated.
Last update: 2019-03-12 16:55:33 UTC
README
使用 Laravel 5 的本地化功能,特别是对于多语言应用程序,同时处理视图和区域文件可能会令人沮丧且耗时。如果应用程序相当复杂,并且需要支持多个区域,构建区域文件的架构会非常繁琐。当需要修改不正确声明的区域键名,或将区域行从一个文件移动到另一个文件,或维护结构良好的嵌套区域数组时,不仅痛苦,有时还会引起问题。
除了 Laravel 内置的本地化功能外,安装第三方包,如 drewneon/lang4js、spatie/laravel-translatable 和 ARCANEDEV/Localization,可以在完成多语言方面使应用程序武装到牙齿。然而,JSON 数据类型的语法可能会让人头疼,尤其是在支持多个区域并且语言字符串长度如同多页博客文章一样长时。
此外,翻译网站不应是开发者的义务,并且合格的翻译者不太可能熟悉 PHP 代码或数据库相关内容。简而言之,即使在 Laravel 的良好基础和各种优秀包的改进下,要完成多语言应用程序仍存在很大差距。这正是 TransUI
发挥作用的地方。
功能
- 如果缺少,自动为支持的区域创建区域文件夹,无需在添加新的支持区域时手动创建它们;
- 在目录树中突出显示默认区域的缺失文件夹和文件,以及在条目表中突出显示任何区域的缺失条目,并在保存更改时自动创建必要的文件夹和文件;
- 动态显示详细统计和翻译进度;
- 允许删除未使用的翻译字符串;
- 允许在必要时修改键名,并在保存更改时自动更新所有相关的视图;
- 集成 drewneon/lang4js,使此包完全支持多语言;
- 通过配置设置支持各种第三方本地化或 i18N 包,例如 ARCANEDEV/Localization;
- 支持 spatie/laravel-translatable 用于数据库条目的翻译。
![alt tag] (screenshot.jpg)
兼容性
TransUI
的当前版本是在 Laravel 5.3 上开发的,并在 5.4 上进行了简要测试。任何大于 4.2 的 Laravel 早期版本都应兼容。如果不兼容,请提出问题或帮助贡献。
要利用 TransUI
支持的 spatie/laravel-translatable 功能,请参阅其 Laravel 版本兼容性文档。
安装
1) 通过 Composer
$ composer require drewneon/transui
这也将安装 drewneon/lang4js 包作为依赖项。
2) 然后在 config/app.php
中添加服务提供者;
'providers' => [
...
DrewNeon\Lang4JS\Lang4JSServiceProvider::class,
DrewNeon\TransUI\TransUIServiceProvider::class,
];
3) 然后使用以下两个命令发布资产文件;
$ php artisan vendor:publish --provider="DrewNeon\TransUI\TransUIServiceProvider"
$ php artisan vendor:publish --tag=public --force
4) 最后,在 routes/web.php
中添加路由;
Route::post('/lang4js', '\DrewNeon\Lang4JS\Lang4JSController@lang4js');
Route::group(['prefix' => config('transui.route_name'), 'as' => 'TransUI', 'middleware' => 'web'], function () {
Route::get('/', ['as' => 'get', 'uses' => '\DrewNeon\TransUI\TransUIController@index']);
Route::post('/', ['as' => 'post', 'uses' => '\DrewNeon\TransUI\TransUIController@save']);
});
配置
为了充分利用 TransUI
,请先查阅 drewneon/lang4js 和 spatie/laravel-translatable 的文档。
《TransUI》的发布配置文件位于 /config/transui.php
。预计《TransUI》将与预先配置的默认设置一起工作。请根据该文件中每个设置的注释进行必要的更改。
除了这些自定义配置之外,《TransUI》还将引用 /config/app.php
中的 fallback_locale
设置作为默认区域设置。预计《TransUI》默认区域设置已存在于应用程序中,即存在一个包含该区域设置名称的文件夹,并在 /resources/lang
下包含区域设置文件,否则在加载《TransUI》时将出现错误消息。
使用方法
在开始使用《TransUI》之前,请首先检查所有现有区域设置文件的语法。
- 不要使用点命名区域设置文件,例如,some_locale_file.php 是好的,但 some.locale.file.php 是不行的!
- 每个区域设置字符串 必须 以
,\n
结尾,即逗号和换行符,即使是嵌套数组。对于数组,不要 省略最后一个逗号。对于嵌套数组,不要 在一行中写入,每个[
和]
后 必须 有\n
。
现在请访问 http://yourdomain.com/TransUI
或在配置文件中设置的自定义 URL,以享受《TransUI》。《TransUI》的网页界面相当直观。只有当需要修改键名时才有些棘手。键名字段必须双击才能激活修改,而不是单击。
添加新字符串和新区域设置文件的建议步骤是
- 在任何视图 blade 中直接写入类似
trans('whatever_locale_folder/whatever_locale_file.whatever_locale_key_name')
的内容。 - 保存 blade。
- 然后在浏览器中打开 TransUI,将有一个标记为缺失的项目引用步骤 1 中写入的内容。
- 定位此缺失项。
- 在此缺失项的默认区域设置列中键入适当的内容。
- 将输入框失去焦点。
- 单击保存按钮。
助手
TransUI
作为额外奖励提供了一些有用的助手。
1) nativeLangName($lang_code)
它将标准区域设置代码转换为该语言在其本地语言中的名称,例如,nativeLangName('en')
返回 'English',nativeLangName('ko')
返回 '한국어' 等。
2) ksortDeep($nested_array)
它对所有嵌套数组的级别进行字母顺序排序。
3) textBetween($string, $start, $end)
它检索 $string
中 $start
和 $end
之间的文本,例如
textBetween('the gray fox jumped over the lazy dog', 'gray', 'over');
return ' fox jumped '
4) filterFilesByExtention($array, $extension)
它过滤具有完整路径的文件名数组,并返回匹配 $extension
的数组。
待办事项
《TransUI》的下一次发布将具有所有配置设置的网页界面和更好的 Laravel 5.4 支持。
变更日志
有关最近更改的更多信息,请参阅 CHANGELOG。
测试
$ composer test
贡献
有关详细信息,请参阅 CONTRIBUTING 和 CONDUCT。
安全性
如果您发现任何与安全相关的问题,请通过电子邮件 :author_email 而不是使用问题跟踪器。
致谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。