Тъй като предложението за отделен VimOverflow беше отхвърлено, ще трябва да продължим да публикуваме тук.
Трябваше да преместя преводи от един файл в друг, само msgid
съвпада с конкретен RegExp.
Преводите се повтарят на блокове, освен това могат да обхващат няколко реда:
# English.po
#: ...
msgid "..."
msgstr "..."
#: templates/common/commonTranslation.phtml:10 | These parts can be
#: any/number/of/lines/can/precede/the/data:0 | of any length.
msgid "buttonhelp.edit" <- Matching string
msgstr "Edit your details" |
"the long line continues" | Translation
"and can be even longer" |
#: ...
msgid "..."
msgstr "..."
Ето какво направих в Sublime:
- Направих regexp за
msgid
модел, който ми трябва. - Sublime поставя множество курсори около файла.
- Нагоре, нагоре, Shift-надолу-надолу-надолу-надолу – избрани са всички блокове за превод със заобикалящите ги празни редове.
- Cmd-C, Поставете в новия файл. Свършен.
Как мога да направя това във Vim?
Само да повторя, имам нужда от множество селекции, които мога да извлека в отделен файл въз основа на стойността msgid
. Ето как изглежда един блок за избор, включително крайните и водещите празни редове:
#: templates/common/commonTranslation.phtml:10
msgid "buttonhelp.edit" # <- value for regexp
msgstr "Edit your details"
Актуализация Съжалявам, че в началото не разбрах това, но преводите могат да обхващат неопределено количество редове, това е мястото, където Sublime не успя, тъй като избрах блокове с фиксиран размер. Но преводите винаги са разделени с празен ред, с изключение на края на файла, но можем да пренебрегнем това. Това е възможно най-краткото количество данни:
#~ msgid "hotline.title" | POEdit stores obsolete
#~ msgstr "HOTLINE" | strings as well
Решено Благодарение на коментаторите най-накрая ми просветна и ето какво направих в крайна сметка:
:let @a=''
:g/\v"\w+\.\w+"/norm! "Ayap
:tabe
:put A
Първо изчиства регистъра a
, намира всички редове с точки между думите в кавички ("\w+\.\w+"
) и издърпва околните абзаци в регистъра a
, чието съдържание поставям в нов раздел.