Add third tier to key namespacing

- Changes all `app.trans` calls to `app.translator.trans` calls.
- Changes existing keys to [three-tier namespace structure](https://github.com/flarum/english/pull/12).
- Extracts additional strings for `lib:` namespace.
- Extracts two previously missed strings for EditGroupModal.js.
This commit is contained in:
dcsjapan
2015-10-20 13:04:43 +09:00
parent a9eb62880e
commit 49d59089e4
54 changed files with 216 additions and 216 deletions

View File

@ -35,36 +35,36 @@ export default class AdminNav extends Component {
items.add('dashboard', AdminLinkButton.component({
href: app.route('dashboard'),
icon: 'bar-chart',
children: app.trans('core.admin.nav_dashboard_button'),
description: app.trans('core.admin.nav_dashboard_text')
children: app.translator.trans('core.admin.nav.dashboard_button'),
description: app.translator.trans('core.admin.nav.dashboard_text')
}));
items.add('basics', AdminLinkButton.component({
href: app.route('basics'),
icon: 'pencil',
children: app.trans('core.admin.nav_basics_button'),
description: app.trans('core.admin.nav_basics_text')
children: app.translator.trans('core.admin.nav.basics_button'),
description: app.translator.trans('core.admin.nav.basics_text')
}));
items.add('permissions', AdminLinkButton.component({
href: app.route('permissions'),
icon: 'key',
children: app.trans('core.admin.nav_permissions_button'),
description: app.trans('core.admin.nav_permissions_text')
children: app.translator.trans('core.admin.nav.permissions_button'),
description: app.translator.trans('core.admin.nav.permissions_text')
}));
items.add('appearance', AdminLinkButton.component({
href: app.route('appearance'),
icon: 'paint-brush',
children: app.trans('core.admin.nav_appearance_button'),
description: app.trans('core.admin.nav_appearance_text')
children: app.translator.trans('core.admin.nav.appearance_button'),
description: app.translator.trans('core.admin.nav.appearance_text')
}));
items.add('extensions', AdminLinkButton.component({
href: app.route('extensions'),
icon: 'puzzle-piece',
children: app.trans('core.admin.nav_extensions_button'),
description: app.trans('core.admin.nav_extensions_text')
children: app.translator.trans('core.admin.nav.extensions_button'),
description: app.translator.trans('core.admin.nav.extensions_text')
}));
return items;

View File

@ -18,9 +18,9 @@ export default class AppearancePage extends Component {
<div className="container">
<form onsubmit={this.onsubmit.bind(this)}>
<fieldset className="AppearancePage-colors">
<legend>{app.trans('core.admin.appearance_colors_heading')}</legend>
<legend>{app.translator.trans('core.admin.appearance.colors_heading')}</legend>
<div className="helpText">
{app.trans('core.admin.appearance_colors_text')}
{app.translator.trans('core.admin.appearance.colors_text')}
</div>
<div className="AppearancePage-colors-input">
@ -30,33 +30,33 @@ export default class AppearancePage extends Component {
{Switch.component({
state: this.darkMode(),
children: app.trans('core.admin.appearance_dark_mode_label'),
children: app.translator.trans('core.admin.appearance.dark_mode_label'),
onchange: this.darkMode
})}
{Switch.component({
state: this.coloredHeader(),
children: app.trans('core.admin.appearance_colored_header_label'),
children: app.translator.trans('core.admin.appearance.colored_header_label'),
onchange: this.coloredHeader
})}
{Button.component({
className: 'Button Button--primary',
type: 'submit',
children: app.trans('core.admin.appearance_submit_button'),
children: app.translator.trans('core.admin.appearance.submit_button'),
loading: this.loading
})}
</fieldset>
</form>
<fieldset>
<legend>{app.trans('core.admin.appearance_custom_styles_heading')}</legend>
<legend>{app.translator.trans('core.admin.appearance.custom_styles_heading')}</legend>
<div className="helpText">
{app.trans('core.admin.appearance_custom_styles_text')}
{app.translator.trans('core.admin.appearance.custom_styles_text')}
</div>
{Button.component({
className: 'Button',
children: app.trans('core.admin.appearance_edit_css_button'),
children: app.translator.trans('core.admin.appearance.edit_css_button'),
onclick: () => app.modal.show(new EditCustomCssModal())
})}
</fieldset>
@ -71,7 +71,7 @@ export default class AppearancePage extends Component {
const hex = /^#[0-9a-f]{3}([0-9a-f]{3})?$/i;
if (!hex.test(this.primaryColor()) || !hex.test(this.secondaryColor())) {
alert(app.trans('core.admin.appearance_enter_hex_message'));
alert(app.translator.trans('core.admin.appearance.enter_hex_message'));
return;
}

View File

@ -36,17 +36,17 @@ export default class BasicsPage extends Component {
<div className="container">
<form onsubmit={this.onsubmit.bind(this)}>
{FieldSet.component({
label: app.trans('core.admin.basics_forum_title_heading'),
label: app.translator.trans('core.admin.basics.forum_title_heading'),
children: [
<input className="FormControl" value={this.values.forum_title()} oninput={m.withAttr('value', this.values.forum_title)}/>
]
})}
{FieldSet.component({
label: app.trans('core.admin.basics_forum_description_heading'),
label: app.translator.trans('core.admin.basics.forum_description_heading'),
children: [
<div className="helpText">
{app.trans('core.admin.basics_forum_description_text')}
{app.translator.trans('core.admin.basics.forum_description_text')}
</div>,
<textarea className="FormControl" value={this.values.forum_description()} oninput={m.withAttr('value', this.values.forum_description)}/>
]
@ -54,7 +54,7 @@ export default class BasicsPage extends Component {
{Object.keys(this.localeOptions).length > 1
? FieldSet.component({
label: app.trans('core.admin.basics_default_language_heading'),
label: app.translator.trans('core.admin.basics.default_language_heading'),
children: [
Select.component({
options: this.localeOptions,
@ -65,11 +65,11 @@ export default class BasicsPage extends Component {
: ''}
{FieldSet.component({
label: app.trans('core.admin.basics_home_page_heading'),
label: app.translator.trans('core.admin.basics.home_page_heading'),
className: 'BasicsPage-homePage',
children: [
<div className="helpText">
{app.trans('core.admin.basics_home_page_text')}
{app.translator.trans('core.admin.basics.home_page_text')}
</div>,
this.homePageItems().toArray().map(({path, label}) =>
<label className="checkbox">
@ -81,11 +81,11 @@ export default class BasicsPage extends Component {
})}
{FieldSet.component({
label: app.trans('core.admin.basics_welcome_banner_heading'),
label: app.translator.trans('core.admin.basics.welcome_banner_heading'),
className: 'BasicsPage-welcomeBanner',
children: [
<div className="helpText">
{app.trans('core.admin.basics_welcome_banner_text')}
{app.translator.trans('core.admin.basics.welcome_banner_text')}
</div>,
<div className="BasicsPage-welcomeBanner-input">
<input className="FormControl" value={this.values.welcome_title()} oninput={m.withAttr('value', this.values.welcome_title)}/>
@ -97,7 +97,7 @@ export default class BasicsPage extends Component {
{Button.component({
type: 'submit',
className: 'Button Button--primary',
children: app.trans('core.admin.basics_submit_button'),
children: app.translator.trans('core.admin.basics.submit_button'),
loading: this.loading,
disabled: !this.changed()
})}
@ -123,7 +123,7 @@ export default class BasicsPage extends Component {
items.add('allDiscussions', {
path: '/all',
label: app.trans('core.admin.basics_all_discussions_label')
label: app.translator.trans('core.admin.basics.all_discussions_label')
});
return items;
@ -143,7 +143,7 @@ export default class BasicsPage extends Component {
saveSettings(settings)
.then(() => {
app.alerts.show(this.successAlert = new Alert({type: 'success', children: app.trans('core.admin.basics_saved_message')}));
app.alerts.show(this.successAlert = new Alert({type: 'success', children: app.translator.trans('core.admin.basics.saved_message')}));
})
.finally(() => {
this.loading = false;

View File

@ -6,14 +6,14 @@ export default class DashboardPage extends Component {
<div className="DashboardPage">
<div className="container">
<h2>Welcome to Flarum Beta</h2>
<p>{app.trans('core.admin.dashboard_version_text', {version: <strong>{app.forum.attribute('version')}</strong>})}</p>
<p>{app.trans('core.admin.dashboard_beta_warning_text', {strong: <strong/>})}</p>
<p>{app.translator.trans('core.admin.dashboard.version_text', {version: <strong>{app.forum.attribute('version')}</strong>})}</p>
<p>{app.translator.trans('core.admin.dashboard.beta_warning_text', {strong: <strong/>})}</p>
<ul>
<li>{app.trans('core.admin.dashboard_contributing_text', {a: <a href="http://flarum.org/docs/contributing" target="_blank"/>})}</li>
<li>{app.trans('core.admin.dashboard_troubleshooting_text', {a: <a href="http://flarum.org/docs/troubleshooting" target="_blank"/>})}</li>
<li>{app.trans('core.admin.dashboard_support_text', {a: <a href="http://discuss.flarum.org/t/support" target="_blank"/>})}</li>
<li>{app.trans('core.admin.dashboard_features_text', {a: <a href="http://discuss.flarum.org/t/features" target="_blank"/>})}</li>
<li>{app.trans('core.admin.dashboard_extension_text', {a: <a href="http://flarum.org/docs/extend" target="_blank"/>})}</li>
<li>{app.translator.trans('core.admin.dashboard.contributing_text', {a: <a href="http://flarum.org/docs/contributing" target="_blank"/>})}</li>
<li>{app.translator.trans('core.admin.dashboard.troubleshooting_text', {a: <a href="http://flarum.org/docs/troubleshooting" target="_blank"/>})}</li>
<li>{app.translator.trans('core.admin.dashboard.support_text', {a: <a href="http://discuss.flarum.org/t/support" target="_blank"/>})}</li>
<li>{app.translator.trans('core.admin.dashboard.features_text', {a: <a href="http://discuss.flarum.org/t/features" target="_blank"/>})}</li>
<li>{app.translator.trans('core.admin.dashboard.extension_text', {a: <a href="http://flarum.org/docs/extend" target="_blank"/>})}</li>
</ul>
</div>
</div>

View File

@ -28,7 +28,7 @@ export default class EditGroupModal extends Modal {
style: {backgroundColor: this.color()}
}) : '',
' ',
this.namePlural() || app.trans('core.admin.edit_group_title')
this.namePlural() || app.translator.trans('core.admin.edit_group.title')
];
}
@ -37,22 +37,22 @@ export default class EditGroupModal extends Modal {
<div className="Modal-body">
<div className="Form">
<div className="Form-group">
<label>{app.trans('core.admin.edit_group_name_label')}</label>
<label>{app.translator.trans('core.admin.edit_group.name_label')}</label>
<div className="EditGroupModal-name-input">
<input className="FormControl" placeholder="Singular (e.g. Mod)" value={this.nameSingular()} oninput={m.withAttr('value', this.nameSingular)}/>
<input className="FormControl" placeholder="Plural (e.g. Mods)" value={this.namePlural()} oninput={m.withAttr('value', this.namePlural)}/>
<input className="FormControl" placeholder={app.translator.trans('core.admin.edit_group.singular_placeholder')} value={this.nameSingular()} oninput={m.withAttr('value', this.nameSingular)}/>
<input className="FormControl" placeholder={app.translator.trans('core.admin.edit_group.plural_placeholder')} value={this.namePlural()} oninput={m.withAttr('value', this.namePlural)}/>
</div>
</div>
<div className="Form-group">
<label>{app.trans('core.admin.edit_group_color_label')}</label>
<label>{app.translator.trans('core.admin.edit_group.color_label')}</label>
<input className="FormControl" placeholder="#aaaaaa" value={this.color()} oninput={m.withAttr('value', this.color)}/>
</div>
<div className="Form-group">
<label>{app.trans('core.admin.edit_group_icon_label')}</label>
<label>{app.translator.trans('core.admin.edit_group.icon_label')}</label>
<div className="helpText">
{app.trans('core.admin.edit_group_icon_text', {a: <a href="http://fortawesome.github.io/Font-Awesome/icons/" tabindex="-1"/>}, {em: <em/>}, {code: <code/>})}
{app.translator.trans('core.admin.edit_group.icon_text', {a: <a href="http://fortawesome.github.io/Font-Awesome/icons/" tabindex="-1"/>}, {em: <em/>}, {code: <code/>})}
</div>
<input className="FormControl" placeholder="bolt" value={this.icon()} oninput={m.withAttr('value', this.icon)}/>
</div>
@ -62,11 +62,11 @@ export default class EditGroupModal extends Modal {
type: 'submit',
className: 'Button Button--primary EditGroupModal-save',
loading: this.loading,
children: app.trans('core.admin.edit_group_submit_button')
children: app.translator.trans('core.admin.edit_group.submit_button')
})}
{this.group.exists && this.group.id() !== Group.ADMINISTRATOR_ID ? (
<button type="button" className="Button EditGroupModal-delete" onclick={this.deleteGroup.bind(this)}>
{app.trans('core.admin.edit_group_delete_button')}
{app.translator.trans('core.admin.edit_group.delete_button')}
</button>
) : ''}
</div>
@ -94,7 +94,7 @@ export default class EditGroupModal extends Modal {
}
deleteGroup() {
if (confirm(app.trans('core.admin.edit_group_delete_confirmation'))) {
if (confirm(app.translator.trans('core.admin.edit_group.delete_confirmation'))) {
this.group.delete().then(() => m.redraw());
this.hide();
}

View File

@ -18,7 +18,7 @@ export default class ExtensionsPage extends Component {
<div className="ExtensionsPage-header">
<div className="container">
{Button.component({
children: app.trans('core.admin.extensions_add_button'),
children: app.translator.trans('core.admin.extensions.add_button'),
icon: 'plus',
className: 'Button Button--primary',
onclick: () => app.modal.show(new AddExtensionModal())
@ -70,7 +70,7 @@ export default class ExtensionsPage extends Component {
if (app.extensionSettings[name]) {
items.add('settings', Button.component({
icon: 'cog',
children: app.trans('core.admin.extensions_settings_button'),
children: app.translator.trans('core.admin.extensions.settings_button'),
onclick: app.extensionSettings[name]
}));
}
@ -78,7 +78,7 @@ export default class ExtensionsPage extends Component {
if (!enabled) {
items.add('uninstall', Button.component({
icon: 'trash-o',
children: app.trans('core.admin.extensions_uninstall_button'),
children: app.translator.trans('core.admin.extensions.uninstall_button'),
onclick: () => {
app.request({
url: app.forum.attribute('apiUrl') + '/extensions/' + name,

View File

@ -10,7 +10,7 @@ export default class LoadingModal extends Modal {
}
title() {
return app.trans('core.admin.extensions_loading_title');
return app.translator.trans('core.admin.loading.title');
}
content() {

View File

@ -27,9 +27,9 @@ export default class PermissionDropdown extends Dropdown {
const adminGroup = app.store.getById('groups', Group.ADMINISTRATOR_ID);
if (everyone) {
this.props.label = app.trans('core.admin.permissions_dropdown_everyone_button');
this.props.label = app.translator.trans('core.admin.permissions_controls.everyone_button');
} else if (members) {
this.props.label = app.trans('core.admin.permissions_dropdown_members_button');
this.props.label = app.translator.trans('core.admin.permissions_controls.members_button');
} else {
this.props.label = [
badgeForId(Group.ADMINISTRATOR_ID),
@ -40,7 +40,7 @@ export default class PermissionDropdown extends Dropdown {
if (this.props.allowGuest) {
this.props.children.push(
Button.component({
children: app.trans('core.admin.permissions_dropdown_everyone_button'),
children: app.translator.trans('core.admin.permissions_controls.everyone_button'),
icon: everyone ? 'check' : true,
onclick: () => this.save([Group.GUEST_ID])
})
@ -49,7 +49,7 @@ export default class PermissionDropdown extends Dropdown {
this.props.children.push(
Button.component({
children: app.trans('core.admin.permissions_dropdown_members_button'),
children: app.translator.trans('core.admin.permissions_controls.members_button'),
icon: members ? 'check' : true,
onclick: () => this.save([Group.MEMBER_ID])
}),

View File

@ -59,22 +59,22 @@ export default class PermissionGrid extends Component {
const items = new ItemList();
items.add('view', {
label: app.trans('core.admin.permissions_read_heading'),
label: app.translator.trans('core.admin.permissions.read_heading'),
children: this.viewItems().toArray()
}, 100);
items.add('start', {
label: app.trans('core.admin.permissions_create_heading'),
label: app.translator.trans('core.admin.permissions.create_heading'),
children: this.startItems().toArray()
}, 90);
items.add('reply', {
label: app.trans('core.admin.permissions_participate_heading'),
label: app.translator.trans('core.admin.permissions.participate_heading'),
children: this.replyItems().toArray()
}, 80);
items.add('moderate', {
label: app.trans('core.admin.permissions_moderate_heading'),
label: app.translator.trans('core.admin.permissions.moderate_heading'),
children: this.moderateItems().toArray()
}, 70);
@ -86,19 +86,19 @@ export default class PermissionGrid extends Component {
items.add('viewDiscussions', {
icon: 'eye',
label: app.trans('core.admin.permissions_view_discussions_label'),
label: app.translator.trans('core.admin.permissions.view_discussions_label'),
permission: 'viewDiscussions',
allowGuest: true
}, 100);
items.add('signUp', {
icon: 'user-plus',
label: app.trans('core.admin.permissions_sign_up_label'),
label: app.translator.trans('core.admin.permissions.sign_up_label'),
setting: () => SettingDropdown.component({
key: 'allow_sign_up',
options: [
{value: '1', label: app.trans('core.admin.permissions_signup_open_button')},
{value: '0', label: app.trans('core.admin.permissions_signup_closed_button')}
{value: '1', label: app.translator.trans('core.admin.permissions_controls.signup_open_button')},
{value: '0', label: app.translator.trans('core.admin.permissions_controls.signup_closed_button')}
]
})
}, 90);
@ -111,25 +111,25 @@ export default class PermissionGrid extends Component {
items.add('start', {
icon: 'edit',
label: app.trans('core.admin.permissions_start_discussions_label'),
label: app.translator.trans('core.admin.permissions.start_discussions_label'),
permission: 'startDiscussion'
}, 100);
items.add('allowRenaming', {
icon: 'i-cursor',
label: app.trans('core.admin.permissions_allow_renaming_label'),
label: app.translator.trans('core.admin.permissions.allow_renaming_label'),
setting: () => {
const minutes = parseInt(app.settings.allow_renaming, 10);
return SettingDropdown.component({
defaultLabel: minutes
? app.translator.transChoice('core.admin.permissions_allow_some_minutes_button', minutes, {count: minutes})
: app.trans('core.admin.permissions_allow_indefinitely_button'),
? app.translator.transChoice('core.admin.permissions_controls.allow_some_minutes_button', minutes, {count: minutes})
: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button'),
key: 'allow_renaming',
options: [
{value: '-1', label: app.trans('core.admin.permissions_allow_indefinitely_button')},
{value: '10', label: app.trans('core.admin.permissions_allow_ten_minutes_button')},
{value: 'reply', label: app.trans('core.admin.permissions_allow_until_reply_button')}
{value: '-1', label: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button')},
{value: '10', label: app.translator.trans('core.admin.permissions_controls.allow_ten_minutes_button')},
{value: 'reply', label: app.translator.trans('core.admin.permissions_controls.allow_until_reply_button')}
]
});
}
@ -143,25 +143,25 @@ export default class PermissionGrid extends Component {
items.add('reply', {
icon: 'reply',
label: app.trans('core.admin.permissions_reply_to_discussions_label'),
label: app.translator.trans('core.admin.permissions.reply_to_discussions_label'),
permission: 'discussion.reply'
}, 100);
items.add('allowPostEditing', {
icon: 'pencil',
label: app.trans('core.admin.permissions_allow_post_editing_label'),
label: app.translator.trans('core.admin.permissions.allow_post_editing_label'),
setting: () => {
const minutes = parseInt(app.settings.allow_post_editing, 10);
return SettingDropdown.component({
defaultLabel: minutes
? app.translator.transChoice('core.admin.permissions_allow_some_minutes_button', minutes, {count: minutes})
: app.trans('core.admin.permissions_allow_indefinitely_button'),
? app.translator.transChoice('core.admin.permissions_controls.allow_some_minutes_button', minutes, {count: minutes})
: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button'),
key: 'allow_post_editing',
options: [
{value: '-1', label: app.trans('core.admin.permissions_allow_indefinitely_button')},
{value: '10', label: app.trans('core.admin.permissions_allow_ten_minutes_button')},
{value: 'reply', label: app.trans('core.admin.permissions_allow_until_reply_button')}
{value: '-1', label: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button')},
{value: '10', label: app.translator.trans('core.admin.permissions_controls.allow_ten_minutes_button')},
{value: 'reply', label: app.translator.trans('core.admin.permissions_controls.allow_until_reply_button')}
]
});
}
@ -175,31 +175,31 @@ export default class PermissionGrid extends Component {
items.add('renameDiscussions', {
icon: 'i-cursor',
label: app.trans('core.admin.permissions_rename_discussions_label'),
label: app.translator.trans('core.admin.permissions.rename_discussions_label'),
permission: 'discussion.rename'
}, 100);
items.add('hideDiscussions', {
icon: 'trash-o',
label: app.trans('core.admin.permissions_delete_discussions_label'),
label: app.translator.trans('core.admin.permissions.delete_discussions_label'),
permission: 'discussion.hide'
}, 90);
items.add('deleteDiscussions', {
icon: 'times',
label: app.trans('core.admin.permissions_delete_discussions_forever_label'),
label: app.translator.trans('core.admin.permissions.delete_discussions_forever_label'),
permission: 'discussion.delete'
}, 80);
items.add('editPosts', {
icon: 'pencil',
label: app.trans('core.admin.permissions_edit_and_delete_posts_label'),
label: app.translator.trans('core.admin.permissions.edit_and_delete_posts_label'),
permission: 'discussion.editPosts'
}, 70);
items.add('deletePosts', {
icon: 'times',
label: app.trans('core.admin.permissions_delete_posts_forever_label'),
label: app.translator.trans('core.admin.permissions.delete_posts_forever_label'),
permission: 'discussion.deletePosts'
}, 60);
@ -210,7 +210,7 @@ export default class PermissionGrid extends Component {
const items = new ItemList();
items.add('global', {
label: app.trans('core.admin.permissions_global_heading'),
label: app.translator.trans('core.admin.permissions.global_heading'),
render: item => {
if (item.setting) {
return item.setting();

View File

@ -25,7 +25,7 @@ export default class PermissionsPage extends Component {
))}
<button className="Button Group Group--add" onclick={() => app.modal.show(new EditGroupModal())}>
{icon('plus', {className: 'Group-icon'})}
<span className="Group-name">{app.trans('core.admin.permissions_new_group_button')}</span>
<span className="Group-name">{app.translator.trans('core.admin.permissions.new_group_button')}</span>
</button>
</div>
</div>

View File

@ -43,7 +43,7 @@ export default class SessionDropdown extends Dropdown {
items.add('logOut',
Button.component({
icon: 'sign-out',
children: app.trans('core.admin.header_log_out_button'),
children: app.translator.trans('core.admin.header.log_out_button'),
onclick: app.session.logout.bind(app.session)
}),
-100