orkhanahmadov / spreadsheet-translations
Laravel 的电子表格翻译
1.4.0
2024-03-04 11:56 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^6.0 || ^7.0
- illuminate/console: ^9.0 || ^10.0 || ^11.0
- illuminate/contracts: ^9.0 || ^10.0 || ^11.0
- illuminate/http: ^9.0 || ^10.0 || ^11.0
- illuminate/support: ^9.0 || ^10.0 || ^11.0
- phpoffice/phpspreadsheet: ^1.28 || ^2.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.42
- friendsofphp/php-cs-fixer: ^3.14
- larastan/larastan: ^1.0 || ^2.4
- mockery/mockery: ^1.4
- orchestra/testbench: ^7.0 || ^8.0 || ^9.0
- phpunit/phpunit: ^9.0 || ^10.0
README
为什么?
在 Laravel 应用程序中维护多语言支持可能会很困难
- Laravel 的翻译文件是纯 PHP/JSON 文件。这假设将要翻译应用程序的人知道如何处理 PHP/JSON 文件,但这并不总是如此
- 每个区域的翻译都位于不同的文件夹中。例如,
en文件夹用于英文翻译,de文件夹用于德语。这种分离在代码级别上是好的,但使得维护 2 个以上区域的翻译变得困难。 - 很容易为英语添加一个新键和翻译,但可能会忘记在德语中做同样的事情,因为没有强制这样做或使其容易发现的方法。
或者,您可以将应用程序的翻译存储在电子表格文件中,类似于
这解决了上述所有问题
- 翻译维护者不需要知道如何使用 PHP 或 JSON
- 所有翻译都维护在一个单独的文件和视图中
- 每个翻译都位于区域列下,这使得很容易发现缺失的翻译
但问题是,Laravel 无法直接与这个电子表格文件一起使用来显示翻译。
这就是 spreadsheet-translations 包的用途!它读取包含多个区域翻译的电子表格文件,并将其转换为 Laravel 可以处理的纯 JSON 文件。
安装
您可以通过 composer 安装该包
composer require orkhanahmadov/spreadsheet-translations
使用以下命令发布配置文件
php artisan vendor:publish --provider="Orkhanahmadov\SpreadsheetTranslations\SpreadsheetTranslationsServiceProvider"
配置文件包含以下参数
locales- 解析器应在电子表格中查找的区域代码数组。默认是['en']filepath- 电子表格文件的路径。默认情况下,指向 Laravel 项目的lang目录中的translations.xlsx文件。此配置参数还可以使用 URL 作为远程文件位置。当提供有效 URL 时,解析器将尝试下载该文件到临时本地文件并解析它。sheet- 定义应使用哪个工作表。默认是null。当null时,解析器选择电子表格中的活动工作表以解析翻译。如果您想使用不同的工作表,请在此参数中提供工作表的名称。header_row_number- 哪一行应用作标题。默认是1。标题行应包含在locales配置参数中定义的区域代码。key_column- 应使用哪一列作为翻译键。默认是A列。ignored_rows- 应在解析翻译时忽略的行号数组。默认是空数组。
用法
让我们假设我们有一个以下 Excel 电子表格文件,该文件位于具有公共 URL https://example.com/translations.xlsx 的远程服务器上。电子表格包含
我们想要
- 将解析器指向远程文件以下载和解析
- 仅解析
en和de区域的翻译 - 使用
key列作为键,在这种情况下为电子表格中的列B - 忽略行号 3
发布配置文件后,我们需要进行以下调整
[
'filepath' => 'https://example.com/translations.xlsx', // direct download URL of the file
'locales' => ['en', 'de'], // parse `en` and `de` translations only, which means `es` will be ignored
'key_column' => 'B', // sets key column to B
'ignored_rows' => [3], // ignore row number 3
]
该包附带一个 artisan 命令 translations:generate。
php artisan translations:generate
当执行时,它将在 Laravel 的 lang 目录中生成必要的 JSON 翻译文件。
对于上述电子表格文件和配置,translations:generate 将生成以下文件夹和文件结构
lang/en.json{"dashboard.statistics": "统计数据", "login.form.first_name": "名字", "welcome": "欢迎"}
de.json{"dashboard.statistics": "统计信息", "login.form.first_name": "名", "welcome": "欢迎"}
测试
composer test
变更日志
有关最近更改的详细信息,请参阅变更日志。
贡献
有关详细信息,请参阅贡献指南。
MIT许可(MIT)。有关更多信息,请参阅许可文件。
安全性
如果您发现任何安全相关的问题,请通过hey@orkhan.dev发送电子邮件,而不是使用问题跟踪器。
致谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。
替代方案
如果您想检测缺失的翻译,可以检查larswiegers/laravel-translations-checker。