• Announcements

    • xper

      MSFN Sponsorship and AdBlockers!   07/10/2016

      Dear members, MSFN is made available via subscriptions, donations and advertising revenue. The use of ad-blocking software hurts the site. Please disable ad-blocking software or set an exception for MSFN. Alternatively, become a site sponsor and ads will be disabled automatically and by subscribing you get other sponsor benefits.
Sign in to follow this  
Followers 0
Petr

Automated localization project

4 posts in this topic

As a maintainer of Czech version of Unofficial Service Pack for Windows 98 SE (and FE) I found that it is really not easy to localize all updates and hotfixes. It took long time to localize everything (with exception of TWEAKUI.HLP). Even though there are French, German, Dutch, Polish and Italian localizations of SESP, there are still many files not localized. No surprise, it eats much time.

There are several groups of international versions of Windows 98. They are shortly described in Appendix A - International Windows 98 of Microsoft Windows 98 Resource Kit. The most interesting thing is that the so called "United States" release version is available in English, German, Italian, Norwegian, Swedish, Dutch, French, Spanish, Portuguese (Prtugal), Portuguese (Brazil), Danish, Finnish, Russian, Polish, Hungarian, Greek, Turkish, Slovak, Slovenian languages. In total 20 versions with the same code.

I've got an idea that it would be extremely useful to have a tool (or set of tools) for automated translation to other language. This tool would just took 3 files (or folders) as input:

- English original version

- Original version in new language

- English version of the update

Then the tool would compare resources in English original and updated file and for identical resources it would replace them in newly created localized file by localized version of the same resources. Resources that has changed un the update would be leaved untouched for manual editing.

As I already described in the Localization of SP 2.0 topic, there are 4 basic types of binary files to localize:

1. 32-bit PE files (most executables)

2. 16-bit NE files (user.exe, gdi.exe, sysdm.cpl, wdmaud.drv, compobj.dll, netdi.dll, unimdm.tsp)

3. 16-bit LE files (.VXD, .386)

4. Other executables - KEYB.COM, IO.SYS (WINBOOT.SYS)

For all of these files I have better or worse knowledge where and how the resources are stored.

For PE, NE and LE files it would be also nice (but not necessary) to translate (the same way) FileDescription and ProductName in the Version resource to get exactly the same localized file as from Microsoft.

The only problem would be help files. This is not the case of SESP. There are HARDWARE.HLP (Q242975 already available in all languages), TSHOOT98.CHM (Q239887 already available in all languages), WSCRIPT.HLP (scr56xx already available in all languages) and TWEAKUI.HLP (English only)

So the full localization of all files installed on the system would mean just running this tool and manual editing of few exceptions. The result would be service pack with all localized files with exception of the user interface. This is not necessary but it would not big problem to ask somebody to translate the LICENSE.TXT, INFEX.INI and few strings in INF files.

The biggest problem is that I'm not coder - so I'm not able to write this tool.

Is there anybody who could write it? I can help with file formats and with testing.

The result would be not only high quality fully localized SESP in 20 languages, but also FESP, MESP and it could be used even for any other update not available in the specific language.

I already have extracted all langage versions of files in SESP from intallation CD-ROMs and here are the tables. I'm sorry - they are very big (600 KB) but I don't know how to export them from Excel other way.

Windows 98 SE files in various OS language versions

Availability of localized fixes

I did not too extensive search so maybe many other localized fixes are available but still is clearly visible that there are too many files to localize.

Any suggestions?

Petr

0

Share this post


Link to post
Share on other sites

Lot of Free time Petr :hello: ?

Jesus, it would be better if you could just write a tutorial about hacking those vxd-files. Also a tutorial to quickly copy all language resource strings from one dll to oneother would be great. I'm now doing this manually through exescope.

0

Share this post


Link to post
Share on other sites
Lot of Free time Petr :hello: ?

Jesus, it would be better if you could just write a tutorial about hacking those vxd-files. Also a tutorial to quickly copy all language resource strings from one dll to oneother would be great. I'm now doing this manually through exescope.

For dll files (generally all 32-bit PE executables) I'd recommend Restorator 2005. The procedure is very simple, you can just extract and then import all resources at once and then just copy (and possibly edit) Version resource.

As for 16-bit NE files, the worse was GDI.EXE, fortunately USER.EXE and SYSDM.CPL I was able to receive localized from Microsoft. Unfortunately after manual translation. :-)

16-bit LE executables (.VXD and .386) needs some manual work but it's not big problem again. All texts are stored in 64 KB blocks (1000 hex), the easiest way how to find these blocks is to compare original English file with original file in your language. Almost all files contain one text block only, just NWREDIR.VXD and vpicd.vxd contain 2 blocks and VMM.VXD contains 3 blocks. Then you will find the same block in new updated English file and replace it by the block from file in your language. Then it is necessary to modify some bytes:

00015C: length of the first text block (just copy from the file in your language)

00017C: length of the second text block (just copy from the file in your language)

00019C: length of the third text block (just copy from the file in your language)

Then it is posible (not necessary) to modify the language code and character set in Version resource.

It is there twice:

1. after StringFileInfo it is in text format, e.g. 040904E4 means US English (0409) and ANSI Latin 1 character set (04E4 in hex = 1252 in dec)

2. After Translation (usually last 4 bytes of the file) is the same information in binary.

Address 000138 shows start of the resource but it is usually at the end of the file.

Text blocks for VMM.VXD has to be extracted from VMM32.VXD.

Is this description sufficient? I hope I forgot nothing.

I personally think that it would be much easier to write simple tool than to learn hack files 15 people from 15 different countries.

Petr

Edited by Petr
0

Share this post


Link to post
Share on other sites

Thanks for this info petr. I'll look up the currently translated Dutch files in order for preparation for SP 2.1. Meaby some errors are caused by bad translation ( I remember Dutch strings in vmm.vxd did not fit correctly. Meaby I overwrote some bytecode :unsure: )

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.