tacoberu/fluent-intl

Project Fluent 的 PHP 实现。一个用于表达性翻译的本地化库。

v1.2.1 2023-03-31 02:10 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.

状态

仅实现了规范的一部分。