Co to jest internacjonalizacja w WP?
Internacjonalizacja jest to inaczej tłumaczenie pewnych wyrażeń zarówno we front endzie jak i back endzie WP na język narodowy usera.
Plik pot.
Plik nazwa_pluginu.pot jest plikiem tekstowym o formacie utf-8 który posiada odpowiedni wzorzec(patrz poniżej).Plik ten jest odczytywany przez program PoEdit.Plik nie zawiera tłumaczeń jest wzorcem do tłumaczeń.
Plik .po i plik .mo
Pliki z takimi rozszerzeniami są generowane prze program PoEdit na podstawie pliku .pot. Nazewenictwo prócz różnic w rozszerzeniach plików jest identyczne wg wzoru: nazwa_pluginu-pl_PL.po ( na koniec nazwa kraju i jego języka oraz odpowiednie rozszerzenie).WP korzysta w tłumaczeniach z pliku .mo

Użycie PoEdit.
Ściągnij i zainstaluj program PoEdit
Link download PoEdit: https://poedit.net/download
Gdy utworzysz ( ręcznie) odpowiednio spreparowany plik .pot( wersja niekomercyjna PoEdit nie generuje plików pot), kliknij dwukrotnie plik. Jeśli plik nie otoworzy się za pomocą PoEdit wybierz ten program jako domyślny dla plików z tym rozszerzeniem. Po otwarciu plików kliknij przycisk utwórz nowe tłumaczenie. Kliknij wybrany przez Ciebie język na który chcesz przetłumaczyć plugin.

Uwaga !!! Nazewnicto plików pot mo i po odbywa się tutaj w kontekście pluginów. Inaczej ma się rzecz przy stosowaniu tłumaczeń motywów WP , tam należy stosować nazwę motywu jako część składowa nazw plików.

#, fuzzy
msgid ""
msgstr ""
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" #sposob interpretacji liczby mnogiej rzeczownikow
"Project-Id-Version: My Simple Google Map Plugin\n" #nazwa pluginu zgodnosc z deklaracja naglowka pluginu
"POT-Creation-Date: 2015-10-05 10:23-0500\n" #data stworzenia pliku pot
"PO-Revision-Date: 2015-10-05 10:23-0500\n" #data korekty pliku pot
"Last-Translator: Pawel Kalisz <monkeyfashion@op.pl>\n" #nazwa i email tłumacza
"Language-Team:My Group <mygroup@gl.pl>\n" #nazwa grupy i eamil tlumaczy
"MIME-Version: 1.0\n" #wersja protoklu obslugujacego email
"Content-Type: text/plain; charset=UTF-8\n" #sposob kodowania znakow
"Content-Transfer-Encoding: 8bit\n" #sposob kodowania znakow( maszynowy- njprwd postac maszynaowa)
"X-Generator: Poedit 1.8.5\n" #wersja poedit
"X-Poedit-Basepath: ..\n" #oznacza ze plik z tlumaczeniem znajduje sie w podfolderze aplikacji
"X-Poedit-WPHeader: my-simple-google-map-plugin.php\n" #nazwa pliku z tlumaczeniem
"X-Poedit-SourceCharset: UTF-8\n" #sposob kodowania
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;" #lista slow kluczy po ktorych zanki #maja być tłumaczone
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
"X-Poedit-SearchPath-0: .\n"
"X-Poedit-SearchPathExcluded-0: *.js\n"
#: my-simple-google-map-plugin.php:9
msgid ""
"Geocode Settings"
msgstr ""

#: my-simple-google-map-plugin.php:12
msgid ""
"Enter any address"
msgstr ""

#
#. Plugin Name of the plugin/theme
msgid "My Simple Google Map Plugin"
msgstr ""

#. Description of the plugin/theme
msgid "Adds a simple Google Maps short code"
msgstr ""

#. Author of the plugin/theme
msgid "Paweł Kalisz"
msgstr ""

#. Author URI of the plugin/theme
msgid "http://websitecreator.com"
msgstr ""

Funkcje odpowiednich linijek oznaczyłem w komentarzach pliku powyżej poprzedznoch znakiem hash -#. Przykładowa linijka do tłumaczenie w pliku .pot:

#: my-simple-google-map-plugin.php:12- nazwa pliku gdzie występuje fraza z tłumaczeniem oraz numer linijki w pliku
gdzie ma być szukana fraza do tłumaczenia.
msgid „”
„Enter any address”- fraza podlegająca tłumaczeniu
msgstr „”

przykladowa implementacja

function pw_map_textdomain() {

// Set filter for plugin’s languages directory
$lang_dir = dirname( plugin_basename( __FILE__ ) ) . ‚/languages/’;
$lang_dir = apply_filters( ‚pw_map_languages_directory’, $lang_dir );

// Load the translations
load_plugin_textdomain( ‚my-simple-google-map-plugin’, false, $lang_dir );
}
add_action( ‚init’, ‚pw_map_textdomain’ );

///////////////////////////////////////////////////////////
add_settings_section( ‚my_google_map_plugin_settings_section’,
__(‚Geocode Settings’, ‚my-simple-google-map-plugin’),
‚geocode_settings_section_callback’,
‚option_Group’ );

add_settings_field(‚geocoder_sample_input’,
__(‚Enter any address’, ‚my-simple-google-map-plugin’),
‚geocode_input_callback’,
‚option_Group’,
‚my_google_map_plugin_settings_section’);