Я ищу способ, чтобы PoEdit понимал аннотации PHP. Вот пример кода, который я хочу, чтобы PoEdit забирал и помещал в каталог:
class MyController extends Controller { /** * @Title "Home" */ public function index() { ... } }
Интересная часть – аннотация @Title
. Доступ к нему осуществляется на переднем контроллере и назначается мастер-представлению, что фактически заканчивается внутри <title>...</title>
.
Теперь мне нужна эта строка, но PoEdit, похоже, только понимает выражения _()
, а добавление @Title
к ключевым словам не работает. Вероятно, это связано с тем, что аннотации в PHP находятся в блоке комментариев.
Есть ли способ заставить PoEdit понимать аннотации?
Короткий ответ, вы не можете.
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
будет значением: (Главная)