An i18n library for PHP

This package's canonical repository appears to be gone and the package has been frozen as a result.

1.1.1 2015-10-30 09:06 UTC

This package is not auto-updated.

Last update: 2024-01-20 12:00:51 UTC


README

Latest Stable Version Total Downloads Build Status

PHP I18n

PHP I18n is a simple library for storing localized strings outside of your code.

Installing

Add the following require to your composer.json file.

{
    "require": {
        "rubyrainbows/i18n": "1.1.*"
    }
}

Setup

Language Folder

In order to use i18n, you will need a language folder. By convention this folder is config/locales, however, you can choose whichever you want. In this folder, each supported language requires its own folder (config/locales/en, config/locales/de, ...).

Use in PHP

You will most likely be using the I18n class in your own implementation, so you are just given a class which you can write a wrapper class for in your own code. All you need to do to create this class is give it the path to the language folder you decided on before.

<?php

use RubyRainbows\I18n\Lang;

$lang = new Lang( dirname(__FILE__) . '/config/locales' );

Example Usage

Notice: Currently, only yaml files are supported.

For this example, the language folder is at config/locales.

Create a file config/locales/en/example.yml

foo: bar
nested:
  foo: bar
var: foo :var
plural:
  one: A :color apple
  other: :count :color apples

And a dialect file config/locales/en_US/example.yml

foo: murica

Note: Take note of the yml file name as it will be the first part of your key (example.yml => example).

Now we can load the translation class and get our translated string.

<?php

use RubyRainbows\I18n\Lang;

$lang = new Lang( dirname(__FILE__) . 'config/locales' );

/**
 * normal translated string
 *
 * @param string $locale
 * @param string $key
 */
$lang->get( 'en', 'example.foo' ); // returns 'bar'


/**
 * nested translated strings
 *
 * @param string $locale
 * @param string $key
 */
$lang->get( 'en', 'example.nested.foo' ); // returns 'bar'

/**
 * Variable translated string
 *
 * @param string $locale
 * @param string $key
 */
$lang->get( 'en', 'example.var', ['var' => 'bar']); // returns 'foo bar'

/**
 * Plural translated strings
 *
 * @param string $locale
 * @param string $key
 * @param int    $count
 */
$lang->get( 'en', 'example.plural', ['color' => 'red'], 1); // returns 'A red apple'
$lang->get( 'en', 'example.plural', ['color' => 'red'], 2); // returns '2 red apples'

/**
 * Dialect translated strings
 */
$lang->get( 'en_US', 'example.foo' );         // returns 'murica'
$lang->get( 'en_US', 'example.nested.foo' );  // returns 'bar' as it falls back to en