Satellite
String DLLs
A DLL can be
used to hold user interface strings that have been translated to
another language. There is typically one DLL for each language.
The application can dynamically select a different DLL at runtime
in order to switch to another language. The real power of
satellite DLLs has to do with the decoupling of the application
and the resource elements. The strings in the satellite DLLs can
be edited or modified at anytime with recompiling the application.
This means new languages can be added after the application has
been released.... just release new language DLLs as they become
available. Of course there some situations when changes to string
DLLs will require recompiling, but adequate care can be taken to
minimize this in most cases.
Depending upon
the implementation scheme used for the satellite DLL, a slight
decrease in performance might take place. The example supplied by
ResMe will result in a 24% decrease in DLL string access versus
using a native resource file. Keep in mind that this is only for
user interface strings, which are not typically used in time
critical operations. In most cases, this performance decrease will
not be detected.
Advantages
- Your
application's size does not grow larger with each new
language.
- You can
ship as many or as few languages as you want.
- You can
change languages at runtime without rebooting.
- You can
make edits to DLL strings without the need to recompile and
re-release your application.
- You can add
new languages as they are translated without the need to
recompile your application.
Disadvantages
- Can be
somewhat complex to implement initially.
- Performance
is slightly slower than using a native resource file, but this
is often so slight that it isn't noticeable.
ResMe includes
a helper function and support code that selects from multiple
satellite DLLs and wraps all access to DLL localization elements.
|