请选择 进入手机版 | 继续访问电脑版

LibreOffice 中文社区

 找回密码
 马上加入

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
开启左侧

[已解决] 驿窗01- Base组件中,数据库中“日期”字段中文显示异常~

[复制链接]
驿窗 发表于 2019-3-14 21:05:40 | 显示全部楼层 |阅读模式
本帖最后由 驿窗 于 2019-3-14 21:17 编辑

请参考下面两张图,异常与正常的对比~

这个现象可以100%重现:Base组件中,创建新数据库,创建新窗体,窗体中创建一个日期字段,属性设置为“日期格式:标准-长格式”及“可扩展:是”;

中文显示有两个"月",没有"日";
此问题我测试了三个版本,6.1.5.1/6.2.0.3(AppImage)/6.3.0.0.alpha0+(AppImage),中文格式均显示异常,英文格式显示均正常;系统环境Debian Stretch 9.8~

另外,如果能把“星期二”挪到后边,好像更符合中国人的习惯,不知道是否可以实现~

这个是我在翻译LibreOffice Getting Started Guide时发现的,希望新版本中能够得到修正~

异常显示

异常显示

正常显示

正常显示
开源/Linux大众化,从驿窗开始!
suokunlong 发表于 2019-3-17 20:47:05 | 显示全部楼层
这个问题比较那啥。这个可能是代码中的问题,不知道在哪里修复。坐等高手指点!
开放,包容,奉献。
 楼主| 驿窗 发表于 2019-3-18 08:10:22 | 显示全部楼层
本帖最后由 驿窗 于 2019-3-18 08:42 编辑

代码的话,是不是需要通过bug系统提交?
我这两天抽空通过bug系统提交一下看看,好像反馈还比较快~

开源/Linux大众化,从驿窗开始!
 楼主| 驿窗 发表于 2019-4-30 12:16:18 | 显示全部楼层
Bug 125035 - Date format in Base is wrong.(zh-CN version)
https://bugs.documentfoundation.org/show_bug.cgi?id=125035

开源/Linux大众化,从驿窗开始!
 楼主| 驿窗 发表于 2021-7-3 15:11:12 | 显示全部楼层
--Eike Rathke 在2021-07-02给的说明我完全看不懂:


Eike Rathke 2021-07-02 15:19:27 UTC

Just a code pointer, trace, for the resulting long date string:

in vcl/source/control/field2.cxx
DateFormatter::ImplGetDateAsText() calls
DateFormatter::FormatDate() for ExtDateFieldFormat::SystemLong calls
in unotools/source/i18n/localedatawrapper.cxx
LocaleDataWrapper::getLongDate()

Problem ist that LocaleDataWrapper::getLongDate() assembles localized
date particles but is agnostic about a locale's format codes or their
interpretation or any particular ordering of date particles other than
the Day/Month/Year order.

To solve that, a proper SvNumberFormatter instance would have to be used
instead. vcl has a static instance of SvNumberFormatter that could be
used, see include/vcl/formatter.hxx Formatter::StaticFormatter. Class
DateFormatter inherits from Formatter (via EntryFormatter) so that
should be viable, but propagating the actual locale may be needed.
Didn't investigate deeper, DateFormatter::FormatDate() gets that
indirectly passed from DateFormatter::ImplGetDateAsText() via
ImplGetLocaleDataWrapper() and GetCalendarWrapper().

Comment 15 Eike Rathke 2021-07-02 18:06:42 UTC

Bah, there are two class DateFormatter and this is the wrong one that does not know the SvNumberFormatter.. :-/

开源/Linux大众化,从驿窗开始!
高原之狼 发表于 2021-7-4 08:47:36 | 显示全部楼层
驿窗 发表于 2021-7-3 15:11
--Eike Rathke 在2021-07-02给的说明我完全看不懂:

看不懂没关系,基本全是给其他开发者看的,不是给你这个报告者看的。

而且我看今天早上修复也已经提交到 git 代码库中了,你只要等有包含修复的 7.3 版预览或每日构建版发布后,测试就可以了。


suokunlong 发表于 2021-7-5 18:45:09 | 显示全部楼层
Eike Rathke 已经针对这个问题提交了一系列的补丁,已修复。
开放,包容,奉献。
 楼主| 驿窗 发表于 2021-7-5 20:21:57 | 显示全部楼层
这个 Eike Rathke 懂中文?

或者,中文的日期格式很容易看懂 ?
开源/Linux大众化,从驿窗开始!
suokunlong 发表于 2021-7-6 21:21:44 | 显示全部楼层
驿窗 发表于 2021-7-5 20:21
这个 Eike Rathke 懂中文?

或者,中文的日期格式很容易看懂 ?

他应该不懂中文,但是他是i18npool/source/localedata领域的专家。他提交的这一系列补丁不仅针对中文locale,还针对其它语言环境。
开放,包容,奉献。
 楼主| 驿窗 发表于 2021-7-7 21:56:01 | 显示全部楼层
原来如此~
开源/Linux大众化,从驿窗开始!
*滑块验证:
您需要登录后才可以回帖 登录 | 马上加入

本版积分规则

Archiver|手机版|小黑屋|LibreOffice 中文社区 ( 粤ICP备13080851号-4 )

GMT+8, 2021-8-2 11:36

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表