1. Go to this page and download the library: Download matecat/lara-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
matecat / lara-php example snippets
use Lara\LaraCredentials;
use Lara\Translator;
use Lara\LaraException;
// Set your credentials using environment variables (recommended)
$credentials = new LaraCredentials(
getenv('LARA_ACCESS_KEY_ID'),
getenv('LARA_ACCESS_KEY_SECRET')
);
// Create translator instance
$lara = new Translator($credentials);
// Simple text translation
try {
$result = $lara->translate("Hello, world!", "en-US", "fr-FR");
echo "Translation: " . $result->getTranslation() . PHP_EOL;
// Output: Translation: Bonjour, le monde !
} catch (LaraException $error) {
echo "Translation error: " . $error->getMessage() . PHP_EOL;
}
$credentials = new LaraCredentials("your-access-key-id", "your-access-key-secret");
$lara = new Translator($credentials);
$credentials = new LaraCredentials(
getenv('LARA_ACCESS_KEY_ID'),
getenv('LARA_ACCESS_KEY_SECRET')
);
// Create translator with credentials
$lara = new Translator($credentials);
// Basic translation
$result = $lara->translate("Hello", "en-US", "fr-FR");
// Multiple strings
$result = $lara->translate(["Hello", "World"], "en-US", "fr-FR");
// TextBlocks (mixed translatable/non-translatable content)
use Lara\TextBlock;
$textBlocks = [
new TextBlock('Translatable text', true),
new TextBlock('<br>', false), // Non-translatable HTML
new TextBlock('More translatable text', true),
];
$result = $lara->translate($textBlocks, "en-US", "fr-FR");
// With advanced options
$options = new TranslateOptions([
'instructions' => ["Formal tone"],
'adaptTo' => ["mem_1A2b3C4d5E6f7G8h9I0jKl"], // Replace with actual memory IDs
'glossaries' => ["gls_1A2b3C4d5E6f7G8h9I0jKl"], // Replace with actual glossary IDs
'style' => "fluid",
'timeoutInMillis' => 10000
]);
$result = $lara->translate("Hello", "en-US", "fr-FR", $options);
$filePath = "/path/to/your/document.txt"; // Replace with actual file path
$fileStream = $lara->documents->translate($filePath, "en-US", "fr-FR");
// With options
$options = new DocumentTranslateOptions();
$options->setAdaptTo(["mem_1A2b3C4d5E6f7G8h9I0jKl"]); // Replace with actual memory IDs
$options->setGlossaries(["gls_1A2b3C4d5E6f7G8h9I0jKl"]); // Replace with actual glossary IDs
$fileStream = $lara->documents->translate($filePath, "en-US", "fr-FR", $options);
//Optional: upload options
$uploadOptions = new DocumentUploadOptions();
$uploadOptions->setAdaptTo(["mem_1A2b3C4d5E6f7G8h9I0jKl"]); // Replace with actual memory IDs
$uploadOptions->setGlossaries(["gls_1A2b3C4d5E6f7G8h9I0jKl"]); // Replace with actual glossary IDs
$document = $lara->documents->upload($filePath, "en-US", "fr-FR", $uploadOptions);
$downloadOptions = new DocumentDownloadOptions();
$fileStream = $lara->documents->download($document->getId(), $downloadOptions);
// Create memory
$memory = $lara->memories->create("MyMemory");
// Create memory with external ID (MyMemory integration)
$memory = $lara->memories->create("Memory from MyMemory", "aabb1122"); // Replace with actual external ID
// Important: To update/overwrite a translation unit you must provide a tuid. Calls without a tuid always create a new unit and will not update existing entries.
// Add translation to single memory
$memoryImport = $lara->memories->addTranslation("mem_1A2b3C4d5E6f7G8h9I0jKl", "en-US", "fr-FR", "Hello", "Bonjour", "greeting_001");
// Add translation to multiple memories
$memoryImport = $lara->memories->addTranslation(
["mem_1A2b3C4d5E6f7G8h9I0jKl", "mem_2XyZ9AbC8dEf7GhI6jKlMn"], // Replace with actual memory IDs
"en-US", "fr-FR", "Hello", "Bonjour", "greeting_002"
);
// Add with context
$memoryImport = $lara->memories->addTranslation(
"mem_1A2b3C4d5E6f7G8h9I0jKl", "en-US", "fr-FR", "Hello", "Bonjour", "tuid",
"sentenceBefore", "sentenceAfter"
);
// TMX import from file
$tmxFilePath = "/path/to/your/memory.tmx"; // Replace with actual TMX file path
$memoryImport = $lara->memories->importTmx("mem_1A2b3C4d5E6f7G8h9I0jKl", $tmxFilePath);
// Delete translation
// Important: if you omit tuid, all entries that match the provided fields will be removed
$deleteJob = $lara->memories->deleteTranslation(
"mem_1A2b3C4d5E6f7G8h9I0jKl", "en-US", "fr-FR", "Hello", "Bonjour", "greeting_001"
);
// Wait for import completion
$completedImport = $lara->memories->waitForImport($memoryImport, 300); // 5 minutes
// Create glossary
$glossary = $lara->glossaries->create("MyGlossary");
// Import CSV from file
$csvFilePath = "/path/to/your/glossary.csv"; // Replace with actual CSV file path
$glossaryImport = $lara->glossaries->importCsv("gls_1A2b3C4d5E6f7G8h9I0jKl", $csvFilePath);
// Check import status
$importStatus = $lara->glossaries->getImportStatus($glossaryImport->getId());
// Wait for import completion
$completedImport = $lara->glossaries->waitForImport($glossaryImport, 300); // 5 minutes
// Export glossary
$csvData = $lara->glossaries->export("gls_1A2b3C4d5E6f7G8h9I0jKl", "csv/table-uni", "en-US");
// Get glossary terms count
$counts = $lara->glossaries->counts("gls_1A2b3C4d5E6f7G8h9I0jKl");
// Constructor array pattern (recommended)
$options = new TranslateOptions([
'adaptTo' => ["mem_1A2b3C4d5E6f7G8h9I0jKl"], // Memory IDs to adapt to
'glossaries' => ["gls_1A2b3C4d5E6f7G8h9I0jKl"], // Glossary IDs to use
'instructions' => ["instruction"], // Translation instructions
'style' => "fluid", // Translation style (fluid, faithful, creative)
'contentType' => "text/plain", // Content type (text/plain, text/html, etc.)
'multiline' => true, // Enable multiline translation
'timeoutInMillis' => 10000, // Request timeout in milliseconds
'sourceHint' => "en", // Hint for source language detection
'noTrace' => false, // Disable request tracing
'verbose' => false, // Enable verbose response
]);
// Alternative setter pattern
$options = new TranslateOptions();
$options->setSourceHint("en-US");
$options->setAdaptTo(["mem_1A2b3C4d5E6f7G8h9I0jKl", "mem_2XyZ9AbC8dEf7GhI6jKlMn"]); // Replace with actual memory IDs
$options->setInstructions(["Formal tone", "Use technical terminology"]);
$options->setGlossaries(["gls_1A2b3C4d5E6f7G8h9I0jKl", "gls_2XyZ9AbC8dEf7GhI6jKlMn"]); // Replace with actual glossary IDs
$options->setContentType("text/html");
$options->setMultiline(true);
$options->setTimeoutInMillis(15000);
$options->setNoTrace(false);
$options->setVerbose(true);
$options->setStyle("faithful");
// Full language codes (recommended)
$result = $lara->translate("Hello", "en-US", "fr-FR");
// Simple language codes
$result = $lara->translate("Hello", "en", "fr");