Django - 西里尔字母转拉丁字母的数据转换

1 投票
1 回答
1068 浏览
提问于 2025-04-17 21:33

我正在尝试创建一个应用程序,用来存储一些塞尔维亚语的数据(塞尔维亚语可以用西里尔字母和拉丁字母书写),并根据用户的选择来显示相应的字母。将西里尔字母转换为拉丁字母相对简单,因为每个西里尔字母都有一个(或者两个)对应的拉丁字母,比如'Б'对应'B','Ш'对应'Š','Љ'对应'LJ'等等。但是反过来就有点复杂了,比如'LJ'可以变成'Љ'或者'ЛЈ',程序无法判断该怎么选择,虽然大多数情况下'LJ'变成'Љ'是正确的选择。无论如何,我想要输入西里尔字母,但输出需要同时支持拉丁字母和西里尔字母。所以,我的问题是:实现这个功能最有效的方法是什么?我应该在forms.py里进行字符串转换,然后把数据存储在不同的表中(这听起来效率不高),还是在视图里进行转换更好?在模板中加一些JavaScript也是一个选择,但我觉得这不是个好主意。我对Django还很陌生,所以如果我问的问题有点傻,请多多包涵。

1 个回答

1

我觉得把塞尔维亚的西里尔字母(官方)和拉丁字母当作两种不同的“语言”来处理是最简单的。这样你就能享受到Django框架及其国际化和本地化的所有好处。

语言代码是:srsr_Latn

更新

上面的内容处理了模型、视图、表单和模板中的字符串。但你还需要翻译数据库中的值。

如果你能自动化翻译(没有或很少的例外情况),你可以使用自定义模板过滤器。但是如果你希望编辑人员能够修正一些意想不到的例外情况,那么你就需要创建数据库字段来存储这些翻译。就像在任何多语言项目中一样。为了实现这个目标,有很多模型结构和应用程序可以使用,具体取决于你的项目需求。

撰写回答