beholdr/folio-translate
Composer 安装命令:
composer require beholdr/folio-translate
包简介
Easy translation for Laravel Folio pages.
关键字:
README 文档
README
Easy translation for Laravel Folio pages. This package based on mcamara/laravel-localization.
This package extends laravel-localization with these features:
- translate Folio content via files in the same folder
- check and hide unsupported locales in a language switcher
- redirect to a default locale if a page does not support current locale
Installation
You can install the package via composer:
composer require beholdr/folio-translate
Usage
Add middleware alias in your bootstrap/app.php:
return Application::configure(basePath: dirname(__DIR__)) ->withMiddleware(function (Middleware $middleware) { $middleware->alias([ // other middleware aliases... 'setLocaleFromBrowser' => \Beholdr\FolioTranslate\Middleware\SetLocaleFromBrowser::class, 'supportedLocales' => \Beholdr\FolioTranslate\Middleware\SupportedLocales::class, ]);
Add middlewares in your app/Providers/FolioServiceProvider.php:
namespace App\Providers; use Illuminate\Support\ServiceProvider; use Laravel\Folio\Folio; use Mcamara\LaravelLocalization\Facades\LaravelLocalization; class FolioServiceProvider extends ServiceProvider { public function boot(): void { $locale = LaravelLocalization::setLocale(); Folio::path(resource_path('views/pages'))->middleware([ '*' => [ 'localeSessionRedirect', 'localizationRedirect', 'supportedLocales', ], ])->uri($locale ?? ''); } }
Content translation
Given you have a page views/pages/index.blade.php and want to translate it to english and russian languages.
- Call
translatefunction inviews/pages/index.blade.phpfile:
<?php use function Beholdr\FolioTranslate\translate; translate(); ?>
- Create
views/pages/index-en.blade.phpandviews/pages/index-ru.blade.phpfiles in the same directory with original file. Translated files should have the same prefix as the original file, for example:
views
pages
some-path
filename.blade.php
filename-en.blade.php
filename-ru.blade.php
index.blade.php
index-en.blade.php
index-ru.blade.php
- Put your translated content in these files. They will be rendered for each corresponding locale.
For example
views/pages/index-en.blade.php:
<x-layouts.base title="English page"> English content... </x-layouts.base>
Fallback locale
You can pass an optional argument to translate function to specify default (fallback) locale: translate('en').
This locale will be used to load content if there is no translation for a current locale.
If not specified, it equals to a system APP_FALLBACK_LOCALE.
Define supported languages manually
Sometimes you need to define supported languages for page manually. It even could be non-Folio page.
In this case you can use middleware supportedLocales or a helper method setSupportedLanguagesKeys.
Middleware
You can add supportedLocales middleware with a list of supported languages to any route:
Route::get('/news', NewsController::class) ->middleware('supportedLocales:en,ru');
In this case a page will support passed languages.
Helper method
Also you can programmatically set supported languages, using FolioTranslate::setSupportedLanguagesKeys() method:
if ($redirect = FolioTranslate::setSupportedLanguagesKeys(['ru', 'en'])) { return $redirect; }
In case of absent translation for current language, setSupportedLanguagesKeys will return redirect to a default locale version.
SetLocaleFromBrowser middleware
This middleware sets application locale from a browser request (Accept-Language header).
Route::get('/endpoint', EndpointController::class) ->middleware('setLocaleFromBrowser');
Testing
composer test
License
The MIT License (MIT). Please see License File for more information.
beholdr/folio-translate 适用场景与选型建议
beholdr/folio-translate 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.78k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 04 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「translation」 「laravel」 「folio」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 beholdr/folio-translate 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 beholdr/folio-translate 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 beholdr/folio-translate 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A custom URL rule class for Yii 2 which allows to create translated URL rules
A Laravel Eloquent model trait for translatable resource
Bureaux A Partager Edit - Parse, validate, manipulate, and display dates in PHP w/ i18n support. Inspired by moment.js
Symfony localise.biz library
This bundle provides translations for entities in your project. It's a bundle, but can be used standalone.
Checks if all translation items appear in all languages
统计信息
- 总下载量: 2.78k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 7
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-04-15