FreeBSD locales - Unix

This is a discussion on FreeBSD locales - Unix ; Hi, I have problems implementing i18n on my site hosted on a FreeBSD server, using PHP. While it was hosted on a Linux server, there were no problems, but once I transferred it to FreeBSD, gettext() doesn't translate anything. Here's ...

+ Reply to Thread
Results 1 to 3 of 3

Thread: FreeBSD locales

  1. FreeBSD locales

    Hi,

    I have problems implementing i18n on my site hosted on a FreeBSD
    server, using PHP. While it was hosted on a Linux server, there were
    no problems,
    but once I transferred it to FreeBSD, gettext() doesn't translate
    anything. Here's my directory structure:

    public_html
    |-- index.php
    `-- locale
    |-- en_US.ISO8859-1
    | `-- LC_MESSAGES
    | |-- OOModelProvider.mo
    | `-- OOModelProvider.po
    `-- sr_YU.ISO8859-2
    `-- LC_MESSAGES
    |-- OOModelProvider.mo
    `-- OOModelProvider.po

    And here's the function that calls php locale-related functions:
    /* domain is "OOModelProvider", language is "en_US.ISO8859-2"
    */
    function setLocale( $language, $domain )
    {
    @bindtextdomain( $domain, "/home/darko/public_html/
    locale/" );
    @bind_textdomain_codeset( $domain, "utf-8" );

    if ( ! @setlocale( LC_MESSAGES, $language ) )
    throw new Exception( "setlocale" );
    textdomain( $domain );
    }

    This worked perfectly on Linux, but it doesn't work with FreeBSD. I
    read somewhere that libintl needs to be installed for LC_MESSAGES, but
    1. it is installed 2. LC_ALL instead of LC_MESSAGES doesn't work
    neither.

    Another important note: LC_DATE works, i.e. sprintf and strftime
    (which are locale-aware) work as expected, that is, they print the
    strings in expected languages.

    Also, after I do setlocale(LC_MESSAGES, $language), I call it with "0"
    as the second argument and it returns the correct locale set.

    Please, if you have any ideas, post them here.

    Thanks.


  2. Re: FreeBSD locales

    On Oct 26, 5:44 pm, Darko wrote:
    > Hi,
    >
    > I have problems implementing i18n on my site hosted on a FreeBSD
    > server, using PHP. While it was hosted on a Linux server, there were
    > no problems,
    > but once I transferred it to FreeBSD, gettext() doesn't translate
    > anything. Here's my directory structure:
    >
    > public_html
    > |-- index.php
    > `-- locale
    > |-- en_US.ISO8859-1
    > | `-- LC_MESSAGES
    > | |-- OOModelProvider.mo
    > | `-- OOModelProvider.po
    > `-- sr_YU.ISO8859-2
    > `-- LC_MESSAGES
    > |-- OOModelProvider.mo
    > `-- OOModelProvider.po
    >
    > And here's the function that calls php locale-related functions:
    > /* domain is "OOModelProvider", language is "en_US.ISO8859-2"
    > */
    > function setLocale( $language, $domain )
    > {
    > @bindtextdomain( $domain, "/home/darko/public_html/
    > locale/" );
    > @bind_textdomain_codeset( $domain, "utf-8" );
    >
    > if ( ! @setlocale( LC_MESSAGES, $language ) )
    > throw new Exception( "setlocale" );
    > textdomain( $domain );
    > }
    >
    > This worked perfectly on Linux, but it doesn't work with FreeBSD. I
    > read somewhere that libintl needs to be installed for LC_MESSAGES, but
    > 1. it is installed 2. LC_ALL instead of LC_MESSAGES doesn't work
    > neither.
    >
    > Another important note: LC_DATE works, i.e. sprintf and strftime
    > (which are locale-aware) work as expected, that is, they print the
    > strings in expected languages.
    >
    > Also, after I do setlocale(LC_MESSAGES, $language), I call it with "0"
    > as the second argument and it returns the correct locale set.
    >
    > Please, if you have any ideas, post them here.
    >
    > Thanks.


    Also, even when I *which was a mistake) put ISO8859-1 in
    bind_textdomain_codeset, it doesn't work neither.


  3. Re: FreeBSD locales

    On Oct 26, 4:44 pm, Darko wrote:
    > Hi,
    >
    > I have problems implementing i18n on my site hosted on a FreeBSD
    > server, using PHP. While it was hosted on a Linux server, there were
    > no problems,
    > but once I transferred it to FreeBSD, gettext() doesn't translate
    > anything. Here's my directory structure:
    >
    > public_html
    > |-- index.php
    > `-- locale
    > |-- en_US.ISO8859-1
    > | `-- LC_MESSAGES
    > | |-- OOModelProvider.mo
    > | `-- OOModelProvider.po
    > `-- sr_YU.ISO8859-2
    > `-- LC_MESSAGES
    > |-- OOModelProvider.mo
    > `-- OOModelProvider.po
    >
    > And here's the function that calls php locale-related functions:
    > /* domain is "OOModelProvider", language is "en_US.ISO8859-2"
    > */
    > function setLocale( $language, $domain )
    > {
    > @bindtextdomain( $domain, "/home/darko/public_html/
    > locale/" );
    > @bind_textdomain_codeset( $domain, "utf-8" );
    >
    > if ( ! @setlocale( LC_MESSAGES, $language ) )
    > throw new Exception( "setlocale" );
    > textdomain( $domain );
    > }
    >
    > This worked perfectly on Linux, but it doesn't work with FreeBSD. I
    > read somewhere that libintl needs to be installed for LC_MESSAGES, but
    > 1. it is installed 2. LC_ALL instead of LC_MESSAGES doesn't work
    > neither.
    >
    > Another important note: LC_DATE works, i.e. sprintf and strftime
    > (which are locale-aware) work as expected, that is, they print the
    > strings in expected languages.
    >
    > Also, after I do setlocale(LC_MESSAGES, $language), I call it with "0"
    > as the second argument and it returns the correct locale set.
    >
    > Please, if you have any ideas, post them here.
    >
    > Thanks.


    Nobody answered, but I found the solution on some old forum. I know
    how it feels when you find someone had already asked the same question
    that troubles you, but no answers are given. For the moment you feel
    happy, and then you get dissappointed.

    Anyway, it seems that stupid FreeBSD doesn't care about what you say
    with setlocale(), but instead you have to use the antique technique of
    putenv( "LANG=en_US.ISO1859-1" );

    So, I finished using setlocale for Linuces (since FreeBSD doesn't
    report an error for it, though it doesn't work anything), and the next
    line is putenv( ... ), and it works ok.

    Bye,

    Darko


+ Reply to Thread