Latin locale in `dayjs`

tukusejssirs

New Member

Hi, Latin speakers! ;)

For romcal project, I need to add Latin locale to dayjs library. I should have no problem with the implementation, but my Latin is not that good that I would trust my translation, therefore I’d like to ask you all to proof the following phrases. Note that my primary usage of the Latin locale is within Roman Catholic Church, therefore I have chosen to use feria weekday names (with Dominica for Sunday and Sabbato for Saturday) instead of the dies weekday names (for more info, see the Hebdomas Wikipedia article).

Here I list some points that I need to have double-checked if there are true.

  1. From what I have seen in the Church documents, in Latin we use Roman numerals in weekdays (if not spelled out; i.e. feria II or feria secunda), in days of month (e.g. die XX Decembris) and years (e.g. AD MMXX).
  2. Month names have the first letter always in uppercase (i.e. September, not september).
  3. In dates, the day of months should be followed by month name.
  4. In dates, month name is always in genitive.
  5. In time (like 13:23), it is okay to use Arabic numerals (I don’t think that in the Ancient Rome, they used any kind of time format like this, but then Latin is used even today, but I could not find any proof on how to format the time in Latin).
  6. A minute is currently translated as minutum and a second to secundum (as opposed to the historic pars minuta prima and pars minuta secunda, respectively).
  7. Finally, I need to proof the following phrases if they are grammatically always (i.e. for any number greater than 1) correct (the words in the square brackets should give you some context when that particular phrase would be used within dayjs library; English phrase is followed by Latin phrase separated by an equals sign):
    • in NUMBER [in the future] = in NUMBER;
    • NUMBER ago [in the past] = ante NUMBER;
    • [a] minute [Nominative singular] = minutum;
    • NUMBER minutes [Nominative plural] = NUMBER minuta;
    • [an] hour [Nominative singular] = hora;
    • NUMBER hours [Nominative plural] = NUMBER horae;
    • [a] day [Nominative singular] = dies;
    • NUMBER days [Nominative plural] = NUMBER dies;
    • [a] month [Nominative singular] = mensis;
    • NUMBER months [Nominative plural] = NUMBER menses;
    • [a] year [Nominative singular] = annus;
    • NUMBER years [Nominative plural] = NUMBER anni.

And for those you can read some code, here’s the current version of the dayjs Latin locale:

JavaScript:
// Latin [la]
import dayjs from 'dayjs'

// src: https://stackoverflow.com/a/9083076
function romanise(num) {
  if (isNaN(num))
    return NaN;
  var digits = String(+num).split(''),
      key = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',
             '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',
             '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'],
      roman = '',
    i = 3;
  while (i--)
    roman = (key[+digits.pop() + (i * 10)] || '') + roman;
  return Array(+digits.join('') + 1).join('M') + roman;
}
function getMonthInGenitive(month) {
  switch(month) {
    case 'Ianuarius':
      return 'Ianuarii'
    case 'Februarius':
      return 'Februarii'
    case 'Martius':
      return 'Martii'
    case 'Aprilis':
      return 'Aprilis'
    case 'Maius':
      return 'Maii'
    case 'Iunius':
      return 'Iunii'
    case 'Iulius':
      return 'Iulii'
    case 'Augustus':
      return 'Augusti'
    case 'September':
      return 'Septembris'
    case 'October':
      return 'Octobris'
    case 'November':
      return 'Novembris'
    case 'December':
      return 'Decembris'
  }
}
const locale = {
  name: 'la',
  weekdays: 'Dominica_feria secunda_feria tertia_feria quarta_feria quinta_feria sexta_Sabbato'.split('_'),
  weekdaysShort: 'Dominica_feria II_feria III_feria IV_feria V_feria VI_Sabbato'.split('_'),
  weekdaysMin: 'Dom._II_III_IV_V_VI_Sab.'.split('_'),
  months: 'Ianuarius_Februarius_Martius_Aprilis_Maius_Iunius_Iulius_Augustus_September_October_November_December'.split('_'),
  monthsShort: 'Ian_Feb_Mar_Apr_Mai_Iun_Iul_Aug_Sep_Oct_Nov_Dec'.split('_'),
  weekStart: 0,
  yearStart: 4,
  ordinal: n => `${romanise(n)}ᵒ`,
  // The relative time variables are in Nominative case only
  relativeTime: {
    future: `in ${romanise(%s)}`,
    past: `ante ${romanise(%s)}`,
  //   s: 'a few seconds',  // secundum, secunda
    m: 'minutum',
    mm: `${romanise(%d)} minuta`,
    h: 'hora',
    hh: `${romanise(%d)} horæ`,
    d: 'dies',
    dd: `${romanise(%d)} dies`,
    M: 'mensis',
    MM: `${romanise(%d)} menses`,
    y: 'annus',
    yy: `${romanise(%d)} anni`
  },
  formats: {
    LT: 'HH:mm',
    LTS: 'HH:mm:ss',
    L: `${romanise(D)} MM. ${romanise(YYYY)}`,
    LL: `${romanise(D)} ${getMonthInGenitive(MMMM)} ${romanise(YYYY)}`,
    LLL: `${romanise(D)} ${getMonthInGenitive(MMMM)} ${romanise(YYYY)} HH:mm`,
    LLLL: `dddd, ${romanise(D)} ${getMonthInGenitive(MMMM)} ${romanise(YYYY)} HH:mm`
  }
}

dayjs.locale(locale, null, true)

export default locale
 

Pacifica

grammaticissima

  • Aedilis

Location:
Belgium
From what I have seen in the Church documents, in Latin we use Roman numerals in weekdays (if not spelled out; i.e. feria II or feria secunda), in days of month (e.g. die XX Decembris) and years (e.g. AD MMXX).
Yes, you can do that.
Month names have the first letter always in uppercase (i.e. September, not september).
Well, people nowadays usually capitalize month names, but it's a modern convention rather than an original rule.
In dates, the day of months should be followed by month name.
I believe that is flexible.
In dates, month name is always in genitive.
In the dating system you've chosen (i.e. the modern rather than the ancient Roman one) yes.
In time (like 13:23), it is okay to use Arabic numerals (I don’t think that in the Ancient Rome, they used any kind of time format like this, but then Latin is used even today, but I could not find any proof on how to format the time in Latin).
I'd say you may use Arabic numerals, though I guess you could use Roman ones (e.g. XIII:XXIII). Either way it's a modern thing; there was nothing like this in Roman times, as you say.
A minute is currently translated as minutum and a second to secundum (as opposed to the historic pars minuta prima and pars minuta secunda, respectively).
Pars minuta prima and pars minuta secunda can be shortened to minuta and secunda, just as minutum and secundum are, I believe, short for tempus minutum primum and tempus minutum secundum.

I think the feminine minuta and secunda are more usual, but the neuter versions also exist.
in NUMBER [in the future] = in NUMBER;
That would usually be ad.
NUMBER ago [in the past] = ante NUMBER;
Yes or abhinc.
  • [a] minute [Nominative singular] = minutum;
  • NUMBER minutes [Nominative plural] = NUMBER minuta;
  • [an] hour [Nominative singular] = hora;
  • NUMBER hours [Nominative plural] = NUMBER horae;
  • [a] day [Nominative singular] = dies;
  • NUMBER days [Nominative plural] = NUMBER dies;
  • [a] month [Nominative singular] = mensis;
  • NUMBER months [Nominative plural] = NUMBER menses;
  • [a] year [Nominative singular] = annus;
  • NUMBER years [Nominative plural] = NUMBER anni.
Those are correct for the nominative, but are you aware that you wouldn't use the nominative after ad/ante/abhinc?
 

tukusejssirs

New Member

Thank you very much, @Pacifica!

Just a few clarifications:
  1. If you say that minuta and secunda are more usual than minutum and secundum, the Nominative plural of them are minutae and secundae, right?
  2. [in NUMBER [in the future] = in ad NUMBER] Just to be sure: In a sentence like I’ll do it in 5 minutes, one would use ad 5 minutae, right?
  3. [NUMBER ago [in the past] = ante/abhinc NUMBER] What is more usual or better, ante or abhinc?
  4. And yes, I am aware of the inflection issues, but for now I am not willing to invest the time to implement other grammar cases. (First of all, from the dayjs locale, I have no idea how to check what is the context where the output would be used. If you know the way, at least the algorithm, I gladly implement it. ;))
  5. Update: I have missed one phrase (though it is in the code itself): a few seconds. I have found a word pauca (for a few), but I am not sure if I can translated that phrase to pauca secondae or not. Do you think it is the right translation or would you come up with a better one? :)
 
Last edited:

Pacifica

grammaticissima

  • Aedilis

Location:
Belgium
If you say that minuta and secunda are more usual than minutum and secundum, the Nominative plural of them are minutae and secundae, right?
Yes.
[in NUMBER [in the future] = in ad NUMBER] Just to be sure: In a sentence like I’ll do it in 5 minutes, one would use ad 5 minutae, right?
It would be ad 5 minutas, or why not with a Roman number: ad V minutas.
[NUMBER ago [in the past] = ante/abhinc NUMBER] What is more usual or better, ante or abhinc?
Abhinc may be a bit more common.
And yes, I am aware of the inflection issues, but for now I am not willing to invest the time to implement other grammar cases.
Ah, but something like ad 5 minutae is terribly wrong. In my opinion, you might as well just not bother with Latin at all in that case, because what's the point of pseudo-Latin that doesn't even follow the most basic rules of the language?
If you know the way, at least the algorithm, I gladly implement it.
Sorry, I can't help there!
Update: I have missed one phrase (though it is in the code itself): a few seconds. I have found a word pauca (for a few), but I am not sure if I can translated that phrase to pauca secondae or not. Do you think it is the right translation or would you come up with a better one?
It would be paucae secundae in the nominative (but again, you'd need other cases for your "in/ago" phrases.
 
Last edited:

tukusejssirs

New Member

Thank you once again @Pacifica!

Let me be a bit OT: if anyone with at least decent knowledge of Latin (incl grammar) would like to help out with localisation of romcal into Latin, we would be very grateful! Just a sidenote: it would be even better if they have some (Roman Catholic) liturgical background. :)
 

Gregorius Textor

Animal rationale

  • Civis Illustris

  • Patronus

Location:
Ohio, U.S.A.
Thank you once again @Pacifica!

Let me be a bit OT: if anyone with at least decent knowledge of Latin (incl grammar) would like to help out with localisation of romcal into Latin, we would be very grateful! Just a sidenote: it would be even better if they have some (Roman Catholic) liturgical background. :)
I don't think I have time to participate in that (and in any case, my liturgical Latin is not that great), but I will mention something. You probably already know about it, but just in case. The Divinum Officium project has some overlap with what you are doing; they have a Latin calendar (Extraordinary Form) in their code. And even if you don't find anything useful in your their code, if you get in contact with them, they might have good answers for your questions.
 
Last edited:
Top