Exponential Basic 2.4.0.1 Exponential Basic CMS — PHP Class Reference

eztstranslator.php
Go to the documentation of this file.
1 <?php
17 class eZTSTranslator extends eZTranslatorHandler
18 {
25 public function __construct( $locale, $filename = null, $useCache = true )
26 {
27 $this->UseCache = $useCache;
28 if ( isset( $GLOBALS['eZSiteBasics'] ) )
29 {
30 $siteBasics = $GLOBALS['eZSiteBasics'];
31 if ( isset( $siteBasics['no-cache-adviced'] ) && $siteBasics['no-cache-adviced'] )
32 $this->UseCache = false;
33 }
34 $this->BuildCache = false;
35 parent::__construct( true );
36
37 $this->Locale = $locale;
38 $this->File = $filename;
39 $this->Messages = array();
40 $this->CachedMessages = array();
41 $this->HasRestoredCache = false;
42 $this->RootCache = false;
43 }
44
54 static function initialize( $context, $locale, $filename, $useCache = true )
55 {
56 $instance = false;
57 $file = $locale . '/' . $filename;
58 if ( !empty( $GLOBALS['eZTSTranslationTables'][$file] ) )
59 {
60 $instance = $GLOBALS['eZTSTranslationTables'][$file];
61 if ( $instance->hasInitializedContext( $context ) )
62 {
63 return $instance;
64 }
65 }
66
67 eZDebug::createAccumulatorGroup( 'tstranslator', 'TS translator' );
68 eZDebug::accumulatorStart( 'tstranslator_init', 'tstranslator', 'TS init' );
69 if ( !$instance )
70 {
71 $instance = new eZTSTranslator( $locale, $filename, $useCache );
72 $GLOBALS['eZTSTranslationTables'][$file] = $instance;
73 $manager = eZTranslatorManager::instance();
74 $manager->registerHandler( $instance );
75 }
76 $instance->load( $context );
77 eZDebug::accumulatorStop( 'tstranslator_init' );
78 return $instance;
79 }
80
87 function hasInitializedContext( $context )
88 {
89 return isset( $this->CachedMessages[$context] );
90 }
91
98 function load( $requestedContext )
99 {
100 return $this->loadTranslationFile( $this->Locale, $this->File, $requestedContext );
101 }
102
116 function loadTranslationFile( $locale, $filename, $requestedContext )
117 {
118 // First try for current charset
119 $charset = eZTextCodec::internalCharset();
120 $tsTimeStamp = false;
121 $ini = eZINI::instance();
122 $checkMTime = $ini->variable( 'RegionalSettings', 'TranslationCheckMTime' ) === 'enabled';
123
124 if ( !$this->RootCache )
125 {
126 $roots = array( $ini->variable( 'RegionalSettings', 'TranslationRepository' ) );
127 $extensionBase = eZExtension::baseDirectory();
128 $translationExtensions = $ini->variable( 'RegionalSettings', 'TranslationExtensions' );
129 foreach ( $translationExtensions as $translationExtension )
130 {
131 $extensionPath = $extensionBase . '/' . $translationExtension . '/translations';
132 if ( !$checkMTime || file_exists( $extensionPath ) )
133 {
134 $roots[] = $extensionPath;
135 }
136 }
137 $this->RootCache = array( 'roots' => $roots );
138 }
139 else
140 {
141 $roots = $this->RootCache['roots'];
142 if ( isset( $this->RootCache['timestamp'] ) )
143 $tsTimeStamp = $this->RootCache['timestamp'];
144 }
145
146
147 // Load cached translations if possible
148 if ( $this->UseCache == true )
149 {
150 if ( !$tsTimeStamp )
151 {
152 $expiry = eZExpiryHandler::instance();
153 $globalTsTimeStamp = $expiry->getTimestamp( self::EXPIRY_KEY, 0 );
154 $localeTsTimeStamp = $expiry->getTimestamp( self::EXPIRY_KEY . '-' . $locale, 0 );
155 $tsTimeStamp = max( $globalTsTimeStamp, $localeTsTimeStamp );
156 if ( $checkMTime && $tsTimeStamp < time() )// no need if ts == time()
157 {
158 // iterate over each known TS file, and get the highest timestamp
159 // this value will be used to check for cache validity
160 foreach ( $roots as $root )
161 {
162 $path = eZDir::path( array( $root, $locale, $charset, $filename ) );
163 if ( file_exists( $path ) )
164 {
165 $timestamp = filemtime( $path );
166 if ( $timestamp > $tsTimeStamp )
167 $tsTimeStamp = $timestamp;
168 }
169 else
170 {
171 $path = eZDir::path( array( $root, $locale, $filename ) );
172 if ( file_exists( $path ) )
173 {
174 $timestamp = filemtime( $path );
175 if ( $timestamp > $tsTimeStamp )
176 $tsTimeStamp = $timestamp;
177 }
178 }
179 }
180 }
181 $this->RootCache['timestamp'] = $tsTimeStamp;
182 }
183
184 $key = 'cachecontexts';
185 if ( $this->HasRestoredCache or
186 eZTranslationCache::canRestoreCache( $key, $tsTimeStamp ) )
187 {
188 eZDebug::accumulatorStart( 'tstranslator_cache_load', 'tstranslator', 'TS cache load' );
189 if ( !$this->HasRestoredCache )
190 {
191 if ( !eZTranslationCache::restoreCache( $key ) )
192 {
193 $this->BuildCache = true;
194 }
195 $contexts = eZTranslationCache::contextCache( $key );
196 if ( !is_array( $contexts ) )
197 $contexts = array();
198 $this->HasRestoredCache = $contexts;
199 }
200 else
201 $contexts = $this->HasRestoredCache;
202 if ( !$this->BuildCache )
203 {
204 $contextName = $requestedContext;
205 if ( !isset( $this->CachedMessages[$contextName] ) )
206 {
207 eZDebug::accumulatorStart( 'tstranslator_context_load', 'tstranslator', 'TS context load' );
208 if ( eZTranslationCache::canRestoreCache( $contextName, $tsTimeStamp ) )
209 {
210 if ( !eZTranslationCache::restoreCache( $contextName ) )
211 {
212 $this->BuildCache = true;
213 }
214 $this->CachedMessages[$contextName] =
215 eZTranslationCache::contextCache( $contextName );
216
217 foreach ( $this->CachedMessages[$contextName] as $key => $msg )
218 {
219 $this->Messages[$key] = $msg;
220 }
221 }
222 eZDebug::accumulatorStop( 'tstranslator_context_load' );
223 }
224 }
225 eZDebugSetting::writeNotice( 'i18n-tstranslator', "Loading cached translation", __METHOD__ );
226 eZDebug::accumulatorStop( 'tstranslator_cache_load' );
227 if ( !$this->BuildCache )
228 {
229 return true;
230 }
231 }
232 eZDebugSetting::writeNotice( 'i18n-tstranslator',
233 "Translation cache has expired. Will rebuild it from source.",
234 __METHOD__ );
235 $this->BuildCache = true;
236 }
237
238 $status = false;
239
240 // first process country translation files
241 // then process country variation translation files
242 $localeParts = explode( '@', $locale );
243
244 $triedPaths = array();
245 $loadedPaths = array();
246
247 $ini = eZINI::instance( "i18n.ini" );
248 $fallbacks = $ini->variable( 'TranslationSettings', 'FallbackLanguages' );
249
250 foreach ( $localeParts as $localePart )
251 {
252 $localeCodeToProcess = isset( $localeCodeToProcess ) ? $localeCodeToProcess . '@' . $localePart: $localePart;
253
254 // array with alternative subdirs to check
255 $alternatives = array(
256 array( $localeCodeToProcess, $charset, $filename ),
257 array( $localeCodeToProcess, $filename ),
258 );
259
260 if ( isset( $fallbacks[$localeCodeToProcess] ) && $fallbacks[$localeCodeToProcess] )
261 {
262 if ( $fallbacks[$localeCodeToProcess] === 'eng-GB' ) // Consider eng-GB fallback as "untranslated" since eng-GB does not provide any ts file
263 {
264 $fallbacks[$localeCodeToProcess] = 'untranslated';
265 }
266 $alternatives[] = array( $fallbacks[$localeCodeToProcess], $charset, $filename );
267 $alternatives[] = array( $fallbacks[$localeCodeToProcess], $filename );
268 }
269
270 foreach ( $roots as $root )
271 {
272 if ( !file_exists( $root ) )
273 {
274 continue;
275 }
276
277 unset( $path );
278
279 foreach ( $alternatives as $alternative )
280 {
281 $pathParts = $alternative;
282 array_unshift( $pathParts, $root );
283 $pathToTry = eZDir::path( $pathParts );
284 $triedPaths[] = $pathToTry;
285
286 if ( file_exists( $pathToTry ) )
287 {
288 $path = $pathToTry;
289 break;
290 }
291 }
292
293 if ( !isset( $path ) )
294 {
295 continue;
296 }
297
298 eZDebug::accumulatorStart( 'tstranslator_load', 'tstranslator', 'TS load' );
299
300 $doc = new DOMDocument( '1.0', 'utf-8' );
301 $success = $doc->load( $path );
302
303 if ( !$success )
304 {
305 eZDebug::writeWarning( "Unable to load XML from file $path", __METHOD__ );
306 continue;
307 }
308
309 if ( !$this->validateDOMTree( $doc ) )
310 {
311 eZDebug::writeWarning( "XML text for file $path did not validate", __METHOD__ );
312 continue;
313 }
314
315 $loadedPaths[] = $path;
316
317 $status = true;
318
319 $treeRoot = $doc->documentElement;
320 $children = $treeRoot->childNodes;
321 for ($i = 0; $i < $children->length; $i++ )
322 {
323 $child = $children->item( $i );
324
325 if ( $child->nodeType == XML_ELEMENT_NODE )
326 {
327 if ( $child->tagName == "context" )
328 {
329 $this->handleContextNode( $child );
330 }
331 }
332 }
333 eZDebug::accumulatorStop( 'tstranslator_load' );
334 }
335 }
336
337 eZDebugSetting::writeDebug( 'i18n-tstranslator', implode( PHP_EOL, $triedPaths ), __METHOD__ . ': tried paths' );
338 eZDebugSetting::writeDebug( 'i18n-tstranslator', implode( PHP_EOL, $loadedPaths ), __METHOD__ . ': loaded paths' );
339
340 // Save translation cache
341 if ( $this->UseCache == true && $this->BuildCache == true )
342 {
343 eZDebug::accumulatorStart( 'tstranslator_store_cache', 'tstranslator', 'TS store cache' );
344 if ( eZTranslationCache::contextCache( 'cachecontexts' ) == null )
345 {
346 $contexts = array_keys( $this->CachedMessages );
347 eZTranslationCache::setContextCache( 'cachecontexts',
348 $contexts );
349 eZTranslationCache::storeCache( 'cachecontexts' );
350 $this->HasRestoredCache = $contexts;
351 }
352
353 foreach ( $this->CachedMessages as $contextName => $context )
354 {
355 if ( eZTranslationCache::contextCache( $contextName ) == null )
356 eZTranslationCache::setContextCache( $contextName, $context );
357 eZTranslationCache::storeCache( $contextName );
358 }
359
360 $this->BuildCache = false;
361 eZDebug::accumulatorStop( 'tstranslator_store_cache' );
362 }
363
364 return $status;
365 }
366
372 static function validateDOMTree( $tree )
373 {
374 if ( !is_object( $tree ) )
375 return false;
376
377 $isValid = $tree->RelaxNGValidate( 'schemas/translation/ts.rng' );
378
379 return $isValid;
380 }
381
387 function handleContextNode( $context )
388 {
389 $contextName = null;
390 $messages = array();
391 $context_children = $context->childNodes;
392
393 for( $i = 0; $i < $context_children->length; $i++ )
394 {
395 $context_child = $context_children->item( $i );
396 if ( $context_child->nodeType == XML_ELEMENT_NODE )
397 {
398 if ( $context_child->tagName == "name" )
399 {
400 $name_el = $context_child->firstChild;
401 if ( $name_el )
402 {
403 $contextName = $name_el->nodeValue;
404 }
405 }
406 break;
407 }
408 }
409 if ( !$contextName )
410 {
411 eZDebug::writeError( "No context name found, skipping context", __METHOD__ );
412 return false;
413 }
414 foreach( $context_children as $context_child )
415 {
416 if ( $context_child->nodeType == XML_ELEMENT_NODE )
417 {
418 $childName = $context_child->tagName;
419 if ( $childName == "message" )
420 {
421 $this->handleMessageNode( $contextName, $context_child );
422 }
423 else if ( $childName == "name" )
424 {
425 /* Skip name tags */
426 }
427 else
428 {
429 eZDebug::writeError( "Unknown element name: $childName", __METHOD__ );
430 }
431 }
432 }
433 if ( $contextName === null )
434 {
435 eZDebug::writeError( "No context name found, skipping context", __METHOD__ );
436 return false;
437 }
438 if ( !isset( $this->CachedMessages[$contextName] ) )
439 $this->CachedMessages[$contextName] = array();
440
441 return true;
442 }
443
449 function handleMessageNode( $contextName, $message )
450 {
451 $source = null;
452 $translation = null;
453 $comment = null;
454 $message_children = $message->childNodes;
455 for( $i = 0; $i < $message_children->length; $i++ )
456 {
457 $message_child = $message_children->item( $i );
458 if ( $message_child->nodeType == XML_ELEMENT_NODE )
459 {
460 $childName = $message_child->tagName;
461 if ( $childName == "source" )
462 {
463 if ( $message_child->childNodes->length > 0 )
464 {
465 $source = '';
466 foreach ( $message_child->childNodes as $textEl )
467 {
468 if ( $textEl instanceof DOMText )
469 {
470 $source .= $textEl->nodeValue;
471 }
472 else if ( $textEl instanceof DOMElement && $textEl->tagName == 'byte' )
473 {
474 $source .= chr( intval( '0' . $textEl->getAttribute( 'value' ) ) );
475 }
476 }
477 }
478 }
479 else if ( $childName == "translation" )
480 {
481 if ( $message_child->childNodes->length > 0 )
482 {
483 $translation = '';
484 foreach ( $message_child->childNodes as $textEl )
485 {
486 if ( $textEl instanceof DOMText )
487 {
488 $translation .= $textEl->nodeValue;
489 }
490 else if ( $textEl instanceof DOMElement && $textEl->tagName == 'byte' )
491 {
492 $translation .= chr( intval( '0' . $textEl->getAttribute( 'value' ) ) );
493 }
494 }
495 }
496 }
497 else if ( $childName == "comment" )
498 {
499 $comment_el = $message_child->firstChild;
500 $comment = $comment_el->nodeValue;
501 }
502 else if ( $childName == "translatorcomment" )
503 {
504 //Ignore it.
505 }
506 else if ( $childName == "location" )
507 {
508 //Handle location element. No functionality yet.
509 }
510 else
511 eZDebug::writeError( "Unknown element name: " . $childName, __METHOD__ );
512 }
513 }
514 if ( $source === null )
515 {
516 eZDebug::writeError( "No source name found, skipping message in context '{$contextName}'", __METHOD__ );
517 return false;
518 }
519 if ( $translation === null ) // No translation provided, then take the source as a reference
520 {
521 // eZDebug::writeError( "No translation, skipping message", __METHOD__ );
522 $translation = $source;
523 }
524 /* we need to convert ourselves if we're using libxml stuff here */
525 if ( $message instanceof DOMElement )
526 {
527 $codec = eZTextCodec::instance( "utf8" );
528 $source = $codec->convertString( $source );
529 $translation = $codec->convertString( $translation );
530 $comment = $codec->convertString( $comment );
531 }
532
533 $this->insert( $contextName, $source, $translation, $comment );
534 return true;
535 }
536
542 function findKey( $key )
543 {
544 $msg = null;
545 if ( isset( $this->Messages[$key] ) )
546 {
547 $msg = $this->Messages[$key];
548 }
549 return $msg;
550 }
551
559 function findMessage( $context, $source, $comment = null )
560 {
561 // First try with comment,
562 $man = eZTranslatorManager::instance();
563 $key = $man->createKey( $context, $source, $comment );
564
565 if ( !isset( $this->Messages[$key] ) )
566 {
567 // then try without comment for general translation
568 $key = $man->createKey( $context, $source );
569 }
570
571 return $this->findKey( $key );
572 }
573
579 function keyTranslate( $key )
580 {
581 $msg = $this->findKey( $key );
582 if ( $msg !== null )
583 return $msg["translation"];
584 else
585 {
586 return null;
587 }
588 }
589
597 function translate( $context, $source, $comment = null )
598 {
599 $msg = $this->findMessage( $context, $source, $comment );
600 if ( $msg !== null )
601 {
602 return $msg["translation"];
603 }
604
605 return null;
606 }
607
621 function insert( $context, $source, $translation, $comment = null )
622 {
623 if ( $context == "" )
624 $context = "default";
625 $man = eZTranslatorManager::instance();
626 $key = $man->createKey( $context, $source, $comment );
627 $msg = $man->createMessage( $context, $source, $comment, $translation );
628 $msg["key"] = $key;
629 $this->Messages[$key] = $msg;
630
631 // Set array of messages to be cached
632 if ( $this->UseCache == true && $this->BuildCache == true )
633 {
634 if ( !isset( $this->CachedMessages[$context] ) )
635 $this->CachedMessages[$context] = array();
636 $this->CachedMessages[$context][$key] = $msg;
637 }
638 return $key;
639 }
640
652 function remove( $context, $source, $message = null )
653 {
654 if ( $context == "" )
655 $context = "default";
656 $man = eZTranslatorManager::instance();
657 $key = $man->createKey( $context, $source, $message );
658 if ( isset( $this->Messages[$key] ) )
659 unset( $this->Messages[$key] );
660 }
661
669 function removeKey( $key )
670 {
671 if ( isset( $this->Messages[$key] ) )
672 unset( $this->Messages[$key] );
673 }
674
682 static function fetchList( $localeList = array() )
683 {
684 $ini = eZINI::instance();
685
686 $dir = $ini->variable( 'RegionalSettings', 'TranslationRepository' );
687
688 $fileInfoList = array();
689 $translationList = array();
690 $locale = '';
691
692 if ( count( $localeList ) == 0 )
693 {
694 $localeList = eZDir::findSubdirs( $dir );
695 }
696
697 foreach( $localeList as $locale )
698 {
699 if ( $locale != 'untranslated' )
700 {
701 $translationFiles = eZDir::findSubitems( $dir . '/' . $locale, 'f' );
702
703 foreach( $translationFiles as $translationFile )
704 {
705 if ( eZFile::suffix( $translationFile ) == 'ts' )
706 {
707 $translationList[] = new eZTSTranslator( $locale, $translationFile );
708 }
709 }
710 }
711 }
712
713 return $translationList;
714 }
715
720 static function resetGlobals()
721 {
722 unset( $GLOBALS['eZTSTranslationTables'] );
723 unset( $GLOBALS['eZTranslationCacheTable'] );
724 }
725
734 public static function expireCache( $timestamp = false, $locale = null )
735 {
736 if ( $timestamp === false )
737 $timestamp = time();
738
739 $handler = eZExpiryHandler::instance();
740 if ( $locale )
741 $handler->setTimestamp( self::EXPIRY_KEY . '-' . $locale, $timestamp );
742 else
743 $handler->setTimestamp( self::EXPIRY_KEY, $timestamp );
744 $handler->store();
745 self::resetGlobals();
746 }
747
752 public $Messages;
753 public $File;
754 public $UseCache;
755 public $BuildCache;
756 public $CachedMessages;
757 public $Locale;
758 public $HasRestoredCache;
759 public $RootCache;
760
764 const EXPIRY_KEY = 'ts-translation-cache';
765 }
766
767 ?>
$locale
$locale
Definition: admin/adlist.php:127
$i
$i
Definition: admin/adlist.php:91
$message
$message
Definition: admin/message.php:51
$status
$status
Definition: bugedit.php:473
eZDebugSetting\writeDebug
static writeDebug( $conditionName, $string, $label="")
Definition: ezdebugsetting.php:128
eZDebugSetting\writeNotice
static writeNotice( $conditionName, $string, $label="")
Definition: ezdebugsetting.php:86
eZDebug\writeError
static writeError( $string, $label="", $backgroundClass="")
Definition: ezdebug.php:546
eZDebug\createAccumulatorGroup
static createAccumulatorGroup( $key, $name=false)
Definition: ezdebug.php:1315
eZDebug\writeWarning
static writeWarning( $string, $label="", $backgroundClass="")
Definition: ezdebug.php:503
eZDebug\accumulatorStart
static accumulatorStart( $key, $inGroup=false, $name=false, $recursive=false)
Definition: ezdebug.php:1362
eZDebug\accumulatorStop
static accumulatorStop( $key, $recursive=false)
Definition: ezdebug.php:1390
eZDir\findSubitems
static findSubitems( $dir, $types=false, $fullPath=false, $includeHidden=false, $excludeItems=false)
Definition: ezdir.php:529
eZDir\findSubdirs
static findSubdirs( $dir, $includeHidden=false, $excludeItems=false)
Definition: ezdir.php:520
eZDir\path
static path( $names, $includeEndSeparator=false, $type=self::SEPARATOR_UNIX)
Definition: ezdir.php:238
eZExtension\baseDirectory
static baseDirectory(eZINI|null $siteINI=null)
Definition: ezextension.php:40
eZFile\suffix
static suffix( $filename)
Definition: ezfile.php:103
eZTSTranslator
Definition: eztstranslator.php:18
eZTSTranslator\handleMessageNode
handleMessageNode( $contextName, $message)
Definition: eztstranslator.php:449
eZTSTranslator\resetGlobals
static resetGlobals()
Definition: eztstranslator.php:720
eZTSTranslator\removeKey
removeKey( $key)
Definition: eztstranslator.php:669
eZTSTranslator\$Messages
$Messages
Definition: eztstranslator.php:752
eZTSTranslator\__construct
__construct( $locale, $filename=null, $useCache=true)
Definition: eztstranslator.php:25
eZTSTranslator\validateDOMTree
static validateDOMTree( $tree)
Definition: eztstranslator.php:372
eZTSTranslator\$Locale
$Locale
Definition: eztstranslator.php:757
eZTSTranslator\initialize
static initialize( $context, $locale, $filename, $useCache=true)
Definition: eztstranslator.php:54
eZTSTranslator\loadTranslationFile
loadTranslationFile( $locale, $filename, $requestedContext)
Definition: eztstranslator.php:116
eZTSTranslator\EXPIRY_KEY
const EXPIRY_KEY
Definition: eztstranslator.php:764
eZTSTranslator\$HasRestoredCache
$HasRestoredCache
Definition: eztstranslator.php:758
eZTSTranslator\findKey
findKey( $key)
Definition: eztstranslator.php:542
eZTSTranslator\$CachedMessages
$CachedMessages
Definition: eztstranslator.php:756
eZTSTranslator\handleContextNode
handleContextNode( $context)
Definition: eztstranslator.php:387
eZTSTranslator\expireCache
static expireCache( $timestamp=false, $locale=null)
Definition: eztstranslator.php:734
eZTSTranslator\insert
insert( $context, $source, $translation, $comment=null)
Definition: eztstranslator.php:621
eZTSTranslator\load
load( $requestedContext)
Definition: eztstranslator.php:98
eZTSTranslator\findMessage
findMessage( $context, $source, $comment=null)
Definition: eztstranslator.php:559
eZTSTranslator\$RootCache
$RootCache
Definition: eztstranslator.php:759
eZTSTranslator\hasInitializedContext
hasInitializedContext( $context)
Definition: eztstranslator.php:87
eZTSTranslator\fetchList
static fetchList( $localeList=array())
Definition: eztstranslator.php:682
eZTSTranslator\$File
$File
Definition: eztstranslator.php:753
eZTSTranslator\$UseCache
$UseCache
Definition: eztstranslator.php:754
eZTSTranslator\translate
translate( $context, $source, $comment=null)
Definition: eztstranslator.php:597
eZTSTranslator\$BuildCache
$BuildCache
Definition: eztstranslator.php:755
eZTSTranslator\keyTranslate
keyTranslate( $key)
Definition: eztstranslator.php:579
eZTextCodec\internalCharset
static internalCharset()
Definition: ezi18n/classes/eztextcodec.php:547
eZTextCodec\instance
static instance( $inputCharsetCode, $outputCharsetCode=false, $alwaysReturn=true)
Definition: ezi18n/classes/eztextcodec.php:447
eZTranslationCache\contextCache
static contextCache( $contextName)
Definition: eztranslationcache.php:40
eZTranslationCache\storeCache
static storeCache( $key)
Definition: eztranslationcache.php:174
eZTranslationCache\setContextCache
static setContextCache( $contextName, $context)
Definition: eztranslationcache.php:55
eZTranslationCache\canRestoreCache
static canRestoreCache( $key, $timestamp)
Definition: eztranslationcache.php:125
eZTranslationCache\restoreCache
static restoreCache( $key)
Definition: eztranslationcache.php:146
eZTranslatorHandler
Base class for translation handling.
Definition: eztranslatorhandler.php:20
eZTranslatorManager\instance
static instance()
Definition: eztranslatormanager.php:128
$ini
$ini
Definition: classes/admin/linklist.php:64
file_exists
static file_exists( $inifilename)
Definition: eZPBINIFile.php:195
$msg
$msg
Definition: editmessage.php:47
$doc
$doc
Definition: export.php:93
$tree
$tree
Definition: ezad/admin/categoryedit.php:172
$file
$file
Definition: ezfilemanager/user/filedownload.php:35
$dir
$dir
Definition: ezsitemanager/admin/filelist.php:87
$timestamp
$timestamp
Definition: ezstats/admin/cron.php:35
$messages
$messages
Definition: homepage.php:328
$instance
$instance
Definition: orderedit.php:667
$translation
$translation
Definition: ordersendt.php:62
Copyright © 1998 – 2026 7x. All rights reserved. Licensed under the GNU GPLv2+.