Zend 1框架日期芬兰语翻译异常:星期名称显示为cccc求助
你的测试代码:
(new Zend_Date(time(), false, new Zend_Locale($locale)))->toString(Zend_Date::DATE_FULL);
芬兰语输出出现cccc而非预期的星期名称,主要有这几个可能:
芬兰语本地化资源文件缺失/损坏
Zend Framework 1的日期格式化完全依赖对应locale的资源文件,里面存着星期、月份的本地化字符串。如果fi对应的资源文件(比如Zend/Locale/Data/fi.xml)不存在、文件损坏,或者文件里DATE_FULL格式对应的星期占位符映射没配置,框架就没法把cccc替换成实际的芬兰语星期词,直接输出占位符本身。ZF1版本过低,缺失芬兰语完整本地化支持
早期ZF1版本对小语种的本地化覆盖不全,芬兰语的日期格式定义可能是后续版本才补上的。如果你的项目用的是比较老的ZF1版本,大概率存在这个兼容性问题,导致DATE_FULL格式在filocale下没法正确解析星期占位符。Locale初始化有误
检查Zend_Locale的初始化是否正确,有没有出现locale回退异常。比如系统没正确加载filocale,框架可能 fallback 到占位符模式,没法替换cccc。可以试试用完整的locale标识fi_FI替代fi,看能不能解决。日期格式占位符不兼容
不同locale下,Zend_Date的DATE_FULL常量对应的格式字符串可能有差异,部分locale的格式里可能用了框架没正确支持的占位符。可以手动打印Zend_Date::getDateFormats(Zend_Date::DATE_FULL, new Zend_Locale('fi')),看看实际的格式字符串是不是包含未解析的cccc。
内容的提问来源于stack exchange,提问作者Skytiger

