Что такое код textdomain


Содержание

Что такое bindtextdomain, textdomain в gettext? — php

Я изучал немного gettext, но я не могу понять эти две функции. Мне было интересно, могу ли я использовать несколько переводов в APP, написанном на PHP. Для примера у меня 1) перевод системы 2) переводы расширений 3) переводы тем, чтобы разделить их в разных файлах. Мой вопрос заключается в том, что если я загружу перевод системы, то загрузите перевод темы, первый будет «неустановлен»?

Буду признателен за любые ссылки, связанные с gettext и php.

    1 1
  • 16 июл 2020 2020-07-16 03:18:13
  • allenskd

1 ответ

Вы можете легко переключаться между текстовыми доменами, когда захотите. например:

Вы можете использовать что-то вроде следующего кода PHP для переключения с одного текстового домена на другой, а затем обратно:

Что такое код textdomain

A message domain is a set of translatable msgid messages. Usually, every software package has its own message domain.

By default, the gettext family of functions returns translated messages in the locale’s character encoding, which can be retrieved as nl_langinfo(CODESET) . The need for calling bind_textdomain_codeset arises for programs which store strings in a locale independent way (e.g. UTF-8) and want to avoid an extra character set conversion on the returned translated messages.

domainname must be a non-empty string.

If codeset is not NULL, it must be a valid encoding name which can be used for the iconv_open function. The bind_textdomain_codeset function sets the output codeset for message catalogs belonging to domain domainname to codeset . The function makes copies of the argument strings as needed.

If codeset is NULL, the function returns the previously set codeset for domain domainname . The default is NULL, denoting the locale’s character encoding.

Что такое bindtextdomain, textdomain в gettext?

Я немного изучил gettext, но не могу понять эти две функции. Мне было интересно, могу ли я использовать несколько переводов в приложении, написанном на PHP. Например, у меня есть 1) системный перевод 2) переводы расширений 3) переводы тем, чтобы разделить их на разные файлы. У меня вопрос: если я загружу системный перевод, то при загрузке перевода темы первый будет «не установлен»?

Буду признателен за любые ссылки, связанные с gettext и php.

1 ответ

Вы можете легко переключаться между текстовыми доменами, когда захотите. например:

Вы можете использовать что-то вроде следующего кода PHP для переключения с одного текстового домена на другой, а затем обратно:

textdomain — Устанавливает домен по умолчанию

(PHP 4, PHP 5, PHP 7)

textdomain — Устанавливает домен по умолчанию

Описание

Данная функция устанавливает домен, в котором будет производиться поиск при вызове функции gettext() , обычно называется именем приложения.

Список параметров

Новый домен сообщений, или NULL для получения текущего значения без его изменения.

Возвращаемые значения

В случае успеха данная функция возвращает текущее домен сообщений, после возможного его изменения.

Очередной блог фрилансера

коротко и полезно о веб-разработке

Как создать переводимую тему для WordPress

Кроме английского языка, наиболее распространенного в интернете, неплохо было бы подумать о людях, говорящих на других языках, которым часто приходится локализовать WordPress-темы. В сегодняшнем пошаговом руководстве, вы научитесь создавать тему для WordPress, которая будет переводимой для любого языка.

Илон Маск рекомендует:  Что такое код sybase_min_message_severity

Шаг 1 – Добавление необходимых функций

Давайте начнем с основы: вставьте следующий код в ваш файл functions.php.

В первой строке находится функция load_theme_textdomain() . Эта функция позволяет загрузить Текстовый Домен. Вы можете выбрать для него любое имя, но помните, что оно должно быть уникальным. Так что наиболее практичным будет назвать его также как и саму тему.

Шаг 2 – Интернационализируйте свою тему

Для перевода нашей WordPress-темы, мы будем использовать функции PHP gettext .

GetText имеет две функции: _e и __ (два подчеркивания).

Функция _e используется для печати «простого текста», а функция ___ используется в тех случаях, когда отображаемый текст заключен в php-тэги.

Примеры:

Снова обратите внимание на имя текстового домена (Cats Who Code) выше, помните, что оно должно быть точно таким же, как и в файле functions.php.

Самая скучная часть работы заключается в том, что вам придется заменить каждую одиночную строчку необходимой функцией. В зависимости от того, как много строк имеется в вашей теме, это может занять значительное количество времени. Я что-то слышал о GNU-инструментах, для более простого получения строк из файла, но сам никогда ими не пользовался, поэтому не могу ничего сказать. Если интересуетесь, поищите в гугле xgettext.

Шаг 3 – Создание собственного файла .po

Теперь, ваша тема WordPress, может быть легко переведена на любые языки. Но для отображения текста на иностранном языке, вам понадобится добавить файл .po .

.po файл расшифровывается как Portable Object, в основном эти файлы содержат строку и ее перевод на другой язык. Например, если вы загрузите французскую версию WordPress, у вас в архиве будет находиться файл fr_FR.po. Этот файл содержит все переводы, необходимые для того, чтобы ваша тема заговорила по-французски, так что она скажет Bienvenue, вместо обычного Welcome.

Хорошие новости в том, что вам не придется выискивать все, необходимые для перевода строчки в вашей теме. Существует бесплатный онлайн-инструмент под названием icanlocalize.com, который умеет сканировать PHP-файлы, и создавать .po файлы, посредством выбора всех строк, заключенных в функции __(«txt», «домен») , и _e(«txt», «домен») . Строки должны быть заключены в либо в двойные, либо в одинарные кавычки, в любой символьной кодировке.


Po файлы можно отредактировать с помощью PoEdit, бесплатной программы, специально предназначенной для этой задачи:

Как вы уже наверное догадались, вы можете перевести каждую строку текста. После того как все переведете, сохраните .po файл. PoEdit также генерирует .mo файл, который представляет собой скомпилированную версию .po файла.

Шаг 4 – Реализация

Теперь осталось выполнить наиболее «сложную» часть работы. Единственное, что вам осталось сделать, это описать вашу WordPress локаль.

Для этого, вам сначала нужно получить ваш язык и код страны. Например, если ваш язык французский, и ваше местоположение – Франция, ваш код будет fr_FR. GNU-инструкция по gettext , содержит страницы, который помогут вам найти коды и вашей страны и языка.

После того, как вы узнаете ваши коды, откройте файл wp-config и найдите константу WPLANG . Если она существует, просто замените существующий код, своим. Если ее нет, просто вставьте следующую строчку (со своим собственным кодом, конечно же)

Перевод статьи «How to make a translatable WordPress theme«, автор Jean-Baptiste Jung

Рассказать друзьям

Понравилась статья? Лучший способ сказать спасибо — поделиться ссылкой в социальных сетях:

Как локализовать проект при помощи mo файлов?

Проводить локализацию проектов PHP, и тем более WordPress, силами gettext не приходилось, но на днях делал это с некоторыми bash-скриптами. Возможно мой опыт будет полезен.

1. Необходимо определить домен и область поиска файлов сообщений.
Домен задается функцией textdomain, а путь к ресурсам — bindtextdomain.

2. В коде, весь локализуемый текст следует выводить через функцию gettext. Например:
Можно использовать фразы, либо ключи.

Если использовать фразы, то не нужно будет создавать ресурсы для языка по умолчанию. Из минусов такого подхода, то что некоторые фразы могут иметь разное значение в зависимости от контекста использования, но эту проблему в принципе можно решить перефразированием.

Если использовать ключи (например, MSG_ABOUT_TEXT1), то придется создавать ресурсы для языка по умолчанию. При отсутствии ресурсов, или если что-то сломается, пользователю будут выводиться ключи, что не очень хорошо.

Какой подход выбрать, зависит от сложности проекта и предпочтений. Фразы проще и проблем с ними в небольших проектах точно не будет.

Илон Маск рекомендует:  Хакатон TopFace

3. Необходимо извлечь строки из кода и создать файлы po. Делается это при помощи набора инструментов gettext. Если ранее этим заниматься не приходилось, то скорее всего придется выполнить установку необходимых компонентов.

Под Debian/Ubuntu установить пакет gettext можно следующей командой:

sudo apt-get install gettext

Под остальными разновидностями Linux систем в общем-то примерно также, только диспетчер пакетов будет другим.

Под Windows мне не доводилось этим заниматься. Думаю, можно что-нибудь найти. Например, sourceforge.net/projects/gettext

Я опишу только порядок действий под Linux (конкретно Debian).

Для создания po-файла необходимо выполнить следующую команду:

—default-domain — имя домена, должно соответствовать домену, который используется в коде PHP (textdomain). Не путать с доменом сайта, хотя обычно используется название проекта;
—from-code=имя кодировки текста. Например: utf-8;
—extract-all — указывает на необходимость извлечения всех строк.

Дополнительно можно указать параметры:

—output=имяФайла.po — по умолчанию строки будут извлечены в файл messages.po, этот параметр позволяет указать любое имя файла;
—no-wrap — запрет разбития длинных строк;
—join-existing — если есть предыдущие извлеченные строки, то эта опция указывает на необходимость склейки новых найденных строк с существующими (использовать, только если po-файл существует);
—copyright-holder=»Вася Пупкаидзе» — кому принадлежат авторские права.

Параметр —help позволяет посмотреть список всех параметров :-)

Программа создаст po-файл примерно следующего содержания:

msgid — это идентификатор сообщения.
msgstr — перевод.

После указания перевода и сохранения изменений в файле po:

Его необходимо компилировать в файл mo.
Делается это при помощи команды msgfmt:

Для себя я написал следующий bash-скрипт, который компилирует все файлы po в каталоге (включая все подкаталоги), в котором был запущен скрипт:

Если все пройдет без эксцессов, файлы mo следует разместить по подпапкам LC_MESSAGES нужных культур, которые должны располагаться в папке указанной в коде PHP функцией bindtextdomain. Запутано вышло, проще показать :-)

, то структуру размещения файлов mo:

/local — часть пути, указанная в коде PHP: bindtextdomain(‘example’, ‘./local‘);
Код культуры — это стандартный (ISO 639) двузначный код языка, или код языка с указанием кода региона (ISO 639 + ISO 3166): ru (русский язык), ru_RU (русский язык, Россия), en (английский язык), en_US (американский английский) и т.п.

Честно говоря, я не вижу пока никаких особых преимуществ от использования gettext. Слишком сложный процесс генерирования всех этих po и mo. Проще и удобней текстовой файл с нужными ресурсами создать, или использовать базу. Хотя работу с gettext можно автоматизировать, но придется потратить на это время.

Что такое тема textdomain?

Я обнаружил, что любая тема WordPress использует эти функции, но я не понимаю, в чем ее цель и что это такое, в данном случае ‘themify’ ? Вот несколько примеров в Theimify functions.php :

И в файле tempate:

И еще много! Мое сомнение – это то, что означает ‘themify’ ? В чем их цель? Могу ли я изменить его или удалить? Какое место, ‘themify’ , для?

Solutions Collecting From Web of «Что такое тема textdomain?»

В этом случае ‘themify’ – это определенный текстовый домен для темы, используемый для перевода темы . (Ссылка Codex: load_theme_textdomain() ).

Для подготовки к переводу темы требуется несколько шагов.

Определите текстовую область темы :

Определить переводимые строки в шаблоне.

Это делается с помощью одной из нескольких функций перевода: __() (для возвращаемых строк), _e() (для эхо- строк) и _x() / _ex() (для строк контекста gettext ). Есть и другие, но вы получаете идею …

Статическая текстовая строка, такая как

, завернута в соответствующую функцию перевода, такую ​​как

, чтобы сделать его доступным для перевода.

Создание файлов .mo / .po
ссылка на редактирование языковых файлов


FPublisher

Web-технологии: База знаний

Документация PHP

bind_textdomain_codeset

(PHP 4 >= 4.2.0, PHP 5)

bind_textdomain_codeset — Устанавливает кодировку, в которой будут возвращаться сообщения

Description

string bind_textdomain_codeset ( string $domain , string $codeset )

Функция bind_textdomain_codeset() устанавливает кодировку, в которой будут возвращаться сообщения из domain , такими функциями как gettext().

Последние поступления:

ТехЗадание на Землю

Размещена 14 марта 2020 года

Пpоект Genesis (из коpпоpативной пеpеписки)

Шпаргалка по работе с Vim

Размещена 05 декабря 2020 года

Vim довольно мощный редактор, но работа с ним не всегда наглядна.
Например если нужно отредактировать какой-то файл например при помощи crontab, без знания специфики работы с viv никак.

Илон Маск рекомендует:  Скруглённые уголки в CSS

Ошибка: Error: Cannot find a val >Размещена 13 сентабря 2020 года

Если возникает ошибка на centos 5 вида
YumRepo Error: All mirror URLs are not using ftp, http[s] or file.
Eg. Invalid release/

Linux Optimization

Размещена 30 июля 2012 года

Linux.yaroslavl.ru

Учебник РНР
Назад Вперёд

(PHP 3>= 3.0.7, PHP 4)

textdomain — домен по умолчанию.

Описание

string textdomain (string text_domain)

Эта функция устанавливает домен для поиска в нём, когда делаются вызовы gettext() , именуемый обычно после приложения. Возвращается предыдущий домен по умолчанию. Вызывайте её с NULL в качестве параметра для получения текущей установки без изменения.

Очередной блог фрилансера

коротко и полезно о веб-разработке

Как создать переводимую тему для WordPress

Кроме английского языка, наиболее распространенного в интернете, неплохо было бы подумать о людях, говорящих на других языках, которым часто приходится локализовать WordPress-темы. В сегодняшнем пошаговом руководстве, вы научитесь создавать тему для WordPress, которая будет переводимой для любого языка.

Шаг 1 – Добавление необходимых функций

Давайте начнем с основы: вставьте следующий код в ваш файл functions.php.

В первой строке находится функция load_theme_textdomain() . Эта функция позволяет загрузить Текстовый Домен. Вы можете выбрать для него любое имя, но помните, что оно должно быть уникальным. Так что наиболее практичным будет назвать его также как и саму тему.

Шаг 2 – Интернационализируйте свою тему

Для перевода нашей WordPress-темы, мы будем использовать функции PHP gettext .

GetText имеет две функции: _e и __ (два подчеркивания).

Функция _e используется для печати «простого текста», а функция ___ используется в тех случаях, когда отображаемый текст заключен в php-тэги.

Примеры:

Снова обратите внимание на имя текстового домена (Cats Who Code) выше, помните, что оно должно быть точно таким же, как и в файле functions.php.

Самая скучная часть работы заключается в том, что вам придется заменить каждую одиночную строчку необходимой функцией. В зависимости от того, как много строк имеется в вашей теме, это может занять значительное количество времени. Я что-то слышал о GNU-инструментах, для более простого получения строк из файла, но сам никогда ими не пользовался, поэтому не могу ничего сказать. Если интересуетесь, поищите в гугле xgettext.

Шаг 3 – Создание собственного файла .po

Теперь, ваша тема WordPress, может быть легко переведена на любые языки. Но для отображения текста на иностранном языке, вам понадобится добавить файл .po .

.po файл расшифровывается как Portable Object, в основном эти файлы содержат строку и ее перевод на другой язык. Например, если вы загрузите французскую версию WordPress, у вас в архиве будет находиться файл fr_FR.po. Этот файл содержит все переводы, необходимые для того, чтобы ваша тема заговорила по-французски, так что она скажет Bienvenue, вместо обычного Welcome.

Хорошие новости в том, что вам не придется выискивать все, необходимые для перевода строчки в вашей теме. Существует бесплатный онлайн-инструмент под названием icanlocalize.com, который умеет сканировать PHP-файлы, и создавать .po файлы, посредством выбора всех строк, заключенных в функции __(«txt», «домен») , и _e(«txt», «домен») . Строки должны быть заключены в либо в двойные, либо в одинарные кавычки, в любой символьной кодировке.

Po файлы можно отредактировать с помощью PoEdit, бесплатной программы, специально предназначенной для этой задачи:

Как вы уже наверное догадались, вы можете перевести каждую строку текста. После того как все переведете, сохраните .po файл. PoEdit также генерирует .mo файл, который представляет собой скомпилированную версию .po файла.

Шаг 4 – Реализация

Теперь осталось выполнить наиболее «сложную» часть работы. Единственное, что вам осталось сделать, это описать вашу WordPress локаль.

Для этого, вам сначала нужно получить ваш язык и код страны. Например, если ваш язык французский, и ваше местоположение – Франция, ваш код будет fr_FR. GNU-инструкция по gettext , содержит страницы, который помогут вам найти коды и вашей страны и языка.

После того, как вы узнаете ваши коды, откройте файл wp-config и найдите константу WPLANG . Если она существует, просто замените существующий код, своим. Если ее нет, просто вставьте следующую строчку (со своим собственным кодом, конечно же)

Перевод статьи «How to make a translatable WordPress theme«, автор Jean-Baptiste Jung

Рассказать друзьям

Понравилась статья? Лучший способ сказать спасибо — поделиться ссылкой в социальных сетях:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL