lkt/translations

2.0.2 2024-09-01 20:20 UTC

This package is auto-updated.

Last update: 2024-10-01 20:28:51 UTC


README

安装

composer require lkt/translations

使用

翻译文件夹和翻译文件

语言通过注册语言文件夹声明。这是你的项目中包含所需php文件的目录。

每个翻译文件必须返回一个数组。

例如

- /
- - /translations
- - - /en
- - - - users.php
- - - - ...
- - - /es
- - - - users.php
- - - - ...
- - - /it
- - - - users.php
- - - - ...

users.php的英文版本可以是

<?php

return [
    'name' => 'Name',
    'billing' => [
        'address' => 'Billing address',
        'city' => 'Billing city',
    ]
];

在代码中注册翻译

每个目录都可以通过addLocalePath方法加载

use Lkt\Translations\Translations;

Translations::addLocalePath('en', __DIR__ . '/translations/en');
Translations::addLocalePath('es', __DIR__ . '/translations/es');
Translations::addLocalePath('it', __DIR__ . '/translations/it');
Translations::addLocalePath('fr', __DIR__ . '/translations/fr');

检索所有可用语言

use Lkt\Translations\Translations;

$languages = Translations::getAvailableLanguages(); // An array => ['en', 'es', 'it', 'fr]

访问翻译

use Lkt\Translations\Translations;

// Get translations with current language
Translations::get('name');

// Nested translations can be accessed using the dot separator:
Translations::get('billing.address');

// Specify wanted language
Translations::get('name', 'it');

当前语言

默认情况下,使用的语言是加载翻译目录时注册的第一个语言。

如果你想,可以随时这样更新

use Lkt\Translations\Translations;

Translations::setLang('es');

附加功能

在语言之间找到丢失的翻译

有时候维护翻译文件可能会有点困难,为此有一个有用的方法

use Lkt\Translations\Translations;

$missed = Translations::getMissedTranslations()

此方法将为每个语言返回一个数组,其中包含所有未翻译的键。

例如

[
    'en' => [
        'sayHello' => ''
    ],
    'es' => [
        'sayHello' => 'Hi'
    ]
]

在语言之间找到具有相同值的翻译

是时候检测是否有已声明但尚未翻译的翻译了。

use Lkt\Translations\Translations;

$missed = Translations::getTranslationsNotTranslated()

此方法将为每个语言返回一个数组,其中至少有一个键在其他语言中有相同的值。

例如

[
    'en' => [
        'lorem' => 'ipsum',
        'dolor.sit.amet' => 'Amet'
    ],
    'es' => [
        'lorem' => 'ipsum',
        'dolor.sit.amet' => 'Amet'
    ]
]

导出翻译

use Lkt\Translations\Translations;

$exported = Translations::export();

// $exported content:
[
    "en" => [
        "lorem" => "ipsum",
        "dolor.sit.amet" => "Dolor sit amet",
    ],
    "fr" => [
        "lorem" => "ipsum",
        "dolor.sit.amet" => "Dolor sit amet fr",
        "langExclusiveTranslation" => "Hi"
    ]
];