+++ /dev/null
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-Copyright (C) 2008 Alina Friedrichsen <x-alina@gmx.net>
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-
-THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
--->
-
-<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns:h="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml" exclude-result-prefixes="i18n h">
-<xsl:output method="text" encoding="utf-8" media-type="text/x-lua" indent="no"/>
-
-<xsl:template match="/i18n:msgs">
- <xsl:apply-templates select="i18n:msg" />
-</xsl:template>
-
-<xsl:template match="i18n:msg">
- <xsl:if test="@xml:id != '' and translate(@xml:id, '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz', '') = ''">
- <xsl:if test="translate(substring(@xml:id, 0, 2), 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz', '') = ''">
- <xsl:if test="@xml:id != 'and' and @xml:id != 'break' and @xml:id != 'do' and @xml:id != 'else' and @xml:id != 'elseif' and @xml:id != 'end' and @xml:id != 'false' and @xml:id != 'for' and @xml:id != 'function' and @xml:id != 'if' and @xml:id != 'in' and @xml:id != 'local' and @xml:id != 'nil' and @xml:id != 'not' and @xml:id != 'or' and @xml:id != 'repeat' and @xml:id != 'return' and @xml:id != 'then' and @xml:id != 'true' and @xml:id != 'until' and @xml:id != 'while'">
- <xsl:value-of select="@xml:id"/>
- <xsl:text> = '</xsl:text>
- <xsl:choose>
- <xsl:when test="@method = 'text'">
- <xsl:call-template name="escape-lua">
- <xsl:with-param name="string" select="."/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="node()" mode="xhtml"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>' </xsl:text>
- </xsl:if>
- </xsl:if>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="h:*" priority="-1" mode="xhtml">
- <xsl:text><</xsl:text>
- <xsl:value-of select="local-name(.)"/>
- <xsl:apply-templates select="@*" mode="xhtml"/>
- <xsl:text>></xsl:text>
- <xsl:apply-templates mode="xhtml"/>
- <xsl:text></</xsl:text>
- <xsl:value-of select="local-name(.)"/>
- <xsl:text>></xsl:text>
-</xsl:template>
-
-<xsl:template match="*" priority="-2" mode="xhtml">
- <xsl:text><span class="</xsl:text>
- <xsl:value-of select="local-name(.)"/>
- <xsl:text>"</xsl:text>
- <xsl:apply-templates select="@*" mode="xhtml"/>
- <xsl:text>></xsl:text>
- <xsl:apply-templates mode="xhtml"/>
- <xsl:text></span></xsl:text>
-</xsl:template>
-
-<xsl:template match="h:br" mode="xhtml">
- <xsl:text><br</xsl:text>
- <xsl:apply-templates select="@*" mode="xhtml"/>
- <xsl:text> /></xsl:text>
-</xsl:template>
-
-<xsl:template match="h:img" mode="xhtml">
- <xsl:text><img</xsl:text>
- <xsl:apply-templates select="@*" mode="xhtml"/>
- <xsl:text> /></xsl:text>
-</xsl:template>
-
-<xsl:template match="@*" priority="-1" mode="xhtml">
- <xsl:if test="namespace-uri(.) = '' and local-name(.) != 'lang' or namespace-uri(.) = 'http://www.w3.org/XML/1998/namespace'">
- <xsl:if test="namespace-uri(..) = 'http://www.w3.org/1999/xhtml' or local-name(.) != 'class'">
- <xsl:text> </xsl:text>
- <xsl:if test="namespace-uri(.) = 'http://www.w3.org/XML/1998/namespace'">
- <xsl:text>xml:</xsl:text>
- </xsl:if>
- <xsl:value-of select="local-name(.)"/>
- <xsl:text>="</xsl:text>
- <xsl:variable name="escaped">
- <xsl:call-template name="escape-lua-xhtml1">
- <xsl:with-param name="string" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="$escaped"/>
- <xsl:text>"</xsl:text>
- </xsl:if>
- </xsl:if>
-</xsl:template>
-
-<xsl:template match="@xml:lang" mode="xhtml">
- <xsl:variable name="escaped">
- <xsl:call-template name="escape-lua-xhtml1">
- <xsl:with-param name="string" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:text> xml:lang="</xsl:text>
- <xsl:value-of select="$escaped"/>
- <xsl:text>"</xsl:text>
- <xsl:text> lang="</xsl:text>
- <xsl:value-of select="$escaped"/>
- <xsl:text>"</xsl:text>
-</xsl:template>
-
-<xsl:template match="text()" priority="-1" mode="xhtml">
- <xsl:variable name="escaped">
- <xsl:call-template name="escape-lua-xhtml1">
- <xsl:with-param name="string" select="."/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:value-of select="$escaped"/>
-</xsl:template>
-
-<xsl:template name="escape-xhtml1">
- <xsl:param name="string"/>
- <xsl:variable name="escaped">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$string"/>
- <xsl:with-param name="search" select="'&'"/>
- <xsl:with-param name="replace" select="'&amp;'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="escaped1">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped"/>
- <xsl:with-param name="search" select="'"'"/>
- <xsl:with-param name="replace" select="'&quot;'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="escaped2">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped1"/>
- <xsl:with-param name="search" select='"'"'/>
- <xsl:with-param name="replace" select="'&#39;'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="escaped3">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped2"/>
- <xsl:with-param name="search" select="'<'"/>
- <xsl:with-param name="replace" select="'&lt;'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped3"/>
- <xsl:with-param name="search" select="'>'"/>
- <xsl:with-param name="replace" select="'&gt;'"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="escape-lua">
- <xsl:param name="string"/>
- <xsl:variable name="escaped">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$string"/>
- <xsl:with-param name="search" select="'\'"/>
- <xsl:with-param name="replace" select="'\\'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="escaped1">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped"/>
- <xsl:with-param name="search" select="' '"/>
- <xsl:with-param name="replace" select="'\n'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="escaped2">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped1"/>
- <xsl:with-param name="search" select="' '"/>
- <xsl:with-param name="replace" select="'\r'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="escaped3">
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped2"/>
- <xsl:with-param name="search" select="'"'"/>
- <xsl:with-param name="replace" select="'\"'"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="$escaped3"/>
- <xsl:with-param name="search" select='"'"'/>
- <xsl:with-param name="replace" select='"\'"'/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="escape-lua-xhtml1">
- <xsl:param name="string"/>
- <xsl:variable name="escaped">
- <xsl:call-template name="escape-xhtml1">
- <xsl:with-param name="string" select="$string"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:call-template name="escape-lua">
- <xsl:with-param name="string" select="$escaped"/>
- </xsl:call-template>
-</xsl:template>
-
-<xsl:template name="replace">
- <xsl:param name="string"/>
- <xsl:param name="search"/>
- <xsl:param name="replace"/>
- <xsl:choose>
- <xsl:when test="contains($string, $search)">
- <xsl:value-of select="substring-before($string, $search)"/>
- <xsl:value-of select="$replace"/>
- <xsl:call-template name="replace">
- <xsl:with-param name="string" select="substring-after($string, $search)"/>
- <xsl:with-param name="search" select="$search"/>
- <xsl:with-param name="replace" select="$replace"/>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$string"/>
- </xsl:otherwise>
- </xsl:choose>
-</xsl:template>
-
-</xsl:transform>
+++ /dev/null
-#!/usr/bin/perl
-
-@ARGV >= 2 || die "Usage: $0 <source-dir> <dest-dir> [<target-language>]\n";
-
-my $source_dir = shift @ARGV;
-my $target_dir = shift @ARGV;
-my $target_lang = shift @ARGV;
-my $master_lang = "en";
-
-
-if( ! -d "$target_dir/" . ( $target_lang || 'templates' ) )
-{
- system('mkdir', '-p', "$target_dir/" . ( $target_lang || 'templates' ));
-}
-
-
-my %target_strings;
-
-if( $target_lang && open F, "find $source_dir -path '*/luasrc/i18n/*' -name '*.$target_lang.lua' |" )
-{
- while( chomp( my $file = readline F ) )
- {
- if( open L, "< $file" )
- {
- my ( $basename ) = $file =~ m{.+/([^/]+)\.[\w\-]+\.lua$};
- $target_strings{$basename} = { };
-
- while( chomp( my $entry = readline L ) )
- {
- my ( $k, $v );
- if( $entry =~ /^\s*(\w+)\s*=\s*\[\[(.+)\]\]/ )
- {
- ( $k, $v ) = ( $1, $2 );
- }
- elsif( $entry =~ /^\s*(\w+)\s*=\s*'(.+)'/ )
- {
- ( $k, $v ) = ( $1, $2 );
- }
- elsif( $entry =~ /^\s*(\w+)\s*=\s*"(.+)"/ )
- {
- ( $k, $v ) = ( $1, $2 );
- }
-
- if( $k && $v )
- {
- $v =~ s/"/\\"/g;
- $v =~ s/\\\\"/\\"/g;
- $target_strings{$basename}{$k} = $v;
- }
- }
-
- close L;
- }
- }
-
- close F;
-}
-
-
-if( open F, "find . -path '*/luasrc/i18n/*' -name '*.$master_lang.lua' |" )
-{
- my $destfile = sprintf '%s/%s/%%s.%s',
- $target_dir,
- $target_lang || 'templates',
- $target_lang ? 'po' : 'pot'
- ;
-
- while( chomp( my $file = readline F ) )
- {
- if( open L, "< $file" )
- {
- my ( $basename ) = $file =~ m{.+/([^/]+)\.\w+\.lua$};
- my $filename = sprintf $destfile, $basename;
-
- if( open T, "> $filename" )
- {
- printf "Generating %-40s ", $filename;
-
- printf T "# %s.%s\n# generated from %s\n\nmsgid \"\"\n" .
- "msgstr \"Content-Type: text/plain; charset=UTF-8\"\n\n",
- $basename, $target_lang ? 'po' : 'pot', $file;
-
- while( chomp( my $entry = readline L ) )
- {
- my ( $k, $v );
- if( $entry =~ /^\s*(\w+)\s*=\s*\[\[(.+)\]\]/ )
- {
- ( $k, $v ) = ( $1, $2 );
- }
- elsif( $entry =~ /^\s*(\w+)\s*=\s*'(.+)'/ )
- {
- ( $k, $v ) = ( $1, $2 );
- }
- elsif( $entry =~ /^\s*(\w+)\s*=\s*"(.+)"/ )
- {
- ( $k, $v ) = ( $1, $2 );
- }
-
- if( $k && $v )
- {
- $v =~ s/"/\\"/g;
- $v =~ s/\\\\"/\\"/g;
- printf T "#: %s:%d\n#. %s\nmsgid \"%s\"\nmsgstr \"%s\"\n\n",
- $file, $., $v, $k,
- ( $target_strings{$basename} && $target_strings{$basename}{$k} )
- ? $target_strings{$basename}{$k} : "";
- }
- }
-
- close T;
-
- print "done\n";
- }
-
- close L;
- }
- }
-
- close F;
-}
+++ /dev/null
-#!/bin/sh
-# Copyright (C) 2008 Alina Friedrichsen <x-alina@gmx.net>
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-# notice, this list of conditions and the following disclaimer in the
-# documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-# SUCH DAMAGE.
-
-i18n_xml2lua() {
- echo '<?xml version="1.0" encoding="utf-8"?>'
- echo
- echo '<i18n:msgs xmlns:i18n="http://luci.freifunk-halle.net/2008/i18n#" xmlns="http://www.w3.org/1999/xhtml">'
- echo
- LANG=C sed -e 's/^\s*\([A-Za-z][0-9A-Za-z_]*\)\s*[=]\s*\[\[/<i18n:msg xml:id="\1">/' -e 's/\]\]\s*$/<\/i18n:msg>/' -e 's/^\s*\([A-Za-z][0-9A-Za-z_]*\)\s*[=]\s*["]\(.*\)["]\s*$/<i18n:msg xml:id="\1">\2<\/i18n:msg>/' -e 's/^\s*$//'
- echo
- echo '</i18n:msgs>'
- return 0
-}
-
-for file in "$@"; do
- i18n_xml2lua < "$file" > "$(dirname "$file")/$(basename "$file" .lua).xml" || exit 1
-done
+++ /dev/null
-#!/usr/bin/perl
-
-use strict;
-use File::Find;
-use Digest::MD5 qw(md5 md5_hex);
-
-my @search = @ARGV;
-if( !@search ) {
- @search = (
- glob("libs/*"),
- glob("applications/*"),
- glob("i18n/*"),
- glob("modules/*")
- );
-}
-
-
-sub depth {
- my $p = shift;
- my $d = 0;
- $d++ while( $p =~ m{/}g );
- return $d;
-};
-
-
-my @index;
-my $offset = 0;
-
-
-#
-# Build File Members
-#
-
-find( sub {
- # Skip non-files
- ( -f $_ ) || return;
-
- # Skip stuff not in /luasrc/
- ( $File::Find::name =~ m{/luasrc/} ) || return;
-
- # Skip .svn foo
- ( $File::Find::name !~ m{/\.svn\b} ) || return;
-
- # Exclude luci-statistics and lucittpd for now
- ( $File::Find::name !~ m{/luci-statistics/} && $File::Find::name !~ m{/lucittpd/} ) || return;
-
-
- my $file = $File::Find::name;
- $file =~ s{^.+/luasrc/}{luci/};
-
- my $command = ( $File::Find::name =~ m{\.lua\z} && $ENV{LUAC} )
- ? "$ENV{LUAC} -o - $_ |" : "< $_";
-
- if( open F, $command )
- {
- warn sprintf "Member at 0x%08X: %s\n", $offset, $file;
- push @index, [ ];
-
- my $size = 0;
- my $pad = 0;
-
- $index[-1][0] = $offset;
-
- while( read F, my $buffer, 4096 ) {
- $size += length $buffer;
- print $buffer;
- }
-
- if( $size % 4 ) {
- $pad = ( 4 - ( $size % 4 ) );
- }
-
- print "\0" x $pad;
-
- $index[-1][1] = $size;
- $index[-1][2] = md5($file);
- $index[-1][3] = 0x0000;
- $index[-1][4] = $file;
-
- $offset += $size + $pad;
-
- close F;
- }
-}, @search );
-
-
-#
-# Build File List Member
-#
-
-my $filelist = join("\0", map $_->[4], @index) . "\0";
-my $listsize = length $filelist;
-push @index, [ $offset, $listsize, "", 0xFFFF, undef ];
-
-warn sprintf "Filelist at 0x%08X, length 0x%08X\n", $offset, $listsize;
-
-print $filelist;
-$offset += $listsize;
-
-if( $listsize % 4 )
-{
- $offset += ( 4 - ($listsize % 4) );
- print "\0" x ( 4 - ($listsize % 4) );
-}
-
-
-my $count = 1;
-foreach my $file ( @index )
-{
- warn sprintf "Index[%4d]: 0x%08X 0x%08X 0x%04X 0x%04X %32s\n",
- $count++, $file->[0], $file->[1], $file->[3], 0x0000,
- $file->[4] ? md5_hex($file->[4]) : "0" x 32
- ;
-
- print pack "NNnna16", $file->[0], $file->[1], $file->[3], 0x0000, $file->[2];
-}
-
-warn sprintf "Index at 0x%08X, length 0x%08X\n", $offset, @index * 28;
-print pack "N", $offset;