Patch 7.4.2255
Problem: The script that checks translations can't handle plurals.
Solution: Check for plural msgid and msgstr entries. Leave the cursor on
the first error.
Files: src/po/check.vim
*** ../vim-7.4.2254/src/po/check.vim 2010-08-04 15:45:12.000000000 +0200
--- src/po/check.vim 2016-08-26 15:45:00.736129856 +0200
***************
*** 30,65 ****
return substitute(idline, '[^%]*\(%[-+ #''.0-9*]*l\=[dsuxXpoc%]\)\=', '\1',
'g')
endfunc
! " This only works when 'wrapscan' is set.
let s:save_wrapscan = &wrapscan
! set wrapscan
" Start at the first "msgid" line.
1
! /^msgid
! let startline = line('.')
let error = 0
while 1
if getline(line('.') - 1) !~ "no-c-format"
! let fromline = GetMline()
if getline('.') !~ '^msgstr'
! echo 'Missing "msgstr" in line ' . line('.')
! let error = 1
! endif
! let toline = GetMline()
! if fromline != toline
! echo 'Mismatching % in line ' . (line('.') - 1)
! echo 'msgid: ' . fromline
! echo 'msgstr: ' . toline
! let error = 1
endif
endif
! " Find next msgid.
! " Wrap around at the end of the file, quit when back at the first one.
! /^msgid
! if line('.') == startline
break
endif
endwhile
--- 30,95 ----
return substitute(idline, '[^%]*\(%[-+ #''.0-9*]*l\=[dsuxXpoc%]\)\=', '\1',
'g')
endfunc
! " This only works when 'wrapscan' is not set.
let s:save_wrapscan = &wrapscan
! set nowrapscan
" Start at the first "msgid" line.
1
! /^msgid\>
!
! " When an error is detected this is set to the line number.
! " Note: this is used in the Makefile.
let error = 0
while 1
if getline(line('.') - 1) !~ "no-c-format"
! " go over the "msgid" and "msgid_plural" lines
! let prevfromline = 'foobar'
! while 1
! let fromline = GetMline()
! if prevfromline != 'foobar' && prevfromline != fromline
! echomsg 'Mismatching % in line ' . (line('.') - 1)
! echomsg 'msgid: ' . prevfromline
! echomsg 'msgid ' . fromline
! if error == 0
! let error = line('.')
! endif
! endif
! if getline('.') !~ 'msgid_plural'
! break
! endif
! let prevfromline = fromline
! endwhile
!
if getline('.') !~ '^msgstr'
! echomsg 'Missing "msgstr" in line ' . line('.')
! if error == 0
! let error = line('.')
! endif
endif
+
+ " check all the 'msgstr' lines
+ while getline('.') =~ '^msgstr'
+ let toline = GetMline()
+ if fromline != toline
+ echomsg 'Mismatching % in line ' . (line('.') - 1)
+ echomsg 'msgid: ' . fromline
+ echomsg 'msgstr: ' . toline
+ if error == 0
+ let error = line('.')
+ endif
+ endif
+ if line('.') == line('$')
+ break
+ endif
+ endwhile
endif
! " Find next msgid. Quit when there is no more.
! let lnum = line('.')
! silent! /^msgid\>
! if line('.') == lnum
break
endif
endwhile
***************
*** 74,85 ****
"
1
if search('msgid "\("\n"\)\?\([EW][0-9]\+:\).*\nmsgstr
"\("\n"\)\?[^"]\@=\2\@!') > 0
! echo 'Mismatching error/warning code in line ' . line('.')
! let error = 1
endif
if error == 0
! echo "OK"
endif
let &wrapscan = s:save_wrapscan
--- 104,119 ----
"
1
if search('msgid "\("\n"\)\?\([EW][0-9]\+:\).*\nmsgstr
"\("\n"\)\?[^"]\@=\2\@!') > 0
! echomsg 'Mismatching error/warning code in line ' . line('.')
! if error == 0
! let error = line('.')
! endif
endif
if error == 0
! echomsg "OK"
! else
! exe error
endif
let &wrapscan = s:save_wrapscan
*** ../vim-7.4.2254/src/version.c 2016-08-26 12:54:49.087190201 +0200
--- src/version.c 2016-08-26 14:42:22.472463763 +0200
***************
*** 765,766 ****
--- 765,768 ----
{ /* Add new patch number below this line */
+ /**/
+ 2255,
/**/
--
If your nose runs, and your feet smell, you might be upside down.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.