We're currently building a multi-language site in Vae and I needed some simple i18n string translation. I've seen a few others ask for this feature so here's two simple implementations anyone can use.
Syntax
<span><v:t>Hello world!</v:t></span> => <span>Bonjour tout le monde</span>
function translate($attributes, $tag, $context, $callback) {
$locale = $_REQUEST['lang'];
$key = vae_render_tags($tag, $context);
if ($locale) {
$language = language($locale);
if ($language) {
$translation = (string)vae(sprintf('settings/translations[text="%s"][language=%d]', $key, $language->id))->translation;
if ($translation) {
return $translation;
}
}
}
return $key;
}
vae_register_tag('t', array(
'handler' => 'translate'
));
function translate($attributes, $tag, $context, $callback) {
$key = $tag['tags'][0]['innerhtml'];
$settings = vae('settings');
$translationId = (int)$settings->get(sprintf('translation_names[name="%s"]', $key))->id;
if ($translationId) {
$languageCode = $_REQUEST['lang'];
$languageId = (int)$settings->get(sprintf('languages[%s]', $languageCode ? sprintf('locale_code="%s"', $languageCode) : 1))->id;
if ($languageId) {
$translation = (string)$settings->get(sprintf('translations[name=%d][language=%d]', $translationId, $languageId))->translation;
if ($translation) {
return $translation;
}
}
}
return $key;
}
vae_register_tag('t', array(
'handler' => 'translate'
));
It looks like you're new here. If you want to get involved, click one of these buttons!