compositephp/localization
Composer 安装命令:
composer require compositephp/localization
包简介
Easy to use Localization and Pluralization, based on files
README 文档
README
Simple translation and pluralization php library based on files.
Overview:
Requirements
- PHP 8.1+
- PDO Extension with desired database drivers
Installation
Install package via composer:
$ composer require compositephp/localization
Localization
First, you need to create new class and extend from Composite\Localization\AbstractLocalization
use Composite\Localization\AbstractLocalization; use Composite\Localization\Language; class Localization extends AbstractLocalization { public function __construct(Language $language) { parent::__construct( language: $language, sourcePath: '/directory/to/your/locale/files', ); } public function general(string $text, array $placeholders = []): string { return $this->get('general', $text, $placeholders); } public function profile(string $text, array $placeholders = []): string { return $this->get('profile', $text, $placeholders); } //other categories //... }
Usage:
Second, create category files in your localization source path /directory/to/your/locale/files:
- general.php
- profile.php
Example content of general.php
use Composite\Localization\Language; return [ 'Hello World!' => [ Language::FR->value => 'Bonjour le monde!' ], 'hello_world' => [ Language::EN->value => 'Hello World!', Language::FR->value => 'Bonjour le monde!', ], 'Hello {{first_name}} {{last_name}}!' => [ Language::FR->value => 'Bonjour {{first_name}} {{last_name}}!', ], 'hello_fullname' => [ Language::EN->value => 'Hello {{first_name}} {{last_name}}!', Language::FR->value => 'Bonjour {{first_name}} {{last_name}}!', ], 'Hello {{name}}, you have {{num}} [[new_comment:num]]' => [ Language::FR->value => 'Bonjour {{name}}, vous avez {{num}} [[new_comment:num]]', ], ];
Usage:
use Composite\Localization\Language; $localization = new Localization(Language::FR); $localization->general('Hello World!'); //Bonjour le monde! $localization->general('hello_world'); //Bonjour le monde! $localization->general( 'Hello {{first_name}} {{last_name}}!', ['first_name' => 'John', 'last_name' => 'Smith'] ); //Bonjour John Smith! $localization->general( 'hello_fullname', ['first_name' => 'John', 'last_name' => 'Smith'] ); //Bonjour John Smith! //if translation not exists localization instance will still output it as is $localization->general('Bye World!'); //Bye World! $localization->general('bye_world'); //bye_world $localization->general( 'Bye {{first_name}} {{last_name}}!', ['first_name' => 'John', 'last_name' => 'Smith'] ); //Bye John Smith!
Pluralization
Create a file _plural.php inside folder with translation categories /directory/to/your/locale/files:
use Composite\Localization\Language; use Composite\Localization\Plurals\EnglishPlural; use Composite\Localization\Plurals\FrenchPlural; return [ 'new_comment' => [ Language::EN->value => new EnglishPlural('new comment', 'new comments'), Language::FR->value => new FrenchPlural('nouveau commentaire', 'nouveaux commentaires'), ], ];
Usage:
$localization->general( 'Hello {{name}}, you have {{num}} [[new_comment:num]]', ['name' => 'John', 'num' => 1] ); //Bonjour John, vous avez 1 nouveau commentaire $localization->general( 'Hello {{name}}, you have {{num}} [[new_comment:num]]', ['name' => 'John', 'num' => 2] ); //Bonjour John, vous avez 2 nouveaux commentaires
License:
MIT License (MIT). Please see LICENSE for more information. Maintained by Composite PHP.
compositephp/localization 适用场景与选型建议
compositephp/localization 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9 次下载、GitHub Stars 达 2, 最近一次更新时间为 2022 年 10 月 25 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 compositephp/localization 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 compositephp/localization 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 9
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 2
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-10-25