mouseeatscat/phpquicktranslate

A quick function for providing multiple translations in PHP code.

3.0.0 2024-06-07 04:44 UTC

This package is auto-updated.

Last update: 2024-11-07 05:59:59 UTC


README

Packagist

A class for quickly providing multiple translations in PHP.

This script was developed as a personal project by Michel Descoteaux and is free to use and distribute.

Requirements

Installation

  1. Run composer require mouseeatscat/phpquicktranslate

  2. Add this code to the top of your php document:

<?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);

You can optionally add a mulilingal JSON translation file or multiple single-language files.

// 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/');

You can then load a translation by it's key:

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

JSON translation file examples

Single-Language JSON Example

Assuming you have one json file for each language. Each file would contain something like this:

{
  "translation_example": "Translated Text"
}

Multilingual JSON Example

Assuming you have one json file containing all translations for all languages. The file would contain something like this:

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

Translating without translation files

You can also create a one-time translation as you go. (both alternatives below are equivalent)

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

// OR Alternative

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

If the url is http://website.com/?language=en OR http://website.com/, the result will be:

English Text

If the url is http://website.com/?language=fr, the result will be:

French Text

QuickTranslate Methods

// 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');