1cdf0e10cSrcweir:
2cdf0e10cSrcweireval 'exec perl -wS $0 ${1+"$@"}'
3cdf0e10cSrcweir    if 0;
4cdf0e10cSrcweir
5*7e90fac2SAndrew Rist#**************************************************************
6*7e90fac2SAndrew Rist#
7*7e90fac2SAndrew Rist#  Licensed to the Apache Software Foundation (ASF) under one
8*7e90fac2SAndrew Rist#  or more contributor license agreements.  See the NOTICE file
9*7e90fac2SAndrew Rist#  distributed with this work for additional information
10*7e90fac2SAndrew Rist#  regarding copyright ownership.  The ASF licenses this file
11*7e90fac2SAndrew Rist#  to you under the Apache License, Version 2.0 (the
12*7e90fac2SAndrew Rist#  "License"); you may not use this file except in compliance
13*7e90fac2SAndrew Rist#  with the License.  You may obtain a copy of the License at
14*7e90fac2SAndrew Rist#
15*7e90fac2SAndrew Rist#    http://www.apache.org/licenses/LICENSE-2.0
16*7e90fac2SAndrew Rist#
17*7e90fac2SAndrew Rist#  Unless required by applicable law or agreed to in writing,
18*7e90fac2SAndrew Rist#  software distributed under the License is distributed on an
19*7e90fac2SAndrew Rist#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
20*7e90fac2SAndrew Rist#  KIND, either express or implied.  See the License for the
21*7e90fac2SAndrew Rist#  specific language governing permissions and limitations
22*7e90fac2SAndrew Rist#  under the License.
23*7e90fac2SAndrew Rist#
24*7e90fac2SAndrew Rist#**************************************************************
25*7e90fac2SAndrew Rist
26*7e90fac2SAndrew Rist
27cdf0e10cSrcweir
28cdf0e10cSrcweiruse warnings;
29cdf0e10cSrcweiruse strict 'vars';
30cdf0e10cSrcweir
31cdf0e10cSrcweirmy $my_lang = 'en-US';
32cdf0e10cSrcweirmy $plist = 'Info.plist';
33cdf0e10cSrcweirmy $lines = 0;
34cdf0e10cSrcweir
35cdf0e10cSrcweirwhile ($_ = $ARGV[0], /^-/) {
36cdf0e10cSrcweir  shift;
37cdf0e10cSrcweir  last if /^--$/;
38cdf0e10cSrcweir  if (/^-l/) {
39cdf0e10cSrcweir    $my_lang = $ARGV[0];
40cdf0e10cSrcweir    shift;
41cdf0e10cSrcweir  } elsif (/^-p/) {
42cdf0e10cSrcweir    $plist = $ARGV[0];
43cdf0e10cSrcweir    shift;
44cdf0e10cSrcweir  }
45cdf0e10cSrcweir}
46cdf0e10cSrcweir
47cdf0e10cSrcweir# open input file (Info.plist)
48cdf0e10cSrcweirunless (open(SOURCE, $plist)) {
49cdf0e10cSrcweir  print STDERR "Can't open $plist file: $!\n";
50cdf0e10cSrcweir  return;
51cdf0e10cSrcweir}
52cdf0e10cSrcweir
53cdf0e10cSrcweir# XML::Parser not installed by default on MacOS X
54cdf0e10cSrcweirmy (%documents,$key,$icon,$name);
55cdf0e10cSrcweir
56cdf0e10cSrcweir$name = "";
57cdf0e10cSrcweir
58cdf0e10cSrcweirwhile (<SOURCE>) {
59cdf0e10cSrcweir  if ( /<\/dict>/ ) {
60cdf0e10cSrcweir    $documents{$icon} = $name if length $name > 0;
61cdf0e10cSrcweir    $key = $icon = $name = "";
62cdf0e10cSrcweir  } elsif ( /<key>(.*)<\/key>/ ) {
63cdf0e10cSrcweir    $key = $1;
64cdf0e10cSrcweir  } elsif ( /<string>(.*)<\/string>/ ) {
65cdf0e10cSrcweir    if ( $key eq 'CFBundleTypeIconFile' ) {
66cdf0e10cSrcweir      $icon = $1;
67cdf0e10cSrcweir      $icon =~ s/\.icns$//;
68cdf0e10cSrcweir    } elsif ( $key eq 'CFBundleTypeName' ) {
69cdf0e10cSrcweir      $name = $1;
70cdf0e10cSrcweir    }
71cdf0e10cSrcweir  }
72cdf0e10cSrcweir}
73cdf0e10cSrcweir
74cdf0e10cSrcweirclose (SOURCE);
75cdf0e10cSrcweir
76cdf0e10cSrcweirprint_lang($my_lang);
77cdf0e10cSrcweirprint_lang('en-US') unless $lines > 0;
78cdf0e10cSrcweir
79cdf0e10cSrcweirsub print_lang
80cdf0e10cSrcweir{
81cdf0e10cSrcweir  my ($this_lang) = @_;
82cdf0e10cSrcweir
83cdf0e10cSrcweir  # open input file (documents.ulf)
84cdf0e10cSrcweir  unless (open(SOURCE, $ARGV[0])) {
85cdf0e10cSrcweir    print STDERR "Can't open $ARGV[0] file: $!\n";
86cdf0e10cSrcweir    return;
87cdf0e10cSrcweir  }
88cdf0e10cSrcweir
89cdf0e10cSrcweir  my $last_section;
90cdf0e10cSrcweir
91cdf0e10cSrcweir  while (<SOURCE>) {
92cdf0e10cSrcweir
93cdf0e10cSrcweir    if ( /\[(.*)\]/ ) {
94cdf0e10cSrcweir      $last_section = $1;
95cdf0e10cSrcweir    } else {
96cdf0e10cSrcweir      # split locale = "value" into 2 strings
97cdf0e10cSrcweir      my ($lang, $value) = split ' = ';
98cdf0e10cSrcweir
99cdf0e10cSrcweir      if ( $lang ne $_ && $lang eq $this_lang && exists $documents{$last_section} ) {
100cdf0e10cSrcweir        # replacing product variable doesn't work inside zip files and also not for UTF-16
101cdf0e10cSrcweir        next if /%PRODUCTNAME/;
102cdf0e10cSrcweir        s/$lang/"$documents{$last_section}"/;
103cdf0e10cSrcweir        s/\n/;\n/;
104cdf0e10cSrcweir        print;
105cdf0e10cSrcweir        $lines += 1;
106cdf0e10cSrcweir      }
107cdf0e10cSrcweir    }
108cdf0e10cSrcweir  }
109cdf0e10cSrcweir
110cdf0e10cSrcweir  close (SOURCE);
111cdf0e10cSrcweir}
112