19 require_once(BASE.
"wcmf/lib/util/class.InifileParser.php");
20 require_once(BASE.
"wcmf/lib/util/class.ObjectFactory.php");
21 require_once(BASE.
"wcmf/lib/persistence/class.PersistenceFacade.php");
75 static $instance = null;
77 if (!isset($instance))
92 if (($defaultLanguage = $parser->getValue(
'defaultLanguage',
'i18n')) ===
false) {
97 if (!isset($defaultLanguages[$defaultLanguage])) {
101 return $defaultLanguage;
109 if ($this->_supportedLanguages == null)
113 if (($languages = $parser->getSection(
'languages')) !==
false) {
114 $this->_supportedLanguages = $languages;
119 $languageType = $parser->getValue(
'languageType',
'i18n');
120 if ($languageType ===
false) {
127 $languages = $persistenceFacade->loadObjects($languageType, BUILDEPTH_SINGLE);
128 for($i=0; $i<
sizeof($languages); $i++)
130 $curLanguage = &$languages[$i];
131 $this->_supportedLanguages[$curLanguage->getCode()] = $curLanguage->getName();
145 if (($type = $parser->getValue(
'translationType',
'i18n')) ===
false) {
158 if (($inputTypes = $parser->getValue(
'inputTypes',
'i18n')) ===
false) {
172 $obj = &$objectFactory->createInstanceFromConfig(
'i18n',
'translationType');
203 if ($object == null) {
215 $tpl = &$query->getObjectTemplate($type);
216 $tpl->setObjectid(
"= '".$object->getOID().
"'");
217 $tpl->setLanguage(
"= '".
$lang.
"'");
222 $processor->run($object,
false);
229 $children = $object->getChildren();
230 for($i=0; $i<sizeOf($children); $i++) {
259 $tpl = &$query->getObjectTemplate($type);
260 $tpl->setObjectid(
"= '".$object->getOID().
"'");
261 $tpl->setLanguage(
"= '".
$lang.
"'");
265 $processor =
new NodeProcessor(
'saveTranslatedValue', array(&$translations,
$lang, $saveEmptyValues),
267 $processor->run($object,
false);
274 $children = $object->getChildren();
275 for($i=0; $i<sizeOf($children); $i++) {
298 $tpl = &$query->getObjectTemplate($type);
299 $tpl->setObjectid(
"= '".$oid.
"'");
301 $tpl->setLanguage(
"= '".
$lang.
"'");
303 $translationOIDs = $query->execute(
false);
307 foreach ($translationOIDs as $curTranslationOID) {
308 $persistenceFacade->delete($curTranslationOID);
328 $tpl = &$query->getObjectTemplate($type);
329 $tpl->setLanguage(
"= '".
$lang.
"'");
330 $translationOIDs = $query->execute(
false);
334 foreach ($translationOIDs as $curTranslationOID) {
335 $persistenceFacade->delete($curTranslationOID);
345 $inputType = $obj->getValueProperty($valueName,
'input_type', $dataType);
351 $obj->setValue($valueName, null, $dataType);
354 for ($i=0; $i<
sizeof($translations); $i++)
356 $curValueName = $translations[$i]->getAttribute();
357 if ($curValueName == $valueName)
359 $translation = $translations[$i]->getTranslation();
360 if (!($useDefaults && strlen($translation) == 0)) {
374 $inputType = $obj->getValueProperty($valueName,
'input_type', $dataType);
378 $value = $obj->getValue($valueName, $dataType);
379 if ($saveEmptyValues || strlen($value) > 0)
384 for ($i=0; $i<
sizeof($existingTranslations); $i++)
386 $curValueName = $existingTranslations[$i]->getAttribute();
387 if ($curValueName == $valueName)
389 $translation = &$existingTranslations[$i];
395 if ($translation == null)
402 $translation->setObjectid($obj->getOID());
403 $translation->setAttribute($valueName);
404 $translation->setTranslation($obj->getValue($valueName, $dataType));
405 $translation->setLanguage(
$lang);
406 $translation->save();
setTranslatedValue(&$obj, $valueName, $dataType, &$translations, $useDefaults)
NodeProcessor is used to iterate over all values of a Node and apply a given callback function...
loadTranslation(&$object, $lang, $useDefaults=true, $recursive=true)
saveTranslation(&$object, $lang, $saveEmptyValues=false, $recursive=true)
throwEx($message, $file='', $line='')
Localization is used to store localized entity instances and retrieve them back. Entity instances are...
saveTranslatedValue(&$obj, $valueName, $dataType, &$existingTranslations, $lang, $saveEmptyValues)
& loadTranslatedObject($oid, $lang, $useDefaults=true)
deleteTranslation($oid, $lang=null)
& createTranslationInstance()