In this article, I'll show you how to translate content programmatically with PHP using the TransformersPHP library.
Translating text is essential for reaching a global audience and ensuring your content is accessible to speakers of different languages.
To get started, please make sure you have the TransformersPHP library installed. You can install it via Composer by running:
composer require codewithkyrian/transformers
During the installation, you have to answer a question:
Do you trust "codewithkyrian/transformers-libsloader" to execute code and wish to enable it now? (writes "allow-plugins" to composer.json) [y,n,d,?]
You'll need to answer yes to enable the Composer plugin to download all shared libraries necessary for TransformersPHP.
Once installed, require the autoload file to load all necessary classes and dependencies:
Copy after login
Next, you’ll need to import the relevant classes and functions that handle translation:
use Codewithkyrian\Transformers\Transformers; use function Codewithkyrian\Transformers\Pipelines\pipeline;
Before translating content, you must configure the Transformers class:
Transformers::setup()->setCacheDir("./models")->apply();
The next step is to create a pipeline for translation using a pre-trained model:
$translationPipeline = pipeline("translation", 'Xenova/nllb-200-distilled-600M');
The model used for translations in this example is https://huggingface.co/Xenova/nllb-200-distilled-600M
Define the sentences you want to translate:
$inputs = [ "The quality of tools in the PHP ecosystem has greatly improved in recent years", "Some developers don't like PHP as a programming language", "I appreciate Laravel as a development tool", "Laravel is a framework that improves my productivity", "Using an outdated version of Laravel is not a good practice", "I love Laravel", ];
This array contains English sentences that will be translated into Italian.
Loop through each sentence and translate it:
foreach ($inputs as $input) { $output = $translationPipeline( $input, maxNewTokens: 256, tgtLang: 'ita_Latn' ); echo "?? " . $input . PHP_EOL; echo "?? " . trim($output[0]["translation_text"]) . PHP_EOL; echo PHP_EOL; }
The model supports a lot of languages. To define the target language with the tgtLang parameter, you must use the language code FLORES-200. Here there is a list: https://github.com/facebookresearch/flores/blob/main/flores200/README.md#languages-in-flores-200
In the first execution of the script, the pipeline() function will download all the model files into the directory: models/Xenova/nllb-200-distilled-600M. Be patient, the model is huge, more than 800 MB.
With TransformersPHP, translating content programmatically is a streamlined process. By setting up the environment, initializing the necessary classes, and defining a translation pipeline, you can easily convert text from one language to another. This is particularly useful for creating multilingual websites, applications, or content, allowing you to reach a broader audience effectively.
The above is the detailed content of How to translate content programmatically using AI and TransformersPHP. For more information, please follow other related articles on the PHP Chinese website!