mouseeatscat / phpquicktranslate
PHP代码中提供多语言翻译的快速函数。
3.0.0
2024-06-07 04:44 UTC
Requires
- php: >=8.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-07 05:38:11 UTC
README
一个用于快速提供PHP中多语言翻译的类。
此脚本由Michel Descoteaux(micheldescoteaux.com)开发,作为个人项目,可免费使用和分发。
需求
- PHP >= 8.0
- Composer - 安装
安装
-
运行
composer require mouseeatscat/phpquicktranslate
-
将此代码添加到您的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);
// 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=en
或 http://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');