哪个最好,按组件组织 i18n 资源键?
FILE_TAB_TITLE: 'Files'
FILE_FIELD_TITLE: 'File'
GROUP_TAB_TITLE: 'Group'
GROUP_FIELD_TITLE: 'Group'
SAVE_MENU_ITEM: 'Save'
SAVE_AS_MENU_ITEM: 'Save as...'
SAVE_BUTTON: 'Save'
或者他们的意思是什么?
FILE: 'File'
FILES: 'Files'
GROUP: 'Group'
SAVE: 'Save'
SAVE_AS: 'Save as...'
我认为这是一个惯例而不是一个规则,所以答案可能是"任何看起来更合乎逻辑的东西"。
我已开始创建 i18n 资源键,并采用了以下约定:
- 带有"标题部分"的标题,以 # 开头
- 点分隔的分层表示法
- 按键按字母顺序排列,便于访问
例:
#File access
file.field.title = File
file.field.subtitle = Click here
file.tab.title = Files
#User
user.name = First and last name
user.password = Password
user.username = Username
我使用英语短语的简洁大写版本。例如(JavaScript):
SAVE: "Save",
LOAD: "Load",
PLEASE_SELECT_ITEM: "Please select an item.",
PRESS_NEXT_TO_PROCEED: "Please press the Next button to proceed."
这样,开发人员就不必查找令牌的内容来了解它的实际含义。
我没有出现在不同位置的项目的冗余条目(例如,"保存"出现在菜单中而不是按钮上等),除非它们出现在不同的模块中可能会单独翻译。
此外,标题/标题、提示和错误消息令牌被组织到不同的文件中。
我在层次结构中按函数排列我的,例如
ui:
choose: choose...
save: save
cancel: cancel
preview: preview
season:
summer: summer
autumn: autumn
winter: winter
spring: spring
people: !!pl
0: no people
1: one person
n: "%1 people"
is_are_people: !!pl
0: are no people
1: is one person
n: "are %1 people"
然后在我的助手、路线或 haml 文件中(我主要使用 Sinatra),我可以在我的"保存"按钮中引用Unicode::capitalize(t.ui.save)
,在我的标题中引用"There #{t.is_are_people some_people.count}."
,等等。