- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在探索如何使用 CFStringTransform
来 transliterate texts in Hebrew我遇到了一些不一致的地方,比如本应发音不同的字母却以完全相同的方式书写,或者 Apple 算法未考虑的特殊情况。
כִּי(“因为”)
let string = NSMutableString(string: "כִּי")
CFStringTransform(string, nil, kCFStringTransformLatinHebrew, true)
print(string) // prints "ki̇y"
שָׁכָחְתִּי(“我忘记了”)
let string = NSMutableString(string: "שָׁכָחְתִּי")
CFStringTransform(string, nil, kCFStringTransformLatinHebrew, true)
print(string) // prints "şá̌káẖĕţi̇y" instead of "şá̌ḵáẖĕţi̇y"
虽然 כִּי 中的 kaf 在英语中发音为 K,而 שָׁכָֽחְתִּי 中的 khaf 发音为 loch 或 Bach,通常音译为 CH、KH 或 Ḵ。但是,这两个字母都音译为 K。
法老王
let string = NSMutableString(string: "פַּרְעֹה")
CFStringTransform(string, nil, kCFStringTransformLatinHebrew, true)
print(string) // prints "pȧrĕʻòh"
יוֹסֵף(“约瑟夫”)
let string = NSMutableString(string: "יוֹסֵף")
CFStringTransform(string, nil, kCFStringTransformLatinHebrew, true)
print(string) // prints "ywòsép" instead of "ywòséf"
虽然 פְַּעֹה 中的 pei 发音像 P 在英语中的发音(并相应地音译),而 יוֹסֵף 中的(尾随)fei 发音像 F (并相应地音译)。但是,两者都用 P 音译。
来自 Hebrew vocalization 上的文章在英文维基百科中:
A patach on a letters ח, ע, ה at the end of a word is sounded before the letter, and not after. Thus, נֹחַ (Noah) is pronounced /ˈno.ax/. This only occurs at the ends of words and only with patach and ח, ע, and הּ (that is, ה with a dot (mappiq) in it). This is sometimes called a patach ganuv, or "stolen" patach (more formally, "furtive patach"), since the sound "steals" an imaginary epenthetic consonant to make the extra syllable.
但是:
תַפּוּחַ(“苹果”)
let string = NSMutableString(string: "תַפּוּחַ")
CFStringTransform(string, nil, kCFStringTransformLatinHebrew, true)
print(string) // prints "ţaṗẇẖa" instead of "ţaṗẇaẖ"
CFStringTransform
的行为以解决这三种情况?来自reference for CFMutableString
,我们看到 CFStringTransform
作为 transform:
参数
A CFString object that identifies the transformation to apply. For a list of valid values, see Transform Identifiers for CFStringTransform. On OS X v10.4 and later, you can also use any valid ICU transform ID defined in the ICU User Guide for Transforms.
来自 the documentation听起来 ICU 转换的规则足够灵活,可以自定义。甚至还有一个 rule editor可以从 their playground 访问,但是,虽然我找到了a Stack Overflow question处理切线相似的事情,我找不到针对 RTL 语言的明确记录的方法。
最佳答案
据我所知,通过在中文和日文中使用它,CFStringTransform
逐个标记地工作,而不是将单词作为一个整体(可能是多个标记长)考虑在内。因此,当需要考虑多个标记时,音译将受到限制/不正确。我希望我认为这也是您希伯来语问题的根源(请指教)是正确的。
我发现音译在这种情况下更加准确,方法是使用 CFStringTokenizer
对文本进行标记,然后使用 CFStringTokenizerCopyCurrentTokenAttribute()< 依次获取每个标记的拉丁语音译
方法。这方面的一个例子——我认为在 Objective C 中,尽管这种情况下的语法与 Swift 非常相似——给出了 here。 .
关于swift - Cocoa/Cocoa Touch/Foundation中如何自定义CFString音译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685877/
如何编译它? 在此函数的第二行: func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWi
我使用此代码获取 ABPerson 的姓氏 CFStringRef lastNameRef = ABRecordCopyValue((ABRecordRef)personRecordRef, kABP
我想在子函数中为 CFString 分配空间。像这样: void fun(CFStringRef *ref) { ref = CFStringCreateWithCString(NULL, "
我正在为 iPhone 开发应用程序,遇到了一些内存管理问题。在应用程序执行期间,事件字节数不断增加而不受限制。我试图在我的代码中找出问题,但似乎找不到任何会导致事件字节数急剧增加的东西。我在执行过程
不知何故,下面的代码使我的应用程序崩溃: NSString *filename = [NSString stringWithFormat:@"%@%@", dbPath, @"BAR"]; NSStr
我正在开发的一个应用程序在 iPhone 上运行时不断崩溃,但在模拟器上却没有(尽管在没有符号 malloc_error_break 的情况下运行时会显示警告,但该应用程序在 Sim 上仍然运行) 我
我想知道一个字符串是否是单字节编码。 CFShowStr 可以完成这项工作,但它将消息输出到控制台。 CFShowStr 函数输出消息如下所示,IsEightBit 项就是我想要的: Length 7
我有一个CFMutableDictionaryRef ,调试器中的部分内容是: "device-id" = ; model = ; "vendor-id" = ; 现在我可以获得 key model
我正在应用程序上运行仪器。根据仪器,未检测到任何泄漏。 但是,类别CFString (store) 一直在上升。有谁知道 CFString (store) 是什么? 这是否意味着我有泄漏? 最佳答案
我看过问答 here about the self keyword in Swift . 但是,对我来说,这并不能解释在 this question 的以下代码片段中使用 .self let attr
我有以下代码将 String 转换为 CFString 和 backwarts: string path = @"C:\Users\ayi\Desktop\Failed\AngryBirds.ipa"
在 xcode 中使用内存图调试器时,我看到了一些内存泄漏。 Backtrace 没有直接链接到我的任何代码,而是通过跟踪猜测它的保存以假设它与组合和一些 DataTaskPublisher 相关。
首先,这与古代技术有关。我正在处理的程序端口在 Metrowerks Codewarrior 9 中维护,目标是 PPC。 用于 MSL C 的 FSRefParentAndFilename_fope
这个问题在这里已经有了答案: NSString is exactly the same as CFString? (1 个回答) 关闭 9 年前。 我没有理解 iOS 中 CFString 和 NS
我很快就开始使用 Cocoa 编程 Mac OS X 应用程序,所以这确实是一个新问题。为此事道歉。 首先我的代码片段: - (id)tableView:(NSTableView *)tableVie
自 Swift 2 起,可以从 Swift 调用采用 C 回调的 C 函数,而无需中间包装器。 许多 C 事件处理 API 都遵循首先创建上下文的模式: struct Context { CF
我正在尝试掌握在 Mac OS X 中使用 JNA 的窍门。我想访问 Carbon 库,但 Cocoa 没有对应的库,因此 Rococoa 无法帮助我(我认为...) 当我尝试调用需要 CFStrin
我有一个返回 CFString 的库,我试图在 C# 中获取该字符串值。问题是我不知道如何在 C# 中执行此操作。 使外部函数返回 CFString 将不起作用,因为它会引发异常“传递给非托管代码的类
我正在解决我的 iPad 应用程序中的一些内存分配问题,并且花了很长时间观察 CFString 在zombies instrument,直到我切换到 Leaks or allocations inst
我最近更新到 Xcode 6.1 以便能够与 iOS 8.1 一起工作,但现在我的最新项目面临错误。 对于以下行,我收到错误消息“CFString!不符合协议(protocol) Hashable”:
我是一名优秀的程序员,十分优秀!