Re: AbiWord Windows builds and L10n workflow

Prashant Bafna <[email protected]>
Newsgroups gmane.editors.abiword.devel
Message-ID <CAGWtQ3LWx2dx0Y3kGR6-Km3+2i9haUJ3KKPwi00PG44a1=XyGQ@mail.gmail.com>
Hi,

I tried my hands at it and did the following :

1. About the Perl script ui-backport.pl - I was getting basename
related errors while running this on Windows, so i modified it a bit
(Suggested Patch Attached), so as to make it work in Windows as well.

2. To convert the PO file to Strings files during the build, I created
a Post Build event for LibAbiWord which runs the above Perl script and
converts the PO files to Strings files and then moves them to
(OutDir)\strings. With this we would no longer need the strings folder
in user/wp for the windows build as well. (Patch for this attached as
well)

However what we have done here is made Perl a requirement for the
Windows build, which earlier was not the case.

Thanks,
Prashant
Add_POtoStrings_Convert_LibAbiWord.patch (application/octet-stream, 12.7 KB)
Index: LibAbiWord.vcproj
===================================================================
--- LibAbiWord.vcproj	(revision 31421)
+++ LibAbiWord.vcproj	(working copy)
@@ -92,7 +92,7 @@
 			<Tool
 				Name="VCPostBuildEventTool"
 				Description="Copying strings and templates..."
-				CommandLine="rmdir /S /Q  &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\strings\*.strings&quot; &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\system.profile*&quot; &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\templates\*.awt*&quot; &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\bz2-1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libenchant.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libfribidi-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libglib-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgio-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgmodule-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgobject-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgsf-1-114.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgthread-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libintl-8.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libjpeg-62.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng12-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng15.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libwv-1-2-4.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libxml2-2.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\zlib1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\clipart\*.png&quot; &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\myspell&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\dictionary\american.hash&quot; &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\lib\enchant\*.dll&quot; &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\plugins\latex\xsltml\*.*&quot; &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;"
+				CommandLine="rmdir /S /Q  &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;FOR %%f in (&quot;$(SolutionDir)..\po\*.po&quot;) DO ( perl $(SolutionDir)..\po\ui-backport.pl $(SolutionDir)..\po\%%~nf.po $(SolutionDir)..\po\%%~nf.strings )&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\po\*.strings&quot; &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;del &quot;$(SolutionDir)..\po\*.strings&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\system.profile*&quot; &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\templates\*.awt*&quot; &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\bz2-1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libenchant.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libfribidi-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libglib-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgio-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgmodule-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgobject-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgsf-1-114.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgthread-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libintl-8.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libjpeg-62.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng12-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng15.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libwv-1-2-4.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libxml2-2.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\zlib1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\clipart\*.png&quot; &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\myspell&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\dictionary\american.hash&quot; &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\lib\enchant\*.dll&quot; &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\plugins\latex\xsltml\*.*&quot; &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;"
 			/>
 		</Configuration>
 		<Configuration
@@ -170,7 +170,7 @@
 			/>
 			<Tool
 				Name="VCPostBuildEventTool"
-				CommandLine="rmdir /S /Q  &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\strings\*.strings&quot; &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\system.profile*&quot; &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\templates\*.awt*&quot; &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\bz2-1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libenchant.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libfribidi-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libglib-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgio-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgmodule-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgobject-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgsf-1-114.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgthread-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libintl-8.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libjpeg-62.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng12-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng15.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libwv-1-2-4.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libxml2-2.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\zlib1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\clipart\*.png&quot; &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\myspell&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\dictionary\american.hash&quot; &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\lib\enchant\*.dll&quot; &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\plugins\latex\xsltml\*.*&quot; &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;"
+				CommandLine="rmdir /S /Q  &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;FOR %%f in (&quot;$(SolutionDir)..\po\*.po&quot;) DO ( perl $(SolutionDir)..\po\ui-backport.pl $(SolutionDir)..\po\%%~nf.po $(SolutionDir)..\po\%%~nf.strings )&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\po\*.strings&quot; &quot;$(OutDir)\strings&quot;&#x0D;&#x0A;del &quot;$(SolutionDir)..\po\*.strings&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\system.profile*&quot; &quot;$(OutDir)\profiles&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\templates\*.awt*&quot; &quot;$(OutDir)\templates&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\bz2-1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libenchant.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libfribidi-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libglib-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgio-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgmodule-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgobject-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgsf-1-114.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libgthread-2.0-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libintl-8.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libjpeg-62.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng12-0.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libpng15.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libwv-1-2-4.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\libxml2-2.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\bin\zlib1.dll&quot; &quot;$(OutDir)\bin&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;xcopy /E &quot;$(SolutionDir)..\user\wp\clipart\*.png&quot; &quot;$(OutDir)\clipart&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\dictionary\myspell&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\user\wp\dictionary\american.hash&quot; &quot;$(OutDir)\dictionary\ispell&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)\Prefix\lib\enchant\*.dll&quot; &quot;$(OutDir)\lib\enchant&quot;&#x0D;&#x0A;rmdir /S /Q  &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;mkdir &quot;$(OutDir)\xsltml&quot;&#x0D;&#x0A;xcopy /Y &quot;$(SolutionDir)..\plugins\latex\xsltml\*.*&quot; &quot;$(OutDir)\xsltml&quot;"
 			/>
 		</Configuration>
 	</Configurations>
Patch_ui-backport.patch (application/octet-stream, 749 B)
Index: ui-backport.pl
===================================================================
--- ui-backport.pl	(revision 31421)
+++ ui-backport.pl	(working copy)
@@ -25,6 +25,7 @@
 #                Ingo Brueckl <[email protected]>
 
 use strict;
+use File::Basename;
 
 # Declare global variables
 #-------------------------
@@ -32,7 +33,7 @@
 
 my $in          = "$ARGV[0]"; # input file (.po)
 my $out         = "$ARGV[1]"; # output file (.strings)
-my $lang        = `basename $in .po`;
+my $lang        =  basename($in,'.po');
 my $kind 	= "0";
 my @xap_strings;
 my @ap_strings;
@@ -42,7 +43,6 @@
 my $encoding	= "iso-8859-1";
 
 $lang =~ s/_/-/g;
-chop $lang;
 
 print "Converting localization file $in to Abiword .strings format.\n";
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.