charlesLoder/hebrew-transliteration

Mid-word coda consonant without shva nah is silent (e.g. "יִשָּׂשכָר")

m-yac opened this issue · 6 comments

m-yac commented

In my experience, if a consonant which is the coda of a non-final syllable does not have a sheva nah, then it is as if the consonant is not there – the only exception being when the letter is a mater, in which case the vowel lengthens (though still the consonant is not pronounced).

As a very dramatic example, the second shin in "יִשָּׂשכָר" is not pronounced – i.e. the word should be transliterated as "yissakhar", not "yissashkhar" as it is now. This example is from the Romanization of Hebrew Wikipedia page, which also mentions this rule about a coda with no sheva nah being ignored.

Another example is the alef in "פָּארָן", which I argue should not be transliterated – i.e. "paran" not "pa’ran". This is debatable, since the alef is silent anyway, but it really does bother me that the alef is transliterated here, since from my experience, it really ought not to be.

I'm curious what you think. I'd also be happy to implement a fix if you OK this change.

(Also I started to say this on a PR I just made on havarotjs, but this pair of projects is incredible – thank you for all your work here!)

@m-yac

Great question!

Transliteration and transcription are on a spectrum. The former attempts to accurately represents the characters of a script in another scripts, and the latter attempts to accurately represent the pronunciation of a language in another script.

With the example "יִשָּׂשכָר", you're right, it would definitely be read (i.e. transcribed) as "yissakhar" not "yissashkhar". The quiesced alef is a great analog.

The default schema, SBL Academic, requires that your transliterate the alef even when it doesn't have any phonetic value.

On the site, there is currently no way to adjust it, but in the node package, you can add to the ADDITIONAL_FEATURES like this:

const str = `יִשָּׂשכָר`;
const unmodified = heb.transliterate(str);
// yiśśāškār

const modified = heb.transliterate(str, {
  ADDITIONAL_FEATURES: [
    {
      FEATURE: "cluster",
      HEBREW: "^[^הוי]$",
      TRANSLITERATION: (cluster) => {
        // if final cluster, still return the text
        if (!cluster.next) {
          return cluster.text;
        }
        return "";
      }
    }
  ]
});
// yiśśākār

Closing as this isn't a bug, per se.

m-yac commented

Thanks for such a great reply, that makes perfect sense!

I tried to get the example you wrote working, but it looks like it only works if I build the package from source – the version on NPM is from 4 months ago and doesn't support functions in ADDITIONAL_FEATURES. Do you have any sense of when you might push a new version of the node package to NPM?

Do you have any sense of when you might push a new version of the node package to NPM?

v2.4.0 is almost finished, but the last issue is a bit tricky.

Maybe if I don't finish #45 in the next couple of weeks, I'll just release 2.4 anyways

@m-yac

See v2.4 release, and the live site is using 2.4 as well

m-yac commented

@charlesLoder Thank you so much! I've started experimenting and ran into a couple of pain points – I made a PR in havarotjs, and an issue and a discussion thread in this repo based on what I found.