efabrica/translatte

Nette框架的翻译器

1.2.1 2024-08-06 09:46 UTC

This package is auto-updated.

Last update: 2024-09-06 10:03:25 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

Nette框架的翻译器。

用法

use Efabrica\Translatte\Translator;
use Efabrica\Translatte\Resource\NeonDirectoryResource;

// Create new translator with default language
$translator = new Translator('sk_SK');

// Register new resources where translations are stored
$translator->addResource(new NeonDirectoryResource([__DIR__ . '/lang', __DIR__ . '/another/lang']));
$translator->addResource(new NeonResource(__DIR__ . '/dictionary.sk_SK.neon', 'sk_SK'));

// Translate basic string
$translator->translate('dictionary.forms.error']);

// Translate with pluralization
$translator->translate('key', 10);

// Translate with parameters
$translator->translate('key', ['name' => 'Peter']);

// Translate with pluralization and parameters
$translator->translate('key', 10, ['page' => 'login']);

// Select translation language on the fly
$translator->translate('key', 1, [], 'en_US');

Nette扩展

extensions:
	translation: Efabrica\Translatte\Bridge\Nette\TranslationExtension
	
# Minimal configuration
translation:
    default: 'sk_SK' # mandatory

# Full configuration
translation:
    default: 'sk_SK' # mandatory
    fallback: # optional
        - 'en_US'
        - 'en_UK'
    dirs:
        - %appDir%/lang
    cache: Efabrica\Translatte\Cache\NullCache() # optional
    resolvers: # optional
        - Efabrica\Translatte\Resolver\StaticResolver('sk_Sk')
    resources: # optional
        - Efabrica\Translatte\Resource\NeonDirectoryResource(%appDir%/localize)

语法糖

dictionary.sk_SK.neon:

cart:
    products_in_cart: 'V košíku je jeden produkt|V košíku sú %count% produkty|V košíku je %count% produktov'

源:src/PluralForm.php

Example of count syntax:
sk: '1|2-4|0,5-Inf'
cz: '1|2-4|0,5-Inf'
en: '1|0,2-Inf'

Example of special count syntax (https://symfony.ac.cn/doc/3.1/components/translation/usage.html#pluralization):
en: '[-Inf,-10]big negative count|]-10,0[negative count|{0}zero count|{1}one count|{2,3,4}two,three,four count|]4,Inf]more than four count' 
sk: '[-Inf,-10]veľký negatívny počet|]-10,0[negatívny počet|{0}nula počet|{1}jedna počet|{2,3,4}dva,tri,štyri počet|]4,Inf]viac ako štyri počet' 

index.php:

// Translator setup
$translator = ...

// To params array is set count variable
$translator->translate('dictionary.cart.products_in_cart', 2); // V košíku sú 2 produkty

// Param count from params array is used to select right plural form
$translator->translate('dictionary.cart.products_in_cart', ['count' => 2]); // V košíku sú 2 produkty

// If we set both params nothing is override
$translator->translate('dictionary.cart.products_in_cart', 10, ['count' => 2]); // V košíku je 2 produktov

主要类

解析器

解析要使用的翻译器语言。
可用的解析器

  • StaticResolver - 解析为指定的静态语言。
  • ChainResolver - 可以向此解析器注册多个解析器。使用返回非空字符串的第一个解析器。

资源

表示带有翻译字符串的“存储”。它可以是一切——包含翻译文件的目录、数据库、redis或外部API调用。
可用的资源

  • NeonResource - 一个neon文件。
  • NeonDirectoryResource - 在多个目录中搜索格式为"{prefix}.{lang}.neon"的neon文件。

缓存

用于缓存生成的目录。