[wp-hackers] Question about translation extensions during WP 2.8

Heiko Rabe heiko.rabe at code-styling.de
Sun Jun 21 19:07:47 GMT 2009

Hi Peter,

thanks for the answer. If understand it right, than the result of *.mo 
file creation process will transform

_x('Published', 'page')

internally into


at the binary machine object file. If i now try to reverse a *.mo file, 
i can't figure out, if


is a contextual separation string or just a menu item collection used at 
__(), because such information about context are not stored inside the 
binary format.
So how would the mo/po classes figure out this, because | becomes 
unreliable during load of *.mo file ?


Heiko Rabe

> On 21 Jun 2009, at 18:45, Heiko Rabe wrote:
>> i would be happy if somebody can explain the advantage of the new one 
>> similar translation capabilities:
>>   _x('Published', 'page')
>> in opposite to
>>   _c('Published|page')
>> Normally a GNU gettext processor would not allow to have the same 
>> phrase twice in file.
>> So if the new _x method writes the phrase to *.mo file the same way 
>> as __ or _e would do, this may lead on some systems to bad behavoir 
>> because of double occurance and damaged hash map table inside *.mo file.
> It allows for the context to be properly specified in the po file, 
> makes the string easier to translate (and also makes it safer to use 
> "|" in a string again)
> Previously in the pof file:
> #: wp-admin/edit-pages.php:78
> msgid "Published|page"
> msgstr ""
> Now in the pot file:
> #: wp-admin/edit-pages.php:78
> msgctxt "page"
> msgid "Published"
> msgstr ""
> So it is explicitly marked as context 
> (http://www.gnu.org/software/gettext/manual/gettext.html#Contexts)
> westi

More information about the wp-hackers mailing list