centrust/nova-localization

Laravel Nova 本地化包

2.2.0 2024-07-07 19:03 UTC

This package is auto-updated.

Last update: 2024-09-07 19:16:51 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包专为使用 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)。请参阅许可文件以获取更多信息。