/var/www/hkosl.com/demo_google/application/vendor/gettext/gettext/src/Extractors/Xliff.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php

namespace Gettext\Extractors;

use 
Gettext\Translations;
use 
Gettext\Translation;
use 
SimpleXMLElement;

/**
 * Class to get gettext strings from xliff format.
 */
class Xliff extends Extractor implements ExtractorInterface
{
    
/**
     * {@inheritdoc}
     */
    
public static function fromString($stringTranslations $translations, array $options = [])
    {
        
$xml = new SimpleXMLElement($stringnullfalse);

        foreach (
$xml->file as $file) {
            if (isset(
$file->notes)) {
                foreach (
$file->notes->note as $note) {
                    
$translations->setHeader($note['id'], (string) $note);
                }
            }

            foreach (
$file->unit as $unit) {
                foreach (
$unit->segment as $segment) {
                    
$targets = [];

                    foreach (
$segment->target as $target) {
                        
$targets[] = (string) $target;
                    }

                    
$translation = new Translation(null, (string) $segment->source);
                    
$translation->setTranslation(array_shift($targets));
                    
$translation->setPluralTranslations($targets);

                    if (isset(
$unit->notes)) {
                        foreach (
$unit->notes->note as $note) {
                            switch (
$note['category']) {
                                case 
'context':
                                    
$translation $translation->getClone((string) $note);
                                    break;

                                case 
'extracted-comment':
                                    
$translation->addExtractedComment((string) $note);
                                    break;

                                case 
'flag':
                                    
$translation->addFlag((string) $note);
                                    break;

                                case 
'reference':
                                    
$ref explode(':', (string) $note2);
                                    
$translation->addReference($ref[0], isset($ref[1]) ? $ref[1] : null);
                                    break;

                                default:
                                    
$translation->addComment((string) $note);
                                    break;
                            }
                        }
                    }

                    
$translations[] = $translation;
                }
            }
        }
    }
}