How to Create Translation Files for WordPress Themes

0

1. Preparing for WordPress Theme Translation

Defining the Text Domain

First, you need to define the text domain in the theme’s `functions.php` file. This is required to load the translation files.

function my_theme_setup() {
    load_theme_textdomain('my-theme', get_template_directory() . '/languages');
}
add_action('after_setup_theme', 'my_theme_setup');

Using the Text Domain

Wrap the text to be translated with the translation functions, using the specified text domain.

<?php
echo __('Hello, World!', 'my-theme'); // Single string translation
_e('Welcome to my site!', 'my-theme'); // Direct output translation
?>

2. Creating Translation Files Using Poedit

Installing Poedit and Starting Translation Files

  • Install Poedit: Download and install [Poedit](https://poedit.net/).
  • Create a New Translation File: Open Poedit and click ‘New Translation’. Select the desired language (e.g., Korean `ko`).
  • Extract Strings: Click ‘Catalog > Update from Sources’ to automatically extract all translatable strings from the theme files.
  • Input Translations: Translate each extracted string and enter the translations.
  • Save .po and .mo Files: Poedit generates `.po` and `.mo` files. The file names follow the format `textdomain-languagecode_countrycode`. For example, `my-theme-ko_KR.po` and `my-theme-ko_KR.mo`.
  • Save File Location: Save the generated files in the theme’s `languages` folder.

3. Creating Translation Files Using gettext Commands

You can also use the terminal to create translation files instead of Poedit.

Installing gettext Tools and Creating Translation Template Files

sudo apt-get install gettext
xgettext --language=PHP --keyword=__ --keyword=_e --output=my-theme.pot path/to/theme/**/*.php

Generating .mo Files from .po Files

msgfmt my-theme-ko_KR.po -o my-theme-ko_KR.mo

4. Translation File Structure

The structure for storing translation files in the `languages` folder is as follows:

my-theme/
│
├── languages/
│   ├── my-theme-ko_KR.po
│   └── my-theme-ko_KR.mo
├── functions.php
...

5. Verifying Translation File Loading

To verify that the translation files are loaded correctly, add the following code to the `functions.php` file:

add_action('after_setup_theme', function() {
    load_theme_textdomain('my-theme', get_template_directory() . '/languages');
});

Summary

  • Store the translation files in the theme’s `languages` folder.
  • Use `load_theme_textdomain` in the `functions.php` file to load the translation files.
  • Create .po and .mo files using Poedit or `gettext` tools.

Following this process, you can translate a WordPress theme for multilingual support, providing a better experience for global users.

Appendix

Understanding the Default Path of `get_stylesheet_uri()`

The `get_stylesheet_uri()` function returns the URI of the `style.css` file of the currently active theme. The default path is the WordPress installation directory `wp-content/themes/[active theme folder]`. For example, you can use the following code to get the URI of the theme’s `style.css`:

<?php
$stylesheet_uri = get_stylesheet_uri();
echo $stylesheet_uri; // Example output: http://example.com/wp-content/themes/your-theme/style.css
?>

This function internally uses `get_stylesheet_directory_uri()` to return the URI of the current theme directory, appending `’/style.css’` to it.

Creating translation files and understanding the default path are essential steps in building a multilingual support site. This guide helps you perform translation tasks efficiently.

Leave a Reply