EDIT: String Table Manager is now part of the WME installation package.
Warning: This is beta software; it can still contain bugs. Always backup your project first. String table manager directly modifies many files of your project and if something goes wrong it could do lot of damage in a very short time.
This program requires Microsoft .NET Framework 2.0, which can be downloaded here.
I'm releasing the program separately for testing purposes. It will be later integrated into WME installation package.
Download WME String Table Manager Beta (130 KB)
WME String Table Manager is a simple tool for extracting all in-game texts from your WME project and export them to a string table for localization purposes. It also modifies the game files and scripts and replaces the original string occurences with their "localizable" form. For example this line in the script:
this.Talk("Hello, miss.");
will become:
this.Talk("/str0003/Hello, miss.");
And the generated string table will contain the extracted string:
str0003 Hello, miss.
For more information on localization support in WME please see the "Localization" chapter in the documentation.
Quick user's guideStart the program and fill in the two text boxes. Choose a path to your WME project file (.wpr) and a path to a string table. You can either select an existing string table file, or a non-existing. In the latter case the file will be created.
Additionally you can check or uncheck the "Backup old files" option. It is recommended to leave this option enabled.
(Note: If you have the project file open in WME Project Manager, please close it, otherwise String Table Manager won't be able to save the localized name of the game to the 'default.game' file.)
Once the paths are set, click the "Scan project" button. String Table Manager will extract all strings from the project and load the contents of the original string table (if any). It will then try to automatically remove all strings which are not supposed to be translated (e.g. event names, item names, file names, scene node names etc.).
After the project is scanned, click the "Manage strings" button. It will open a new window which contains all the localizable strings on the left and all the ignored string on the right. Now please carefuly examine the lists. If there are still some strings left which shouldn't be localized, you can move them to the right list. Right-click the item and choose either "Ignore item" or "Always ignore item" from the context menu. The "Always ignore" command will add the string to the global ignore list, therefore next time you scan the project, this string will be automatically ignored.
Similarly, you can return any ignored string back to the left list by right-clicking it and choosing the "Unignore item" command from the context menu.
The left list allows you to choose several items at once by checking the check-boxes on the left or using the "Selection" submenu in the context menu.
Make sure the left list only contains strings which are supposed to be translated. Now you can assign the unique string ID to each of the string. You will probably want to choose multiple items before assigning the IDs.
Choose one or more items, right-click and select the "Assign string ID..." command from the context menu. Now you need to choose the string ID itself. You can choose any word/code you want, for example "str". You can either assign the same code to all the strings in the game, or you can use different code depending on the string context (for example, you might use different codes depending on which character uses the line).
Fill in the code and click OK (the window offers you all the codes previously used in your project). String Table Manager will now assign the chosen code to all the selected items, and it adds a number to make the string IDs unique.
After all strings were assigned a string ID, click the "Close" button and return back to the main window. Here you can save the changes back to your project files by clicking the "Save changes" button. This command will add the new strings to the end of the string table, and it will replace the original strings in your game files/scripts with their localizable form (see above).
You can go through this entire process multiple times, as you add new game content. String Table Manager will extract all the newly added strings and you'll be able to assign a string ID to them.