php – 用货币和语言交换机处理区域的最佳实践
我正在和Zend Framework(德语和英语)一起开展一个多语言项目,其中有一个小型的订单产品.用户应该能够:
改变产品价格的首选货币 目前我使用Zend_Locale :: findLocale()来获取用户的区域设置.使用我的浏览器设置,我得到’de_CH’,这很好.但有一些问题,一旦: >用户已经配置了他的浏览器,只给我语言代码(‘de’而不是’de_CH’) 只是语言代码 不支持的语言 不受支持的货币 主要问题 谢谢你的建议. 最好的祝福, 编辑1 > Zend_Locale():过滤所有的短语言环境(没有国家/地区代码),并使用您的应用程序支持的语言(仅限语言代码)的白名单.如果没有匹配,请使用您的应用程序给定的默认值. 这种做法可以接受吗?如果浏览器区域设置如下所示,步骤1有一个问题: > de 也许该应用程序确实支持德语,但由于它是一个简短的语言环境,应用程序将使用en_US.但是我不知道哪个解决方案可以解决这个问题,因为我无法将一个简短的语言环境升级到一个完整的语言环境.
您突出显示的问题很常见,我想像需要少量的工作来设置用户的区域设置.
de deE需要您知道他们是否位于德国,但如果您不知道用户的位置,则可以默认为de_CH,这是您的所在地. * The user has configured his browser to just give me the language code ('de' instead of 'de_CH') 在您的应用程序中映射.您的映射可以将其转换为德语中德语居民的de_DE.或者说瑞士居民说德语.或者对于瑞士居民来说,对于英语人士来说,这是法语等等,这将是en_CH或en_DE.所以这解决了2个问题. 需要用户语言和位置来准确地确定用户的语言环境. 如果你不知道那里的位置,你应该默认使用你自己的默认语言和地点. 链接:Unicode – locality and language mapping * The user prefers a language which is not supported by my website 你应该有一个默认的语言和货币,如果你在欧洲,那么选择将是你的默认地点和语言,如果你是瑞士然后de_CH是有道理的. * The user is from a country where they got a currency which isn't supported by my product order form 在这种情况下,您应该恢复为默认值. Zend有许多在他们的wiki上使用地方文件的例子.在Zend中设置本地的最常见的地方是引导文件. 我使用这个链接来引用对Zend Framework wiki的这个回应的支持.下面的代码提供了一个小例子,说明如果语言环境无效,Zend_Locale类如何抛出异常.您现在可以检查位置和语言,并结合您从浏览器收到的信息,为用户准确设置区域设置. 链接:Zend Locale Introduction // within the bootstrap file try { $locale = new Zend_Locale('auto'); } catch (Zend_Locale_Exception $e) { $locale = new Zend_Locale('de'); } // within your model/controller $date = new Zend_Date($locale); $currency = new Zend_Currency($locale) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |