[Development Guides Home](/guides) >> [Guide to Template Toolkit](/guides/guide-to-template-toolkit)

# Guide to Template Toolkit - Localization in Template Toolkit

## Introduction

Use localization in Template Toolkit files to produce dynamic interfaces in multiple languages. [Localization](https://en.wikipedia.org/wiki/Language_localisation/) refers to the translation of text from one language to multiple other languages, as well as the addition of cultural adaptations to make a product usable globally.

cPanel & WHM uses the locale system to localize phrases. For more information, read our [Guide to Locales](/guides/guide-to-locales/) documentation.

Note:
Before you write text for localized user interfaces, we strongly recommend that you review our Best Practices documentation.

## Localized text in Template Toolkit

Localized phrases in Template Toolkit files use the following syntax:

`[% locale.maketext('Your localized phrase goes here.') %]`

The template passes everything between the single quotes (`''`) through the locale system as a single localized phrase. To reuse phrases as often as possible, which significantly lowers translation costs, we recommend that you divide sentences into separate `locale.maketext` calls whenever possible.

* You **must** call the `locale.maketext` function inside of brackets and percent signs (`[% %]`).
* The localization system has [specific requirements for special characters and other formatting conventions](/guides/guide-to-locales/).
  * To use an apostrophe in the text, use a single curly quote (`’`) rather than a third single straight quote (`'`):

```
  [% locale.maketext(‘Real life? You couldn't handle real life.’) %]
```
  * To use quotes in the text, use a double curly quote ( `“ ”` ) rather than double straight quotes (`""`):

```
[% locale.maketext('“Curse your sudden but inevitable betrayal!”') %]
```
  * You **cannot** include HTML in `locale.maketext` strings.


### Variables

To pass variables into localized phrases, use the following syntax:


```
[% locale.maketext('The system set up your email address [_1] on your domain [_2].', email, domain) %]
```

This template code passes the phrase through the locale system, and then replaces the variables (`[_1]` and `[_2]`) with the variables' values (`email` and `domain`, respectively).

If the `email` value is `user@example.com` and the `domain` value is `example.com`, the template displays the following text, localized for the authenticated user:


```
The system set up your email address user@example.com on your domain example.com.
```

For more information about variables in localized phrases, read CPAN's Locale::Maketext::Utils documentation.

### Conditionals

To display different localized phrases based on a variable's value, use `IF` and `ELSE` conditions:


```
[% IF country_name %]
   [% locale.maketext('This computer's location appears to be: [_1] ([_2]).', country_name, country_code) %]
[% ELSE %]
   [% locale.maketext('The system failed to look up the IP address's geographical origin because of an error: [_1]', country_lookup_error) %]
[% END %]
```

* Line 1 and 2 set an `IF` condition that displays a string if the `country_name` variable exists and has a value.
* Line 3 and 4 set up an `ELSE` condition that displays an alternate string if the first condition's requirements are not met.
* Line 5 ends the conditional statement.