Revision #8 was created by JQL on Nov 24, 2023, 9:03:39 PM.
More formatting errors & some typos
Content
[...]
## Create the required Files
First you need to create a configuration file.
Decide where to store it (e.g. in the `./messages/` directory with the name `create_i18n.php`). Create the directory in the project then issue the following command from **Terminal** (Windows: CMD) from the root directory of your project:
If necessary, change the root directory in `create_i18n.php` to point to the messages directory - the default is `messages`. Note, if the above file is in the messages directory (recommended) then don't alter this `'messagePath' => __DIR__,`. If you alter the directory for `create_i18n.phpmessages` to, say, `/config/` (not a good idea) you can use the following:
```php
[...]
```
Note: you should always use the `'sourceLanguage' => 'en'` as it is, usually, easier and cheaper to translate from English into another language. If the `sourceLanguage` is not set it defaults to `'en'`.
Add the following to the `'components' => [...]` section:
The `key` is the ICU language code in lowercase (with optional country code in uppercase) e.g.
> French: `fr` or French Canada: `fr-CA`
>
> Portuguese: `pt` or Portuguese Brazil: `pt-BR`
The `name` is the name of the language *in that language*. Fe.g. for French: `'Français'`, for Japanese: `'日本の'`. This is important as the user may not understand the browser's current language.
In `/config/params.php` create an array named `languages` with the languages required. For example:
[...]
### 4. Call `LanguageHandler.php` from `/config/web.php`
"Call" the `LanguageHandler.php` file from `/config/web.php` by adding the following to either just above or just below `'params' => $params,`
```php
[...]
'encodeLabels' => false, // Optional but required to enter HTML into the labels for images
'items' => $items, // add the languages into the Dropdown
],
```
The code for in `main.php` for the NavBar should look something like this:
```php
NavBar::begin([
'brandLabel' => Yii::$app->name, // set in /config/web.php
'brandUrl' => Yii::$app->homeUrl,
[...]
Internationalisation should now be working on your project.
---
## Optional Items
The following are optional but may help both you and/or the user.
[...]
There are two steps:
1.**A.** In `/config/web.php uncomment` the following line:
```php
[...]
```
2.**B.** Create a TranslationEventHandler:
In `/components/` create a file named: `TranslationEventHandler.php` and add the following code to it:
[...]
```
If there is a missing translation, the text is replaced with a message similar to the following text:
> @MISSING: app.Logout (John) FOR LANGUAGE fr @
[...]
This is very useful and recommended as it aids the User to locate the correct language. There are a number of steps for this.
1.**a.** Create images of the flags.
The images should be 25px wide by 15px high. The images **must have** the same name as the language key in the language array in params.php. For example: `fr.png` or `en-US.png`. If the images are not of type ".png" change the code in part 2**b.** below to the correct file extension.
Place the images in a the directory `/public_html/images/flags/`.
2.**b.** Alter the code in `/views/layouts/main.php` so that the code for the "NavBar" reads as follows: