centrust / nova-localization
Laravel Nova 本地化包
2.2.0
2024-07-07 19:03 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^10.0|^11.0
- laravel/nova: ^4.0
- outl1ne/nova-inline-text-field: ^2.0
- spatie/laravel-package-tools: ^1.14.0
- spatie/nova-translatable: ^3.1|^4.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
此包专为使用 Laravel Nova 的开发者设计,他们需要一个简单、可靠的解决方案来管理应用程序的翻译。
目前仅支持英语和阿拉伯语。您可自由分支并添加自己的语言支持。
功能
- 行内翻译:自动将您的应用程序文本从仪表板翻译。
- 灵活性:设计用于无缝与 Laravel 内置本地化功能协同工作。
- 简单性:简单的配置过程确保您可以立即开始使用。
示例用法
在 Nova 资源中
Text::make(_tran('Name'), 'name'), Text::make(_tran('Description'), 'description')
结果
-
阿拉伯语名称
-
英语名称
-
阿拉伯语描述
-
英语描述
安装
您可以通过 composer 安装此包
composer require centrust/nova-localization
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="nova-localization-migrations"
php artisan migrate
迁移表后,您需要将 'locale' 列添加到用户模型的可填充数组中。
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="nova-localization-config"
这是已发布配置文件的内容
return [ /** * If set to true, this will enable caching for localization. The actual value for this translation is taken from the server's cache. * If the LOCALIZATION_ENABLE_CACHE environment variable does not exist, the default value will be false. * This is useful for improving the application's performance by caching localizations, * but it might delay the appearance of any changes made to localization files until the cache is refreshed. **/ 'localization_enable_cache' => env('LOCALIZATION_ENABLE_CACHE', false), /** * This URL is for loading the Arabic font from Google Fonts. * This font is needed for Arabic language support in your application. **/ 'ar_google_font_url'=> 'https://fonts.googleapis.com/css2?family=Scheherazade+New:wght@700&display=swap', /** * This is the path to the CSS file that contains the Arabic font family. * example : 'css/rtl-ar.css' * The file must be in the public folder. * This font is needed for Arabic language support in your application. */ 'ar_font_family_css'=> 'css/rtl-ar.css', ];
包含阿拉伯语字体族的 CSS 文件示例。
body { font-family: 'Scheherazade New', 'Nunito Sans', 'Nunito', sans-serif; }
用法
要翻译应用程序中的任何文本,您可以使用 _tran() 助手函数
_tran('This is a label');
要显示本地化资源在菜单中,(我尚未找出如何自动显示的方法)但您可以通过创建自己的常规资源并扩展此包资源来手动添加
use Centrust\NovaLocalization\Nova\NovaLocalizationResource; class Localization extends NovaLocalizationResource { }
要允许用户在用户菜单中切换语言,您可以在 Novaserviceprovider.php 中添加以下内容
Nova::userMenu(function (Request $request, Menu $menu) { $language = app()->getLocale() == 'ar' ? 'en' : 'ar'; $menu->append(MenuItem::externalLink(app()->getLocale() == 'ar' ? 'English' : 'عربي', '/change-language/' . $language . '/' . $request->user()->id)); return $menu; });
这部分将根据是否选择“阿拉伯语”切换区域设置和方向
工作原理
- 当您使用 _tran() 函数时,这是一个全局助手函数,可在所有应用程序文件中使用,
- 该包将在数据库中搜索翻译,
- 如果没有找到,它将在 Laravel 语言文件中搜索。
- 如果语言文件中没有找到,它将保存到数据库中并返回给您。
测试
composer test
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请参阅我们的安全策略了解如何报告安全漏洞。
鸣谢
许可
MIT 许可证 (MIT)。请参阅许可文件以获取更多信息。