enricobono/localizator

Localizator 是一个为 Laravel 提供提取项目文件中未翻译字符串的小工具。它通过 artisan 命令行和提供的本地化命令工作。

v1.0.0 2023-03-17 05:54 UTC

README

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

Localizator 是一个为 Laravel 提供通过一个命令从项目文件中提取未翻译字符串的小工具。

赞助商

locale_ad

支持

Buy Me A Coffee

DigitalOcean Referral Badge

兼容性

安装

您可以通过 composer 安装此包

composer require --dev amirami/localizator

此包使用 Laravels 的包自动发现机制,这意味着如果您在生产环境中没有安装开发依赖项,它也不会被加载。

如果您出于某种原因想要手动控制此功能

  • 将包添加到 composer.json 中的 extra.laravel.dont-discover 键,例如:
    "extra": {
      "laravel": {
        "dont-discover": [
          "amirami/localizator"
        ]
      }
    }
  • 将以下类添加到 config/app.php 中的 providers 数组
    Amirami\Localizator\ServiceProvider::class,
    如果您只想在非生产环境中手动加载它,您可以将此代码添加到您的 AppServiceProvider 中,使用 register() 方法
    public function register()
    {
        if ($this->app->isLocal()) {
            $this->app->register(\Amirami\Localizator\ServiceProvider::class);
        }
        // ...
    }

注意:请避免在开发环境中缓存配置,这可能会导致安装此包后出现问题;相应地,在运行命令之前通过 php artisan cache:clear 清除缓存,如果遇到问题

您可以使用以下命令发布配置文件:

php artisan vendor:publish --provider="Amirami\Localizator\ServiceProvider" --tag="config"

这是发布配置文件的内容

<?php

return [

    /**
     * Localize types of translation strings.
     */
    'localize' => [
        /**
         * Short keys. This is the default for Laravel.
         * They are stored in PHP files inside folders name by their locale code.
         * Laravel comes with default: auth.php, pagination.php, passwords.php and validation.php
         */
        'default' => true,

        /**
         * Translations strings as key.
         * They are stored in JSON file for each locale.
         */
        'json'    => true,
    ],

    /**
     * Search criteria for files.
     */
    'search'   => [
        /**
         * Directories which should be looked inside.
         */
        'dirs'      => ['resources/views'],
        
        /**
         * Subdirectories which will be excluded.
         * The values must be relative to the included directory paths.
         */
        'exclude' => [
            //
        ],

        /**
         * Patterns by which files should be queried.
         * The values can be a regular expression, glob, or just a string.
         */
        'patterns'  => ['*.php'],

        /**
         * Functions that the strings will be extracted from.
         * Add here any custom defined functions.
         * NOTE: The translation string should always be the first argument.
         */
        'functions' => ['__', 'trans', '@lang']
    ],

    /**
     * Should the localize command sort extracted strings alphabetically?
     */
    'sort'     => true,

];

用法

要提取所有字符串,只需运行以下命令

php artisan localize de,fr

此命令将在 resources/lang 目录内创建(如果不存在)de.jsonfr.json 文件。如果您在文件中启用了并使用了短键(例如 pagination.next),本地化命令将在 resources/lang 目录内创建 defr 文件夹,并使用短键的前缀(例如 pagination.php)创建 PHP 文件。

您也可以在没有国家代码参数的情况下运行 artisan 命令。

php artisan localize

在这种情况下,翻译字符串将生成配置文件中指定的语言的字符串。

注意:已翻译的字符串不会被覆盖。

删除缺失的键

默认情况下,即使本地文件中不存在,也会保留本地文件中的字符串。如果您想要删除不再存在于文件中的那些键,可以将 --remove-missing 选项附加到本地化命令中。

php artisan localize --remove-missing

键排序

默认情况下,JSON 文件中生成的字符串将按键的字母顺序排序。如果您想关闭此功能,只需在配置文件中将 sort => false 设置即可。

搜索

字符串提取的方式很简单。

我们在 search.dirs 配置中定义的目录中查找,使用 search.patterns 中定义的模式匹配文件,最后查找提取字符串,这些字符串是 search.functions 中定义的函数的第一个参数。

您可以在配置文件中更改这些值以适应您的需求。

测试

composer test

更新日志

请参阅更新日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请查阅我们的安全策略了解如何报告安全漏洞。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。