rogervila/laravel-csv-translations

从CSV文件加载Laravel本地化

2.3.0 2024-04-16 06:03 UTC

This package is auto-updated.

Last update: 2024-09-16 07:02:13 UTC


README

Laravel CSV Translations

Build Status StyleCI Quality Gate Status

Latest Stable Version Total Downloads License

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制作