rogervila / laravel-csv-translations
从CSV文件加载Laravel本地化
Requires
- laravel/framework: ^10.0
Requires (Dev)
- orchestra/testbench: ^8.0
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.0
- psalm/plugin-laravel: ^2.8
- vimeo/psalm: ^5.7
README
Laravel CSV Translations
从CSV文件加载Laravel本地化
安装
composer require rogervila/laravel-csv-translations
要使用Laravel CSV Translations,您需要将Laravel TranslationServiceProvider替换为包中的版本。
// config/app.php 'providers' => [ // ... // Illuminate\Translation\TranslationServiceProvider::class, LaravelCSVTranslations\TranslationServiceProvider::class, // ... ],
如果您的项目使用Illuminate\Support\ServiceProvider
,请通过replace
方法替换它。
// config/app.php 'providers' => ServiceProvider::defaultProviders() ->replace([ \Illuminate\Translation\TranslationServiceProvider::class => \LaravelCSVTranslations\TranslationServiceProvider::class, ])->merge([ // ... ])->toArray(),
为了不修改任何配置就能使其工作,请在lang文件夹中创建一个lang.csv
文件。
如果存在CSV文件,则将从CSV文件加载翻译。否则,Laravel的内置翻译系统将处理它们。
配置
此包允许配置其一些功能。
包没有发布配置文件。您可能需要创建一个以覆盖包默认值。
<?php // config/lang.php return [ 'csv' => [ 'enabled' => (bool) env('CSV_TRANSLATIONS_ENABLED', true), // You might use a custom resolver to get CSV data from elsewhere 'resolver' => \LaravelCSVTranslations\CSVLocalFileResolver::class, 'throw_missing_file_exception' => false, 'cache' => [ 'key' => \LaravelCSVTranslations\CSVLoader::class, 'store' => 'array', 'seconds' => 0, ], ] ];
CSV格式
CSV数据应在第一列有键,然后每个本地化有一个列,其标题为相应的ISO 639-1代码。
CSV功能
CSV格式非常灵活。以下是一些功能:
维度
Laravel的PHP翻译数组文件允许有多个维度,可以使用点来访问。
CSV只允许一个维度,但允许使用点,如CSV格式示例所示。
翻译键列
虽然键必须放在第一列,但其标题内容并不重要,因此没有必要将其命名为"keys"。
列顺序
除翻译键列外,顺序不重要,因此如果需要,您可以在本地化列之间有N个自定义列。
自定义列
有时,业务需要为翻译文件添加额外的列,如翻译放置的视图、其上下文等。
您可以拥有您需要的任意数量的列,并按您的需要放置它们。.
CSV数据解析器
默认情况下,该包使用CSVLocalFileResolver
类,它将尝试从项目的lang
路径加载lang.csv
文件。
您可以创建自己的CSV解析器来自定义获取数据的方式。
<?php // config/lang.php return [ 'csv' => [ 'resolver' => \App\Lang\RemoteCSVFileResolver::class, ] ]; // app/Lang/RemoteCSVFileResolver.php namespace App\Lang; use LaravelCSVTranslations\CSVResolverInterface; class RemoteCSVFileResolver implements CSVResolverInterface { public function resolve(): array { // Return the CSV formatted data } }
访问原始数据
有时访问原始数据以列出所有可用翻译键及其值是有用的。
为此,CSVLoader
提供了一个方便的raw
方法,它返回一个包含所有翻译键及其原始值的关联数组。
// If TranslationServiceProvider is correctly configured, 'translation.loader' should be an instance of CSVLoader /** @var CSVLoader $loader */ $loader = $this->app['translation.loader']; // Raw method returns an associative array with all translation keys and their raw values $raw = $loader->raw('ca') /* [ "greetings.good_morning" => "Bon dia, :name!", // ... ] */
作者
由Roger Vilà创建
许可
此包是开源软件,许可协议为MIT许可。
包图标由Freepik - Flaticon制作