manujoz/translation

Class for create multilanguage sites o PHP

1.0.0 2020-10-13 11:48 UTC

This package is auto-updated.

Last update: 2025-04-13 22:27:58 UTC


README

Translation is a PHP class used to create or manage multilanguage sites.

Install

$ composer require manujoz/translation

Use

You need to create the files that will contain the translations of the texts. Normally we will use a folder called "locales".

In this folder you will create a file for each language you want the translation of.

|ROOT
	|_	locales
	|		   |_ en-US.php
	|		   |_ es-ES.php
	|		   |_ fr-FR.php
	|_	index.php

Locale file example:

locales/en-US.php

<?php

return [
	"hello" => "Hi!",
	"bye" => "Good bye",
	"login.messages.ok" => "You are logged",
	"signup.messages.welcome" => "Welcome to my site {name}"
]

?>

locales/es-ES.php

<?php

return [
	"hello" => "¡Hola!",
	"bye" => "Adios",
	"login.messages.ok" => "Estás dentro",
	"signup.messages.welcome" => "Bienvenido a mi sitio {name} ({email})"
]

?>

Once you have created the translation files, the use is very simple:

index.php

<?php

use Manujoz\Translation\Translation;

require( "vendor/autoload.php" );

$TRANS = new Translation();

$TRANS->lang = "en-EN";
echo $TRANS->of( "hello" ) . "<br>";
echo $TRANS->of( "signup.messages.welcome", [ "name" => "Manu Overa", "email" => "myemail@mydomain.com" ] ) . "<br>";
echo $TRANS->of( "bye" ) . "<br>";

$TRANS->lang = "es-ES";
echo $TRANS->of( "hello" ) . "<br>";
echo $TRANS->of( "signup.messages.welcome", [ "name" => "Manu Overa", "email" => "myemail@mydomain.com" ] ) . "<br>";
echo $TRANS->of( "bye" ) . "<br>";

?>

Documentation

Constructor

When the class is initialized you can pass as a parameter the path to the folder where your translation files are located. By default it will look in the root folder for a folder called "locales", but if you prefer to save it in different folders for example "translates/section1 /", "translates/section2", you can tell the class where to look for the translation files:

|ROOT
	|_	translates
	|		   |_ section1
	|		   |          |_ en-US.php
	|		   |          |_ es-ES.php
	|		   |          |_ fr-FR.php
	|		   |_ section2
	|		   |          |_ en-US.php
	|		   |          |_ es-ES.php
	|		   |          |_ fr-FR.php
	|_	index.php
<?php

use Manujoz\Translation\Translation;

require( "vendor/autoload.php" );

$TRANS = new Translation( "translates/section1" );

?>

Keep in mind that you will have to enter the path relative to the root folder. In this way you can create translation files by sections of your site for example or organize them as you want.

of() method

With the of() method we perform the translations, this method admits two parameters:

$TRANS->of( $key, $params = array() );

$key

It is the key of the array that will search the file to return the corresponding text.

$params (Optional)

It is an array with the words that can be added to a text as seen in the example above.

set_enclosing_chars() method

By default, in the text of the translations file, use these keys {} as encapulation characters. But if you prefer to change the encapsulation characters for some reason you can do it with the following method:

<?php

$TRANS->set_enclosing_chars( [ "[[", "]]" ] );

?>

locales/en-US.php

<?php

return [
	"hello" => "Hi!",
	"bye" => "Good bye",
	"login.messages.ok" => "You are logged",
	"signup.messages.welcome" => "Welcome to my site {not will be replaced} [[willBeReplaced]]"
]

?>