The recurrence dialog for appointments is hard-coded in the current public release (CRAY branch) of Zimbra. Also, the code for generating the human-readable description sent in the notification email message is hard-coded.
However, in the main branch of the source, I have rewritten this dialog and the recurrence description generator so that it can be fully localized. The dialog and description text is now generated using a number of messages in the ZmMsg.properties file. If you look in ZmMsg, you'll see the following properties:
Code:
recurDailyEveryDay = Every day.
recurDailyEveryWeekday = Every weekday.
recurDailyEveryNumDays = Every {0,number,integer} days.
recurWeeklyEveryWeekday = Every {0,date,EEEE}.
# {2} is marker to indicate new line for input, replaced with "" on output
recurWeeklyEveryNumWeeksDate = Every {0,number,integer} weeks on {2}{1,list,date,EEEE}.
recurMonthlyEveryNumMonthsDate = Day {0,number,integer} of every {1,number,integer} month(s).
recurMonthlyEveryNumMonthsNumDay = The {0,choice,-1#last|1#first|2#second|3#third|4#fourth} {1,date,EEEE} of every {2,number,integer} month(s).
recurYearlyEveryDate = Every year on {0,date,MMMM} {1,number,integer}.
recurYearlyEveryMonthNumDay = The {0,choice,-1#last|1#first|2#second|3#third|4#fourth} {1,date,EEEE} of every {2,date,MMMM}.
recurStart = Effective {0,date,medium}.
recurEndNone = No end date.
recurEndNumber = End after {0,number,integer} occurrence(s).
recurEndByDate = End by {0,date,medium}.
# {0} is recurrence text; {1} is start; {2} is end
recurBlurb = {0} {2} {1} In order to see this work, you need to translate these patterns for your language and use them with a Zimbra deployment built from the main branch.