All of the same issues and steps apply to large applications as described for smaller applications. In addition, here are some ideas that can help manage developing these larger applications.
•Allocate a range of identifiers for each component; all new strings are renumbered to be in the proper range. This way, simultaneous development will not cause different strings with the same identifier.
•Define a dummy string with a high identifier, because the compiler always starts numbering identifiers for new strings after the highest one in the resource file.
•Create resource include files for each major component of the application. Resource include files can contain the same statements as resource files. The resource file might just be rcinclude statements.
•When a developer recompiles a section, all new strings are appended to the resource file. At a convenient time, the developer can renumber the new strings to be in the correct range and move them to the resource include file.
•Create a resource include file for strings that are shared among components and strings that should never be externalized.
•The compiler does not warn of unused strings that were defined in resource include files. To test if there are unused strings, create a temporary resource file which has some or all of the rcinclude statements replaced by the actual lines. Recompile and the compiler will warn of any unused strings.
•If very large numbers of translatable strings need to be accessed, it is possible to create a second resource DLL and access it with the EsIXstrFromDLL ESLLIB Function.
•One technique for using external strings is to have the string literals in the source file be descriptions of what the user should see, instead of the actual strings in the original language. For example, the text in the source file for a push button might be "Start APPROG" and the resource file would be translated so the user sees "Accounts Payable".
This technique allows the programmer to describe the text that is needed and the person who edits the resource file to decide on the exact wording, It can also aid the translator to know the context that a string is used in. This is also a way to handle the problem when the same string occurs in more than one place, but must be translated to different strings in another language.