Merge pull request #934 from podemos-info/development

Added DataTable translations from aplication locales (V2)
This commit is contained in:
Tomas Bures 2020-08-26 00:54:49 +02:00 committed by GitHub
commit 90fb72fc6f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 734 additions and 575 deletions

View file

@ -108,13 +108,13 @@ export default class Clone extends Component {
return ( return (
<div> <div>
<Title>{t('Create campaign')}</Title> <Title>{t('createCampaign')}</Title>
<Form stateOwner={this} onSubmitAsync={::this.submitHandler}> <Form stateOwner={this} onSubmitAsync={::this.submitHandler}>
<TableSelect id="sourceCampaign" label={t('campaign')} withHeader dropdown dataUrl='rest/campaigns-table' columns={campaignsColumns} order={[4, 'desc']} selectionLabelIndex={1} help={t('Select campaign to be cloned.')}/> <TableSelect id="sourceCampaign" label={t('campaign')} withHeader dropdown dataUrl='rest/campaigns-table' columns={campaignsColumns} order={[4, 'desc']} selectionLabelIndex={1} help={t('selectCampaignToBeCloned')}/>
<ButtonRow> <ButtonRow>
<Button type="submit" className="btn-primary" icon="chevron-right" label={t('Next')}/> <Button type="submit" className="btn-primary" icon="chevron-right" label={t('next')}/>
</ButtonRow> </ButtonRow>
</Form> </Form>
</div> </div>

View file

@ -65,7 +65,7 @@ export default class List extends Component {
columns.push({ data: 4, title: t('type'), render: data => this.campaignTypeLabels[data] }); columns.push({ data: 4, title: t('type'), render: data => this.campaignTypeLabels[data] });
if (!channel) { if (!channel) {
columns.push({ data: 5, title: t('Channel') }); columns.push({ data: 5, title: t('channel') });
} }
columns.push({ columns.push({
@ -164,7 +164,7 @@ export default class List extends Component {
} else { } else {
createButton = ( createButton = (
<> <>
<LinkButton to={`/campaigns/clone`} className="btn-primary" icon="clone" label={t('Clone Campaign')}/> <LinkButton to={`/campaigns/clone`} className="btn-primary" icon="clone" label={t('cloneCampaign')}/>
<ButtonDropdown buttonClassName="btn-primary" menuClassName="dropdown-menu-right" icon="plus" label={t('createCampaign')}> <ButtonDropdown buttonClassName="btn-primary" menuClassName="dropdown-menu-right" icon="plus" label={t('createCampaign')}>
<DropdownLink to="/campaigns/create-regular">{t('regular')}</DropdownLink> <DropdownLink to="/campaigns/create-regular">{t('regular')}</DropdownLink>
<DropdownLink to="/campaigns/create-rss">{t('rss')}</DropdownLink> <DropdownLink to="/campaigns/create-rss">{t('rss')}</DropdownLink>
@ -192,4 +192,4 @@ export default class List extends Component {
</div> </div>
); );
} }
} }

View file

@ -179,7 +179,7 @@ function getMenus(t) {
panelRender: props => <CampaignsCUD action="create" type={CampaignType.TRIGGERED} permissions={props.permissions} /> panelRender: props => <CampaignsCUD action="create" type={CampaignType.TRIGGERED} permissions={props.permissions} />
}, },
'clone': { 'clone': {
title: t('Create Campaign'), title: t('createCampaign'),
link: params => `/campaigns/clone`, link: params => `/campaigns/clone`,
panelRender: props => <Clone />, panelRender: props => <Clone />,
children: { children: {

View file

@ -368,17 +368,17 @@ export default class CUD extends Component {
if (submitResult) { if (submitResult) {
if (this.props.entity) { if (this.props.entity) {
if (submitAndLeave) { if (submitAndLeave) {
this.navigateToWithFlashMessage('/channels', 'success', t('Channel updated')); this.navigateToWithFlashMessage('/channels', 'success', t('channelUpdated'));
} else { } else {
await this.getFormValuesFromURL(`rest/channels/${this.props.entity.id}`); await this.getFormValuesFromURL(`rest/channels/${this.props.entity.id}`);
this.enableForm(); this.enableForm();
this.setFormStatusMessage('success', t('Channel updated')); this.setFormStatusMessage('success', t('channelUpdated'));
} }
} else { } else {
if (submitAndLeave) { if (submitAndLeave) {
this.navigateToWithFlashMessage('/channels', 'success', t('Channel created')); this.navigateToWithFlashMessage('/channels', 'success', t('channelCreated'));
} else { } else {
this.navigateToWithFlashMessage(`/channels/${submitResult}/edit`, 'success', t('Channel created')); this.navigateToWithFlashMessage(`/channels/${submitResult}/edit`, 'success', t('channelCreated'));
} }
} }
} else { } else {
@ -501,11 +501,11 @@ export default class CUD extends Component {
deleteUrl={`rest/channels/${this.props.entity.id}`} deleteUrl={`rest/channels/${this.props.entity.id}`}
backUrl={`/channels/${this.props.entity.id}/edit`} backUrl={`/channels/${this.props.entity.id}/edit`}
successUrl="/channels" successUrl="/channels"
deletingMsg={t('Deleting channel ...')} deletingMsg={t('deletingChannel')}
deletedMsg={t('Channel deleted')}/> deletedMsg={t('channelDeleted')}/>
} }
<Title>{isEdit ? t('Edit Channel') : t('Create Channel')}</Title> <Title>{isEdit ? t('editChannel') : t('createChannel')}</Title>
{!canModify && {!canModify &&
<div className="alert alert-warning" role="alert"> <div className="alert alert-warning" role="alert">

View file

@ -61,7 +61,7 @@ export default class List extends Component {
if (perms.includes('view')) { if (perms.includes('view')) {
actions.push({ actions.push({
label: <Icon icon="inbox" title={t('Campaigns')}/>, label: <Icon icon="inbox" title={t('campaigns')}/>,
link: `/channels/${data[0]}/campaigns` link: `/channels/${data[0]}/campaigns`
}); });
} }
@ -80,7 +80,7 @@ export default class List extends Component {
}); });
} }
tableAddDeleteButton(actions, this, perms, `rest/channels/${data[0]}`, data[1], t('Deleting channel ...'), t('Channel deleted')); tableAddDeleteButton(actions, this, perms, `rest/channels/${data[0]}`, data[1], t('deletingChannel'), t('channelDeleted'));
return actions; return actions;
} }
@ -92,14 +92,14 @@ export default class List extends Component {
{tableRestActionDialogRender(this)} {tableRestActionDialogRender(this)}
<Toolbar> <Toolbar>
{createPermitted && {createPermitted &&
<LinkButton to="/channels/create" className="btn-primary" icon="plus" label={t('Create Channel')}/> <LinkButton to="/channels/create" className="btn-primary" icon="plus" label={t('createChannel')}/>
} }
</Toolbar> </Toolbar>
<Title>{t('Channels')}</Title> <Title>{t('channels')}</Title>
<Table ref={node => this.table = node} withHeader dataUrl="rest/channels-table" columns={columns} /> <Table ref={node => this.table = node} withHeader dataUrl="rest/channels-table" columns={columns} />
</div> </div>
); );
} }
} }

View file

@ -12,7 +12,7 @@ import {namespaceCheckPermissions} from "../lib/namespace";
function getMenus(t) { function getMenus(t) {
return { return {
'channels': { 'channels': {
title: t('Channels'), title: t('channels'),
link: '/channels', link: '/channels',
checkPermissions: { checkPermissions: {
createChannel: { createChannel: {
@ -29,14 +29,14 @@ function getMenus(t) {
panelRender: props => <ChannelsList permissions={props.permissions}/>, panelRender: props => <ChannelsList permissions={props.permissions}/>,
children: { children: {
':channelId([0-9]+)': { ':channelId([0-9]+)': {
title: resolved => t('Channel "{{name}}"', {name: ellipsizeBreadcrumbLabel(resolved.channel.name)}), title: resolved => t('channelName', {name: ellipsizeBreadcrumbLabel(resolved.channel.name)}),
resolve: { resolve: {
channel: params => `rest/channels/${params.channelId}` channel: params => `rest/channels/${params.channelId}`
}, },
link: params => `/channels/${params.channelId}/campaigns`, link: params => `/channels/${params.channelId}/campaigns`,
navs: { navs: {
campaigns: { campaigns: {
title: t('Campaigns'), title: t('campaigns'),
link: params => `/channels/${params.channelId}/campaigns`, link: params => `/channels/${params.channelId}/campaigns`,
visible: resolved => resolved.channel.permissions.includes('view'), visible: resolved => resolved.channel.permissions.includes('view'),
panelRender: props => <CampaignsList channel={props.resolved.channel} permissions={props.permissions} /> panelRender: props => <CampaignsList channel={props.resolved.channel} permissions={props.permissions} />
@ -64,7 +64,7 @@ function getMenus(t) {
} }
}, },
'create': { 'create': {
title: t('Create Channel'), title: t('createChannel'),
panelRender: props => <ChannelsCUD action="create" permissions={props.permissions} /> panelRender: props => <ChannelsCUD action="create" permissions={props.permissions} />
} }
} }

View file

@ -320,6 +320,31 @@ class Table extends Component {
}); });
}; };
const t = this.props.t;
dtOptions.language = {
"sEmptyTable": t("dTsEmptyTable"),
"sInfo": t("dTsInfo"),
"sInfoEmpty": t("dTsInfoEmpty"),
"sInfoFiltered": t("dTsInfoFiltered"),
"sInfoPostFix": t("dTsInfoPostFix"),
"sInfoThousands": t("dTsInfoThousands"),
"sLengthMenu": t("dTsLengthMenu"),
"sLoadingRecords": t("dTsLoadingRecords"),
"sProcessing": t("dTsProcessing"),
"sSearch": t("dTsSearch"),
"sZeroRecords": t("dTsZeroRecords"),
"oPaginate": {
"sFirst": t("dTsFirst"),
"sLast": t("dTsLast"),
"sNext": t("dTsNext"),
"sPrevious": t("dTsPrevious")
},
"oAria": {
"sSortAscending": t("dTsSortAscending"),
"sSortDescending": t("dTsSortDescending")
}
}
dtOptions.initComplete = function() { dtOptions.initComplete = function() {
self.jqSelectInfo = jQuery('<div class="dataTable_selection_info"/>'); self.jqSelectInfo = jQuery('<div class="dataTable_selection_info"/>');
const jqWrapper = jQuery(self.domTable).parents('.dataTables_wrapper'); const jqWrapper = jQuery(self.domTable).parents('.dataTables_wrapper');
@ -430,4 +455,4 @@ class Table extends Component {
export { export {
Table, Table,
TableSelectMode TableSelectMode
} }

View file

@ -225,8 +225,8 @@ export default class CUD extends Component {
const canDelete = isEdit && userId !== 1 && mailtrainConfig.user.id !== userId; const canDelete = isEdit && userId !== 1 && mailtrainConfig.user.id !== userId;
const rolesColumns = [ const rolesColumns = [
{ data: 1, title: "Name" }, { data: 1, title: t("name") },
{ data: 2, title: "Description" }, { data: 2, title: t("description") },
]; ];

View file

@ -29,15 +29,15 @@ export default class List extends Component {
const t = this.props.t; const t = this.props.t;
const columns = [ const columns = [
{ data: 1, title: "Username" }, { data: 1, title: t("username") },
]; ];
if (mailtrainConfig.isAuthMethodLocal) { if (mailtrainConfig.isAuthMethodLocal) {
columns.push({ data: 2, title: "Full Name" }); columns.push({ data: 2, title: t("fullName") });
} }
columns.push({ data: 3, title: "Namespace" }); columns.push({ data: 3, title: t("namespace") });
columns.push({ data: 4, title: "Role" }); columns.push({ data: 4, title: t("role") });
columns.push({ columns.push({
actions: data => { actions: data => {
@ -72,4 +72,4 @@ export default class List extends Component {
</div> </div>
); );
} }
} }

View file

@ -1028,5 +1028,41 @@
"thePasswordMustContainAtLeastOneSpecial": "Das Passwort muss mindestens ein Sonderzeichen enthalten", "thePasswordMustContainAtLeastOneSpecial": "Das Passwort muss mindestens ein Sonderzeichen enthalten",
"tagLanguage": "Tag Sprache", "tagLanguage": "Tag Sprache",
"tagLanguageMustBeSelected": "Tag Sprache muss ausgewählt werden", "tagLanguageMustBeSelected": "Tag Sprache muss ausgewählt werden",
"helpText": "Hilfe-Text" "helpText": "Hilfe-Text",
"dTsEmptyTable": "Keine Daten in der Tabelle vorhanden",
"dTsInfo": "_START_ bis _END_ von _TOTAL_ Einträgen",
"dTsInfoEmpty": "Keine Daten vorhanden",
"dTsInfoFiltered": "(gefiltert von _MAX_ Einträgen)",
"dTsInfoPostFix": "",
"dTsInfoThousands": ".",
"dTsLengthMenu": "_MENU_ Einträge anzeigen",
"dTsLoadingRecords": "Wird geladen ..",
"dTsProcessing": "Bitte warten ..",
"dTsSearch": "Suchen",
"dTsZeroRecords": "Keine Einträge vorhanden",
"dTsFirst": "Erste",
"dTsLast": "Zurück",
"dTsNext": "Nächste",
"dTsPrevious": "Letzte",
"dTsSortAscending": ": aktivieren, um Spalte aufsteigend zu sortieren",
"dTsSortDescending": ": aktivieren, um Spalte absteigend zu sortieren",
"saving": "Saving ...",
"channelUpdated": "Channel updated",
"channelCreated": "Channel created",
"deletingChannel": "Deleting channel ...",
"channelDeleted": "Channel deleted",
"editChannel": "Edit Channel",
"createChannel": "Create Channel",
"sendConfiguration": "Send configuration",
"sendConfiguration_plural": "Send configurations",
"disableOpenedTracking": "Disable opened tracking",
"disableClickedTracking": "Disable clicked tracking",
"save": "Save",
"saveAndLeave": "Save and leave",
"channels": "Channels",
"channel": "Channel",
"channelName": "Channel \"{{name}}\"",
"cloneCampaign": "Clone Campaign",
"next": "Next",
"selectCampaignToBeCloned": "Select campaign to be cloned."
} }

View file

@ -1034,5 +1034,41 @@
"thePasswordMustContainAtLeastOneSpecial": "The password must contain at least one special character", "thePasswordMustContainAtLeastOneSpecial": "The password must contain at least one special character",
"tagLanguage": "Tag language", "tagLanguage": "Tag language",
"tagLanguageMustBeSelected": "Tag language must be selected", "tagLanguageMustBeSelected": "Tag language must be selected",
"helpText": "Help text" "helpText": "Help text",
"dTsEmptyTable": "No data available in table",
"dTsInfo": "Showing _START_ to _END_ of _TOTAL_ entries",
"dTsInfoEmpty": "Showing 0 to 0 of 0 entries",
"dTsInfoFiltered": "(filtered from _MAX_ total entries)",
"dTsInfoPostFix": "",
"dTsInfoThousands": ",",
"dTsLengthMenu": "Show _MENU_ entries",
"dTsLoadingRecords": "Loading...",
"dTsProcessing": "Processing...",
"dTsSearch": "Search:",
"dTsZeroRecords": "No matching records found",
"dTsFirst": "Firs",
"dTsLast": "Last",
"dTsNext": "Next",
"dTsPrevious": "Previous",
"dTsSortAscending": ": activate to sort column ascending",
"dTsSortDescending": ": activate to sort column descending",
"saving": "Saving ...",
"channelUpdated": "Channel updated",
"channelCreated": "Channel created",
"deletingChannel": "Deleting channel ...",
"channelDeleted": "Channel deleted",
"editChannel": "Edit Channel",
"createChannel": "Create Channel",
"sendConfiguration": "Send configuration",
"sendConfiguration_plural": "Send configurations",
"disableOpenedTracking": "Disable opened tracking",
"disableClickedTracking": "Disable clicked tracking",
"save": "Save",
"saveAndLeave": "Save and leave",
"channels": "Channels",
"channel": "Channel",
"channelName": "Channel \"{{name}}\"",
"cloneCampaign": "Clone Campaign",
"next": "Next",
"selectCampaignToBeCloned": "Select campaign to be cloned."
} }

File diff suppressed because it is too large Load diff

View file

@ -1029,5 +1029,41 @@
"thePasswordMustContainAtLeastOneSpecial": "Le mot de passe doit contenir au moins un caractère spécial", "thePasswordMustContainAtLeastOneSpecial": "Le mot de passe doit contenir au moins un caractère spécial",
"tagLanguage": "Langue du tag", "tagLanguage": "Langue du tag",
"tagLanguageMustBeSelected": "La langue du tag doit être sélectionnée", "tagLanguageMustBeSelected": "La langue du tag doit être sélectionnée",
"helpText": "Texte d'aide" "helpText": "Texte d'aide",
"dTsEmptyTable": "Aucune donnée disponible dans le tableau",
"dTsInfo": "Affichage de l'élément _START_ à _END_ sur _TOTAL_ éléments",
"dTsInfoEmpty": "Affichage de l'élément 0 à 0 sur 0 élément",
"dTsInfoFiltered": "(filtré à partir de _MAX_ éléments au total)",
"dTsInfoPostFix": "",
"dTsInfoThousands": ",",
"dTsLengthMenu": "Afficher _MENU_ éléments",
"dTsLoadingRecords": "Chargement...",
"dTsProcessing": "Traitement...",
"dTsSearch": "Rechercher :",
"dTsZeroRecords": "Aucun élément correspondant trouvé",
"dTsFirst": "Premier",
"dTsLast": "Dernier",
"dTsNext": "Suivant",
"dTsPrevious": "Précédent",
"dTsSortAscending": ": activer pour trier la colonne par ordre croissant",
"dTsSortDescending": ": activer pour trier la colonne par ordre décroissant",
"saving": "Saving ...",
"channelUpdated": "Channel updated",
"channelCreated": "Channel created",
"deletingChannel": "Deleting channel ...",
"channelDeleted": "Channel deleted",
"editChannel": "Edit Channel",
"createChannel": "Create Channel",
"sendConfiguration": "Send configuration",
"sendConfiguration_plural": "Send configurations",
"disableOpenedTracking": "Disable opened tracking",
"disableClickedTracking": "Disable clicked tracking",
"save": "Save",
"saveAndLeave": "Save and leave",
"channels": "Channels",
"channel": "Channel",
"channelName": "Channel \"{{name}}\"",
"cloneCampaign": "Clone Campaign",
"next": "Next",
"selectCampaignToBeCloned": "Select campaign to be cloned."
} }

View file

@ -1107,5 +1107,41 @@
"thePasswordMustContainAtLeastOne": "A senha deve conter pelo menos uma letra minúscula", "thePasswordMustContainAtLeastOne": "A senha deve conter pelo menos uma letra minúscula",
"thePasswordMustContainAtLeastOne-1": "A senha deve conter pelo menos uma letra maiúscula", "thePasswordMustContainAtLeastOne-1": "A senha deve conter pelo menos uma letra maiúscula",
"thePasswordMustContainAtLeastOneNumber": "A senha deve conter pelo menos um número", "thePasswordMustContainAtLeastOneNumber": "A senha deve conter pelo menos um número",
"thePasswordMustContainAtLeastOneSpecial": "A senha deve conter pelo menos um caractere especial" "thePasswordMustContainAtLeastOneSpecial": "A senha deve conter pelo menos um caractere especial",
"dTsEmptyTable": "Não foi encontrado nenhum registo",
"dTsInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registos",
"dTsInfoEmpty": "Mostrando de 0 até 0 de 0 registos",
"dTsInfoFiltered": "(filtrado de _MAX_ registos no total)",
"dTsInfoPostFix": "",
"dTsInfoThousands": ".",
"dTsLengthMenu": "Mostrar _MENU_ registos",
"dTsLoadingRecords": "A carregar...",
"dTsProcessing": "A processar...",
"dTsSearch": "Procurar:",
"dTsZeroRecords": "Não foram encontrados resultados",
"dTsFirst": "Primeiro",
"dTsLast": "Último",
"dTsNext": "Seguinte",
"dTsPrevious": "Anterior",
"dTsSortAscending": ": Ordenar colunas de forma ascendente",
"dTsSortDescending": ": Ordenar colunas de forma descendente",
"saving": "Saving ...",
"channelUpdated": "Channel updated",
"channelCreated": "Channel created",
"deletingChannel": "Deleting channel ...",
"channelDeleted": "Channel deleted",
"editChannel": "Edit Channel",
"createChannel": "Create Channel",
"sendConfiguration": "Send configuration",
"sendConfiguration_plural": "Send configurations",
"disableOpenedTracking": "Disable opened tracking",
"disableClickedTracking": "Disable clicked tracking",
"save": "Save",
"saveAndLeave": "Save and leave",
"channels": "Channels",
"channel": "Channel",
"channelName": "Channel \"{{name}}\"",
"cloneCampaign": "Clone Campaign",
"next": "Next",
"selectCampaignToBeCloned": "Select campaign to be cloned."
} }