1. Go to this page and download the library: Download gabepri/auto-html-i18n 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/ */
gabepri / auto-html-i18n example snippets
use AutoHtmlI18n\I18nTranslator;
use AutoHtmlI18n\TranslationItem;
$i18n = new I18nTranslator([
'locale' => 'es',
'onMissingTranslation' => function (array $items, string $locale): array {
// $items: TranslationItem[] — one entry per unique missing key
// Return: ['masked_key' => 'translation', ...]
// Either look these up in your DB or hand them off to a translation service.
return MyTranslationService::fetch($items, $locale);
},
]);
$html = $i18n->translateHtml('<p>You have 5 apples</p>');
// → '<p>Tienes 5 manzanas</p>'
// Walk an HTML fragment, translate everything translatable, return HTML.
$i18n->translateHtml(string $html): string
// Imperative: look up a pre-masked key and substitute positional variables.
// (No masking, no ICU — just {{N}} substitution.)
$i18n->translate(string $text, array $variables = [], ?string $scope = null): string
// Dry-run validation: check a translation string will render, the same way
// translateHtml() consumes it. See "Validating translations" below.
$i18n->validateIcu(string $translated, array $variables = [], ?string $locale = null): IcuValidationResult
$i18n->validateTranslation(string $original, string $translated, ?string $locale = null): IcuValidationResult
// Locale management
$i18n->getLocale(): string
$i18n->setLocale(string $locale): void
// Writing direction of a locale ('ltr'|'rtl' backed enum), defaulting to the
// instance locale. See "RTL support" below.
$i18n->getDirection(?string $locale = null): TextDirection
// Cache management
$i18n->setCache(string $locale, array $entries): void
$i18n->getCache(?string $locale = null): array
$i18n->clearCache(?string $locale = null): void
$i18n->getTranslation(string $key, ?string $locale = null): string|array|null
// IgnoreWords management
$i18n->getIgnoreWords(): array
$i18n->addIgnoreWords(array $words): void
$i18n->removeIgnoreWords(array $words): void
$i18n->setIgnoreWords(array $words): void
// Turn the gate off entirely.
$i18n = new I18nTranslator([..., 'skipUnrenderedValues' => false]);
// Or keep it and supply your own predicate — here copy may legitimately say
// "null", but "undefined" is always a rendering artifact.
$i18n = new I18nTranslator([
...,
'isUnrenderedValue' => fn(string $masked, string $original): bool
=> preg_match('/\bundefined\b/', $masked) === 1,
]);
// Backend returns
['You have {{0}} apples' => '{0, plural, one {Tienes # manzana} other {Tienes # manzanas}}']
// "You have 1 apples" → "Tienes 1 manzana"
// "You have 5 apples" → "Tienes 5 manzanas"
use AutoHtmlI18n\VariableInfo;
use AutoHtmlI18n\VariableType;
$r = $i18n->validateIcu(
'{0, plural, one {# oveja} other {# ovejas}}',
[new VariableInfo('5', VariableType::Number)],
);
// $r->valid === true, $r->format === TranslationFormat::Icu, $r->output === '5 ovejas'
// Or derive the variables from a source string, using the instance's ignoreWords config:
$r = $i18n->validateTranslation('John has 3 cats', '{{0}} tiene {{1}} gatos');