Page 1 of 1

language specific blog title, description

Posted: Sun Nov 06, 2005 9:38 pm
by selva
I am translating the language strings to "tamil" language. A question I ran into:-

When the visitor clicks on the language specific link to read a post in tamil, is there a way I can display the blog title/description in tamil too (assuming I have the translation somewhere)? At the moment, the blog title/description seems to be set for the blog as a whole in the database (config table) irrespective of user or a specific post.

I know I haven't described the question clearly (no coffee at home). I'll be happy to elaborate if someone asks.

Re: language specific blog title, description

Posted: Sun Nov 06, 2005 9:48 pm
by garvinhicking
That's right, the blog title/description cannot be changed language dependently.

You could code your own plugin that sets those variables depending on the language, though.

Best regards,
Garvin

Posted: Sun Nov 06, 2005 11:17 pm
by selva
thanks, garvin. I've got a learning curve (need to learn a bit of PHP and how to write plugins for s9y). I'll work on that.

A few questions.
1.Which tables should I look at?
2.Should I work on updating the multi-lingual plugin? Or should this be a new plugin by itself?
3. Is there a event hook to use to throw the language specific blog title?

thanks for the pointers.

Posted: Mon Nov 07, 2005 5:06 pm
by garvinhicking
Hi Selva!

I think you wouldn't need specific tables, you can save the specific language
options/names in the general serendipity_config db container.

I would change $serendipity['blogTitle'] and $serendipity['blogDescription'] in
the frontend_configure hook.

Here is a rough draft for such a plugin, which you could built on. Integrating
it with the multilingual plugin sounds like a good idea:

Code: Select all

<?php # $Id: serendipity_event_multilingual.php,v 1.23 2005/11/04 19:54:31 garvinhicking Exp $

class serendipity_event_multilingualtitle extends serendipity_event
{
    function introspect(&$propbag)
    {
        global $serendipity;

        $propbag->add('name',          'Multilingual Titles');
        $propbag->add('description',   '');
        $propbag->add('stackable',     false);
        $propbag->add('author',        'Garvin Hicking');
        $propbag->add('version',       '1.0');
        $propbag->add('configuration', array('title_de', 'title_en', 'title_fr'
                                             'desc_de', 'desc_en', 'desc_fr'));
        $propbag->add('event_hooks',    array(
            'frontend_configure' => true,
        ));
        $this->dependencies = array('serendipity_event_multilingual' => 'keep');
    }

    function introspect_config_item($name, &$propbag) {
        global $serendipity;
        if (preg_match('@(title|desc)_(.+)@', '', $keym)) {
            if ($keym[1] == 'title') {
                $propbag->add('type',        'string');
                $propbag->add('name',        'Enter blog title for language ' . $keym[2]);
                $propbag->add('description', '');
                $propbag->add('default',     $serendipity['blogTitle']);
            } elseif ($keym[1] == 'desc') {
                $propbag->add('type',        'string');
                $propbag->add('name',        'Enter blog description for language ' . $keym[2]);
                $propbag->add('description', '');
                $propbag->add('default',     $serendipity['blogDescription']);
            }
            return true;
        }
        
        return false;
        switch($name) {
            case 'copytext':
                break;
            default:
                    return false;
        }
        return true;
    }

    function generate_content(&$title) {
        $title = $this->title;
    }

    function event_hook($event, &$bag, &$eventData, $addData = null) {
        global $serendipity;

        $hooks = &$bag->get('event_hooks');
        if (isset($hooks[$event])) {
            switch($event) {

                case 'frontend_configure':
                    $check_title = $this->get_config('title_' . $serendipity['lang'], '');
                    $check_desc  = $this->get_config('desc_' . $serendipity['lang'], '');

                    if (!empty($check_title) {
                        $serendipity['blogTitle'] = $check_title;
                    }
                    if (!empty($check_desc) {
                        $serendipity['blogDescription'] = $check_desc;
                    }

                    break;

                default:
                    return false;
                    break;
            }
        } else {
            return false;
        }
    }
}

/* vim: set sts=4 ts=4 expandtab : */
(The code is untested and might have parse errors...)

Regards,
Garvin