mouseeatscat/phpquicktranslate

PHP代码中提供多语言翻译的快速函数。

3.0.0 2024-06-07 04:44 UTC

This package is auto-updated.

Last update: 2024-09-07 05:38:11 UTC


README

Packagist

一个用于快速提供PHP中多语言翻译的类。

此脚本由Michel Descoteaux(micheldescoteaux.com)开发,作为个人项目,可免费使用和分发。

需求

  • PHP >= 8.0
  • Composer - 安装

安装

  1. 运行 composer require mouseeatscat/phpquicktranslate

  2. 将此代码添加到您的PHP文档顶部

<?php

use MouseEatsCat\QuickTranslate;

require_once __DIR__ . '/vendor/autoload.php';

// Get the current language
$language = !empty($_GET['language']) ? $_GET['language']: 'en';

// Instantiate PHP Quick Translate
$qt = new QuickTranslate($language);

您可以选择添加多语言 JSON翻译文件或多个单语言文件。

// Single-Language JSON files
$qt->addTranslationSource('/translations/en.json', 'en');
$qt->addTranslationSource('/translations/fr.json', 'fr');
// OR Multilingual JSON file
$qt->addTranslationSource('/translations/multilingual.json');
// OR Path to translations directory
$qt->addTranslationSource('/translations/');

然后通过其键加载翻译

echo $qt->t('translation_key');
// OR echo using a method
$qt->et('translation_key');

JSON翻译文件示例

单语言JSON示例

假设您为每种语言有一个json文件。每个文件将包含类似以下内容:

{
  "translation_example": "Translated Text"
}

多语言JSON示例

假设您有一个包含所有语言的翻译的json文件。该文件将包含类似以下内容:

{
  "translation_example": {
    "en": "English Translated Text",
    "fr": "French Translated Text"
  }
}

无翻译文件翻译

您还可以在过程中创建一次性翻译。(以下两种替代方案等效)

$qt->et([
  'en' => 'English Test',
  'fr' => 'French Text'
]);

// OR Alternative

$qt->et('[:en]English Text[:fr]French Text');

如果URL是 http://website.com/?language=enhttp://website.com/,则结果将是

English Text

如果URL是 http://website.com/?language=fr,则结果将是

French Text

QuickTranslate方法

// Instantiate PHP Quick Translate
$qt = new QuickTranslate('language');

// Translate
$qt->t('translation_key');

// Same as t() except with echo
$qt->et('translation_key');

// Set the current language
$qt->setLanguage('language');

// Get the current language
$qt->getLanguage();

// Add a translation
$qt->addTranslation('language', 'translation_key', 'translation_value');

// Add a JSON translation source file directory
// translation source file directory
$qt->addTranslationSource('path/to/json/translations/');
// Individual translation source file
$qt->addTranslationSource('path/to/json/translations/language.json', 'language');
$qt->addTranslationSource('path/to/json/translations/multilingual.json');

// Add array or translations
// (single language + multilingual)
$qt->addTranslations(['translation_key' => 'translation_value'], 'language');
$qt->addTranslations([
  'translation_key' => [
    'en' => 'translation_value',
    'fr' => 'translation_value'
  ]
]);

// Determine if a translation exists for given key
// If language isn't provided, the current language will be used
$qt->hasTranslation('translation_key', 'language');

// Gets the translation for given key
// If language isn't provided, the current language will be used
$qt->getTranslation('translation_key', 'language');