File: fix-zanata-map

package info (click to toggle)
publican 4.3.2-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,436 kB
  • sloc: javascript: 17,390; perl: 13,081; xml: 11,558; makefile: 160; sh: 60; python: 29
file content (96 lines) | stat: -rwxr-xr-x 2,453 bytes parent folder | download | duplicates (5)
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!/usr/bin/perl -CDAS

use strict;
use warnings;
use XML::TreeBuilder;

my $file = 'zanata.xml';

my %mapping = (
    'ar'         => 'ar-SA',
    'as'         => 'as-IN',
    'ast'        => 'ast-ES',
    'bg'         => 'bg-BG',
    'bn-IN'      => 'bn-IN',
    'bs'         => 'bs-BA',
    'ca'         => 'ca-ES',
    'cs'         => 'cs-CZ',
    'da'         => 'da-DK',
    'de-CH'      => 'de-CH',
    'de-DE'      => 'de-DE',
    'el'         => 'el-GR',
    'en-US'      => 'en-US',
    'es-ES'      => 'es-ES',
    'fa'         => 'fa-IR',
    'fi'         => 'fi-FI',
    'fr'         => 'fr-FR',
    'gu'         => 'gu-IN',
    'he'         => 'he-IL',
    'hi'         => 'hi-IN',
    'hr'         => 'hr-HR',
    'hu'         => 'hu-HU',
    'id'         => 'id-ID',
    'is'         => 'is-IS',
    'it'         => 'it-IT',
    'ja'         => 'ja-JP',
    'kn'         => 'kn-IN',
    'ko'         => 'ko-KR',
    'lv'         => 'lv-LV',
    'ml'         => 'ml-IN',
    'mr'         => 'mr-IN',
    'ms'         => 'ms-MY',
    'nb'         => 'nb-NO',
    'nl'         => 'nl-NL',
    'or'         => 'or-IN',
    'pa'         => 'pa-IN',
    'pl'         => 'pl-PL',
    'pt-BR'      => 'pt-BR',
    'pt-PT'      => 'pt-PT',
    'ru'         => 'ru-RU',
    'si'         => 'si-LK',
    'sk'         => 'sk-SK',
    'sr-Latn'    => 'sr-Latn-RS',
    'sr-Cyrl'    => 'sr-RS',
    'sv'         => 'sv-SE',
    'ta-IN'      => 'ta-IN',
    'te'         => 'te-IN',
    'th'         => 'th-TH',
    'tr'         => 'tr-TR',
    'uk'         => 'uk-UA',
    'zh-Hans-CN' => 'zh-CN',
    'zh-Hant-TW' => 'zh-TW',
);

my $xml_doc = XML::TreeBuilder->new( { 'NoExpand' => "1", 'ErrorContext' => "2" } );
$xml_doc->store_comments(1);
$xml_doc->store_declarations(1);

$xml_doc->parse_file($file)
    || croak( maketext( "Can't open file '[_1]' [_2]", $file, $@ ) );

fix_mapping($xml_doc);

my $OUTDOC;
open( $OUTDOC, ">:encoding(UTF-8)", "$file" )
    || croak( maketext( "Could not open [_1] for output!", $file ) );

print( $OUTDOC $xml_doc->as_XML() );
close($OUTDOC);

exit;

#### code ###

sub fix_mapping {
    my $xml_doc = shift;

    $xml_doc->pos( $xml_doc->root() );

    foreach my $node ( $xml_doc->look_down( "_tag", "locale" ) ) {
        my $locale = $node->as_text();
        if ( defined( $mapping{$locale} ) && $mapping{$locale} ne $locale ) {
            $node->attr( 'map-from', $mapping{$locale} );
        }
    }
}