定制 empuxa/laravel-locale-via-api 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

empuxa/laravel-locale-via-api

最新稳定版本:v3.1.0

Composer 安装命令:

composer require empuxa/laravel-locale-via-api

包简介

Easily provide your lang files via API.

README 文档

README

Latest Version on Packagist Tests Total Downloads

Banner

This package lets you share your local translations via API, so that any app can use them. To do so, it converts your PHP lang files to JSON.

Requirements

  1. You must provide your lang files within folders, such as lang/en or lang/de.
  2. The lang files must be in PHP format, such as lang/en/validation.php.
  3. Must secure the API routes and its patterns on your own.

Installation

This package requires Laravel 9.33+. You can install the package via composer:

composer require empuxa/laravel-locale-via-api

Afterward, you might want to copy the vendor files:

php artisan vendor:publish --provider="Empuxa\LocaleViaApi\LocaleViaApiServiceProvider"

Remember to also update the config file config/locale-via-api.php to your needs!

Usage

This package provides two controllers to access your translations via API. You must add them to your routes/api.php file manually.

Empuxa\LocaleViaApi\Http\Controllers\ListLocalesController

With this controller, you can list any locale that is available in your app. For security reasons, it only returns the array from your config and doesn't read the actual files.

Route::get('/locales', ListLocalesController::class);

By adding ?flatten=true to the URL, you can get a flat array of all available locales. You can also change the default behavior in the config file.

Non-flattened response

{
    "data": {
        "api": {
            "error": {
                "401": "Unauthenticated.",
                "403": "Forbidden.",
                "404": "Not Found.",
                "422": "Unprocessable Entity."
            }
        }
    }
}

Flattened response

{
    "data": {
        "api.error.401": "Unauthenticated.",
        "api.error.403": "Forbidden.",
        "api.error.404": "Not Found.",
        "api.error.422": "Unprocessable Entity."
    }
}

Empuxa\LocaleViaApi\Http\Controllers\GetLocaleController

This controller returns the contents of a locale directory as JSON. If the directory does not exist, it will return an error 404.

Route::get('/locales/{locale}', GetLocaleController::class);

Security

Since this package reads your lang files (and could theoretically read any other files as well), it is important to protect your API routes. Make sure that you only share the locales that you want to share. Add route pattern to do so.

Security Best Practices

  1. Protect your routes - Always use authentication middleware on the locale API routes:

    Route::middleware('auth:sanctum')->group(function () {
        Route::get('/locales', ListLocalesController::class);
        Route::get('/locales/{locale}', GetLocaleController::class);
    });
  2. Restrict locale patterns - Use route constraints to limit valid locale values:

    Route::get('/locales/{locale}', GetLocaleController::class)
        ->where('locale', '[a-z]{2}');
  3. Protect your lang directory - This package uses File::getRequire() which executes PHP code from locale files. Never allow untrusted users to write to your lang/ directory.

  4. Use vendor safelist - If you enable load_vendor_files, consider using the vendor_safelist config option to restrict which vendor packages are exposed.

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 9.36k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 1
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-12-11

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固