Я создал сборщик строк для перевода из файлов javascript. Я нашел проект jsgettext, который я использовал в качестве отправной точки (see).Регулярное выражение для извлечения вызовов метода javascript
Он использует выражение reqular, чтобы найти вызовы метода __()
внутри файлов javascript. Простые вызовы найдены успешно, но вызовы с аргументами, такими как __('string', { a: 'b'})
, не являются.
Я попытался изменить регулярное выражение так же, как и вызовы методов с аргументами, но без каких-либо успехов (я не специалист по регулярным выражениям).
Мой вопрос: Как изменить следующее регулярное выражение для соответствия строкам следующим образом?
// this is catched successfully
// var string = __("Please enter %number% more characters.");
// this is problematic
var string = __("Please enter %number% more characters.", { '%number%' : 2 });
Регулярное выражение:
$keywords = join('|', array('__'));
preg_match_all('# (?:' . $keywords . ') \(\\ *" ((?: (?>[^"\\\\]++) | \\\\\\\\ | (?<!\\\\)\\\\(?!\\\\) | \\\\")*) (?<!\\\\)"\\ *\) #ix', $content, $matches, PREG_SET_ORDER);
Спасибо
Это '$ keywords = join ('|', array ('__'));' для меня не имеет смысла ... – HamZa
Это предназначено для соответствия другим функциям i18n. Я удалил этот код из вопроса. – Mishal