0 票
66 次浏览

我们在两种译文中的副标题都采用标题大小写(Title Case),即每个单词的首字母都大写(没有小写的次要词)。在使用 FLExTrans 的过程中,有时会出现短语(例如关键术语)中只有第一个单词首字母大写的情况。此外,有时源语言中作为后缀的指示词在目标语言中实际上是独立的单词,但输出时却是小写的。以下示例展示了这两个问题:

\s1 Haruanga Babuna Mana Sipsipka Hanggalang   >   \s1 Pasilanga babuna Mana Sipsip xa Panggalang

在“文本输出规则”(text out rules)中是否有办法清理这个问题?是否有人有适用于“文本输出规则”的正则表达式可以解决这个问题?

机器翻译自 English
FLExTrans 中 由 (122 分) 发布
已重新显示 由 [Administrator]
发布
| 66 次浏览

1 个回答

0 票

我明白发生了什么。您的词汇条目是 haruanga babuna,它映射到 pasilanga babuna。第一个单词的首字母大写被保留了,但第二个单词没有。FLExTrans 的转换引擎无法处理这种情况,因此您需要进行合成后更改。

对于 Sipsipka 变为 Sipsip xa 的情况,由于这是由规则生成的,您可以使用 'get-case-from' 元素来包裹您输出的字面字符串。它看起来像这样:

这意味着如果传入的原始单词是大写的,xa 将以大写形式输出。同样,如果它是小写的,它将以小写形式输出。

但是,由于各种原因,章节标题中的其他单词可能会以小写形式输出。因此,您可能需要一个通用解决方案,将所有单词转换为标题大小写。

没有一行正则表达式可以做到这一点。因此,我看到两种可能的解决方案:

1) 向您的 Drafting 模块集添加一个自定义模块,运行一些 Python 代码来大写章节标题中的所有单词。

2) 为字母表中的每个字母添加一个正则表达式。在 Text Out 规则中有 26 个表达式并不那么方便,但它是有效的。

'a' 的表达式为 Search For: (^\\s.*?\b)a(\w*) Replace with: \1A\2

为了方便添加所有这些,您可以在文件 Output\fixup_synthesis_rules.xml 中的 <SearchReplaceRules> 下方添加以下 xml 行:

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)a(\w*)</SearchString>

   <ReplaceString>\1A\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)b(\w*)</SearchString>

   <ReplaceString>\1B\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)c(\w*)</SearchString>

   <ReplaceString>\1C\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)d(\w*)</SearchString>

   <ReplaceString>\1D\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)e(\w*)</SearchString>

   <ReplaceString>\1E\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)f(\w*)</SearchString>

   <ReplaceString>\1F\2</ReplaceString>

 </SearchReplaceRule>

 <SearchReplaceRule RegEx="yes" Inactive="no" Comment="">

   <SearchString>(^\\s.*?\b)g(\w*)</SearchString>

   <ReplaceString>\1G\2</ReplaceString>

 </SearchReplaceRule>

等等。

机器翻译自 English
由 (336 分) 发布

改进后的正则表达式(Regex)如下:

(^\\s[^\\]*?\b)r(.+?)(?=\\)

替换内容可以保持不变:

\1R\2

改进之处在于,当遇到下一个反斜杠(\)时,它会停止进行大小写更改,这一点非常重要。 

机器翻译自 English

相关问题

0 票
1 个回答 53 次浏览
如何在目标项目中对文本运行合成自检?
Sara 246 发布 提问于 四月 28, 2025
FLExTrans 中
0 票
1 个回答 233 次浏览
如何在转移规则中删除词缀?
rmdiamondl 336 发布 提问于 五月 8, 2022
FLExTrans 中
0 票
3 个回答 474 次浏览
我正在准备将《路加福音》和《使徒行传》印制成小册子,但我不知道如何在《使徒行传》开头之前插入一个中间扉页。
Jamie 102 发布 提问于 八月 6, 2024
PTXprint 中
0 票
1 个回答 168 次浏览
如何使用转移规则文件中的示例逻辑?
Sara 246 发布 提问于 四月 28, 2025
FLExTrans 中
0 票
1 个回答 42 次浏览
如何在转移规则中引用词缀释义?
Sara 246 发布 提问于 四月 28, 2025
FLExTrans 中
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
There is neither Jew nor Gentile, neither slave nor free, nor is there male and female, for you are all one in Christ Jesus.
Galatians 3:28
3,053 个问题
6,013 个回答
5,677 条评论
2,032 位用户