I am in favor of the host simply specifying the language ID and the
plugin returning all strings in unicode in that language, or whatever
language they map to that language ID.
Mike
Tim Hockin wrote:
On Mon, Oct 04, 2004 at 09:23:19AM -0400, Ron Kuper wrote:
I don't understand the gettext() requirement. How can a host possibly
know how to translate all or any of the strings required for use by the
plugin? It seems to me that if a plugin wants to translate strings it
should provide the translated strings themselves?
If the where and how of string storage is well known, then the host or a single shared lib can do the work, instead of each plugin doing it themselves. That's what gettext does. Gettext does a lot more, I think, which we may or may not need, too.
Or we could just say that localization is a plugin's responsibility, and the host will merely make language preferences available. I don't really care much.
-----Original Message----- From: gmpi-bounce@xxxxxxxxxxxxx [mailto:gmpi-bounce@xxxxxxxxxxxxx] On Behalf Of Tim Hockin Sent: Monday, October 04, 2004 1:42 AM To: gmpi@xxxxxxxxxxxxx Subject: [gmpi] Re: 3.19 Localization
No more objections?
* GMPI plugins must be localizeable. The host must expose the current language settings to plugins.
* All user-visible plugin strings must be localizeable, with the corollary that all identifiers that are used by the host must stay consistent. For example, a parameter might have the name 'FOO' which is constant, and a display name, "Foo Frequency" which is localizable.
* GMPI must provide a simple string encoding and translation interface, similar to gettext(), which plugins can rely on to get automatic translation of their strings.
More: The simplest localization that a plugin can do is to display strings in different languages. GMPI should make this really trivial for plugins. By providing a simple string lookup system, plugins can rely entirely on GMPI to do the lookups of localized strings. Further, if the translated strings are stored in a standardized format in a standardized place, then the host can also easilty translate strings for the plugin.
Example: Assume that the strings for a plugin with ID 'FOO' are stored in a file in the same directory as the shared object for FOO. English strings are stored in FOO-en.strings, French strings in FOO-fr.strings, and Japanese strings in FOO-jp.strings. The host knows that the current user has selected French for the locale. The host can automatically lookup strings in FOO-fr.strings.
This is similar to how the gettext() API works.
---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.
Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.
Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe
-- Mike Berry Adobe Systems
---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission.
Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe