Hello Jacob,
I'll give you the good news first:
The vast majority of the verbalization text that is not part of your model file can be modified using XML files in your NORMA installation. The basic directions are these:
-
Open the %PROGRAMFILES%\ORM Solutions\ORM Architect for Visual Studio 20xx\Xml\Verbalization\Core directory.
-
Copy the _default.xml to NEWFILE.xml.
-
Edit the first few lines of NEWFILE.xml by changing the xml:lang setting in the Language tag and the name and description attributes in the Snippets tag.
-
In Visual Studio, the ORM Designer tab of the Tools/Options dialog (or whatever it is called in Dutch), open the dropdown for the Alternate Verbalization Text. You should see the name, description, and language you changed in step three in the 'Core ORM Verbalization' section. Select it.
Any item you change in your file will now update the verbalization. This is a live process. Note that you can remove items that you do not want to change. The Xml\Verbalization\Core directory also contains a (generated) html file indicating where different snippets are used. This file is not 100% because some snippets are attached inside the verbalization engine, but this mostly occurs for the join path verbalization in the open source tool.
At this point, you can change most of the verbalization text.
Now for the bad news:
Although you'll be in better shape than you are now, getting correct Dutch is not going to be this easy. This basic replacement mechanism works great for English because we don't have to deal with things like articles that need to change for different genders, etc. The closest we have in English is the a/an indefinite articles, which we don't current use in verbalization (partly to avoid this issue). Getting the tool to produce grammatically correct Dutch will require more than overriding static snippets. For a full Dutch translation, I need to do the following:
-
Enable readings and object names to be entered in multiple languages in the same model. Of course, for now, you can just enter the model in Dutch.
-
Provide localized .NET resource files for the NORMA UI. Note that some of the verbalization text (I think 'is a' for subtypes falls in this category) comes from the resource files, not the verbalization snippets.
-
Provide additional hooks to call a language-aware extension to provide modified quantifiers based on additional attributes of the object type names.
-
Write per-language extensions to add explicit extension properties (similar to the 'IsPersonal' you can now specify on an object type to change 'that' used as a back reference to 'who'), or by hooking into existing lexicons (online or local) that can provide this type of language information.
Of course, every language is going to have slightly different needs, and I need to catalog as many of these as possible to get hooks into the verbalization engine that a 'verbalization language package' can hook into. This is actually on my radar screen because Terry has a PhD student right now who is doing a Malay verbalization, and she has similar issues. I actually speak German, which is sufficiently close to Dutch that any hooks I add for German should be sufficient for a Dutch plugin as well.
The first thing to do, however, is to see how far you can get by just modifying the snippet files. If you can track which snippets are not sufficient for localized verbalization then I can get in extension points to allow customization of these snippets.
-Matt
PS If you're aware of any publicly available lexicon web services for Dutch, German, etc. please share.