[wp-trac] [WordPress Trac] #35585: Support loading multiple languages to be loaded at the same time - rewrite the l10n to a class?
WordPress Trac
noreply at wordpress.org
Sat Jan 23 08:02:31 UTC 2016
#35585: Support loading multiple languages to be loaded at the same time - rewrite
the l10n to a class?
--------------------------+------------------------------
Reporter: jongleur1983 | Owner:
Type: enhancement | Status: new
Priority: normal | Milestone: Awaiting Review
Component: I18N | Version: trunk
Severity: normal | Resolution:
Keywords: | Focuses:
--------------------------+------------------------------
Description changed by SergeyBiryukov:
Old description:
> Multi-language support in Wordpress still supports only easy solutions.
>
> One of the things I miss in the current case is: In my own plugin I want
> to get some strings in a different than the current UI language.
> Those are not strings of my own plugin, but e.g. from the wordpress core
> or other plugins.
>
> Basically I would like to have something like __($string, $domain,
> $locale).
>
> As far as I can see that's quite a lot of work to get done as with the
> current way i18n works (see i18n.php) it's one of the many parts heavily
> relying and hardly bound to globals.
>
> I therefore propose to:
>
> * keep the $i18n global to store the current UI language for
> compatibility purposes. For recall: $i18n currently is an associated
> array where the key denotes the domain and the value is the content of an
> MO file.
> * add another level on top to get an array of languages, so let e.g. the
> global $languages be instance of a class that contains all loaded
> languages, one of them being $i18n, but others as well, and another
> structure to keep what has been loaded for a particular language. (like:
> loaded domain 'x' from the set of paths's A, domain 'y' from the set of
> paths's B and so on.
> * on that class (and it's instance I called $languages above), enable the
> well known translation functions (_ _, _e and others), but overload
> those, adding a parameter for the locale. The helper structure (what has
> been loaded from where) allows to fetch missing translations without
> having to load all languages every time (this would support #6974 was
> well, as the helper structure supports delaying the load until a
> particular translation is requested.
>
> As a benefit it would
>
> * rely less on globals, usually a sign of more robust code (I understand
> why it has been done like it is, but with the current possibilities I'm
> pretty sure it would have been done as a class and better encapsulation
> of some of the globals if it would have been implemented from scratch).
> * allow multiple locales to exist side by side in memory, useful and
> often requested (when searching in google) e.g. for json apis and more.
>
> I would like to try it out, if I see any chance for a corresponding PR to
> be accepted in future.
>
> So please give your thoughts on this.
> Thanks.
New description:
Multi-language support in Wordpress still supports only easy solutions.
One of the things I miss in the current case is: In my own plugin I want
to get some strings in a different than the current UI language.
Those are not strings of my own plugin, but e.g. from the wordpress core
or other plugins.
Basically I would like to have something like `__($string, $domain,
$locale)`.
As far as I can see that's quite a lot of work to get done as with the
current way i18n works (see i18n.php) it's one of the many parts heavily
relying and hardly bound to globals.
I therefore propose to:
* keep the $i18n global to store the current UI language for compatibility
purposes. For recall: $i18n currently is an associated array where the key
denotes the domain and the value is the content of an MO file.
* add another level on top to get an array of languages, so let e.g. the
global $languages be instance of a class that contains all loaded
languages, one of them being $i18n, but others as well, and another
structure to keep what has been loaded for a particular language. (like:
loaded domain 'x' from the set of paths's A, domain 'y' from the set of
paths's B and so on.
* on that class (and it's instance I called $languages above), enable the
well known translation functions (_ _, _e and others), but overload those,
adding a parameter for the locale. The helper structure (what has been
loaded from where) allows to fetch missing translations without having to
load all languages every time (this would support #6974 was well, as the
helper structure supports delaying the load until a particular translation
is requested.
As a benefit it would
* rely less on globals, usually a sign of more robust code (I understand
why it has been done like it is, but with the current possibilities I'm
pretty sure it would have been done as a class and better encapsulation of
some of the globals if it would have been implemented from scratch).
* allow multiple locales to exist side by side in memory, useful and often
requested (when searching in google) e.g. for json apis and more.
I would like to try it out, if I see any chance for a corresponding PR to
be accepted in future.
So please give your thoughts on this.
Thanks.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/35585#comment:3>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list