Аннотации PoEdit и PHP

Я ищу способ, чтобы PoEdit понимал аннотации PHP. Вот пример кода, который я хочу, чтобы PoEdit забирал и помещал в каталог:

class MyController extends Controller { /** * @Title "Home" */ public function index() { ... } } 

Интересная часть – аннотация @Title . Доступ к нему осуществляется на переднем контроллере и назначается мастер-представлению, что фактически заканчивается внутри <title>...</title> .

Теперь мне нужна эта строка, но PoEdit, похоже, только понимает выражения _() , а добавление @Title к ключевым словам не работает. Вероятно, это связано с тем, что аннотации в PHP находятся в блоке комментариев.

Есть ли способ заставить PoEdit понимать аннотации?

Related of "Аннотации PoEdit и PHP"

Короткий ответ, вы не можете.

POEdit использует xgettext для сканирования ваших файлов, поэтому использует специальный синтаксис, игнорируя прокомментированные строки.

Например, если ваши ключевые слова _ следующие примеры будут проанализированы следующим образом:

_('test'); -> string 'test'

_("test"); -> string 'test'

_('test' -> string 'test'

_ 'test -> no catch

_('test -> no catch

_(test) -> нет улова

_($test) -> нет улова

//_('test'); -> нет уловки

/*_('test');*/ -> нет catch

Вы можете выполнить xgettext используя другие параметры, но я не уверен, что вы сможете достичь своей цели.


Одно простое исправление (не стандартное) – это добавление другого ключевого слова, такого как placeholder и создание функции php, например

 function placeholder($string){} 

и используйте его так, чтобы POEdit мог его разобрать

 class MyController extends Controller { /** * @Title "Home" */ public function index() { placeholder('Home'); ... } } 

В вашем синтаксисе frontend просто используйте просто _($value) и вы переводите свой заголовок.

Dunno, как ваш код, но будет считать, что-то похожее на это.

Предполагая, что $ tag = 'title' и $ value = 'Home'

 echo '<'.$tag.'>'._($value).'</'.$tag.'>'; 

Если вы действительно хотите сделать это таким образом, вы можете просто извлечь строки, которые вам нужны из php-файлов, во внешний файл, заменив часть аннотации на _ (строка); для каждого матча и запускать Poedit в этом файле.

Вы можете сопоставить его с .*\*\s\@(\w+)\s\"(\w+)\".*$1 в матче будет аннотация (заголовок), $2 будет значением: (Главная)