浅谈Ruby on Rails的国际化
视图、模型与控制器里不应使用语言相关设置与字串。这些文字应搬到在 config/locales 下的语言文件里。
当 ActiveRecord 模型的标签需要被翻译时,使用activerecord 作用域:
en: activerecord: models: user: Member attributes: user: name: "Full name"
然后 User.model_name.human 会返回 "Member" ,而 User.human_attribute_name("name") 会返回 "Full name"。这些属性的翻译会被视图作为标签使用。
把在视图使用的文字与 ActiveRecord 的属性翻译分开。 把给模型使用的语言文件放在名为 models 的文件夹,给视图使用的文字放在名为 views 的文件夹。
当使用额外目录的语言文件组织完成时,为了要载入这些目录,要在 application.rb 文件里描述这些目录。
# config/application.rb config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
把共享的本土化选项,像是日期或货币格式,放在 locales 的根目录下。
使用精简形式的 I18n 方法: I18n.t 来取代 I18n.translate 以及使用 I18n.l 取代 I18n.localize。
使用 "懒惰" 查询视图中使用的文字。假设我们有以下结构:
en: users: show: title: "User details page"
users.show.title 的数值能这样被 app/views/users/show.html.haml 查询:
= t '.title'
在控制器与模型使用点分隔的键,来取代指定 :scope 选项。点分隔的调用更容易阅读及追踪层级。
# 这样子调用 I18n.t 'activerecord.errors.messages.record_invalid' # 而不是这样 I18n.t :record_invalid, :scope => [:activerecord, :errors, :messages]
相关推荐
-
在Ruby on Rails中使用Markdown的方法
实现 Markdown 语法和代码语法高亮分别是用的 Redcarpet 和 pygments.rb 两个 Gem: https://github.com/vmg/redcarpet https://github.com/tmm1/pygments.rb https://github.com/richleland/pygments-css http://pygments.org/docs/lexers/ 在/Gemfile中添加如下两行: gem 'redcarpet'
-
快速安装Ruby on Rails的简明指南
对于新入门的开发者,如何安装 Ruby, Ruby Gems 和 Rails 的运行环境可能会是个问题,本页主要介绍如何用一条靠谱的路子快速安装 Ruby 开发环境. 次安装方法同样适用于产品环境! 系统需求 首先确定操作系统环境,不建议在 Windows 上面搞,所以你需要用: Mac OS X 任意 Linux 发行版本(Ubuntu,CentOS, Redhat, ArchLinux ...) 强烈新手使用 Ubuntu 省掉不必要的麻烦! 以下代码区域,带有 $ 打头的表示需要在控制台(
-
关于Ruby on Rails路由配置的一些建议
当你需要加入一个或多个动作至一个 RESTful 资源时(你真的需要吗?),使用 member and collection 路由. # 差 get 'subscriptions/:id/unsubscribe' resources :subscriptions # 好 resources :subscriptions do get 'unsubscribe', on: :member end # 差 get 'photos/search' resources :photos # 好 resou
-
浅谈Ruby on Rails的国际化
视图.模型与控制器里不应使用语言相关设置与字串.这些文字应搬到在 config/locales 下的语言文件里. 当 ActiveRecord 模型的标签需要被翻译时,使用activerecord 作用域: en: activerecord: models: user: Member attributes: user: name: "Full name" 然后 User.model_name.human 会返回 "Member" ,而 User.human_attr
-
浅谈Ruby on Rails下的rake与数据库数据迁移操作
不知道你有没有把数据迁移写入Migration文件的经历,相信无论是老鸟还是新手都这样干过吧.事实上,这样做并不是行不通,只不过这样的实践慢慢会给你引入一些不必要的麻烦. 一般认为db/migrate文件夹里的内容是关于你数据库Schema的演变过程,每个新的开发或线上环境都要通过这些Migration来构建可用的数据库.但如果这里装入了,负责细节的业务代码,比如一些历史遗留数据的迁移代码之类的,当一段时间后,数据库的结构变化了,但Migration没有跟着变化,渐渐的曾经的辅助代码,就成了垃圾
-
浅谈五大Python Web框架
说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: http://wiki.python.org/moin/WebFrameworks 虽然另一大脚本语言PHP也有不少框架,但远没有Python这么夸张,也正是因为Python Web Framework(Python Web开发框架,以下简称Python框架)太多,所以在Python社区总有关于Python框架孰优
-
浅谈测试驱动开发TDD之争
前言 在历史上有很多精彩绝伦的神仙打架,比如数学界的牛顿和莱布尼茨关于微积分的旷世之争:比如量子物理中的爱因斯坦和波尔的紫禁之巅:比如足球里的梅西和C罗的旗鼓相当难分高下:又比如滴滴和快滴之间触目惊心的烧钱大战--而在软件行业中,也同样有神仙打架的名场面,那就不得不提的是2014年的那场--测试驱动开发(TDD)之争. 比赛的红方是David Heinemeier Hansson,蓝方是Kent Beck.David Heinemeier Hansson 由于名字较长简写成DHH,Ruby on
-
浅谈Spring的两种配置容器
Spring提供了两种容器类型 SpringIOC容器是一个IOC Service Provider.提供了两种容器类型:BeanFactory和ApplicationContext.Spring的IOC容器是一个提供IOC支持的轻量级容器.除了基本的ioc支持,它作为轻量级容器还提供了IOC之外的支持. BeanFactory BeanFactory是基础类型IOC容器.顾名思义,就是生产Bean的工厂.能够提供完整的IOC服务.没有特殊指定的话,其默认采用延迟初始化策略.只有当客户端对象需要
-
浅谈Python 对象内存占用
一切皆是对象 在 Python 一切皆是对象,包括所有类型的常量与变量,整型,布尔型,甚至函数. 参见stackoverflow上的一个问题 Is everything an object in python like ruby 代码中即可以验证: # everythin in python is object def fuction(): return print isinstance(True, object) print isinstance(0, object) print isinst
-
浅谈Linux系统中的异常堆栈跟踪的简单实现
在Linux中做C/C++开发经常会遇到一些不可预知的问题导致程序崩溃,同时崩溃后也没留下任何代码运行痕迹,因此,堆栈跟踪技术就显得非要重要了.本文将简单介绍Linux中C/C++程序运行时堆栈获取,首先来看backtrace系列函数--使用范围适合于没有安装GDB或者想要快速理清楚函数调用顺序的情况 ,头文件execinfo.h int backtrace (void **buffer, int size); 该函数用来获取当前线程的调用堆栈,获取的信息将会被存放在buffer中,它是一个指针
-
浅谈MVC框架的优点(翻译)
传统的ASP.NET Web Forms是一个非常好的主意,但现实需求非常复杂.随着时间的推移,现实世界的项目暴露出Web Forms的一些不足之处: "沉重的"视图状态:现实中在http请求之间维持状态(术语叫视图状态)导致了服务端和客户端巨大的数据块来回传递.典型情况下这个数据块会大到数百K字节,而且这个数据块会在每次请求时来回传输,导致网站访问者访问速度下降,同时增加了服务器的带宽负担. 页面生存周期:作为页面生存周期的一部分,连接客户端事件和服务端事件处理代码的机制,有时会非常
-
浅谈Golang是如何读取文件内容的(7种)
本文旨在快速介绍Go标准库中读取文件的许多选项. 在Go中(就此而言,大多数底层语言和某些动态语言(如Node))返回字节流. 不将所有内容自动转换为字符串的好处是,其中之一是避免昂贵的字符串分配,这会增加GC压力. 为了使本文更加简单,我将使用string(arrayOfBytes)将bytes数组转换为字符串. 但是,在发布生产代码时,不应将其作为一般建议. 1.读取整个文件到内存中 首先,标准库提供了多种功能和实用程序来读取文件数据.我们将从os软件包中提供的基本情况开始.这意味着两个先决
-
浅谈Python爬虫原理与数据抓取
通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为通用爬虫和聚焦爬虫两种. 通用爬虫 通用网络爬虫 是 捜索引擎抓取系统(Baidu.Google.Yahoo等)的重要组成部分.主要目的是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份. 通用搜索引擎(Search Engine)工作原理 通用网络爬虫从互联网中搜集网页,采集信息,这些网页信息用于为搜索引擎建立索引从而提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果. 第一步:抓取网页
随机推荐
- html中嵌入flv格式文件的代码
- Angular 4中如何显示内容的CSS样式示例代码
- IOS UIView的生命周期的实例详解
- 使用JavaScript switch case 另类写法
- 正则表达式教程之重复匹配详解
- Android view滑动悬浮固定效果实现代码示例
- ASP.NET中URL Routing和IIS上URL Rewriting的区别
- IE和Mozilla的兼容性汇总event
- jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
- .net中mshtml处理html的方法
- php设计模式 State (状态模式)
- PHP通过iconv将字符串从GBK转换为UTF8字符集
- .net三层结构初探分析第1/4页
- c#后台输出javascript语句示例程序
- string类的使用方法详解
- win2008 R2设置IP安全策略后在服务器内打开网站很慢或无法访问外部网站的原因
- 实例详解Android文件存储数据方式
- Android亮屏和熄屏控制实例详解
- C#学习笔记整理_变量等基础语法(必看篇)
- 实用的PHP带公钥加密类分享(每次加密结果都不一样哦)