Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How do I change languages? #1

Closed
coldKingdom opened this issue Jun 28, 2015 · 6 comments
Closed

How do I change languages? #1

coldKingdom opened this issue Jun 28, 2015 · 6 comments

Comments

@coldKingdom
Copy link

Hello!

I'm sorry for probably being stupid, but how do I change the language?

I have set the language to 'sv' in app.php, but it's still in English.
Trying to do a set_locale results in undefined function.

Thank you in advance!

@clusteramaryllis
Copy link
Owner

might want to ask you first, what version did you use of this package?

@coldKingdom
Copy link
Author

Sorry, I use 1.1.0.

@clusteramaryllis
Copy link
Owner

Whoops, sorry. It should be fixed on 1.1.1

well if you change locale in app.php,
to change language you can use e.g.

set_locale(LC_ALL, \Config::get('app.locale'));

@coldKingdom
Copy link
Author

It's alright :)

Seems to be working now, except that I don't get the Swedish language to be loaded.
I have translated all the strings and saved it, tried restarting Apache for caching issues. But no luck.

Any ideas? :)

@clusteramaryllis
Copy link
Owner

I tried some sample

  1. create view on: resources/views/test.blade.php
{!! _('We have e-mailed your password reset link!') !!}
  1. run php artisan vendor:publish to publish the config

  2. add some locale in config/gettext.php in languages array

    'languages' => [
        'en' => [
            'locale' => 'en_US',
            'encoding' => 'utf-8',
            'plural_forms' => "nplurals=2; plural=(n != 1);",
        ],
        'sv' => [
            'locale' => 'sv_SE', // usually use IDLanguage_IDCountry format like suggested in phptal.org/manual/en/split/gettext.html
            'encoding' => 'utf-8',
            'plural_forms' => "nplurals=2; plural=(n != 1);",
        ],
    ],
  1. run php artisan gettext:create --sources="resources\views". This will generate .po files in
resources\locale\en_US\LC_MESSAGES\messages.po
resources\locale\sv_SE\LC_MESSAGES\messages.po

& scan files on resources/views directory.

  1. I usually edit .po files using PoEdit (clicking update, start translating, and save). It will generate .mo file in the same place.

  2. simple test in my route

Route::get('lang/{id}', function($id) {

    $lang = Config::get('gettext.languages.'.$id);

    set_locale(LC_ALL, $lang['locale'].'.'.$lang['encoding']); // e.g. sv_SE.utf-8
    bindtextdomain('messages', base_path('resources/locale')); // locate to correct path
    textdomain('messages'); // set default domain

    return view('test');
});

Test
seems working

This test is on WINDOWS machine. Should be working on UNIX also since Unit Test passing on travis.

@coldKingdom
Copy link
Author

Thank you very much!

I really appreciate your help. For a newbie like me, it's not really obvious to set bindtextdomain and textdomain, didn't even realize set_locale existed before I looked in your tests. :)

It would be nice to add these explanations to the readme file.

Good work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants