diff options
Diffstat (limited to 'sysui/desktop/macosx/gen_strings.pl')
-rw-r--r-- | sysui/desktop/macosx/gen_strings.pl | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/sysui/desktop/macosx/gen_strings.pl b/sysui/desktop/macosx/gen_strings.pl new file mode 100644 index 000000000000..648becaec924 --- /dev/null +++ b/sysui/desktop/macosx/gen_strings.pl @@ -0,0 +1,116 @@ +: +eval 'exec perl -wS $0 ${1+"$@"}' + if 0; + +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +#************************************************************************* + +use warnings; +use strict 'vars'; + +my $my_lang = 'en-US'; +my $plist = 'Info.plist'; +my $lines = 0; + +while ($_ = $ARGV[0], /^-/) { + shift; + last if /^--$/; + if (/^-l/) { + $my_lang = $ARGV[0]; + shift; + } elsif (/^-p/) { + $plist = $ARGV[0]; + shift; + } +} + +# open input file (Info.plist) +unless (open(SOURCE, $plist)) { + print STDERR "Can't open $plist file: $!\n"; + return; +} + +# XML::Parser not installed by default on MacOS X +my (%documents,$key,$icon,$name); + +$name = ""; + +while (<SOURCE>) { + if ( /<\/dict>/ ) { + $documents{$icon} = $name if length $name > 0; + $key = $icon = $name = ""; + } elsif ( /<key>(.*)<\/key>/ ) { + $key = $1; + } elsif ( /<string>(.*)<\/string>/ ) { + if ( $key eq 'CFBundleTypeIconFile' ) { + $icon = $1; + $icon =~ s/\.icns$//; + } elsif ( $key eq 'CFBundleTypeName' ) { + $name = $1; + } + } +} + +close (SOURCE); + +print_lang($my_lang); +print_lang('en-US') unless $lines > 0; + +sub print_lang +{ + my ($this_lang) = @_; + + # open input file (documents.ulf) + unless (open(SOURCE, $ARGV[0])) { + print STDERR "Can't open $ARGV[0] file: $!\n"; + return; + } + + my $last_section; + + while (<SOURCE>) { + + if ( /\[(.*)\]/ ) { + $last_section = $1; + } else { + # split locale = "value" into 2 strings + my ($lang, $value) = split ' = '; + + if ( $lang ne $_ && $lang eq $this_lang && exists $documents{$last_section} ) { + # replacing product variable doesn't work inside zip files and also not for UTF-16 + next if /%PRODUCTNAME/; +# s/%PRODUCTNAME/\${FILEFORMATNAME} \${FILEFORMATVERSION}/g; + s/$lang/"$documents{$last_section}"/; + s/\n/;\n/; + print; + $lines += 1; + } + } + } + + close (SOURCE); +} |