ADM files - not so bad

Group policies are amazing. There are hundreds and hundreds of settings that you, the network administrator, can use to control your users' and computers' settings. Group policies give you control over what, how and if software is installed; allows you to restrict access to drives, gives you the power to remove access to various Windows features and decide exactly which applications may or may not be run on a machine. Quite powerful.

There are loads of policy settings you can use. These policy settings are defined in ADM files, and any application can add more such files. In fact, more and more settings are added all the time. XP SP2 adds a bunch of settings that let you control the firewall and the new IE settings.

Most of the policies in Windows are defined in a file called system.adm. This file contains the definitions, names and descriptions of several hundred (probably close to a thousand) different settings. Altogether the file has over 80 000 localizable words in setting names and descriptions. And I've localized most of them.

ADM files contain mostly two types of strings - short and long. Short strings are typically the name of a setting (all settings have names), values you can use for the setting (if applicable) or general instructions on what type of value to enter. Long strings are the descriptions of settings - sometimes these contain several hundred words!

The short strings are typically easy to translate. There's not much to keep in mind, except to try and keep them kinda short. They're used in the title bar in some dialogs, and if they're too long they'll be cut off. Personally, I don't care much as it's easy to see the full name anyway. Some languages however go to some lengths to make sure the titles are visible in the title bar.

As with some command line utilities I mentioned before, certain policies have sentences broken up over several resources. This is as bad here as it is anywhere else. Here's an example - one sentence broken up over four resources:

2; "IntranetPrintersUrl_Tip1" - "Enable this option to add a browse button for Internet printers "
2; "IntranetPrintersUrl_Tip2" - "in the Add Printer Wizard. Use this setting to allow users browsing "
2; "IntranetPrintersUrl_Tip3" - "the company's Intranet for printers. For example, you can "
2; "IntranetPrintersUrl_Tip4" - "specify a URL like: "

I'd very much prefer to see this being just one single resource, with line feeds if needed.

The longer strings are annoying just because they're long. Here's an example from the setting "Automatically publish new printers in Active Directory":

"Determines whether the Add Printer Wizard automatically publishes the computer's shared printers in Active Directory.\\n\\nIf you enable this setting or do not configure it, the Add Printer Wizard automatically publishes all shared printers.\\n\\nIf you disable this setting, the Add Printer Wizard does not automatically publish printers. However, you can publish shared printers manually.\\n\\nThe default behavior is to automatically publish shared printers in Active Directory.\\n\\nNote: This setting is ignored if the "Allow printers to be published" setting is disabled."

As you see, interesting characters appear doubly-escaped in my tool. That's one thing to keep in mind. Also, all strings start and end with double quotes. Interestingly, the double quotes don't appear to be all that significant - some strings are missing a quote here or there, and there's no need to escape double quotes within the string.

So - functionality wise, these files aren't so bad.

Linguistically, there are a few more things you need to keep track of. First, as you see above, the description of one setting will often refer to the name of another setting, like so: "This setting is ignored if the "Allow printers to be published" setting is disabled." Take care to keep these references consistent. Good news is that since this is just a text file, it's easy to write a script to ensure this kind of consistency.

Second, some sentences are repeated in several descriptions. A good example is "This setting appears in the Computer Configuration and User Configuration folders. If both settings are configured, the setting in Computer Configuration takes precedence over the setting in User Configuration". If you have a decent localization tool, you'll be able to recycle individual sentences within the string.

Third, descriptions often refer to UI elements. Example: "[...]This setting removes the Browse button from the Schedule Task Wizard and from the Task tab of the properties dialog box for a task[...]". In this case, I need to make sure that Browse, Schedule Task Wizard and Task get translated consistently with the actual UI elements. This is much harder to verify automatically.

Apart from this, the files are pretty straight forward. If you want to know more about the various settings that are available, search for Group Policy in Help and Support Center.