ITPub博客

首页 > > > 11044 越南语声调位置确定规则

11044 越南语声调位置确定规则

作者:格伯纳 时间:2018-07-22 15:43:11 0 删除 编辑

  既然上一篇写了越南语韵母,那就干脆把声调一起写了吧,反正没多少人看

  传统上,越南语音节的声调标在哪个字母上,是按「美观、平衡」的原则确定的。具体地说,是这样:

  • 如果音节中含有带变音符号的元音字母,那么声调也标在这个字母上。如 với、xuất、điều。
    • 含有 ươ 的音节,声调标在 ơ 上,如 người, trường。
  • 如果音节中不含带变音符号的元音字母,那么看元音字母的个数(y 也算元音字母):
    • 如果只有一个元音字母,那么声调就标在这个元音字母上面(废话);
    • 如果有两个元音字母:
      • 如果有辅音韵尾,那么声调标在后一个元音字母上面,如 toàn、quỳnh;
      • 如果音节以 gi- 或 qu- 开头,那么声调也标在后一个元音字母上面,如 già、quý;
      • 否则,声调标在前一个元音字母上面,如 cái、đĩa、mũi、chịu、hòa、khỏe、thủy;
    • 如果有三个元音字母,那么声调标在中间那个元音字母上面,如 loài、khuỷu。

  注意,在有两个元音字母的时候,声调的位置常常与汉语拼音不同。比如像 ia、iu、ui 这样的韵母,汉语拼音中声调是标在后面的,越南语却标在前面。习惯了汉语拼音的人,在初学时会觉得越南语的标调位置反倒太拥挤、不平衡。

  后来越南语的标调规则进行了一次改革(具体时间点我没有考证出来),不再追求「美观、平衡」,而是要遵循越南语的音系,尽量把声调标在主元音上。具体的规则是这样:

  • 如果音节中含有带变音符号的元音字母,那么声调也标在这个字母上。
    • 含有 ươ 的音节,声调标在 ơ 上。
  • 如果音节中不含带变音符号的元音字母,那么声调标在主元音上。

  具体什么是「主元音」,可以看我上一篇文章对越南语韵母体系的梳理:

王赟 Maigo:11044 越南语韵母体系梳理​zhuanlan.zhihu.com图标

  改革后的规则,在带变音符号的情形下依然保留了旧规则,主要是因为越南语音系中有下面这么一处特别反直觉的地方。形如 iên、uôn、ươn 的韵母,在音系上并不是分析成介音 + 主元音 + 韵尾,而是分析成主元音 iê、uô、ươ + 韵尾的。之所以这么分析,是为了不引入 i、ư 两个介音。而这里的主元音 iê、uô、ươ,又认为是双元音韵母 ia [iə]、ua [uə]、ưa [ɯə] 带韵尾的形式。这三个双元音韵母被看作前响元音,也就是说其中 i、u、ư 的部分更「主」。于是,ia、ua、ưa 这三个韵母,声调就会标在前一个字母 i、u、ư 上。但对于 iên、uôn、ươn 这些韵母,如果还坚持把声调标在最「主」的元音 i、u、ư 上,写成 íên、úôn、ứơn,就太不美观、不平衡了。所以新式标调规则还是保留了旧规则的第一条。

  新旧两套标调规则,在理论上看起来差别颇大,但一个韵母一个韵母地枚举下来,其实就只有 oa、oe、uy 三个韵母的标调位置发生了改变。在旧式规则中,声调标在前一个字母上,如 hòa、khỏe、thủy;在新式规则中,声调标在后一个字母上,如 hoà、khoẻ、thuỷ。在有些输入法中,可以选择按照哪套规则来标注声调。

在 UniKey 越南语输入法中,若勾选红框内的选项,则采用新式标调规则,否则采用旧式标调规则

  这套改革方案实行得并不彻底。例如,越南纸币和护照上的国名全称「共和社会主义越南」中,「和」字的拼法还是 hòa 而不是 hoà。

越南纸币,注意上方国名中「和」字声调的位置
越南护照,注意上方国名中「和」字声调的位置

  改革实施不彻底的原因,我猜大概有这么两点:一是涉及的音节太少,较难引起注意;二是人民群众在手写越南语时,声调的标注是十分「飘逸」的,根本不在乎标在哪个字母上,如下图。

手写越南语。注意框中的 từ、giữa、trì、yếu 等字的声调「飘」到了哪里

  在我制作的安卓应用「汉字古今中外读音查询」中,就有确定越南语声调位置的代码。在没有带变音符号的字母的情况下,新旧两种标调规则可以用一个逻辑表达式囊括,有兴趣的读者可以研究一下。

// 字符串 s 中存储了整个音节
// 找第一个元音字母,让 p 指向它
int p = 0; while (p < s.length() && "aeiouy".indexOf(s.charAt(p)) < 0) p++;
// 找最后一个元音字母,让 q 指向它后面一个字符
int q = p + 1; while (q < s.length() && "aeiouy".indexOf(s.charAt(q)) >= 0) q++;
// 判断声调应该标在哪个字母上,并让 p 指向它
// 如果 p++ 了,就是标在第二个元音字母上;如果没有,就是标在第一个元音字母上
if (q - p == 3 ||
    q - p == 2 && (q < s.length() ||
                   s.startsWith("gi") ||
                   s.startsWith("qu") ||
                   style == NEW_STYLE && (s.substring(p, q).equals("oa") ||
                                          s.substring(p, q).equals("oe") ||
                                          s.substring(p, q).equals("uy")))) p++;

原文作者:;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984352