[development] low hanging fruit for Drupal 6: variable defaults
Gabor Hojtsy
gabor at hojtsy.hu
Thu May 3 21:24:13 UTC 2007
Dries Buytaert wrote:
> On 03 May 2007, at 14:39, Earnie Boyd wrote:
>> <?php
>> define('MY_DEFAULT_VALUE', t('my_default_value'));
>> ?>
>
> How about this:
>
> define('site_name', 'example');
>
> function variable_get($name) {
> $value = db_result(db_query(...));
> return $value ? $value : constant($name);
> }
>
> print variable_get('site_name');
>
> Might get us the best of both worlds? :)
This is possibly good for the defaults repetition problem, yes.
As I have said, we will come out with a way to provide locale related
meta information about certain Drupal objects, like content types, where
we need to know what is possible to get localized. We will need a list
of site settings to localize too, so we will need to have a list of site
settings defined by a module defined in that module soon. We can have
that in hook_locale(), and we can collect the default values by looking
at constants defined by the same names. It seemed to be logical to
suggest a more universal hook, but whatever simplification comes out of
this thread, we will need stuff like:
function system_locale($op = 'groups') {
switch($op) {
case 'groups':
return array('variables' => t('Site settings'));
case 'objects':
return array('variable' => array('site_name', 'site_logo', ...);
}
}
Note for those not following Drupal 6.x-dev: hook_locale() will be used
by the new localization solutions we are working on. Different parts of
Drupal will define text groups, like 'Content types', 'Site settings'
and so on. You can translate objects in these groups, a content type
object having a title, a description, a title_label a body_label and so
on. We need a little bit of meta information about these objects, so we
know what to translate from them. (hook_locale() is already in core, but
only implements the groups $op yet! A detailed explanation of how this
works, and deep reasoning comes up tomorrow in the form of a patch, so
stay tuned :).
So we need a list of what variables are for localization, and we need
their default values, so localizers can go and change values even if
certain settings forms were not submitted by the original administrator
before. It would be quite awkward to tell an administrator to first
submit all forms where localized stuff is set, even if nothing needs to
be modified there, so we have information about the actual values to
localize.
So anyway, I am just trying to point out that we will need to have a
list of at least the localized variables, and we will need to figure out
their defaults. If the current implementation stays in Drupal 6.x, we
would need to repeat the defaults in a hook_locale() implementation. If
PHP constants are to be used, we would need to look them up ourselfs
(but admittedly that would not be hard). A list of variables will still
be required. So people trying to get rid of such an idea will not be
able to achieve their goal, as far as the current state of Drupal
localization stands in our development branch.
Gabor
More information about the development
mailing list