tacoberu / fluent-intl
Project Fluent 的 PHP 实现。一个用于表达性翻译的本地化库。
v1.2.1
2023-03-31 02:10 UTC
Requires
- php: >=5.3.3
- tacoberu/bnf: ~1.1
Requires (Dev)
- phpunit/phpunit: ~4.0
- tracy/tracy: ^2.0
This package is auto-updated.
Last update: 2024-09-07 01:43:16 UTC
README
这是一个(不完整)的 Project Fluent 的 PHP 实现,它是一个旨在释放自然语言翻译全部表达能力的本地化框架。
Project Fluent 简化简单事物,使复杂事物成为可能。用于描述翻译的语法易于阅读和理解。同时,它还允许在必要时表示自然语言中的复杂概念,如性别、复数、动词变位等。
学习 FTL 语法
FTL 是用于描述翻译资源的本地化文件格式。FTL 代表 Fluent Translation List。
FTL 设计得易于阅读,但同时也允许表示自然语言中的复杂概念,如性别、复数、动词变位等。
hello-user = Hello, { $username }!
为了了解更多关于语法的知识,请阅读 Fluent 语法指南。如果您是工具作者,您可能对正式的 EBNF 语法 感兴趣。
安装
建议通过 Composer 安装
composer require tacoberu/fluent-intl
用法
require __dir__ . '/vendor/autoload.php'; use Taco\FluentIntl\FluentTranslator; use Taco\FluentIntl\FluentResource; $translator = new FluentTranslator("en-US"); $translator->addResource(new FluentResource(' -brand-name = Foo 3000 welcome = Welcome, {$name}, to {-brand-name}! greet-by-name = Hello, { $name }! emails = { $unreadEmails -> [1] You have one unread email. *[other] You have { $unreadEmails } unread emails. } ')); $msg = $translator->getMessage("welcome"); dump($translator->formatPattern($msg->value, ["name" => "Anna"])); // Welcome, Anna, to Foo 3000! $msg = $translator->getMessage("emails"); dump($translator->formatPattern($msg->value, ["unreadEmails" => 5])); // You have 5 unread emails.
状态
仅实现了规范的一部分。