timevis组件德语区域设置(locale)不生效问题求助
解决timevis德语区域设置不生效的问题
我之前也碰到过这个timevis locale不生效的问题,折腾了好一会儿才搞定,给你几个可行的解决办法:
1. 先修正locale参数的格式
你代码里写的locale = c("de")是把locale设成了长度为1的向量,但timevis的options要求这个参数是单个字符串。先改成下面的写法试试,很多时候这个小细节就是问题所在:
timevis( data.frame(id = 1:2, content = c("one", "two"), start = c("2016-01-10", "2016-01-12")), options = list(locale = "de") )
2. 手动加载vis.js的德语语言脚本
如果上面的方法还是没效果,那大概率是timevis默认没有打包德语的本地化语言文件。因为timevis底层依赖的是vis.js,而vis.js的多语言支持需要对应的语言脚本文件。这时候可以用htmltools包手动引入:
library(timevis) library(htmltools) # 先在页面头部加载德语语言脚本 tags$head( includeScript("https://unpkg.com/vis-timeline@7.7.2/dist/locale/vis-timeline-german.min.js") ) # 再创建时间线组件 timevis( data.frame(id = 1:2, content = c("one", "two"), start = c("2016-01-10", "2016-01-12")), options = list(locale = "de") )
注意:脚本的版本尽量和你当前timevis依赖的vis.js版本匹配,避免兼容性问题。你可以通过查看timevis的DESCRIPTION文件,找到它依赖的vis.js版本号,然后替换上面URL里的版本号。
3. 手动指定日期格式化规则
如果前两种方法都不行,还可以直接在options里强制指定日期的显示格式,确保月份名称按照德语渲染:
timevis( data.frame(id = 1:2, content = c("one", "two"), start = c("2016-01-10", "2016-01-12")), options = list( locale = "de", format = list( minorLabels = list(month = "MMMM", day = "DD"), majorLabels = list(month = "MMMM yyyy", year = "yyyy") ) ) )
这里的MMMM在德语locale环境下会自动渲染成完整的德语月份名称(比如Januar),直接强制了显示规则,能绕过locale加载的问题。
最后,建议你把timevis包升级到最新版本,旧版本可能存在locale支持的bug,执行update.packages("timevis")就能完成升级。
内容的提问来源于stack exchange,提问作者sammerk
相关产品推荐
相关产品推荐

