Archived
1
0
Fork 0
This repository has been archived on 2026-05-10. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
fiktivkod/library/Fiktiv/Translate/Adapter.php
2010-09-22 22:22:50 +02:00

65 lines
No EOL
1.9 KiB
PHP

<?php
/**
* Extended Zend_Translate_Adapter with additional functionality
*
*/
abstract class Fiktiv_Translate_Adapter extends Zend_Translate_Adapter
{
/**
* Performs the translation and call the transform
* function to handle transformations.
*
* @return string
*/
public function translate($messageId, $locale = null)
{
if ($messageId == null)
return;
if (stristr($messageId,':')) {
$parts = explode(':', $messageId);
$flag = $parts[0];
$key = $parts[1];
return $this->transform($flag, parent::translate($key, $locale));
}
return parent::translate($messageId, $locale);
}
/**
* Transform the translated text.
* This function defines the transfomation flags.
*
* @param string $flag
* @param string $text
* @return string $text
*/
protected function transform($flag, $text)
{
$encoding = mb_detect_encoding($text);
switch ($flag) {
case 'u':
return mb_strtoupper(mb_substr($text, 0, 1, $encoding), $encoding) . mb_substr($text, 1, strlen($text), $encoding);
break;
case 'uw':
$split = mb_split(' ', $text);
foreach ($split as &$word) {
$word = mb_strtoupper(mb_substr($word, 0, 1, $encoding), $encoding) . mb_substr($word, 1, strlen($word), $encoding);
}
return join(' ', $split);
break;
case 'ua':
return mb_strtoupper($text, $encoding);
break;
case 'l':
return mb_strtolower(mb_substr($text, 0, 1, $encoding), $encoding) . mb_substr($text, 1, strlen($text), $encoding);
break;
case 'la':
return mb_strtolower($text, $encoding);
break;
}
}
}