ICU自定义音译

2024-02-22

我希望利用 ICU 库进行音译,但我想为一组特定的自定义音译提供自定义音译文件,以便在编译时合并到 ICU 核心中,以便在其他地方以二进制形式使用。出于兼容性原因,我正在使用 ICU 4.2 的源代码。

据我了解,从他们网站的 ICU 数据页面 http://userguide.icu-project.org/icudata,解决此问题的一种方法是在 ICUHOME/source/data/translit/ 中创建文件 trnslocal.mk ,并在该文件中包含一行TRANSLIT_SOURCE_LOCAL=custom.txt.

For the custom.txt文件本身,我根据主文件使用了以下格式root.txt:

custom{
    RuleBasedTransliteratorIDs {
            Kanji-Romaji {
            file {
              resource:process(transliterator){"custom/Kanji_Romaji.txt"}
              direction{"FORWARD"}
            }
         }
    }
    TransliteratorNamePattern {
        // Format for the display name of a Transliterator.
        // This is the language-neutral form of this resource.
        "{0,choice,0#|1#{1}|2#{1}-{2}}" // Display name
    }
    // Transliterator display names
    // This is the English form of this resource.
    "%Translit%Hex"         { "%Translit%Hex" }
    "%Translit%UnicodeName" { "%Translit%UnicodeName" }
    "%Translit%UnicodeChar" { "%Translit%UnicodeChar" }
    TransliterateLATIN{        
        "",
        ""
    }
}

然后我存储在目录中custom文件Kanji_Romaji.txt, 发现here http://crosswire.org/svn/icu-sword/trunk/source/data/translit/crosswire/Kanji_Romaji.txt。因为它使用>而不是我在其他文件中看到,我适当地转换了每个条目,所以它们现在看起来像:

丁 → Tei ;
七 → Shichi ;

当我编译 ICU 项目时,没有出现任何错误。

然而,当我尝试在测试文件中使用此自定义音译器(与内置音译器配合良好的测试文件)时,我遇到了错误error: 65569:U_INVALID_ID.

我使用以下代码来构造音译器并输出错误:

UErrorCode status = U_ZERO_ERROR;
Transliterator *K_R = Transliterator::createInstance("Kanji-Romaji", UTRANS_FORWARD, status);
if (U_FAILURE(status))
{
std::cout << "error: " << status << ":" << u_errorName(status) << std::endl;
return 0;
}

此外,循环到Transliterator::countAvailableIDs() and Transliterator::getAvailableID(i)没有列出我的自定义音译。我记得读过有关自定义转换器的内容,它们必须在 /source/data/mappings/convrtrs.txt 中注册。有类似的音译器文件吗?

看来我的自定义音译器要么没有构建到适当的包中(尽管没有编译错误),要么格式不正确,要么以某种方式没有注册使用。顺便说一句,我知道运行时的 RuleBasedTransliterator 路由,但我希望能够编译自定义音译以在任何生成的二进制文件中使用。

如果需要任何额外说明,请告诉我。我知道这里至少有一位 ICU 程序员,他在我在其他地方写过和看到的其他帖子中也提供了很大的帮助。我将不胜感激任何我能找到的帮助。先感谢您!


音译者来源于CLDR http://cldr.unicode.org- 您可以将音译器添加到 CLDR(crosswire 目录在 cldr/ 目录中包含 XML 格式的音译器)并重建 ICU 数据。 ICU 没有像您尝试的那样添加音译器的简单机制。我要做的就是忘记 trnslocal.mk 或 custom.txt,因为您不需要添加任何文件,只需修改 root.txt - 如果您有建议的改进,您可能会提交错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ICU自定义音译 的相关文章

  • Pandas.read_csv() 列名称中带有特殊字符(重音符号)�

    我有一个csv包含一些带有列名称的数据的文件 时期 IAS brut IAS liss 发生率 哨兵 我对第三个有疑问 IAS liss 这是被误解的pd read csv 方法并返回为 那个角色是什么 因为它在我的烧瓶应用程序中生成错误
  • 是否可以在 Visual Studio 2010 项目中使用多个“字符集”?

    如您所知 在 Visual Studio 2010 c 中 我们有 noset unicode 和 MBCS 字符集 我们可以通过菜单或预处理器指令 如 define UNICODE 来设置它 我正在开发一个项目 它有一个使用 MBCS 字
  • 如何打印/存储非 ASCII 字符(unicode?)

    我正在阅读大量的音乐家档案 其中许多艺术家的名字中都有奇怪的字符 因为他们可能来自德国或其他一些具有非 ASCII 字符的国家 我希望能够将这些音乐家的名字存储在列表中并将它们打印到控制台 如何打印从文本文件读入的带有奇怪字符的字符串 让我
  • 字符串中的换行符未写入文件

    我正在尝试编写一个程序来操作从文件中读取的 unicode 字符串 我想到了两种方法 一种方法是读取包含换行符的整个文件 执行几个正则表达式替换 然后将其写回另一个文件 另一种方法是读取包含换行符的整个文件 执行几个正则表达式替换 然后将其
  • 如何在 mysql 正则表达式中匹配大写 ÅäÖ

    当我在 MySQL 中进行 REGEXP 比较时 我得到了瑞典字符大写版本的一些奇怪结果 我正在使用 utf8 swedish ci 排序规则 我想查找大写单词 SELECT ster REGEXP BINARY A Z a z 应该返回
  • canvas:如何在一个变换语句中完成平移、倾斜、旋转...?

    最近几天我在学习 变换 现在我知道如何通过变换的矩阵进行平移 旋转 倾斜 缩放 但如果我想在一个转换语句中执行上述所有操作 我该怎么办 ctx transform a b c d e f 当我们想要通过变换旋转某些东西时 我们必须为每个参数
  • C++ 检查 unicode 字符是否为全角

    如何检查unicode字符是否是全角 我使用Win32 MFC 例如 中是全宽 A不是全角 是全宽 F不是全宽 你需要的是检索东亚宽度 http www unicode org reports tr11 的角色 您可以通过解析来做到这一点东
  • 如何编写对 UTF-8 安全的代码?

    我们有一组针对 ASCII 字符集开发的应用程序 现在 我们正尝试在冰岛安装它 但遇到了冰岛字符被搞砸的问题 我们正在解决我们的问题 但我想知道 是否有一个好的 指南 来编写专为 8 位字符设计的 C 代码 并且在提供 UTF 8 数据时可
  • 如何在标准 SQL 中使用 Unicode 规范化删除变音符号(例如重音符号)?

    如何使用新功能从 BigQuery 中的字符串中删除变音符号normalize https cloud google com bigquery docs reference standard sql functions and operat
  • 如何使用 Unicode 十六进制值 (UTF-16) 在 Swift 中表达字符串

    我想在 Swift 中使用十六进制值编写 Unicode 字符串 我已阅读文档 https developer apple com library prerelease ios documentation Swift Conceptual
  • ASCIIEncoding.ASCII.GetBytes() 返回意外值

    这段 C 代码 string s u00C0 byte bytes ASCIIEncoding ASCII GetBytes s Trace WriteLine BitConverter ToString bytes 产生以下输出 3F 为
  • 什么是标准 unicode 字体?

    以下操作系统的标准 unicode 字体是什么 视窗XP 视窗Vista Window 7 按照标准 我的意思是它们存在于操作系统的全新安装中 无需将它们作为附加包安装 我一直在寻找同样的东西 看起来所有 Win 操作系统中只有一种字体 L
  • 在Python中通过sys.stdout写入unicode字符串

    暂时假设一个人无法使用print 从而享受自动编码检测的好处 所以这给我们留下了sys stdout 然而 sys stdout太蠢了不做任何合理的编码 http bugs python org issue4947 现在人们阅读 Pytho
  • 如何在 Java/Eclipse 中使用特殊字符

    如何在 Java Eclipse 中使用 显示 或 等字符 当我尝试直接使用它们时 例如在源代码中 Eclipse无法保存文件 我能做些什么 编辑 如何找到 unicode 转义序列 问题是您使用的字符无法以文件设置的编码 Cp1252 表
  • 使用 css 变换在其父对象的宽度上对对象进行动画处理

    我正在尝试使用 css 转换来转换 100 宽度包装器内元素的位置来提高动画性能 因此 它从左侧进入屏幕并从右侧退出 然后重复动画 我想我可以在这个动画中使用百分比 我发现翻译与您正在制作动画的对象相关 因此 如果您有一个 100px 宽的
  • 是否有一个看起来像“钥匙”图标的 Unicode 字形? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 Unicode 有一百万个类似图标的字形 但它们并不总是很容易搜索 因为我并不总是知道它们是什么样子 是否有一个看起来像 钥匙 的 Unicode 字
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • IE9-11 检测变换样式:preserve-3d

    我为一个项目制作了一个 3d 类型的菜单 自然 IE 会引起问题 因为 IE10 即使 3d 变换工作 也不支持变换样式 preserve 3d 我尝试了解决方法 通过对 3d 菜单容器的每个子元素应用变换 但至少可以说 动画看起来很糟糕
  • 验证假名输入

    我正在开发一个允许用户输入日语字符的应用程序 我试图想出一种方法来确定用户的输入是否是日语假名 平假名 片假名或汉字 应用程序中的某些字段不适合输入拉丁文文本 我需要一种方法将某些字段限制为仅限汉字或仅限片假名等 该项目使用UTF 8编码
  • Python“非规范化”unicode 组合字符

    我正在寻找标准化 python 中的一些 unicode 文本 我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的 非规范化 形式 例如如果我有序列u o xaf i e latin small lette

随机推荐

  • 网络应用程序应该具有自动更新功能吗?

    在看到 Microsoft 给人们升级 Internet Explorer 6 时遇到的一些问题以及 Firefox 如何进行自动更新后 我开始考虑我们的 Web 应用程序的推送式升级系统的优点和缺点 您认为网络应用程序应该具有自动更新功能
  • NodeJS 4 和 5 npm 安装 bcrypt 和 db-migrate 失败

    前一段时间我安装了 NodeJS v0 10 31 并在一个项目上工作没有问题 但最近我决定更新到 Node v5 0 0 一切都很好 直到我决定使用 bcrypt 和 db migrate 调用命令npm 安装将无法吐出一长串详细信息 但
  • Magento - 通过库存查找缺货产品

    在我的 Magento 商店中 在将新库存添加到缺货商品后 我有时会忘记从下拉列表中选择 有货 是否有可能以某种方式获取所有有库存但标记为 缺货 的产品的列表 如果您能够快速编写一些脚本 products Mage getModel cat
  • Django 管理员:如何过滤整数字段以获取特定范围的值

    如何在 Django Admin 中创建过滤器以仅显示整数值位于两个值之间的记录 例如 如果我有一个模型 Person 它具有年龄属性 并且我只想显示年龄在 45 到 65 之间的 Person 记录 您可以使用以下方式过滤字段querys
  • numpy:累积多重数计数

    我有一个可能有重复的有序整数数组 我想计算连续的相等值 当一个值与前一个值不同时从零重新开始 这是使用简单的 python 循环实现的预期结果 import numpy as np def count multiplicities a r
  • 用于测试私有方法的Java工具?

    对于测试私有方法的意义有不同的看法 例如 here https softwareengineering stackexchange com questions 16732 unit testing internal components a
  • 使用本机 CSS 和 HTML 设置漏斗堆栈布局样式

    我想显示类似漏斗堆栈的数据 如下图所示 我能够使用边框创建锥度 例如 div class taper div 并使用以下 CSS taper width 200px height 0px border color lightgray tra
  • 如何在应用程序启动时获取旋转进度条

    我是安卓新手 我设法将 JSON 文件解析到我的应用程序中 现在我想使用 AsyncTask 获取 Spinning ProgressBa 直到应用程序启动并加载数据 我尝试阅读很多内容 但它们只给出如何获取 onclick 事件或下载事件
  • 广播接收器 onReceive 在位置更改时触发两次

    我想知道用户何时关闭 GPS 我想了解不同活动中的这一行动 我制作了广播接收器来监听 GPS 状态的变化 但几乎总是当我关闭 GPS 时 我的 updateValue 函数会被触发两次 当用户关闭 GPS 时如何收到通知 我做错了什么 下面
  • 使用 GData 进行搜索查询的 YouTube UITableView

    我正在尝试自定义表格视图以根据搜索查询显示 YouTube 视频的提要 我找到了这段代码http pastebin com vmV2c0HT http pastebin com vmV2c0HT它在表格视图中显示 YouTube 频道的提要
  • DisabledBackend:Celery、Redis 和 Flask 的不稳定行为

    我已经使用 Celery 一段时间了 在生产中我使用 RabbitMQ 作为代理 使用 Redis 作为 K8s 集群中的后端 到目前为止没有任何问题 在本地 我运行一个包含一些服务 Flask API 2 个不同的 Workers Bea
  • emgucv:C# 中的 pan 卡不正确的倾斜检测

    我有三个泛卡图像 用于使用 emgucv 和 c 测试图像的倾斜 顶部的第一张图像检测到 180 度工作正常 中间的第二张图像检测到的 90 度应检测为 180 度 第三张图像检测到 180 度应检测为 90 度 我想在这里分享的一个观察结
  • 在 Docker 容器中安装 Web 应用程序:拨打 unix /var/run/docker.sock: no such file or directory

    我正在尝试在 Docker 容器中安装 Web 应用程序 我使用的是 OS X Yosemite 版本 10 10 1 我一直在关注这里关于 Dockerizing Node js Web App 的教程 https docs docker
  • 为什么 C# 构造函数无法推断类型?

    为什么构造函数不支持泛型方法的类型推断 public class MyType
  • CodeIgniter 项目上的第一个 HTTP 请求的延迟非常高

    我和一个朋友刚刚开始从事一个项目 其他人几年前就停止了开发 我们正在努力恢复它 我们已经解决了大部分与设置相关的问题 但有一个非常烦人的问题我们无法解决 在我们的本地主机中 所有页面都占用A LOT加载 刷新的时间 我指的不是资产 脚本或任
  • 如何让散景悬停工具捕捉数据?

    我希望散景悬停工具捕捉到数据点 而不是在线上插入鼠标位置 这是我认为可以做到这一点的代码 但我仍然在显示中获得插值数据 from bokeh plotting import figure output file show from boke
  • 通过 API 迭代 mailchimp 模板中的集合

    是否有机会通过 API 填写可重复的部分 例如 我有产品列表 我只想在模板中包含一次产品部分 然后迭代集合 我已经阅读了之前关于该主题的讨论并进行了谷歌搜索 但我仍然不明白是否可以通过 API 实现 div h2 Title h2 p Bo
  • 在 Windows(Vista 和 XP)上安装 Exuberant Ctags

    我想在工作时在 Vista 也可能是 XP 笔记本电脑 上使用 Exuberant Ctags 关于操作系统没有选择 我使用 GVim 而不是我的同事推荐的 Flex Builder 因为 FB 有问题并且无论如何也不能做 GVim 所做的
  • 是否有一个 create() 供 vuex 操作自动调度

    我在 vuex 中有一个操作 我想在 vuex 本身而不是组件中自动调度 我创建了一个通知栏 它通过多个页面上的不同通知进行更改 当我切换页面时 通知不是从头开始 而是创建了一个商店来设置要显示的通知 我想从 vuex 内部而不是从组件内部
  • ICU自定义音译

    我希望利用 ICU 库进行音译 但我想为一组特定的自定义音译提供自定义音译文件 以便在编译时合并到 ICU 核心中 以便在其他地方以二进制形式使用 出于兼容性原因 我正在使用 ICU 4 2 的源代码 据我了解 从他们网站的 ICU 数据页