diff --git a/js/components/ReactDatepicker.js b/js/components/ReactDatepicker.js new file mode 100644 index 000000000..5678dd944 --- /dev/null +++ b/js/components/ReactDatepicker.js @@ -0,0 +1,111 @@ +import React from 'react'; +import Datepicker, {registerLocale} from "react-datepicker"; +import 'react-datepicker/dist/react-datepicker.css'; +import {es, fr} from 'date-fns/locale'; +registerLocale('es', es) +registerLocale('fr', fr) + +const months = [ + gettext("January"), + gettext("March"), + gettext("February"), + gettext("April"), + gettext("May"), + gettext("June"), + gettext("July"), + gettext("August"), + gettext("September"), + gettext("October"), + gettext("November"), + gettext("December"), +]; + + +const ReactDatepicker = ({ + dateFormat, // Default format is "yyyy-MM-dd" if not specified. + locale, + className, + date, + minDate, + maxDate, + onChange, + disabled, + }) => { + + // Function to set up the range for the year picker + const yearRangeOptions = (minDate, maxDate) => { + let output = []; + let startYear = minDate.getFullYear() + let endYear = maxDate.getFullYear() + 1; + for (let i = startYear; i < endYear; i++) output.push(i); + return output; + } + + // Function to convert a valid string date to an ISO formatted date. + const formatDate = (date) => { + if (!date) return ""; + try { return window.localDateFromISOStr(date); } + catch { return date; } + } + + // Component Variables + let today = new Date(); + let selectedDate = formatDate(date) || today; + let selectedMinDate = formatDate(minDate) || new Date(`${today.getFullYear() - 10}`, `${today.getMonth()}`, `${today.getDate()}`) + let selectedMaxDate = formatDate(maxDate) || new Date(`${today.getFullYear() + 10}`, `${today.getMonth()}`, `${today.getDate()}`) + let years = yearRangeOptions(selectedMinDate, selectedMaxDate) + + return ( + ( +
+ + + + + + + +
+ )} + > +
+ ) +} + +export default ReactDatepicker; diff --git a/js/components/checkboxed-multi-select.js b/js/components/checkboxed-multi-select.js index bab4d4814..2c1a6c10d 100644 --- a/js/components/checkboxed-multi-select.js +++ b/js/components/checkboxed-multi-select.js @@ -129,6 +129,7 @@ class CheckboxedMultiSelect extends React.Component { placeholderButtonLabel={ this.props.placeholder } getDropdownButtonLabel={ this.makeLabel } components={{MenuList, Group }} + className={ this.props.className } />; } } diff --git a/js/pages/tola_management_pages/program/components/edit_program_profile.js b/js/pages/tola_management_pages/program/components/edit_program_profile.js index b2b0d4fe4..99f8ca20a 100644 --- a/js/pages/tola_management_pages/program/components/edit_program_profile.js +++ b/js/pages/tola_management_pages/program/components/edit_program_profile.js @@ -1,9 +1,11 @@ -import React from 'react' -import Select from 'react-select' -import { observer } from "mobx-react" -import CheckboxedMultiSelect from 'components/checkboxed-multi-select' -import classNames from 'classnames' -import HelpPopover from '../../../../components/helpPopover.js' +import React from 'react'; +import Select from 'react-select'; +import { observer } from "mobx-react"; +import CheckboxedMultiSelect from 'components/checkboxed-multi-select'; +import classNames from 'classnames'; +import HelpPopover from '../../../../components/helpPopover.js'; +import 'react-datepicker/dist/react-datepicker.css'; +import ReactDatepicker from "../../../../components/ReactDatepicker.js"; const ErrorFeedback = observer(({errorMessages}) => { @@ -26,69 +28,253 @@ export default class EditProgramProfile extends React.Component { this.state = { formEditable: false, - original_data: Object.assign({}, program_data), - managed_data: Object.assign({}, program_data) + original_data: $.extend(true, {}, program_data), + managed_data: $.extend(true, {}, program_data), + formErrors: {}, + gaitRowErrors: {}, + gaitRowErrorsFields: {}, } } componentDidMount() { - // Set the form to editable for demo, devs, and local servers - // let editableEnv = ["demo", "dev", "local"].reduce((editable, env) => { - // if (!editable) editable = window.location.href.includes(env); - // return editable; - // }, false) - // this.setState({ - // formEditable: editableEnv - // }) + // Set the form to editable for demo, dev, dev2, and localhost servers + let editableEnv = ["demo", "dev", "local"].reduce((editable, env) => { + if (!editable) editable = window.location.href.includes(env); + return editable; + }, false) + this.setState({ + formEditable: editableEnv + }) + this.state.managed_data.gaitid.length === 0 && this.appendGaitRow(); // If there are no GAIT IDs on mount, add a empty Gait Row } + + // ***** Action functions ***** + hasUnsavedDataAction() { this.props.onIsDirtyChange(JSON.stringify(this.state.managed_data) != JSON.stringify(this.state.original_data)) } save() { - const program_id = this.props.program_data.id - const program_data = this.state.managed_data - this.props.onUpdate(program_id, program_data) + if (this.validate()) this.props.onUpdate(this.props.program_data.id, this.state.managed_data); } - saveNew(e) { - e.preventDefault() - const program_data = this.state.managed_data - this.props.onCreate(program_data) + saveNew() { + if (this.validate()) this.props.onCreate(this.state.managed_data); } - updateFormField(fieldKey, val) { + resetForm() { this.setState({ - managed_data: Object.assign(this.state.managed_data, {[fieldKey]: val}) + managed_data: $.extend(true, {}, this.state.original_data), + formErrors: {}, + gaitRowErrors: {}, + gaitRowErrorsFields: {} }, () => this.hasUnsavedDataAction()) } - resetForm() { + updateFormField(fieldKey, val) { this.setState({ - managed_data: Object.assign({}, this.state.original_data) + managed_data: Object.assign(this.state.managed_data, {[fieldKey]: val}) }, () => this.hasUnsavedDataAction()) } formErrors(fieldKey) { - return this.props.errors[fieldKey] + return this.state.formErrors[fieldKey]; + } + + formErrorsGaitRow(index) { + if (this.state.gaitRowErrors[index] ) { + let errorMessages = new Set(); + this.state.gaitRowErrors[index].map((msg) => errorMessages.add(Object.values(msg)[0]) ) + return [...errorMessages]; + } + } + + // ***** Gait row functions ***** + + // Function to update the fields in a gait row + updateGaitRow(label, val, index) { + let updatedRows = [...this.state.managed_data.gaitid]; + updatedRows[index][label] = val; + this.updateFormField("gaitid", updatedRows); + } + + // Function to add a new gait row + appendGaitRow() { + const newRow = { + gaitid: "", + donor: "", + donor_dept: "", + fund_code: [], + }; + this.setState({ + managed_data: $.extend(true, this.state.managed_data, {gaitid: [...this.state.managed_data.gaitid, newRow]}) + }) + } + + // Function to delete a gait row + deleteGaitRow(index) { + let updatedRow = [...this.state.managed_data.gaitid]; + updatedRow.splice(index, 1); + this.updateFormField("gaitid", updatedRow); + } + + // Function to handle updating the fund code field + updateFundCode(label, value, index) { + let val = value.split(/[, ]+/); + val = val.map((code) => { + if (!code) { + return ''; + } else if ( /\D+/.test(code)) { + return parseInt(code.slice(0, code.length - 1)) || ""; + } + return parseInt(code); + }); + this.updateGaitRow(label, val, index); } - // Function to create a comma separated list to display from an array of items + // Function to create a comma separated list to display converted from an array of items createDisplayList(listArray) { - if (!listArray) return "null"; - return listArray.reduce((list, item, i) => { - let separator = i === 0 ? "" : ", "; - item = item.label || item[1] || item; - return list + separator + item; - }, ""); + if (!listArray) return null; + listArray = [...listArray]; + if (Array.isArray(listArray)) { + listArray = listArray.reduce((list, item, i) => { + let separator = i === 0 ? "" : ", "; + item = item.label || item[1] || item; + return list + separator + item; + }, ""); + } + return listArray; } + + + // ***** Validations ***** + validate() { + let isValid = true; + let detectedErrors = {}; + let formdata = this.state.managed_data; + + // Adds error message text to the detected errors object + let addErrorMessage = (type, field, msg, idx) => { + if (type === 'normal') { + detectedErrors[field] ? detectedErrors[field].push(msg) : detectedErrors[field] = [msg]; + } else if (type === 'gaitRow') { + detectedGaitRowErrors[idx] ? detectedGaitRowErrors[idx].push({[field]: msg}) : detectedGaitRowErrors[idx] = [{[field]: msg}]; + } + } + + // Required fields validations + let requiredFields = ['name', 'external_program_id', 'start_date', 'end_date', 'funding_status', 'country']; + requiredFields.map(field => { + if (!formdata[field] || formdata[field].length === 0) { + isValid = false; + addErrorMessage("normal", field, gettext('This field may not be left blank.')); + } + }) + + // Start and End date validations + let startDate = window.localDateFromISOStr(formdata.start_date); + let endDate = window.localDateFromISOStr(formdata.end_date); + let currentYear = new Date().getFullYear(); + let earliest = new Date(); + let latest = new Date(); + earliest.setFullYear(currentYear - 10); + latest.setFullYear(currentYear + 10); + if (formdata.start_date.length > 0) { + if (startDate < earliest) { + isValid = false; + addErrorMessage("normal", "start_date", gettext("The program start date may not be more than 10 years in the past.")); + } + if (formdata.end_date.length > 0 && startDate > endDate) { + isValid = false; + addErrorMessage("normal", "end_date", gettext("The program start date may not be after the program end date.")); + } + } + if (formdata.end_date.length > 0) { + if (endDate > latest) { + isValid = false; + addErrorMessage("normal", "end_date", gettext("The program end date may not be more than 10 years in the future.")); + } + if (formdata.start_date.length > 0 && endDate < startDate) { + isValid = false; + addErrorMessage("normal", "end_date", gettext("The program end date may not be before the program start date.")) + } + } + + // Gait ID, Fund code, Donor, and Donor dept section validations + let detectedGaitRowErrors = {}; + let gaitRowErrorsFields = {}; + let uniqueGaitIds = {}; + let hasDuplicates = false; + + formdata.gaitid.map((currentRow, idx) => { + + // The first row's GAIT ID is required + if (idx === 0) { + if (currentRow.gaitid.length === 0) { + isValid = false; + addErrorMessage("gaitRow", 'gaitid', gettext('GAIT IDs may not be left blank.'), idx); + } + } + + // Duplicate Gait Ids validation + if (currentRow.gaitid) { + if (uniqueGaitIds.hasOwnProperty(currentRow.gaitid)) { + hasDuplicates = true; + addErrorMessage('gaitRow', 'gaitid', gettext('Duplicate GAIT ID numbers are not allowed.'), uniqueGaitIds[currentRow.gaitid]); + addErrorMessage('gaitRow', 'gaitid', gettext('Duplicate GAIT ID numbers are not allowed.'), idx); + } else { + uniqueGaitIds[currentRow.gaitid] = idx; + } + } + + // Validation for if fund codes, donor, or donor dept is filled in but GAIT ID is left blank + if (idx > 0 && currentRow.gaitid.length === 0) { + if (currentRow.fund_code.length > 0 || currentRow.donor.length > 0 || currentRow.donor_dept.length > 0) { + isValid = false; + addErrorMessage('gaitRow', "gaitid", gettext('GAIT IDs may not be left blank.'), idx); + } + } + + // Validation for each Fund code + currentRow.fund_code.map(currentFundCode => { + currentFundCode = currentFundCode.toString(); + let firstDigit = parseInt(currentFundCode.slice(0, 1)); + if (currentFundCode.length !== 5) { + isValid = false; + addErrorMessage("gaitRow", "fund_code", gettext("Fund codes may only be 5 digits long."), idx); + } + if ([3, 7, 9].indexOf(firstDigit) === -1) { + isValid = false; + addErrorMessage("gaitRow", "fund_code", gettext("Fund codes may only begin with a 3, 7, or 9 (e.g., 30000)."), idx); + } + }) + + // Create the invalid field arrays for the GAIT Rows to highlight + Object.keys(detectedGaitRowErrors).map((index) => { + let fieldNames = new Set(); + detectedGaitRowErrors[index].map((msg) => { + fieldNames.add(Object.keys(msg)[0]); + }) + gaitRowErrorsFields = {...gaitRowErrorsFields, [index]: [...fieldNames]}; + }) + }); + + this.setState({ + formErrors: detectedErrors, + gaitRowErrors: detectedGaitRowErrors, + gaitRowErrorsFields: gaitRowErrorsFields + }); + return isValid; + } + + // ***** Render Componenent ***** render() { const formdata = this.state.managed_data; const selectedCountries = formdata.country.map(x=>this.props.countryOptions.find(y=>y.value==x)); - const selectedIDAASectors = formdata.idaa_sector.map(x=>this.props.idaaSectorOptions.find(y=>y.value==x)) - let sectionGaitFundDonor = formdata.gaitid.length > 0 ? formdata.gaitid : [{gaitid: null, fund_code: null, donor: null, donor_dept: null}]; + const selectedIDAASectors = formdata.idaa_sector.map(x=>this.props.idaaSectorOptions.find(y=>y.value==x)); + const selectedOutcomeThemes = formdata.idaa_outcome_theme.map(x=>this.props.idaaOutcomeThemesOptions.find(y=>y.value==x)); return (
@@ -102,186 +288,277 @@ export default class EditProgramProfile extends React.Component {
- + this.updateFormField('name', e.target.value) } - className={classNames('form-control', { 'is-invalid': this.formErrors('name') })} id="program-name-input" + className={classNames('form-control', { 'is-invalid': this.state.formErrors['name'] })} + type="text" + placeholder={ !this.state.formEditable ? gettext("None") : "" } + maxLength={255} + required disabled={!this.state.formEditable} - /> - + value={formdata.name || ""} + onChange={(e) => this.updateFormField('name', e.target.value) } + /> +
- + this.updateFormField('external_program_id', e.target.value) } - className={classNames('form-control', { 'is-invalid': this.formErrors('external_program_id') })} id="program-id-input" + className={classNames('form-control', { 'is-invalid': this.state.formErrors['external_program_id'] })} + type="text" + placeholder={ !this.state.formEditable ? gettext("None") : "" } + maxLength={4} + required disabled={!this.state.formEditable} - /> - + value={formdata.external_program_id || ""} + onChange={(e) => this.updateFormField('external_program_id', e.target.value.replace(/[^0-9]/g, "")) } + /> +
- - this.updateFormField('start-date', e.target.value) } - className={classNames('form-control', { 'is-invalid': this.formErrors('start-date') })} - id="program-start-date" - disabled={!this.state.formEditable} + +
+ { + let validDate; + try { validDate = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`; } + catch { validDate = ""; } + this.updateFormField('start_date', validDate); + }} /> - +
+
- - this.updateFormField('end-date', e.target.value) } - className={classNames('form-control', { 'is-invalid': this.formErrors('end-date') })} - id="program-end-date" - disabled={!this.state.formEditable} + +
+ { + let validDate; + try { validDate = `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`; } + catch { validDate = ""; } + this.updateFormField('end_date', validDate); + }} /> - +
+
- - this.updateFormField('funding_status', e.target.value) } - className={classNames('form-control', { 'is-invalid': this.formErrors('funding_status') })} + + - {/* : + : this.updateFormField('country', e.map(x=>x.value)) } - className={classNames('react-select', {'is-invalid': this.formErrors('country')})} - id="program-country-input" /> - } */} - + } +
- {/* {this.state.formEditable ? */} + {!this.state.formEditable ? - {/* : + : this.updateFormField('sector', e.map(x=>x.value)) } - className={classNames('react-select', {'is-invalid': this.formErrors('sector')})} id="program-sectors-input" + className={classNames('react-select')} + placeholder={gettext('None selected')} + options={this.props.idaaSectorOptions} + value={selectedIDAASectors} + onChange={(e) => this.updateFormField('idaa_sector', e.map(x=>x.value)) } /> - } */} - + }
-
+
+ {!this.state.formEditable ? this.updateFormField('outcome_themes', e.target.value) } - className={classNames('form-control', { 'is-invalid': this.formErrors('outcome_themes') })} id="program-outcome_themes-input" - readOnly + className={classNames('form-control')} + type="text" disabled={!this.state.formEditable} + value={this.createDisplayList(selectedOutcomeThemes) || gettext("None selected")} /> - -
-
-
- -
-
- -
-
- -
+ : + this.updateFormField('idaa_outcome_theme', e.map(x=>x.value)) } + /> + }
- {sectionGaitFundDonor.map((gaitRow) => { - let donorText = gaitRow.donor || ""; - donorText = gaitRow.donor_dept ? donorText + " - " + gaitRow.donor_dept : donorText; - return( -
-
-
- this.updateFormField('gaitid', e.target.value) } - className={classNames('form-control', "profile__text-input", { 'is-invalid': this.formErrors('gaitid') })} - id="program-gait-input" - disabled={!this.state.formEditable} + + + + + + + + {this.state.formEditable && + + } + + + + {formdata.gaitid.map((gaitRow, index) => { + let donorText = gaitRow.donor || ""; + + // If form is not editable, concatenate and display the donor and donor dept text in the donor field + if (!this.state.formEditable) { + donorText = gaitRow.donor_dept ? donorText + " - " + gaitRow.donor_dept : donorText; + } + + return ( + + + + + + {this.state.formEditable && + + } + {this.state.formEditable && formdata.gaitid.length > 1 && + + } + + + + + + ) + })} + +
+ + + + + + + +
+ this.updateGaitRow('gaitid', e.target.value.replace(/[^0-9]/g, ""), index) } /> - - - -
-
- this.updateFormField('fundCode', e.target.value) } - className={classNames('form-control', "profile__text-input", { 'is-invalid': this.formErrors('fundCode') })} - id="program-fund-code-input" - disabled={!this.state.formEditable} +
+ this.updateFundCode('fund_code', e.target.value, index)} + onKeyUp={(e) => { + if (e.key === "Backspace" && !gaitRow.fund_code[gaitRow.fund_code.length - 1]) { + let updatedFundCode = [...gaitRow.fund_code]; + updatedFundCode.pop(); + this.updateGaitRow('fund_code', updatedFundCode, index); + } + }} /> - - - -
-
- this.updateFormField('fundCode', e.target.value) } - className={classNames('form-control', "profile__text-input", { 'is-invalid': this.formErrors('fundCode') })} - id="program-donor-input" - disabled={!this.state.formEditable} +
+ this.updateGaitRow('donor', e.target.value, index) } /> - - - + + this.updateGaitRow('donor_dept', e.target.value, index) } + /> + + this.deleteGaitRow(index)} + className={classNames("btn btn-link btn-danger text-nowrap")} + > + + +
+ +
+ {this.state.formEditable && +
+
this.appendGaitRow()} className="btn btn-link btn-add"> + {gettext('Add another row')}
- ) - })} - {/*
- - -
*/} +
+ } + {this.state.formEditable && +
+ + +
+ }
) } -} +} \ No newline at end of file diff --git a/js/pages/tola_management_pages/program/models.js b/js/pages/tola_management_pages/program/models.js index 9353e8cf1..22a3eb260 100755 --- a/js/pages/tola_management_pages/program/models.js +++ b/js/pages/tola_management_pages/program/models.js @@ -253,75 +253,41 @@ export class ProgramStore { let new_program_data = { id: "new", name: "", - gaitid: "", - fundcode: "", - funding_status: "Funded", - description: "", + external_program_id: "", + start_date: "", + end_date: "", + funding_status: "", country: [], idaa_sector: [], idaa_outcome_theme: [], + gaitid: [{ + gaitid: "", + donor: "", + donor_dept: "", + fund_code: [], + }], + description: "", } this.programs.unshift(new_program_data) this.editing_target = 'new' } } - /* - * if there is no GAIT Id, resolve and move on, - * if there is a GAIT ID, call to see if it is unique, and if not confirm that the user wants to enter a - * duplicate GAIT ID for this program (displaying the link to view programs with the same ID in GAIT) - */ - - validateGaitId(program_data) { - if (program_data.gaitid) { - let id = program_data.id || 0; - return new Promise((resolve, reject) => { - this.api.validateGaitId(program_data.gaitid, id).then(response => { - if (response.data.unique === false) { - let message_intro = gettext('The GAIT ID for this program is shared with at least one other program.') - let link_text = gettext('View programs with this ID in GAIT.'); - let preamble_text = `${message_intro} ${link_text}`; - window.create_unified_changeset_notice({ - header: gettext('Warning'), - show_icon: true, - rationale_required: false, - include_rationale: false, - message_text: gettext('Are you sure you want to continue?'), - notice_type: 'error', - on_submit: resolve, - on_cancel: reject, - preamble: preamble_text - }); - } else { - resolve(); - } - } - ).catch(e => reject(e)) - }); - } else { - return new Promise((resolve, reject) => resolve()); - } - } - @action saveNewProgram(program_data) { program_data.id = null this.saving = true - this.validateGaitId( - program_data - ).then(() => { - // create program - return this.api.createProgram(program_data).catch(error => { - // form validation error handling - if (error.response) { - runInAction(() => { - this.editing_errors = error.response.data - }) - } - - // propagate error to avoid trying to continue - return Promise.reject('program creation failed') - }) + // create program + this.api.createProgram(program_data) + .catch(error => { + // form validation error handling + if (error.response) { + runInAction(() => { + this.editing_errors = error.response.data + }) + } + // propagate error to avoid trying to continue + return Promise.reject('program creation failed') }).then(response => { // now pull history data of newly created program return Promise.all([response, this.api.fetchProgramHistory(response.data.id)]) diff --git a/js/pages/tola_management_pages/program/views.js b/js/pages/tola_management_pages/program/views.js index fa433fec3..e38447236 100644 --- a/js/pages/tola_management_pages/program/views.js +++ b/js/pages/tola_management_pages/program/views.js @@ -152,6 +152,8 @@ export const IndexView = observer( const countryFilterOptions = sortObjectListByValue(Object.entries(store.countries).map(([id, country]) => ({value: country.id, label: country.name}))) const organizationFilterOptions = sortObjectListByValue(Object.entries(store.organizations).map(([id, org]) => ({value: org.id, label: org.name}))) const idaaSectorFilterOptions = sortObjectListByValue(store.idaa_sectors.map(x => ({value: x.id, label: x.name}))); + const idaaOutcomeThemesOptions = sortObjectListByValue(store.idaa_outcome_themes.map(x => ({value: x.id, label: x.name}))); + const fundingStatusOptions = [{value: 0, label: gettext("Funded")}, {value: 1, label: gettext("Completed")}]; const programFilterOptions = sortObjectListByValue(Object.entries(store.programFilterPrograms).map(([id, program]) => ({value: program.id, label: program.name}))) const userFilterOptions = sortObjectListByValue(Object.entries(store.users).map(([id, user]) => ({value: user.id, label: user.name}))) const bulkProgramStatusOptions = [ @@ -253,7 +255,10 @@ export const IndexView = observer( onUpdate={(id, data) => store.updateProgram(id, data)} onCreate={(new_program_data) => store.saveNewProgram(new_program_data)} idaaSectorOptions={idaaSectorFilterOptions} + idaaOutcomeThemesOptions={idaaOutcomeThemesOptions} countryOptions={allCountryOptions} + fundingStatusOptions={fundingStatusOptions} + isLoading={store.saving} errors={store.editing_errors} /> )} diff --git a/package-lock.json b/package-lock.json index 7d87d967e..b86282d9c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3568,6 +3568,11 @@ } } }, + "@popperjs/core": { + "version": "2.11.6", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", + "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" + }, "@sinonjs/commons": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.1.tgz", @@ -4442,12 +4447,12 @@ "inherits": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha512-8nWq2nLTAwd02jTqJExUYFSD/fKq6VH9Y/oG2accc/kdI0V98Bag8d5a4gi3XHz73rDWa2PvTtvcWYquKqSENA==" + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha512-5KiHfsmkqacuKjkRkdV7SsfDJ2EGiPsK92s2MhNSY0craxjTdKTtqKsJaCWp4LW33ZZ0OPUv1WO/TFvNQRiQxQ==", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "requires": { "inherits": "2.0.1" } @@ -4457,7 +4462,7 @@ "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assign-symbols": { "version": "1.0.0", @@ -4480,7 +4485,7 @@ "async-foreach": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==" + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" }, "async-limiter": { "version": "1.0.1", @@ -4505,7 +4510,7 @@ "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==" + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { "version": "1.11.0", @@ -5136,12 +5141,12 @@ "batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=" }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { "tweetnacl": "^0.14.3" } @@ -5225,7 +5230,7 @@ "bonjour": { "version": "3.5.0", "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha512-RaVTblr+OnEli0r/ud8InrU7D+G0y6aJhlxaLa6Pwty4+xoxboF1BsUI45tujvRpbj9dQVoglChqonGAsjEBYg==", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", "requires": { "array-flatten": "^2.1.0", "deep-equal": "^1.0.1", @@ -5247,7 +5252,7 @@ "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==" }, "bootstrap-multiselect": { - "version": "github:davidstutz/bootstrap-multiselect#aade5e6f6a55add71c2ba42348cfe72ea51b563b", + "version": "github:davidstutz/bootstrap-multiselect#52833181fce388c9110d5c926f69b93e349d92c5", "from": "github:davidstutz/bootstrap-multiselect", "requires": { "bootstrap": "~4.5.x", @@ -5281,7 +5286,7 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "browser-process-hrtime": { "version": "1.0.0", @@ -5416,17 +5421,17 @@ "buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==" + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, "builtin-status-codes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==" + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "cacache": { "version": "12.0.4", @@ -5522,7 +5527,7 @@ "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" }, "chalk": { "version": "2.4.2", @@ -5807,7 +5812,7 @@ "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -5845,12 +5850,12 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "content-disposition": { "version": "0.5.4", @@ -5888,7 +5893,7 @@ "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, "copy-concurrently": { "version": "1.0.5", @@ -6713,7 +6718,7 @@ "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "requires": { "assert-plus": "^1.0.0" } @@ -6729,6 +6734,11 @@ "whatwg-url": "^8.0.0" } }, + "date-fns": { + "version": "2.29.2", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.2.tgz", + "integrity": "sha512-0VNbwmWJDS/G3ySwFSJA3ayhbURMTJLtwM2DTxf9CWondCnh6DTNlO9JgRSq6ibf4eD0lfMJNBxUdEAHHix+bA==" + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -6874,7 +6884,7 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" }, "depd": { "version": "2.0.0", @@ -6943,7 +6953,7 @@ "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==" + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=" }, "dns-packet": { "version": "1.3.4", @@ -6957,7 +6967,7 @@ "dns-txt": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha512-Ix5PrWjphuSoUXV/Zv5gaFHjnaJtb02F2+Si3Ht9dyJ87+Z/lMmy+dpNHtTGraNK958ndXq2i+GLkWsWHcKaBQ==", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "requires": { "buffer-indexof": "^1.0.0" } @@ -7047,7 +7057,7 @@ "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" @@ -7056,7 +7066,7 @@ "ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { "version": "1.4.205", @@ -7112,7 +7122,7 @@ "encodeurl": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "encoding": { "version": "0.1.13", @@ -7639,7 +7649,7 @@ "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", @@ -7717,7 +7727,7 @@ "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { "version": "4.0.7", @@ -8076,7 +8086,7 @@ "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==" + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { "version": "3.1.3", @@ -8091,7 +8101,7 @@ "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "faye-websocket": { @@ -8392,7 +8402,7 @@ "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==" + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" }, "form-data": { "version": "2.3.3", @@ -8420,7 +8430,7 @@ "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "from2": { "version": "2.3.0", @@ -8558,7 +8568,7 @@ "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==" + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" }, "get-stream": { "version": "4.1.0", @@ -8586,7 +8596,7 @@ "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "requires": { "assert-plus": "^1.0.0" } @@ -8761,7 +8771,7 @@ "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==" + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, "har-validator": { "version": "5.1.5", @@ -8845,7 +8855,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" }, "has-value": { "version": "1.0.0", @@ -8938,7 +8948,7 @@ "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -8969,7 +8979,7 @@ "hpack.js": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", "requires": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -9041,7 +9051,7 @@ "http-deceiver": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==" + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=" }, "http-errors": { "version": "2.0.0", @@ -9111,7 +9121,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } @@ -9121,7 +9131,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", @@ -9132,7 +9142,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "requires": { "is-extendable": "^0.1.0" } @@ -9142,7 +9152,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "requires": { "kind-of": "^3.0.2" }, @@ -9150,7 +9160,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "requires": { "is-buffer": "^1.1.5" } @@ -9180,7 +9190,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" @@ -9191,7 +9201,7 @@ "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", @@ -9201,7 +9211,7 @@ "https-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "https-proxy-agent": { "version": "5.0.1", @@ -9252,7 +9262,7 @@ "ignore-by-default": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=", "dev": true }, "import-fresh": { @@ -9709,7 +9719,7 @@ "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "istanbul-lib-coverage": { "version": "3.0.0", @@ -11329,7 +11339,7 @@ "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" }, "jsdom": { "version": "16.7.0", @@ -11430,7 +11440,7 @@ "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "json5": { "version": "2.1.3", @@ -11486,7 +11496,7 @@ "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { "prelude-ls": "~1.1.2", @@ -11740,7 +11750,7 @@ "media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "memoize-one": { "version": "5.1.1", @@ -11750,7 +11760,7 @@ "memory-fs": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", "requires": { "errno": "^0.1.3", "readable-stream": "^2.0.1" @@ -11831,7 +11841,7 @@ "merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" }, "merge-stream": { "version": "2.0.0", @@ -11842,7 +11852,7 @@ "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" }, "micromatch": { "version": "4.0.2", @@ -11960,7 +11970,7 @@ "minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "minimatch": { "version": "3.0.4", @@ -12153,7 +12163,7 @@ "multicast-dns-service-types": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha512-cnAsSVxIDsYt0v7HmC0hWZFwwXSh+E6PgCrREDuN/EsjgLwA5XRmlMHhSiDPrt6HxY1gTivEa/Zh7GtODoLevQ==" + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=" }, "nan": { "version": "2.14.1", @@ -12163,7 +12173,7 @@ "nanoassert": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", - "integrity": "sha512-C40jQ3NzfkP53NsO8kEOFd79p4b9kDXQMwgiY1z8ZwrDZgUyom0AHwGegF4Dm99L+YoYhuaB0ceerUcXmqr1rQ==" + "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" }, "nanobus": { "version": "4.5.0", @@ -12357,7 +12367,7 @@ "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=" } } }, @@ -13062,7 +13072,7 @@ "os-browserify": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, "p-each-series": { "version": "2.2.0", @@ -13216,7 +13226,7 @@ "path-dirname": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" }, "path-exists": { "version": "4.0.0", @@ -13254,7 +13264,7 @@ "path-to-regexp": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "pbkdf2": { "version": "3.1.2", @@ -13449,7 +13459,7 @@ "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, "preserve": { @@ -13505,7 +13515,7 @@ "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { "version": "2.0.1", @@ -13648,12 +13658,12 @@ "querystring": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==" + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==" + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "querystringify": { "version": "2.2.0", @@ -13808,6 +13818,19 @@ "resolved": "https://registry.npmjs.org/react-bootstrap-table2-paginator/-/react-bootstrap-table2-paginator-2.1.2.tgz", "integrity": "sha512-LC5znEphhgKJvaSY1q8d+Gj0Nc/1X+VS3tKJjkmWmfv9P61YC/BnwJ+aoqEmQzsLiVGowrzss+i/u+Tip5H+Iw==" }, + "react-datepicker": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.8.0.tgz", + "integrity": "sha512-u69zXGHMpxAa4LeYR83vucQoUCJQ6m/WBsSxmUMu/M8ahTSVMMyiyQzauHgZA2NUr9y0FUgOAix71hGYUb6tvg==", + "requires": { + "@popperjs/core": "^2.9.2", + "classnames": "^2.2.6", + "date-fns": "^2.24.0", + "prop-types": "^15.7.2", + "react-onclickoutside": "^6.12.0", + "react-popper": "^2.2.5" + } + }, "react-dom": { "version": "16.14.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", @@ -13877,6 +13900,11 @@ } } }, + "react-onclickoutside": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.12.2.tgz", + "integrity": "sha512-NMXGa223OnsrGVp5dJHkuKxQ4czdLmXSp5jSV9OqiCky9LOpPATn3vLldc+q5fK3gKbEHvr7J1u0yhBh/xYkpA==" + }, "react-paginate": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/react-paginate/-/react-paginate-6.5.0.tgz", @@ -13885,6 +13913,22 @@ "prop-types": "^15.6.1" } }, + "react-popper": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", + "requires": { + "react-fast-compare": "^3.0.1", + "warning": "^4.0.2" + }, + "dependencies": { + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + } + } + }, "react-redux": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.0.tgz", @@ -14108,7 +14152,7 @@ "reflect.ownkeys": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", - "integrity": "sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==", + "integrity": "sha1-dJrO7H8/34tj+SegSAnpDFwLNGA=", "dev": true }, "regenerate": { @@ -14272,7 +14316,7 @@ "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" }, "resolve": { "version": "1.17.0", @@ -14337,7 +14381,7 @@ "retry": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==" + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" }, "rimraf": { "version": "2.7.1", @@ -14806,7 +14850,7 @@ "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==" + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "select2": { "version": "4.0.13", @@ -14876,7 +14920,7 @@ "serve-index": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", "requires": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -14903,7 +14947,7 @@ "http-errors": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -14914,12 +14958,12 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "setprototypeof": { "version": "1.1.0", @@ -14973,7 +15017,7 @@ "setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "setprototypeof": { "version": "1.2.0", @@ -15899,7 +15943,7 @@ "to-arraybuffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha512-okFlQcoGTi4LQBG/PgSYblw9VOyptsz2KJZqc6qtgGdes8VktzUQkj4BI2blit072iS8VODNcMA+tvnS9dnuMA==" + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" }, "to-fast-properties": { "version": "2.0.0", @@ -16013,12 +16057,12 @@ "tty-browserify": { "version": "0.0.0", "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha512-JVa5ijo+j/sOoHGjw0sxw734b1LhBkQ3bvUGNdxnVXDCX81Yx7TFgnZygxrIIWn23hbfTaMYLwRmAxFyDuFmIw==" + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "requires": { "safe-buffer": "^5.0.1" } @@ -16026,12 +16070,12 @@ "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { "prelude-ls": "~1.1.2" @@ -16200,7 +16244,7 @@ "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "unset-value": { "version": "1.0.0", @@ -16268,7 +16312,7 @@ "url": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "requires": { "punycode": "1.3.2", "querystring": "0.2.0" @@ -16277,7 +16321,7 @@ "punycode": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==" + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" } } }, @@ -16311,7 +16355,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, @@ -16323,7 +16367,7 @@ "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { "version": "3.4.0", @@ -16366,12 +16410,12 @@ "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", @@ -16410,6 +16454,14 @@ "makeerror": "1.0.x" } }, + "warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "requires": { + "loose-envify": "^1.0.0" + } + }, "watchpack": { "version": "1.7.5", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", @@ -16443,7 +16495,7 @@ "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "optional": true, "requires": { "remove-trailing-separator": "^1.0.1" @@ -16478,7 +16530,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "optional": true, "requires": { "is-extendable": "^0.1.0" @@ -16509,7 +16561,7 @@ "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "optional": true, "requires": { "extend-shallow": "^2.0.1", @@ -16521,7 +16573,7 @@ "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "optional": true, "requires": { "is-extendable": "^0.1.0" @@ -16542,7 +16594,7 @@ "glob-parent": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", "optional": true, "requires": { "is-glob": "^3.1.0", @@ -16552,7 +16604,7 @@ "is-glob": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", "optional": true, "requires": { "is-extglob": "^2.1.0" @@ -16563,7 +16615,7 @@ "is-binary-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", "optional": true, "requires": { "binary-extensions": "^1.0.0" @@ -16572,7 +16624,7 @@ "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "optional": true, "requires": { "kind-of": "^3.0.2" @@ -16581,7 +16633,7 @@ "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "optional": true, "requires": { "is-buffer": "^1.1.5" @@ -16624,7 +16676,7 @@ "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "optional": true, "requires": { "is-number": "^3.0.0", diff --git a/package.json b/package.json index 0ac0f0557..c8175f26f 100755 --- a/package.json +++ b/package.json @@ -83,6 +83,7 @@ "qs": "^6.11.0", "react": "^16.14.0", "react-autosize-textarea": "^7.1.0", + "react-datepicker": "^4.8.0", "react-beautiful-dnd": "^12.2.0", "react-bootstrap-table-next": "^2.2.0", "react-bootstrap-table2-paginator": "^2.1.2", diff --git a/scss/components/_react-multiselect.scss b/scss/components/_react-multiselect.scss index d0db0ab7a..b92853a2a 100644 --- a/scss/components/_react-multiselect.scss +++ b/scss/components/_react-multiselect.scss @@ -20,6 +20,11 @@ box-shadow: 0 1px 1px 1px rgba(0, 0, 0, 0.08); } } + &.is-invalid { + & > div:not(.invalid-feedback) { + border: 1px solid $red; + } + } .invalid-feedback { display: block; } diff --git a/scss/components/_react_datepicker.scss b/scss/components/_react_datepicker.scss new file mode 100644 index 000000000..f46121060 --- /dev/null +++ b/scss/components/_react_datepicker.scss @@ -0,0 +1,3 @@ +div.react-datepicker__triangle { + left: -50% !important; +} diff --git a/scss/components/_tola_management.scss b/scss/components/_tola_management.scss index cfb28cc10..99d01424e 100644 --- a/scss/components/_tola_management.scss +++ b/scss/components/_tola_management.scss @@ -230,25 +230,50 @@ // Styling for the Profile tab's GAIT IDs, Fund Codes, Donors table .profile__table { - display: flex; - justify-content: space-between; - .header { - font-size: 85%; - } -} -.profile-table__column { - &--left { - width: 13%; - margin-right: 1rem; + label { + font-weight: normal; } - &--middle { - width: 22%; - margin-right: 1rem; + .profile-table { + &__thead { + border: none; + } + &__td { + border: none; + padding: 0; + min-width: 160px; + width: 40px; + + &.gaitid { + width: 15%; + min-width: 80px; + } + &.fund-code { + width: 20%; + } + &--trash { + width: 6px; + text-align: center; + vertical-align: middle; + border: none; + padding: 0; + } + &.invalid { + padding: 0 0 0.5rem; + } + } } - &--right { - width: 65%; + + .invalid-feedback { + display: flex; + margin-top: 0; + flex-wrap: wrap; + span { + margin-right: 0.25rem; + white-space: nowrap; + } } } + #id_admin_program_profile-tab { .form-control { text-overflow: ellipsis; diff --git a/scss/tola.scss b/scss/tola.scss index 7ab595a75..65282724d 100644 --- a/scss/tola.scss +++ b/scss/tola.scss @@ -112,7 +112,7 @@ @import 'components/import_indicators'; // Import indicator popover styles @import 'components/component_status'; // Component statuses styles @import 'components/program-period'; // styling for the program period component - +@import 'components/react_datepicker'; // Styling for the react datepicker component /* Local custom CSS and overloads for non-BS libraries */ @import 'mc_tola_forms'; // extremely custom! @import 'maps'; diff --git a/tola/locale/es/LC_MESSAGES/djangojs.mo b/tola/locale/es/LC_MESSAGES/djangojs.mo index cbf74e82e..d23259750 100644 Binary files a/tola/locale/es/LC_MESSAGES/djangojs.mo and b/tola/locale/es/LC_MESSAGES/djangojs.mo differ diff --git a/tola/locale/es/LC_MESSAGES/djangojs.po b/tola/locale/es/LC_MESSAGES/djangojs.po index 836415932..5369b2728 100644 --- a/tola/locale/es/LC_MESSAGES/djangojs.po +++ b/tola/locale/es/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-18 14:30-0700\n" -"PO-Revision-Date: 2022-10-18 13:35-0600\n" +"POT-Creation-Date: 2022-10-17 09:49-0700\n" +"PO-Revision-Date: 2022-10-17 14:24-0400\n" "Last-Translator: \n" "Language-Team: \n" "Language: es\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1.1\n" #. Translators: This is the file name of an Excel template that will be used for batch imports #: js/apiv2.js:152 js/apiv2.js:185 @@ -66,7 +66,7 @@ msgstr "Éxito" #: js/pages/tola_management_pages/country/models.js:438 #: js/pages/tola_management_pages/country/models.js:473 #: js/pages/tola_management_pages/country/models.js:505 -#: js/pages/tola_management_pages/program/models.js:280 +#: js/pages/tola_management_pages/program/models.js:292 msgid "Warning" msgstr "Advertencia" @@ -97,7 +97,7 @@ msgstr "" #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:661 #: js/pages/tola_management_pages/country/models.js:478 #: js/pages/tola_management_pages/country/models.js:510 -#: js/pages/tola_management_pages/program/models.js:284 +#: js/pages/tola_management_pages/program/models.js:296 msgid "Are you sure you want to continue?" msgstr "¿Está seguro que quiere continuar?" @@ -308,6 +308,54 @@ msgid "We don’t recognize this file type. Please upload an Excel file." msgstr "" "No se ha reconocido el tipo de archivo. Por favor, suba un archivo de Excel." +#: js/components/ReactDatepicker.js:9 +msgid "January" +msgstr "enero" + +#: js/components/ReactDatepicker.js:10 +msgid "March" +msgstr "marzo" + +#: js/components/ReactDatepicker.js:11 +msgid "February" +msgstr "febrero" + +#: js/components/ReactDatepicker.js:12 +msgid "April" +msgstr "abril" + +#: js/components/ReactDatepicker.js:13 +msgid "May" +msgstr "mayo" + +#: js/components/ReactDatepicker.js:14 +msgid "June" +msgstr "junio" + +#: js/components/ReactDatepicker.js:15 +msgid "July" +msgstr "julio" + +#: js/components/ReactDatepicker.js:16 +msgid "August" +msgstr "agosto" + +#: js/components/ReactDatepicker.js:17 +msgid "September" +msgstr "septiembre" + +#: js/components/ReactDatepicker.js:18 +msgid "October" +msgstr "octubre" + +#: js/components/ReactDatepicker.js:19 +msgid "November" +msgstr "noviembre" + +#: js/components/ReactDatepicker.js:20 +msgid "December" +msgstr "diciembre" + #. Translators: button label to show the details of all items in a list */} #. Translators: button label to show the details of all rows in a list */} #: js/components/actionButtons.js:38 @@ -350,7 +398,7 @@ msgstr "Función" #: js/pages/iptt_quickstart/components/selects.js:22 #: js/pages/iptt_quickstart/components/selects.js:39 #: js/pages/iptt_report/components/sidebar/reportSelect.js:14 -#: js/pages/tola_management_pages/program/views.js:232 +#: js/pages/tola_management_pages/program/views.js:234 msgid "Program" msgstr "Programa" @@ -408,6 +456,13 @@ msgstr "seleccionado" #. Translators: for a dropdown menu with no options checked: #: js/components/changesetNotice.js:257 js/components/selectWidgets.js:143 #: js/components/selectWidgets.js:148 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:362 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:377 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:384 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:400 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:406 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:421 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:427 msgid "None selected" msgstr "Ninguno/a seleccionado/a" @@ -630,7 +685,7 @@ msgstr "Proyecto" #: js/pages/document_list/components/document_list.js:175 #: js/pages/results_framework/components/level_cards.js:213 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:131 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:132 msgid "Delete" msgstr "Eliminar" @@ -922,7 +977,7 @@ msgstr "Tipos" #. Translators: labels sectors (i.e. 'Food Security') that an indicator can be categorized as */ #: js/pages/iptt_report/components/sidebar/reportFilter.js:106 #: js/pages/tola_management_pages/organization/views.js:54 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:187 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:393 #: js/pages/tola_management_pages/program/views.js:54 msgid "Sectors" msgstr "Sectores" @@ -1071,13 +1126,14 @@ msgid "Find an indicator:" msgstr "Encontrar un indicador:" #: js/pages/program_page/components/indicator_list.js:136 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:156 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:169 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:240 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:250 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:253 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:263 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:266 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:293 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:308 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:470 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:477 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:482 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:495 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:500 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:508 msgid "None" msgstr "Ninguno" @@ -1357,11 +1413,10 @@ msgstr "Período de seguimiento de los indicadores" #: js/pages/tola_management_pages/country/components/edit_country_profile.js:108 #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:530 #: js/pages/tola_management_pages/country/components/edit_objectives.js:120 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:125 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:126 #: js/pages/tola_management_pages/organization/components/edit_organization_history.js:69 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:210 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:217 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:279 #: js/pages/tola_management_pages/program/components/program_history.js:64 #: js/pages/tola_management_pages/program/components/program_settings.js:130 #: js/pages/tola_management_pages/user/components/edit_user_history.js:74 @@ -1369,6 +1424,9 @@ msgid "Save Changes" msgstr "Guardar cambios" #: js/pages/program_page/components/program_period.js:504 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:121 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:127 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:553 msgid "Cancel changes" msgstr "Cancelar cambios" @@ -1519,7 +1577,7 @@ msgstr "" "Advertencia: esta acción no se puede deshacer. ¿Está seguro que quiere " "borrar este informe fijado?" -#: js/pages/results_form_PC/components/ActualValueFields.js:20 +#: js/pages/results_form_PC/components/ActualValueFields.js:26 #: js/pages/results_form_PC/resultsFormPC.js:102 msgid "" "Direct/indirect without double counting should be equal to or lower than " @@ -1528,11 +1586,11 @@ msgstr "" "Directo/Indirecto sin cómputo doble debe ser igual o menor a Directo/" "Indirecto con cómputo doble." -#: js/pages/results_form_PC/components/ActualValueFields.js:34 +#: js/pages/results_form_PC/components/ActualValueFields.js:40 msgid "Total Participant Actual Values" msgstr "Valores reales del total de participantes" -#: js/pages/results_form_PC/components/ActualValueFields.js:36 +#: js/pages/results_form_PC/components/ActualValueFields.js:42 msgid "" "Include the participants with double counting on the left and participants " "without double counting across programs on the right. Double counting a " @@ -1558,17 +1616,17 @@ msgstr "" "recibieron una ventaja tangible por su proximidad o vínculo con los " "participantes o con las actividades del programa." -#: js/pages/results_form_PC/components/ActualValueFields.js:40 -#: js/pages/results_form_PC/components/DisaggregationFields.js:100 +#: js/pages/results_form_PC/components/ActualValueFields.js:46 +#: js/pages/results_form_PC/components/DisaggregationFields.js:106 msgid "Without double counting across programs" msgstr "Sin cómputo doble entre programas" -#: js/pages/results_form_PC/components/ActualValueFields.js:41 -#: js/pages/results_form_PC/components/DisaggregationFields.js:102 +#: js/pages/results_form_PC/components/ActualValueFields.js:47 +#: js/pages/results_form_PC/components/DisaggregationFields.js:108 msgid "With double counting across programs" msgstr "Con cómputo doble entre programas" -#: js/pages/results_form_PC/components/ActualValueFields.js:99 +#: js/pages/results_form_PC/components/ActualValueFields.js:105 msgid "Total Participants" msgstr "Participantes totales" @@ -1640,15 +1698,13 @@ msgstr "" #: js/pages/tola_management_pages/organization/views.js:47 #: js/pages/tola_management_pages/organization/views.js:59 #: js/pages/tola_management_pages/organization/views.js:78 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:191 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:212 #: js/pages/tola_management_pages/program/views.js:23 #: js/pages/tola_management_pages/program/views.js:35 #: js/pages/tola_management_pages/program/views.js:47 #: js/pages/tola_management_pages/program/views.js:59 #: js/pages/tola_management_pages/program/views.js:76 #: js/pages/tola_management_pages/program/views.js:88 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:203 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:204 #: js/pages/tola_management_pages/user/views.js:16 msgid "None Selected" msgstr "Ninguno/a seleccionado/a" @@ -1673,7 +1729,7 @@ msgstr "" "record/16929?ln=en' target='_blank'>[link: https://library.mercycorps.org/" "record/16929?ln=en]." -#: js/pages/results_form_PC/components/DisaggregationFields.js:55 +#: js/pages/results_form_PC/components/DisaggregationFields.js:61 msgid "" "The 'SADD without double counting' value should be less than or equal to the " "'Direct without double counting' value." @@ -1681,7 +1737,7 @@ msgstr "" "El valor ‘SADD sin doble cómputo’ debe ser menor o igual que el valor " "‘Directo sin doble cómputo’." -#: js/pages/results_form_PC/components/DisaggregationFields.js:72 +#: js/pages/results_form_PC/components/DisaggregationFields.js:78 #: js/pages/results_form_PC/resultsFormPC.js:117 msgid "" "Sector values should be less than or equal to the 'Direct/Indirect with " @@ -1690,23 +1746,23 @@ msgstr "" "Los valores del sector deben ser menores o iguales al valor ‘Directo/" "Indirecto con cómputo doble’." -#: js/pages/results_form_PC/components/DisaggregationFields.js:87 +#: js/pages/results_form_PC/components/DisaggregationFields.js:93 msgid "SADD (including unknown)" msgstr "SADD (desconocido)" -#: js/pages/results_form_PC/components/DisaggregationFields.js:95 +#: js/pages/results_form_PC/components/DisaggregationFields.js:101 msgid "Needs Attention" msgstr "Requiere su atención" -#: js/pages/results_form_PC/components/DisaggregationFields.js:138 +#: js/pages/results_form_PC/components/DisaggregationFields.js:144 msgid "Sum" msgstr "Suma" -#: js/pages/results_form_PC/components/DisaggregationFields.js:154 +#: js/pages/results_form_PC/components/DisaggregationFields.js:160 msgid "Total Direct Participants" msgstr "Total de participantes directos" -#: js/pages/results_form_PC/components/DisaggregationFields.js:154 +#: js/pages/results_form_PC/components/DisaggregationFields.js:160 msgid "Total Indirect Participants" msgstr "Total de participantes indirectos" @@ -1938,7 +1994,7 @@ msgstr "" #: js/pages/tola_management_pages/country/views.js:66 #: js/pages/tola_management_pages/organization/views.js:83 #: js/pages/tola_management_pages/program/views.js:143 -#: js/pages/tola_management_pages/program/views.js:200 +#: js/pages/tola_management_pages/program/views.js:202 #: js/pages/tola_management_pages/user/views.js:162 #: js/pages/tola_management_pages/user/views.js:230 msgid "Apply" @@ -2062,7 +2118,7 @@ msgstr "Usuario" #: js/pages/tola_management_pages/audit_log/views.js:244 #: js/pages/tola_management_pages/organization/views.js:110 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:195 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:196 #: js/pages/tola_management_pages/user/views.js:202 #: js/pages/tola_management_pages/user/views.js:261 msgid "Organization" @@ -2092,15 +2148,15 @@ msgstr "ítems" #: js/pages/tola_management_pages/country/components/country_editor.js:23 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:114 #: js/pages/tola_management_pages/organization/components/organization_editor.js:26 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:95 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:278 #: js/pages/tola_management_pages/program/components/program_editor.js:27 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:144 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:145 #: js/pages/tola_management_pages/user/components/user_editor.js:26 msgid "Profile" msgstr "Perfil" #: js/pages/tola_management_pages/country/components/country_editor.js:32 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:216 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:217 msgid "Strategic Objectives" msgstr "Objetivos estratégicos" @@ -2131,19 +2187,17 @@ msgstr "Código del País" #: js/pages/tola_management_pages/country/components/edit_country_profile.js:103 #: js/pages/tola_management_pages/country/components/edit_country_profile.js:109 #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:533 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:126 #: js/pages/tola_management_pages/country/views.js:67 #: js/pages/tola_management_pages/organization/components/edit_organization_history.js:70 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:212 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:218 #: js/pages/tola_management_pages/organization/views.js:84 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:280 #: js/pages/tola_management_pages/program/components/program_history.js:65 #: js/pages/tola_management_pages/program/components/program_settings.js:131 -#: js/pages/tola_management_pages/program/views.js:201 +#: js/pages/tola_management_pages/program/views.js:203 #: js/pages/tola_management_pages/user/components/edit_user_history.js:75 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:261 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:267 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:262 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:268 #: js/pages/tola_management_pages/user/views.js:231 msgid "Reset" msgstr "Reiniciar" @@ -2248,10 +2302,10 @@ msgid "Archive disaggregation" msgstr "Archivar desagregación" #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:590 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:160 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:161 #: js/pages/tola_management_pages/country/models.js:262 #: js/pages/tola_management_pages/organization/models.js:115 -#: js/pages/tola_management_pages/program/models.js:73 +#: js/pages/tola_management_pages/program/models.js:78 #: js/pages/tola_management_pages/user/models.js:192 msgid "You have unsaved changes. Are you sure you want to discard them?" msgstr "Tiene cambios sin guardar. ¿Está seguro que desea descartarlos?" @@ -2308,8 +2362,8 @@ msgstr "Propuesto" #: js/pages/tola_management_pages/organization/views.js:190 #: js/pages/tola_management_pages/program/components/program_history.js:9 #: js/pages/tola_management_pages/program/views.js:66 -#: js/pages/tola_management_pages/program/views.js:158 -#: js/pages/tola_management_pages/program/views.js:164 +#: js/pages/tola_management_pages/program/views.js:160 +#: js/pages/tola_management_pages/program/views.js:166 #: js/pages/tola_management_pages/user/components/edit_user_history.js:8 #: js/pages/tola_management_pages/user/models.js:75 #: js/pages/tola_management_pages/user/views.js:355 @@ -2336,19 +2390,19 @@ msgstr "Nombre corto" #: js/pages/tola_management_pages/organization/views.js:113 #: js/pages/tola_management_pages/program/components/program_history.js:53 #: js/pages/tola_management_pages/program/views.js:70 -#: js/pages/tola_management_pages/program/views.js:235 +#: js/pages/tola_management_pages/program/views.js:237 #: js/pages/tola_management_pages/user/components/edit_user_history.js:64 #: js/pages/tola_management_pages/user/views.js:211 #: js/pages/tola_management_pages/user/views.js:265 msgid "Status" msgstr "Estado" -#: js/pages/tola_management_pages/country/components/edit_objectives.js:193 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:194 msgid "Delete Strategic Objective?" msgstr "¿Eliminar Objetivo Estratégico?" #. Translators: This is a button that allows the user to add a strategic objective. */} -#: js/pages/tola_management_pages/country/components/edit_objectives.js:235 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:236 msgid "Add strategic objective" msgstr "Agregar objetivo estratégico" @@ -2372,7 +2426,7 @@ msgstr[1] "" #: js/pages/tola_management_pages/country/models.js:215 #: js/pages/tola_management_pages/country/models.js:219 #: js/pages/tola_management_pages/organization/models.js:111 -#: js/pages/tola_management_pages/program/models.js:195 +#: js/pages/tola_management_pages/program/models.js:200 #: js/pages/tola_management_pages/user/models.js:208 msgid "Successfully saved" msgstr "Guardado exitosamente" @@ -2380,7 +2434,7 @@ msgstr "Guardado exitosamente" #. Translators: Saving to the server failed #: js/pages/tola_management_pages/country/models.js:226 #: js/pages/tola_management_pages/organization/models.js:106 -#: js/pages/tola_management_pages/program/models.js:200 +#: js/pages/tola_management_pages/program/models.js:205 #: js/pages/tola_management_pages/user/models.js:203 msgid "Saving failed" msgstr "Falló operación de guardado" @@ -2463,7 +2517,7 @@ msgstr "Encontrar un País" #: js/pages/tola_management_pages/country/views.js:96 #: js/pages/tola_management_pages/organization/views.js:89 #: js/pages/tola_management_pages/program/views.js:42 -#: js/pages/tola_management_pages/program/views.js:233 +#: js/pages/tola_management_pages/program/views.js:235 msgid "Organizations" msgstr "Organizaciones" @@ -2471,7 +2525,7 @@ msgstr "Organizaciones" #: js/pages/tola_management_pages/country/views.js:97 #: js/pages/tola_management_pages/organization/views.js:30 #: js/pages/tola_management_pages/organization/views.js:111 -#: js/pages/tola_management_pages/program/views.js:206 +#: js/pages/tola_management_pages/program/views.js:208 #: js/pages/tola_management_pages/user/views.js:59 #: js/pages/tola_management_pages/user/views.js:262 msgid "Programs" @@ -2479,14 +2533,14 @@ msgstr "Programas" #: js/pages/tola_management_pages/country/views.js:72 #: js/pages/tola_management_pages/organization/views.js:89 -#: js/pages/tola_management_pages/program/views.js:206 +#: js/pages/tola_management_pages/program/views.js:208 #: js/pages/tola_management_pages/user/views.js:236 msgid "Admin:" msgstr "Administrador:" #: js/pages/tola_management_pages/country/views.js:72 #: js/pages/tola_management_pages/organization/views.js:18 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:165 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:371 #: js/pages/tola_management_pages/program/views.js:30 msgid "Countries" msgstr "Países" @@ -2498,7 +2552,7 @@ msgstr "Agregar País" #: js/pages/tola_management_pages/country/views.js:98 #: js/pages/tola_management_pages/organization/views.js:112 #: js/pages/tola_management_pages/program/views.js:18 -#: js/pages/tola_management_pages/program/views.js:234 +#: js/pages/tola_management_pages/program/views.js:236 #: js/pages/tola_management_pages/user/views.js:236 msgid "Users" msgstr "Usuarios" @@ -2536,7 +2590,7 @@ msgstr "0 programas" #. Translators: preceded by a number, i.e. "3 users" or "1 user" #: js/pages/tola_management_pages/country/views.js:229 #: js/pages/tola_management_pages/organization/views.js:182 -#: js/pages/tola_management_pages/program/views.js:322 +#: js/pages/tola_management_pages/program/views.js:327 #, python-format msgid "%s user" msgid_plural "%s users" @@ -2546,7 +2600,7 @@ msgstr[1] "%s usuarios" #. Translators: when no users are connected to the item #: js/pages/tola_management_pages/country/views.js:234 #: js/pages/tola_management_pages/organization/views.js:187 -#: js/pages/tola_management_pages/program/views.js:326 +#: js/pages/tola_management_pages/program/views.js:331 msgid "0 users" msgstr "0 usuarios" @@ -2559,8 +2613,8 @@ msgstr "países" #: js/pages/tola_management_pages/organization/views.js:190 #: js/pages/tola_management_pages/program/components/program_history.js:10 #: js/pages/tola_management_pages/program/views.js:67 -#: js/pages/tola_management_pages/program/views.js:159 -#: js/pages/tola_management_pages/program/views.js:164 +#: js/pages/tola_management_pages/program/views.js:161 +#: js/pages/tola_management_pages/program/views.js:166 #: js/pages/tola_management_pages/user/components/edit_user_history.js:9 #: js/pages/tola_management_pages/user/models.js:76 #: js/pages/tola_management_pages/user/views.js:355 @@ -2592,7 +2646,7 @@ msgid "Primary Contact Phone Number" msgstr "Número Telefónico de Contacto Principal" #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:200 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:248 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:249 msgid "Preferred Mode of Contact" msgstr "Forma de Contacto Preferida" @@ -2620,7 +2674,53 @@ msgstr "Agregar Organización" msgid "organizations" msgstr "organizaciones" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:99 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:112 +msgid "This field may not be left blank." +msgstr "Este campo no puede dejarse vacío." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:127 +msgid "The program start date may not be more than 10 years in the past." +msgstr "" +"La fecha de inicio del programa no puede ser más de 10 años en el pasado." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:131 +msgid "The program start date may not be after the program end date." +msgstr "" +"La fecha de inicio del programa no puede ser posterior a la fecha de " +"finalización del programa." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:137 +msgid "The program end date may not be more than 10 years in the future." +msgstr "" +"La fecha de finalización del programa no puede ser más de 10 años en el " +"futuro." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:141 +msgid "The program end date may not be before the program start date." +msgstr "" +"La fecha de finalización del programa no puede ser anterior a la fecha de " +"inicio del programa." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:157 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:176 +msgid "GAIT IDs may not be left blank." +msgstr "IDs GAIT no puede dejarse vacío." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:165 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:166 +msgid "Duplicate GAIT ID numbers are not allowed." +msgstr "No se permite duplicar los números de identificación GAIT." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:186 +msgid "Fund codes may only be 5 digits long." +msgstr "Los códigos de fondos sólo pueden tener 5 dígitos." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:190 +msgid "Fund codes may only begin with a 3, 7, or 9 (e.g., 30000)." +msgstr "" +"Los códigos de fondos sólo pueden empezar por 3, 7, o 9 (por ejemplo, 30000)." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:282 msgid "" "The fields on this tab are auto-populated with data from Identification " "Assignment Assistant (IDAA). These fields cannot be edited in TolaData. If " @@ -2632,41 +2732,57 @@ msgstr "" "editar en TolaData. Si se requieren cambios en esta información del " "programa, estos cambios deben reflejarse primero en IDAA." -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:105 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:288 msgid "Program name" msgstr "Nombre del programa" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:117 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:303 msgid "Program ID" msgstr "Identificador de programa" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:129 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:318 msgid "Program start date" msgstr "Fecha de inicio del programa" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:141 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:338 msgid "Program end date" msgstr "Fecha de finalización del programa" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:153 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:358 msgid "Program funding status" msgstr "Estado de la financiación del programa" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:209 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:414 msgid "Outcome themes" msgstr "Temas de resultados" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:223 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:439 msgid "GAIT IDs" msgstr "IDs GAIT" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:226 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:442 msgid "Fund codes" msgstr "Códigos de fondos" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:229 -msgid "Donors" -msgstr "Donantes" +#. Translators: One of several choices for specifying what type of Indicator is being created. An Indicator is a performance measure e.g. "We will distribute 1000 food packs over the next two months" +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:445 +#: tola/db_translations.js:132 +msgid "Donor" +msgstr "Donante" + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:449 +msgid "Donor dept" +msgstr "Departamento de donantes" + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:546 +msgid "Add another row" +msgstr "Añadir otra fila" + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:552 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:260 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:267 +msgid "Save changes" +msgstr "Guardar cambios" #: js/pages/tola_management_pages/program/components/program_settings.js:69 msgid "Indicator grouping" @@ -2727,35 +2843,35 @@ msgstr "" "los indicadores; su único fin es ser mostrados." #. Translators: Notify user that the program start and end date were successfully retrieved from the GAIT service and added to the newly saved Program -#: js/pages/tola_management_pages/program/models.js:205 +#: js/pages/tola_management_pages/program/models.js:210 msgid "Successfully synced GAIT program start and end dates" msgstr "" "Se sincronizaron satisfactoriamente las fechas de inicio y fin del programa " "desde el servicio GAIT" #. Translators: Notify user that the program start and end date failed to be retrieved from the GAIT service with a specific reason appended after the : -#: js/pages/tola_management_pages/program/models.js:211 +#: js/pages/tola_management_pages/program/models.js:216 msgid "Failed to sync GAIT program start and end dates: " msgstr "" "Hubo un fallo en la sincronización de las fechas de inicio y fin del " "programa desde el servicio GAIT: " #. Translators: A request failed, ask the user if they want to try the request again -#: js/pages/tola_management_pages/program/models.js:219 +#: js/pages/tola_management_pages/program/models.js:224 msgid "Retry" msgstr "Reintentar" #. Translators: button label - ignore the current warning modal on display -#: js/pages/tola_management_pages/program/models.js:228 +#: js/pages/tola_management_pages/program/models.js:233 msgid "Ignore" msgstr "Ignorar" -#: js/pages/tola_management_pages/program/models.js:276 +#: js/pages/tola_management_pages/program/models.js:288 msgid "The GAIT ID for this program is shared with at least one other program." msgstr "" "El ID GAIT para este programa está compartido con al menos un programa más." -#: js/pages/tola_management_pages/program/models.js:277 +#: js/pages/tola_management_pages/program/models.js:289 msgid "View programs with this ID in GAIT." msgstr "Ver programas con este ID en GAIT." @@ -2778,21 +2894,29 @@ msgstr "Seleccionar..." msgid "No options" msgstr "Sin opciones" -#: js/pages/tola_management_pages/program/views.js:168 +#: js/pages/tola_management_pages/program/views.js:156 +msgid "Funded" +msgstr "Financiado" + +#: js/pages/tola_management_pages/program/views.js:156 +msgid "Completed" +msgstr "Completado" + +#: js/pages/tola_management_pages/program/views.js:170 msgid "Set program status" msgstr "Definir estado del programa" -#: js/pages/tola_management_pages/program/views.js:213 +#: js/pages/tola_management_pages/program/views.js:215 msgid "Add Program" msgstr "Agregar Programa" #. Translators: Label for a freshly created program before the name is entered -#: js/pages/tola_management_pages/program/views.js:296 -#: js/pages/tola_management_pages/program/views.js:309 +#: js/pages/tola_management_pages/program/views.js:301 +#: js/pages/tola_management_pages/program/views.js:314 msgid "New Program" msgstr "Programa nuevo" -#: js/pages/tola_management_pages/program/views.js:336 +#: js/pages/tola_management_pages/program/views.js:341 msgid "programs" msgstr "programas" @@ -2805,36 +2929,31 @@ msgstr "Reenviar Correo Electrónico de Registración" msgid "Mercy Corps -- managed by Okta" msgstr "Mercy Corps -- administrada por Okta" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:147 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:148 msgid "Preferred First Name" msgstr "Nombre Preferido" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:163 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:164 msgid "Preferred Last Name" msgstr "Apellido Preferido" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:179 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:180 msgid "Username" msgstr "Nombre de usuario" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:212 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:213 msgid "Title" msgstr "Título" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:223 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:224 msgid "Email" msgstr "Correo electrónico" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:238 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:239 msgid "Phone" msgstr "Teléfono" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:259 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:266 -msgid "Save changes" -msgstr "Guardar cambios" - -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:260 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:261 msgid "Save And Add Another" msgstr "Guardar y Agregar otro" @@ -3265,11 +3384,6 @@ msgstr "DIG - de agencia" msgid "DIG - Testing" msgstr "DIG - en prueba" -#. Translators: One of several choices for specifying what type of Indicator is being created. An Indicator is a performance measure e.g. "We will distribute 1000 food packs over the next two months" -#: tola/db_translations.js:132 -msgid "Donor" -msgstr "Donante" - #. Translators: One of several choices for specifying what type of Indicator is being created. An Indicator is a performance measure e.g. "We will distribute 1000 food packs over the next two months" #: tola/db_translations.js:134 msgid "Key Performance Indicator (KPI)" @@ -3358,6 +3472,9 @@ msgstr "Paz, gobernanza, y asociaciones" msgid "Public Health (non - nutrition, non - WASH)" msgstr "Salud pública (no nutricional/no WASH)" +#~ msgid "Donors" +#~ msgstr "Donantes" + #~ msgid "" #~ "Economic Opportunity / Opportunité économique / Oportunidad económica" #~ msgstr "" @@ -3539,9 +3656,6 @@ msgstr "Salud pública (no nutricional/no WASH)" #~ msgid "Program Dates Changed" #~ msgstr "Fechas de Programa Cambiadas" -#~ msgid "Number" -#~ msgstr "Número" - #~ msgid "Percentage" #~ msgstr "Porcentaje" @@ -3584,9 +3698,6 @@ msgstr "Salud pública (no nutricional/no WASH)" #~ msgid "Code" #~ msgstr "Código" -#~ msgid "Funded" -#~ msgstr "Fundado" - #~ msgid "Funding Status" #~ msgstr "Estado de financiamiento" @@ -4354,9 +4465,6 @@ msgstr "Salud pública (no nutricional/no WASH)" #~ msgid "Add a tri-annual period" #~ msgstr "Agregar un período trienal" -#~ msgid "Add a month" -#~ msgstr "Agregar un mes" - #~ msgid "Add an event" #~ msgstr "Agregar un evento" @@ -7904,9 +8012,6 @@ msgstr "Salud pública (no nutricional/no WASH)" #~ msgid "Places" #~ msgstr "Lugares" -#~ msgid "Map" -#~ msgstr "Mapa" - #~ msgid "Demographic Information" #~ msgstr "Información Demográfica" @@ -8057,9 +8162,6 @@ msgstr "Salud pública (no nutricional/no WASH)" #~ msgid "User programs updated" #~ msgstr "Programas de usuario actualizados" -#~ msgid "This field must be unique" -#~ msgstr "Este campo debe ser único" - #~ msgid "Analyses and Reporting" #~ msgstr "Análisis e informes" @@ -8126,9 +8228,6 @@ msgstr "Salud pública (no nutricional/no WASH)" #~ msgid "Risks and Assumptions" #~ msgstr "Riesgos y suposiciones" -#~ msgid "Complete" -#~ msgstr "Completar" - #~ msgid "Contributor" #~ msgstr "Contribuyente" diff --git a/tola/locale/fr/LC_MESSAGES/djangojs.mo b/tola/locale/fr/LC_MESSAGES/djangojs.mo index 65ea68fbc..62cf60f56 100644 Binary files a/tola/locale/fr/LC_MESSAGES/djangojs.mo and b/tola/locale/fr/LC_MESSAGES/djangojs.mo differ diff --git a/tola/locale/fr/LC_MESSAGES/djangojs.po b/tola/locale/fr/LC_MESSAGES/djangojs.po index 6950cc1f7..c47317aab 100644 --- a/tola/locale/fr/LC_MESSAGES/djangojs.po +++ b/tola/locale/fr/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-08-18 14:29-0700\n" -"PO-Revision-Date: 2022-08-11 14:45-0400\n" +"POT-Creation-Date: 2022-10-17 09:49-0700\n" +"PO-Revision-Date: 2022-10-17 14:21-0400\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -11,7 +11,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 3.0.1\n" +"X-Generator: Poedit 3.1.1\n" #. Translators: This is the file name of an Excel template that will be used for batch imports #: js/apiv2.js:152 js/apiv2.js:185 @@ -48,8 +48,8 @@ msgid_plural "" "Removing this target means that %s results will no longer have targets " "associated with them." msgstr[0] "" -"La suppression de cette cible signifie que %s résultat ne sera plus associé " -"à des cibles." +"La suppression de cette cible signifie que %s résultat ne sera plus associé à " +"des cibles." msgstr[1] "" "La suppression de cette cible signifie que %s résultats ne seront plus " "associés à des cibles." @@ -66,7 +66,7 @@ msgstr "Succès" #: js/pages/tola_management_pages/country/models.js:438 #: js/pages/tola_management_pages/country/models.js:473 #: js/pages/tola_management_pages/country/models.js:505 -#: js/pages/tola_management_pages/program/models.js:280 +#: js/pages/tola_management_pages/program/models.js:292 msgid "Warning" msgstr "Attention" @@ -97,7 +97,7 @@ msgstr "" #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:661 #: js/pages/tola_management_pages/country/models.js:478 #: js/pages/tola_management_pages/country/models.js:510 -#: js/pages/tola_management_pages/program/models.js:284 +#: js/pages/tola_management_pages/program/models.js:296 msgid "Are you sure you want to continue?" msgstr "Voulez-vous vraiment continuer ?" @@ -179,8 +179,8 @@ msgstr[0] "" "%s indicateur est prêt à être importé. Voulez-vous finaliser le processus " "d’importation ? Cette action est irréversible." msgstr[1] "" -"%s indicateurs sont prêts à être importés. Voulez-vous finaliser le " -"processus d’importation ? Cette action est irréversible." +"%s indicateurs sont prêts à être importés. Voulez-vous finaliser le processus " +"d’importation ? Cette action est irréversible." #. Translators: Button to confirm and complete the import process #: js/components/ImportIndicatorsPopover.js:595 @@ -202,13 +202,11 @@ msgid_plural "" "%s indicators were successfully imported, but require additional details " "before results can be submitted." msgstr[0] "" -"%s indicateur a bien été importé. Toutefois, des informations " -"supplémentaires sont nécessaires pour que les résultats puissent être " -"envoyés." +"%s indicateur a bien été importé. Toutefois, des informations supplémentaires " +"sont nécessaires pour que les résultats puissent être envoyés." msgstr[1] "" "%s indicateurs ont bien été importés. Toutefois, des informations " -"supplémentaires sont nécessaires pour que les résultats puissent être " -"envoyés." +"supplémentaires sont nécessaires pour que les résultats puissent être envoyés." #. Translators: Message with the count of indicators that were successfully imported but they require additional details before they can be submitted. Message to the user to close this popover message to see their new imported indicators. #: js/components/ImportIndicatorsPopover.js:659 @@ -222,9 +220,9 @@ msgid_plural "" "before results can be submitted. Close this message to view your imported " "indicators." msgstr[0] "" -"%s indicateur a bien été importé. Toutefois, des informations " -"supplémentaires sont nécessaires pour que les résultats puissent être " -"envoyés. Fermez ce message pour consulter l’indicateur importé." +"%s indicateur a bien été importé. Toutefois, des informations supplémentaires " +"sont nécessaires pour que les résultats puissent être envoyés. Fermez ce " +"message pour consulter l’indicateur importé." msgstr[1] "" "%s indicateurs ont bien été importés. Toutefois, des informations " "supplémentaires sont nécessaires pour que les résultats puissent être " @@ -259,16 +257,16 @@ msgid "" "By default, the template will include 10 or 20 indicator rows per result " "level. Adjust the numbers if you need more or fewer rows." msgstr "" -"Par défaut, le modèle comprend entre 10 et 20 lignes d’indicateurs par " -"niveau de résultat. Vous pouvez ajouter ou supprimer des lignes en fonction " -"de vos besoins." +"Par défaut, le modèle comprend entre 10 et 20 lignes d’indicateurs par niveau " +"de résultat. Vous pouvez ajouter ou supprimer des lignes en fonction de vos " +"besoins." #. Translators: Message to user that we cannot import the their file. This could be caused by the wrong file being selected, or the structure of the file was changed, or the results framework was updated and does not match the template anymore. #: js/components/ImportIndicatorsPopover.js:912 msgid "" "We can’t import indicators from this file. This can happen if the wrong file " -"is selected, the template structure is modified, or the results framework " -"was updated and no longer matches the template." +"is selected, the template structure is modified, or the results framework was " +"updated and no longer matches the template." msgstr "" "Impossible d’importer des indicateurs à partir de ce fichier. Cette erreur " "peut survenir lorsque le fichier sélectionné n’est pas le bon, que la " @@ -315,6 +313,54 @@ msgstr "" "Nous ne reconnaissons pas ce type de fichier. Veuillez importer un fichier " "Excel." +#: js/components/ReactDatepicker.js:9 +msgid "January" +msgstr "janvier" + +#: js/components/ReactDatepicker.js:10 +msgid "March" +msgstr "mars" + +#: js/components/ReactDatepicker.js:11 +msgid "February" +msgstr "février" + +#: js/components/ReactDatepicker.js:12 +msgid "April" +msgstr "avril" + +#: js/components/ReactDatepicker.js:13 +msgid "May" +msgstr "mai" + +#: js/components/ReactDatepicker.js:14 +msgid "June" +msgstr "juin" + +#: js/components/ReactDatepicker.js:15 +msgid "July" +msgstr "juillet" + +#: js/components/ReactDatepicker.js:16 +msgid "August" +msgstr "août" + +#: js/components/ReactDatepicker.js:17 +msgid "September" +msgstr "septembre" + +#: js/components/ReactDatepicker.js:18 +msgid "October" +msgstr "octobre" + +#: js/components/ReactDatepicker.js:19 +msgid "November" +msgstr "novembre" + +#: js/components/ReactDatepicker.js:20 +msgid "December" +msgstr "décembre" + #. Translators: button label to show the details of all items in a list */} #. Translators: button label to show the details of all rows in a list */} #: js/components/actionButtons.js:38 @@ -357,7 +403,7 @@ msgstr "Rôle" #: js/pages/iptt_quickstart/components/selects.js:22 #: js/pages/iptt_quickstart/components/selects.js:39 #: js/pages/iptt_report/components/sidebar/reportSelect.js:14 -#: js/pages/tola_management_pages/program/views.js:232 +#: js/pages/tola_management_pages/program/views.js:234 msgid "Program" msgstr "Programme" @@ -415,6 +461,13 @@ msgstr "sélectionné(s)" #. Translators: for a dropdown menu with no options checked: #: js/components/changesetNotice.js:257 js/components/selectWidgets.js:143 #: js/components/selectWidgets.js:148 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:362 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:377 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:384 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:400 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:406 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:421 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:427 msgid "None selected" msgstr "Aucun sélectionné" @@ -637,7 +690,7 @@ msgstr "Projet" #: js/pages/document_list/components/document_list.js:175 #: js/pages/results_framework/components/level_cards.js:213 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:131 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:132 msgid "Delete" msgstr "Supprimer" @@ -861,8 +914,8 @@ msgstr "N/A" #: js/pages/iptt_report/components/report/tableRows.js:77 msgid "Results cannot be added because the indicator is missing targets." msgstr "" -"Les résultats ne peuvent pas être ajoutés car les cibles de l’indicateur " -"sont manquantes." +"Les résultats ne peuvent pas être ajoutés car les cibles de l’indicateur sont " +"manquantes." #. Translators: a button that lets the user add a new result #: js/pages/iptt_report/components/report/tableRows.js:106 @@ -930,7 +983,7 @@ msgstr "Types" #. Translators: labels sectors (i.e. 'Food Security') that an indicator can be categorized as */ #: js/pages/iptt_report/components/sidebar/reportFilter.js:106 #: js/pages/tola_management_pages/organization/views.js:54 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:187 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:393 #: js/pages/tola_management_pages/program/views.js:54 msgid "Sectors" msgstr "Secteurs" @@ -1079,13 +1132,14 @@ msgid "Find an indicator:" msgstr "Rechercher un indicateur :" #: js/pages/program_page/components/indicator_list.js:136 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:156 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:169 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:240 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:250 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:253 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:263 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:266 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:293 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:308 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:470 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:477 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:482 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:495 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:500 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:508 msgid "None" msgstr "Aucun" @@ -1115,11 +1169,11 @@ msgstr "Cibles de l’indicateur manquantes" #: js/pages/program_page/components/indicator_list.js:359 msgid "" -"Some indicators have missing targets. To enter these values, click the " -"target icon near the indicator name." +"Some indicators have missing targets. To enter these values, click the target " +"icon near the indicator name." msgstr "" -"Certains indicateurs ont des cibles manquantes. Pour enregistrer ces " -"valeurs, veuillez cliquer sur l’icône de cible qui se situe près du nom de " +"Certains indicateurs ont des cibles manquantes. Pour enregistrer ces valeurs, " +"veuillez cliquer sur l’icône de cible qui se situe près du nom de " "l’indicateur." #: js/pages/program_page/components/program_metrics.js:138 @@ -1147,8 +1201,8 @@ msgid "" "target is 100 and your result is 110, the indicator is 10% above target and " "on track.

Please note that if your indicator has a decreasing " "direction of change, then “above” and “below” are switched. In that case, if " -"your target is 100 and your result is 200, your indicator is 50% below " -"target and not on track.
" +"your target is 100 and your result is 200, your indicator is 50% below target " +"and not on track.
" msgstr "" "La valeur réelle correspond à la valeur cible à 15 % près. Ainsi, si votre " "cible est 100 et votre résultat 110, l’indicateur est 10 % au-dessus de la " @@ -1181,8 +1235,8 @@ msgstr "" #: js/pages/program_page/components/program_metrics.js:240 msgid "Unavailable until the first target period ends with results reported." msgstr "" -"Indisponible jusqu’à la fin de la première période cible avec publication " -"des résultats." +"Indisponible jusqu’à la fin de la première période cible avec publication des " +"résultats." #. Translators: title of a graphic showing indicators with targets */ #: js/pages/program_page/components/program_metrics.js:261 @@ -1281,13 +1335,13 @@ msgid "" "The indicator tracking start date must be later than or equal to the IDAA " "start date." msgstr "" -"La date de début de suivi des indicateurs doit être postérieure ou égale à " -"la date de début d’IDAA." +"La date de début de suivi des indicateurs doit être postérieure ou égale à la " +"date de début d’IDAA." #: js/pages/program_page/components/program_period.js:185 msgid "" -"The indicator tracking end date must be earlier than or equal to the IDAA " -"end date." +"The indicator tracking end date must be earlier than or equal to the IDAA end " +"date." msgstr "" "La date de fin de suivi des indicateurs doit être antérieure ou égale à la " "date de fin d’IDAA." @@ -1326,8 +1380,8 @@ msgstr "" #: js/pages/program_page/components/program_period.js:440 msgid "" -"The program period is used as the default for the initial setup of time-" -"based target periods (e.g., annually, quarterly, etc.) and in the Indicator " +"The program period is used as the default for the initial setup of time-based " +"target periods (e.g., annually, quarterly, etc.) and in the Indicator " "Performance Tracking Tables (IPTTs). The Program Period is based on the " "program’s official start and end dates as recorded in the Identification " "Assignment Assistant (IDAA) system and cannot be adjusted in TolaData." @@ -1337,8 +1391,8 @@ msgstr "" "annuellement, trimestriellement, etc.) et dans les tableaux de suivi des " "performances des indicateurs (IPTTs). La période du programme est basée sur " "les dates officielles de début et de fin du programme telles qu’enregistrées " -"dans le système Assistant pour l’Attribution de l’Identification (IDAA) et " -"ne peut pas être ajustée dans TolaData." +"dans le système Assistant pour l’Attribution de l’Identification (IDAA) et ne " +"peut pas être ajustée dans TolaData." #: js/pages/program_page/components/program_period.js:446 msgid "IDAA program dates" @@ -1368,11 +1422,10 @@ msgstr "Période de suivi des indicateurs" #: js/pages/tola_management_pages/country/components/edit_country_profile.js:108 #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:530 #: js/pages/tola_management_pages/country/components/edit_objectives.js:120 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:125 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:126 #: js/pages/tola_management_pages/organization/components/edit_organization_history.js:69 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:210 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:217 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:279 #: js/pages/tola_management_pages/program/components/program_history.js:64 #: js/pages/tola_management_pages/program/components/program_settings.js:130 #: js/pages/tola_management_pages/user/components/edit_user_history.js:74 @@ -1380,6 +1433,9 @@ msgid "Save Changes" msgstr "Enregistrer les modifications" #: js/pages/program_page/components/program_period.js:504 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:121 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:127 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:553 msgid "Cancel changes" msgstr "Annuler les changements" @@ -1392,10 +1448,10 @@ msgid "" "of change when thinking about whether the indicator is on track.

" msgstr "" "

La valeur réelle représente %(percent)s de la valeur cible. Un indicateur est sur la bonne voie si le résultat n’est ni " -"inférieur à 85 % de la cible, ni supérieur à 115 % de la cible.

Pensez à prendre en compte la direction du changement souhaité " -"lorsque vous réfléchissez au statut d’un indicateur.

" +"strong> Un indicateur est sur la bonne voie si le résultat n’est ni inférieur " +"à 85 % de la cible, ni supérieur à 115 % de la cible.

Pensez à " +"prendre en compte la direction du changement souhaité lorsque vous " +"réfléchissez au statut d’un indicateur.

" #. Translators: Label for an indicator that is within a target range #: js/pages/program_page/components/resultsTable.js:47 @@ -1431,29 +1487,28 @@ msgid "" msgstr "" "Les cibles, les réelles, et les résultats sont non-cumulatifs. Les réelles de la période cible sont la somme de tous les résultats " -"de cette période cible. Les cibles et les réelles de la vie du programme " -"sont la somme de toutes les périodes cibles." +"de cette période cible. Les cibles et les réelles de la vie du programme sont " +"la somme de toutes les périodes cibles." #. Translators: brief description of summing rules a series of numbers #: js/pages/program_page/components/resultsTable.js:238 msgid "Targets and actuals are cumulative; results are non-cumulative." msgstr "" -"Les cibles et les réelles sont cumulatives; les résultats sont non-" -"cumulatifs." +"Les cibles et les réelles sont cumulatives; les résultats sont non-cumulatifs." #. Translators: explanation of the summing rules for the totals row on a list of results #: js/pages/program_page/components/resultsTable.js:240 msgid "" "Targets and actuals are cumulative; results are non-cumulative. Target period actuals are the sum of the results from the current " -"and all previous target periods. The Life of Program target mirrors the last " +"strong> Target period actuals are the sum of the results from the current and " +"all previous target periods. The Life of Program target mirrors the last " "target, and the Life of Program actual mirrors the most recent actual." msgstr "" "Les cibles et les réelles sont cumulatives; les résultats sont non-" "cumulatifs. Les réelles de la période cible sont la somme des " "résultats de la période cible actuelle et de toutes les périodes cibles " -"précédentes. La cible de la vie du programme reflète la dernière cible, et " -"la réelle de la vie du programme reflète la réelle la plus récente." +"précédentes. La cible de la vie du programme reflète la dernière cible, et la " +"réelle de la vie du programme reflète la réelle la plus récente." #. Translators: brief description of summing rules a series of numbers #: js/pages/program_page/components/resultsTable.js:244 @@ -1464,10 +1519,9 @@ msgstr "Les cibles, les réelles, et les résultats sont cumulatifs." #: js/pages/program_page/components/resultsTable.js:246 msgid "" "Targets, actuals, and results are cumulative. Target period " -"actuals mirror the most recent result for that target period; no " -"calculations are performed with results or actuals. The Life of Program " -"target mirrors the last target, and the Life of Program actual mirrors the " -"most recent actual." +"actuals mirror the most recent result for that target period; no calculations " +"are performed with results or actuals. The Life of Program target mirrors the " +"last target, and the Life of Program actual mirrors the most recent actual." msgstr "" "Les cibles, les réelles, et les résultats sont cumulatifs. " "Les réelles de la période cible reflètent le résultat le plus récent pour " @@ -1530,7 +1584,7 @@ msgstr "" "Attention : cette action est irréversible. Voulez-vous vraiment supprimer ce " "rapport épinglé ?" -#: js/pages/results_form_PC/components/ActualValueFields.js:20 +#: js/pages/results_form_PC/components/ActualValueFields.js:26 #: js/pages/results_form_PC/resultsFormPC.js:102 msgid "" "Direct/indirect without double counting should be equal to or lower than " @@ -1539,11 +1593,11 @@ msgstr "" "Le champ Direct/indirect sans double comptage doit être inférieur ou égal au " "champ Direct/indirect avec double comptage." -#: js/pages/results_form_PC/components/ActualValueFields.js:34 +#: js/pages/results_form_PC/components/ActualValueFields.js:40 msgid "Total Participant Actual Values" msgstr "Valeurs réelles du total de participants" -#: js/pages/results_form_PC/components/ActualValueFields.js:36 +#: js/pages/results_form_PC/components/ActualValueFields.js:42 msgid "" "Include the participants with double counting on the left and participants " "without double counting across programs on the right. Double counting a " @@ -1552,10 +1606,9 @@ msgid "" "participants, only discount double counting in one program!

Direct participants – are those who have received a " "tangible benefit from the program, either as the actual program participants " -"or the intended recipients of the program benefits.

Indirect participants – are those who received a tangible " -"benefit through their proximity to or contact with program participants or " -"activities." +"or the intended recipients of the program benefits.

Indirect " +"participants – are those who received a tangible benefit through " +"their proximity to or contact with program participants or activities." msgstr "" "Intégrez les participants en double comptage sur la gauche et les " "participants en comptage unique dans les programmes sur la droite. Compter " @@ -1569,17 +1622,17 @@ msgstr "" "strong> sont ceux qui ont reçu un avantage tangible basé sur leur lien avec " "des activités ou des participants du programme." -#: js/pages/results_form_PC/components/ActualValueFields.js:40 -#: js/pages/results_form_PC/components/DisaggregationFields.js:100 +#: js/pages/results_form_PC/components/ActualValueFields.js:46 +#: js/pages/results_form_PC/components/DisaggregationFields.js:106 msgid "Without double counting across programs" msgstr "Sans double comptage dans les programmes" -#: js/pages/results_form_PC/components/ActualValueFields.js:41 -#: js/pages/results_form_PC/components/DisaggregationFields.js:102 +#: js/pages/results_form_PC/components/ActualValueFields.js:47 +#: js/pages/results_form_PC/components/DisaggregationFields.js:108 msgid "With double counting across programs" msgstr "Avec double comptage dans les programmes" -#: js/pages/results_form_PC/components/ActualValueFields.js:99 +#: js/pages/results_form_PC/components/ActualValueFields.js:105 msgid "Total Participants" msgstr "Nombre total de participants" @@ -1587,8 +1640,7 @@ msgstr "Nombre total de participants" #: js/pages/results_form_PC/resultsFormPC.js:81 msgid "This date should be within the fiscal year of the reporting period." msgstr "" -"Cette date doit être comprise dans l’année fiscale de la période de " -"reporting." +"Cette date doit être comprise dans l’année fiscale de la période de reporting." #: js/pages/results_form_PC/components/CommonFields.js:56 #: js/pages/results_form_PC/resultsFormPC.js:89 @@ -1607,9 +1659,9 @@ msgid "" "was collected. If data collection occurred after the end of the fiscal year, " "enter the last day of the fiscal year (June 30)." msgstr "" -"Si la collecte de données est réalisée au cours de l’année fiscale, " -"saisissez la date à laquelle les données sont collectées. Si cette collecte " -"est réalisée après la fin de l’année fiscale, saisissez le dernier jour de " +"Si la collecte de données est réalisée au cours de l’année fiscale, saisissez " +"la date à laquelle les données sont collectées. Si cette collecte est " +"réalisée après la fin de l’année fiscale, saisissez le dernier jour de " "l’année fiscale (le 30 juin)." #: js/pages/results_form_PC/components/CommonFields.js:84 @@ -1619,8 +1671,8 @@ msgstr "Année fiscale" #: js/pages/results_form_PC/components/CommonFields.js:86 msgid "Fiscal years run from July 1 to June 30 of the following year." msgstr "" -"Les années fiscales correspondent aux périodes comprises entre le " -"1er juillet et le 30 juin de l’année suivante." +"Les années fiscales correspondent aux périodes comprises entre le 1er juillet " +"et le 30 juin de l’année suivante." #: js/pages/results_form_PC/components/CommonFields.js:105 msgid "Outcome theme" @@ -1634,12 +1686,12 @@ msgid "" "\">[link: https://library.mercycorps.org/record/16929?ln=en] for a " "description of outcome themes." msgstr "" -"Les thèmes de résultat correspondent aux principales sections d’un " -"programme. Pour obtenir une description des thèmes de résultat, veuillez " -"consulter le guide: Guidelines on Counting and Reporting Participant Numbers " -"[link: https://library.mercycorps.org/record/16929?ln=en] (Compter et consigner les nombres de participants) rédigé par MEL." +"Les thèmes de résultat correspondent aux principales sections d’un programme. " +"Pour obtenir une description des thèmes de résultat, veuillez consulter le " +"guide: Guidelines on Counting and Reporting Participant Numbers [link: https://library.mercycorps.org/record/16929?ln=en] " +"(Compter et consigner les nombres de participants) rédigé par MEL." #. Translators: This is the default option for a dropdown menu #. Translators: Nothing selected by user @@ -1653,15 +1705,13 @@ msgstr "" #: js/pages/tola_management_pages/organization/views.js:47 #: js/pages/tola_management_pages/organization/views.js:59 #: js/pages/tola_management_pages/organization/views.js:78 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:191 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:212 #: js/pages/tola_management_pages/program/views.js:23 #: js/pages/tola_management_pages/program/views.js:35 #: js/pages/tola_management_pages/program/views.js:47 #: js/pages/tola_management_pages/program/views.js:59 #: js/pages/tola_management_pages/program/views.js:76 #: js/pages/tola_management_pages/program/views.js:88 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:203 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:204 #: js/pages/tola_management_pages/user/views.js:16 msgid "None Selected" msgstr "Aucun sélectionné" @@ -1682,14 +1732,14 @@ msgid "" "record/16929?ln=en] for a description of sectors." msgstr "" "Indiquez une désagrégation de participants atteinte par secteur. Indiquez " -"uniquement les chiffres avec un double comptage. Pour obtenir une " -"description des secteurs, veuillez consulter le guide: Guidelines on " -"Counting and Reporting Participant Numbers [link: https://library." -"mercycorps.org/record/16929?ln=en] (Compter et consigner les nombres de " -"participants) rédigé par MEL." - -#: js/pages/results_form_PC/components/DisaggregationFields.js:55 +"uniquement les chiffres avec un double comptage. Pour obtenir une description " +"des secteurs, veuillez consulter le guide: Guidelines on Counting and " +"Reporting Participant Numbers [link: https://library.mercycorps.org/" +"record/16929?ln=en] (Compter et consigner les nombres de participants) " +"rédigé par MEL." + +#: js/pages/results_form_PC/components/DisaggregationFields.js:61 msgid "" "The 'SADD without double counting' value should be less than or equal to the " "'Direct without double counting' value." @@ -1697,7 +1747,7 @@ msgstr "" "La somme du champ Données ‘SADD sans double comptage’ doit être égale à la " "somme du champ ‘Direct sans double comptage’." -#: js/pages/results_form_PC/components/DisaggregationFields.js:72 +#: js/pages/results_form_PC/components/DisaggregationFields.js:78 #: js/pages/results_form_PC/resultsFormPC.js:117 msgid "" "Sector values should be less than or equal to the 'Direct/Indirect with " @@ -1706,23 +1756,23 @@ msgstr "" "Les valeurs des secteurs doivent être inférieures ou égales à la valeur " "“Direct/Indirect avec double comptage”." -#: js/pages/results_form_PC/components/DisaggregationFields.js:87 +#: js/pages/results_form_PC/components/DisaggregationFields.js:93 msgid "SADD (including unknown)" msgstr "SADD (inconnu)" -#: js/pages/results_form_PC/components/DisaggregationFields.js:95 +#: js/pages/results_form_PC/components/DisaggregationFields.js:101 msgid "Needs Attention" msgstr "Requiert votre attention" -#: js/pages/results_form_PC/components/DisaggregationFields.js:138 +#: js/pages/results_form_PC/components/DisaggregationFields.js:144 msgid "Sum" msgstr "Somme" -#: js/pages/results_form_PC/components/DisaggregationFields.js:154 +#: js/pages/results_form_PC/components/DisaggregationFields.js:160 msgid "Total Direct Participants" msgstr "Total de participantes directs" -#: js/pages/results_form_PC/components/DisaggregationFields.js:154 +#: js/pages/results_form_PC/components/DisaggregationFields.js:160 msgid "Total Indirect Participants" msgstr "Total de participantes indirects" @@ -1806,11 +1856,11 @@ msgstr "" #: js/pages/results_form_PC/resultsFormPC.js:96 msgid "" -"Direct total participants with double counting is required. Please " -"complete these fields." +"Direct total participants with double counting is required. Please complete " +"these fields." msgstr "" -"Le champ Total de participants directs avec double comptage est " -"requis. Veuillez renseigner ces champs." +"Le champ Total de participants directs avec double comptage est requis. " +"Veuillez renseigner ces champs." #: js/pages/results_form_PC/resultsFormPC.js:279 #: js/pages/results_framework/components/level_cards.js:406 @@ -1840,8 +1890,8 @@ msgstr "Importer l’objectif du programme" #: js/pages/results_framework/components/level_cards.js:68 msgid "" "Import text from a Program Objective. Make sure to remove levels and numbers from " -"your text, because they are automatically displayed." +"import__popover-strong-text'>Make sure to remove levels and numbers from your " +"text, because they are automatically displayed.
" msgstr "" "Importer le texte d’un objectif de programme. Assurez-vous de supprimer les niveaux " @@ -1943,14 +1993,13 @@ msgstr "Excel" #. Translators: A alert to let users know that instead of entering indicators one at a time, they can use an Excel template to enter multiple indicators at the same time. First step is to build the result framework below, then click the 'Import indicators' button above #: js/pages/results_framework/components/level_list.js:207 msgid "" -"Instead of entering indicators one at a time, use an Excel template to " -"import multiple indicators! First, build your results framework below. Next, " -"click the “Import indicators” button above." +"Instead of entering indicators one at a time, use an Excel template to import " +"multiple indicators! First, build your results framework below. Next, click " +"the “Import indicators” button above." msgstr "" -"Au lieu de saisir les indicateurs un par un, utilisez un modèle Excel pour " -"en importer plusieurs à la fois. Commencez par créer votre cadre de " -"résultats ci-dessous, puis cliquez sur le bouton « Importer des " -"indicateurs » ci-dessus." +"Au lieu de saisir les indicateurs un par un, utilisez un modèle Excel pour en " +"importer plusieurs à la fois. Commencez par créer votre cadre de résultats ci-" +"dessous, puis cliquez sur le bouton « Importer des indicateurs » ci-dessus." #. Translators: this refers to an imperative verb on a button ("Apply filters")*/} #: js/pages/results_framework/components/level_tier_lists.js:32 @@ -1958,7 +2007,7 @@ msgstr "" #: js/pages/tola_management_pages/country/views.js:66 #: js/pages/tola_management_pages/organization/views.js:83 #: js/pages/tola_management_pages/program/views.js:143 -#: js/pages/tola_management_pages/program/views.js:200 +#: js/pages/tola_management_pages/program/views.js:202 #: js/pages/tola_management_pages/user/views.js:162 #: js/pages/tola_management_pages/user/views.js:230 msgid "Apply" @@ -1988,9 +2037,9 @@ msgstr "" "Le modèle de cadre de résultats se " "verrouille dès que le premier %(secondTier)s est enregistré. " "Pour modifier les modèles, tous les niveaux enregistrés doivent être " -"supprimés, à l'exception du %(firstTier)s original. Un niveau peut " -"uniquement être supprimé lorsqu'il ne dispose d'aucun sous-niveau ni " -"d'indicateur associé." +"supprimés, à l'exception du %(firstTier)s original. Un niveau peut uniquement " +"être supprimé lorsqu'il ne dispose d'aucun sous-niveau ni d'indicateur " +"associé." #: js/pages/results_framework/components/leveltier_picker.js:66 msgid "Results framework template" @@ -2085,7 +2134,7 @@ msgstr "Utilisateur" #: js/pages/tola_management_pages/audit_log/views.js:244 #: js/pages/tola_management_pages/organization/views.js:110 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:195 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:196 #: js/pages/tola_management_pages/user/views.js:202 #: js/pages/tola_management_pages/user/views.js:261 msgid "Organization" @@ -2115,15 +2164,15 @@ msgstr "entrées" #: js/pages/tola_management_pages/country/components/country_editor.js:23 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:114 #: js/pages/tola_management_pages/organization/components/organization_editor.js:26 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:95 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:278 #: js/pages/tola_management_pages/program/components/program_editor.js:27 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:144 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:145 #: js/pages/tola_management_pages/user/components/user_editor.js:26 msgid "Profile" msgstr "Profil" #: js/pages/tola_management_pages/country/components/country_editor.js:32 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:216 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:217 msgid "Strategic Objectives" msgstr "Objectifs stratégiques" @@ -2154,19 +2203,17 @@ msgstr "Code pays" #: js/pages/tola_management_pages/country/components/edit_country_profile.js:103 #: js/pages/tola_management_pages/country/components/edit_country_profile.js:109 #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:533 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:126 #: js/pages/tola_management_pages/country/views.js:67 #: js/pages/tola_management_pages/organization/components/edit_organization_history.js:70 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:212 #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:218 #: js/pages/tola_management_pages/organization/views.js:84 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:280 #: js/pages/tola_management_pages/program/components/program_history.js:65 #: js/pages/tola_management_pages/program/components/program_settings.js:131 -#: js/pages/tola_management_pages/program/views.js:201 +#: js/pages/tola_management_pages/program/views.js:203 #: js/pages/tola_management_pages/user/components/edit_user_history.js:75 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:261 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:267 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:262 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:268 #: js/pages/tola_management_pages/user/views.js:231 msgid "Reset" msgstr "Réinitialiser" @@ -2177,8 +2224,8 @@ msgstr "Supprimer" #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:63 msgid "" -"This category cannot be edited or removed because it was used to " -"disaggregate a result." +"This category cannot be edited or removed because it was used to disaggregate " +"a result." msgstr "" "Cette catégorie ne peut pas être modifiée ou supprimée car elle a été " "utilisée pour désagréger un résultat." @@ -2190,15 +2237,15 @@ msgstr "Explication justifiant l'absence d'un bouton de suppression" #. Translators: This is text provided when a user clicks a help link. It allows users to select which elements they want to apply the changes to. #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:228 msgid "" -"

Select a program if you plan to disaggregate all or most of its " -"indicators by these categories.

This bulk assignment cannot be undone. But you " -"can always manually remove the disaggregation from individual indicators.

" +"

Select a program if you plan to disaggregate all or most of its indicators " +"by these categories.

This bulk " +"assignment cannot be undone. But you can always manually " +"remove the disaggregation from individual indicators.

" msgstr "" "

Sélectionnez un programme si vous souhaitez désagréger tous ou la plupart " "de ses indicateurs en fonction de ces catégories.

Ce bloc ne peut être annulé. Cependant, " -"vous pouvez supprimer manuellement la désagrégation à partir d'indicateurs " +"danger\">Ce bloc ne peut être annulé. Cependant, vous " +"pouvez supprimer manuellement la désagrégation à partir d'indicateurs " "individuels.

" #. Translators: This feature allows a user to apply changes to existing programs as well as ones created in the future */} @@ -2232,8 +2279,8 @@ msgid "" "default for every program in %s. The disaggregation can be manually removed " "from an indicator on the indicator setup form." msgstr "" -"Lors de l’ajout d’un nouvel indicateur de programme, cette désagrégation " -"sera sélectionnée par défaut pour chaque programme dans %s. La désagrégation " +"Lors de l’ajout d’un nouvel indicateur de programme, cette désagrégation sera " +"sélectionnée par défaut pour chaque programme dans %s. La désagrégation " "pourra être supprimée manuellement d’un indicateur à partir du formulaire de " "configuration de l’indicateur." @@ -2272,10 +2319,10 @@ msgid "Archive disaggregation" msgstr "Archiver la désagrégation" #: js/pages/tola_management_pages/country/components/edit_disaggregations.js:590 -#: js/pages/tola_management_pages/country/components/edit_objectives.js:160 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:161 #: js/pages/tola_management_pages/country/models.js:262 #: js/pages/tola_management_pages/organization/models.js:115 -#: js/pages/tola_management_pages/program/models.js:73 +#: js/pages/tola_management_pages/program/models.js:78 #: js/pages/tola_management_pages/user/models.js:192 msgid "You have unsaved changes. Are you sure you want to discard them?" msgstr "" @@ -2335,8 +2382,8 @@ msgstr "Proposé" #: js/pages/tola_management_pages/organization/views.js:190 #: js/pages/tola_management_pages/program/components/program_history.js:9 #: js/pages/tola_management_pages/program/views.js:66 -#: js/pages/tola_management_pages/program/views.js:158 -#: js/pages/tola_management_pages/program/views.js:164 +#: js/pages/tola_management_pages/program/views.js:160 +#: js/pages/tola_management_pages/program/views.js:166 #: js/pages/tola_management_pages/user/components/edit_user_history.js:8 #: js/pages/tola_management_pages/user/models.js:75 #: js/pages/tola_management_pages/user/views.js:355 @@ -2363,19 +2410,19 @@ msgstr "Nom court" #: js/pages/tola_management_pages/organization/views.js:113 #: js/pages/tola_management_pages/program/components/program_history.js:53 #: js/pages/tola_management_pages/program/views.js:70 -#: js/pages/tola_management_pages/program/views.js:235 +#: js/pages/tola_management_pages/program/views.js:237 #: js/pages/tola_management_pages/user/components/edit_user_history.js:64 #: js/pages/tola_management_pages/user/views.js:211 #: js/pages/tola_management_pages/user/views.js:265 msgid "Status" msgstr "Statut" -#: js/pages/tola_management_pages/country/components/edit_objectives.js:193 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:194 msgid "Delete Strategic Objective?" msgstr "Supprimer l’objectif stratégique ?" #. Translators: This is a button that allows the user to add a strategic objective. */} -#: js/pages/tola_management_pages/country/components/edit_objectives.js:235 +#: js/pages/tola_management_pages/country/components/edit_objectives.js:236 msgid "Add strategic objective" msgstr "Ajouter un objectif stratégique" @@ -2399,7 +2446,7 @@ msgstr[1] "" #: js/pages/tola_management_pages/country/models.js:215 #: js/pages/tola_management_pages/country/models.js:219 #: js/pages/tola_management_pages/organization/models.js:111 -#: js/pages/tola_management_pages/program/models.js:195 +#: js/pages/tola_management_pages/program/models.js:200 #: js/pages/tola_management_pages/user/models.js:208 msgid "Successfully saved" msgstr "Enregistré avec succès" @@ -2407,7 +2454,7 @@ msgstr "Enregistré avec succès" #. Translators: Saving to the server failed #: js/pages/tola_management_pages/country/models.js:226 #: js/pages/tola_management_pages/organization/models.js:106 -#: js/pages/tola_management_pages/program/models.js:200 +#: js/pages/tola_management_pages/program/models.js:205 #: js/pages/tola_management_pages/user/models.js:203 msgid "Saving failed" msgstr "Échec de l’enregistrement" @@ -2491,7 +2538,7 @@ msgstr "Rechercher un pays" #: js/pages/tola_management_pages/country/views.js:96 #: js/pages/tola_management_pages/organization/views.js:89 #: js/pages/tola_management_pages/program/views.js:42 -#: js/pages/tola_management_pages/program/views.js:233 +#: js/pages/tola_management_pages/program/views.js:235 msgid "Organizations" msgstr "Organisations" @@ -2499,7 +2546,7 @@ msgstr "Organisations" #: js/pages/tola_management_pages/country/views.js:97 #: js/pages/tola_management_pages/organization/views.js:30 #: js/pages/tola_management_pages/organization/views.js:111 -#: js/pages/tola_management_pages/program/views.js:206 +#: js/pages/tola_management_pages/program/views.js:208 #: js/pages/tola_management_pages/user/views.js:59 #: js/pages/tola_management_pages/user/views.js:262 msgid "Programs" @@ -2507,14 +2554,14 @@ msgstr "Programmes" #: js/pages/tola_management_pages/country/views.js:72 #: js/pages/tola_management_pages/organization/views.js:89 -#: js/pages/tola_management_pages/program/views.js:206 +#: js/pages/tola_management_pages/program/views.js:208 #: js/pages/tola_management_pages/user/views.js:236 msgid "Admin:" msgstr "Administrateur :" #: js/pages/tola_management_pages/country/views.js:72 #: js/pages/tola_management_pages/organization/views.js:18 -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:165 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:371 #: js/pages/tola_management_pages/program/views.js:30 msgid "Countries" msgstr "Pays" @@ -2526,7 +2573,7 @@ msgstr "Ajouter un pays" #: js/pages/tola_management_pages/country/views.js:98 #: js/pages/tola_management_pages/organization/views.js:112 #: js/pages/tola_management_pages/program/views.js:18 -#: js/pages/tola_management_pages/program/views.js:234 +#: js/pages/tola_management_pages/program/views.js:236 #: js/pages/tola_management_pages/user/views.js:236 msgid "Users" msgstr "Utilisateurs" @@ -2564,7 +2611,7 @@ msgstr "0 programme" #. Translators: preceded by a number, i.e. "3 users" or "1 user" #: js/pages/tola_management_pages/country/views.js:229 #: js/pages/tola_management_pages/organization/views.js:182 -#: js/pages/tola_management_pages/program/views.js:322 +#: js/pages/tola_management_pages/program/views.js:327 #, python-format msgid "%s user" msgid_plural "%s users" @@ -2574,7 +2621,7 @@ msgstr[1] "%s utilisateurs" #. Translators: when no users are connected to the item #: js/pages/tola_management_pages/country/views.js:234 #: js/pages/tola_management_pages/organization/views.js:187 -#: js/pages/tola_management_pages/program/views.js:326 +#: js/pages/tola_management_pages/program/views.js:331 msgid "0 users" msgstr "0 utilisateur" @@ -2587,8 +2634,8 @@ msgstr "pays" #: js/pages/tola_management_pages/organization/views.js:190 #: js/pages/tola_management_pages/program/components/program_history.js:10 #: js/pages/tola_management_pages/program/views.js:67 -#: js/pages/tola_management_pages/program/views.js:159 -#: js/pages/tola_management_pages/program/views.js:164 +#: js/pages/tola_management_pages/program/views.js:161 +#: js/pages/tola_management_pages/program/views.js:166 #: js/pages/tola_management_pages/user/components/edit_user_history.js:9 #: js/pages/tola_management_pages/user/models.js:76 #: js/pages/tola_management_pages/user/views.js:355 @@ -2620,7 +2667,7 @@ msgid "Primary Contact Phone Number" msgstr "Numéro de téléphone du contact principal" #: js/pages/tola_management_pages/organization/components/edit_organization_profile.js:200 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:248 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:249 msgid "Preferred Mode of Contact" msgstr "Moyen de contact préféré" @@ -2648,7 +2695,55 @@ msgstr "Ajouter une organisation" msgid "organizations" msgstr "organisations" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:99 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:112 +msgid "This field may not be left blank." +msgstr "Ce champ ne peut pas être laissé vide." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:127 +msgid "The program start date may not be more than 10 years in the past." +msgstr "" +"La date de début du programme ne doit pas se situer plus de 10 ans dans le " +"passé." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:131 +msgid "The program start date may not be after the program end date." +msgstr "" +"La date de début du programme ne doit pas être postérieure à la date de fin " +"du programme." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:137 +msgid "The program end date may not be more than 10 years in the future." +msgstr "" +"La date de fin du programme ne doit pas se situer plus de 10 ans dans le " +"futur." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:141 +msgid "The program end date may not be before the program start date." +msgstr "" +"La date de fin du programme ne doit pas être antérieure à la date de début du " +"programme." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:157 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:176 +msgid "GAIT IDs may not be left blank." +msgstr "IDs GAIT ne peut pas être laissé vide." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:165 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:166 +msgid "Duplicate GAIT ID numbers are not allowed." +msgstr "Les doublons de numéros d’identification GAIT ne sont pas autorisés." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:186 +msgid "Fund codes may only be 5 digits long." +msgstr "Les codes de fonds ne peuvent être composés que de 5 chiffres." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:190 +msgid "Fund codes may only begin with a 3, 7, or 9 (e.g., 30000)." +msgstr "" +"Les codes de fonds ne peuvent commencer que par un 3, 7, ou 9 (par exemple, " +"30000)." + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:282 msgid "" "The fields on this tab are auto-populated with data from Identification " "Assignment Assistant (IDAA). These fields cannot be edited in TolaData. If " @@ -2656,46 +2751,61 @@ msgid "" "reflected in IDAA first." msgstr "" "Les champs de cet onglet sont remplis automatiquement avec les données de " -"l’Assistant pour l’Attribution d’Identification (IDAA). Ces champs ne " -"peuvent pas être modifiés dans TolaData. Si des modifications de ces " -"informations de programme sont nécessaires, elles doivent d’abord être " -"reflétées dans l’IDAA." +"l’Assistant pour l’Attribution d’Identification (IDAA). Ces champs ne peuvent " +"pas être modifiés dans TolaData. Si des modifications de ces informations de " +"programme sont nécessaires, elles doivent d’abord être reflétées dans l’IDAA." -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:105 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:288 msgid "Program name" msgstr "Nom du programme" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:117 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:303 msgid "Program ID" msgstr "Identifiant du programme" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:129 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:318 msgid "Program start date" msgstr "Date de début du programme" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:141 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:338 msgid "Program end date" msgstr "Date de fin du programme" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:153 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:358 msgid "Program funding status" msgstr "Statut de financement du programme" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:209 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:414 msgid "Outcome themes" msgstr "Thèmes de résultats" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:223 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:439 msgid "GAIT IDs" msgstr "IDs GAIT" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:226 +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:442 msgid "Fund codes" msgstr "Codes de fonds" -#: js/pages/tola_management_pages/program/components/edit_program_profile.js:229 -msgid "Donors" -msgstr "Bailleurs de fonds" +#. Translators: One of several choices for specifying what type of Indicator is being created. An Indicator is a performance measure e.g. "We will distribute 1000 food packs over the next two months" +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:445 +#: tola/db_translations.js:132 +msgid "Donor" +msgstr "Donateur" + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:449 +msgid "Donor dept" +msgstr "Département des bailleurs de fonds" + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:546 +msgid "Add another row" +msgstr "Ajouter une autre rangée" + +#: js/pages/tola_management_pages/program/components/edit_program_profile.js:552 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:260 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:267 +msgid "Save changes" +msgstr "Enregistrer les modifications" #: js/pages/tola_management_pages/program/components/program_settings.js:69 msgid "Indicator grouping" @@ -2713,10 +2823,10 @@ msgid "" "setting affects the program page, indicator plan, and IPTT reports." msgstr "" "Une fois que vous avez défini un cadre de résultats pour ce programme et que " -"des indicateurs lui ont été attribués, sélectionnez cette option pour " -"retirer les niveaux d’indicateurs originaux et afficher les indicateurs en " -"fonction des niveaux du cadre de résultats. Ce réglage affecte la page du " -"programme, le plan des indicateurs et les rapports IPTT." +"des indicateurs lui ont été attribués, sélectionnez cette option pour retirer " +"les niveaux d’indicateurs originaux et afficher les indicateurs en fonction " +"des niveaux du cadre de résultats. Ce réglage affecte la page du programme, " +"le plan des indicateurs et les rapports IPTT." #: js/pages/tola_management_pages/program/components/program_settings.js:92 msgid "Indicator numbering" @@ -2741,8 +2851,8 @@ msgstr "Numéroter manuellement les indicateurs" #: js/pages/tola_management_pages/program/components/program_settings.js:123 msgid "" -"If your donor requires a special numbering convention, you can enter a " -"custom number for each indicator." +"If your donor requires a special numbering convention, you can enter a custom " +"number for each indicator." msgstr "" "Si votre donateur nécessite une convention de numérotation spécifique, vous " "pouvez saisir un numéro personnalisé pour chaque indicateur." @@ -2757,34 +2867,33 @@ msgstr "" "d’affichage." #. Translators: Notify user that the program start and end date were successfully retrieved from the GAIT service and added to the newly saved Program -#: js/pages/tola_management_pages/program/models.js:205 +#: js/pages/tola_management_pages/program/models.js:210 msgid "Successfully synced GAIT program start and end dates" msgstr "" "Les dates de début et de fin du programme GAIT ont été synchronisées avec " "succès" #. Translators: Notify user that the program start and end date failed to be retrieved from the GAIT service with a specific reason appended after the : -#: js/pages/tola_management_pages/program/models.js:211 +#: js/pages/tola_management_pages/program/models.js:216 msgid "Failed to sync GAIT program start and end dates: " msgstr "" "Échec de la synchronisation des dates de début et de fin du programme GAIT : " #. Translators: A request failed, ask the user if they want to try the request again -#: js/pages/tola_management_pages/program/models.js:219 +#: js/pages/tola_management_pages/program/models.js:224 msgid "Retry" msgstr "Réessayer" #. Translators: button label - ignore the current warning modal on display -#: js/pages/tola_management_pages/program/models.js:228 +#: js/pages/tola_management_pages/program/models.js:233 msgid "Ignore" msgstr "Ignorer" -#: js/pages/tola_management_pages/program/models.js:276 +#: js/pages/tola_management_pages/program/models.js:288 msgid "The GAIT ID for this program is shared with at least one other program." -msgstr "" -"L’ID GAIT de ce programme est partagé avec au moins un autre programme." +msgstr "L’ID GAIT de ce programme est partagé avec au moins un autre programme." -#: js/pages/tola_management_pages/program/models.js:277 +#: js/pages/tola_management_pages/program/models.js:289 msgid "View programs with this ID in GAIT." msgstr "Afficher les programmes avec cet ID dans GAIT." @@ -2807,21 +2916,29 @@ msgstr "Sélectionner…" msgid "No options" msgstr "Aucune option" -#: js/pages/tola_management_pages/program/views.js:168 +#: js/pages/tola_management_pages/program/views.js:156 +msgid "Funded" +msgstr "Financé" + +#: js/pages/tola_management_pages/program/views.js:156 +msgid "Completed" +msgstr "Complété" + +#: js/pages/tola_management_pages/program/views.js:170 msgid "Set program status" msgstr "Définir le statut du programme" -#: js/pages/tola_management_pages/program/views.js:213 +#: js/pages/tola_management_pages/program/views.js:215 msgid "Add Program" msgstr "Ajouter un programme" #. Translators: Label for a freshly created program before the name is entered -#: js/pages/tola_management_pages/program/views.js:296 -#: js/pages/tola_management_pages/program/views.js:309 +#: js/pages/tola_management_pages/program/views.js:301 +#: js/pages/tola_management_pages/program/views.js:314 msgid "New Program" msgstr "Nouveau programme" -#: js/pages/tola_management_pages/program/views.js:336 +#: js/pages/tola_management_pages/program/views.js:341 msgid "programs" msgstr "programmes" @@ -2834,36 +2951,31 @@ msgstr "Renvoyer l’e-mail d’inscription" msgid "Mercy Corps -- managed by Okta" msgstr "Mercy Corps — géré par Okta" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:147 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:148 msgid "Preferred First Name" msgstr "Prénom d’usage" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:163 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:164 msgid "Preferred Last Name" msgstr "Nom d’usage" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:179 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:180 msgid "Username" msgstr "Nom d’utilisateur" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:212 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:213 msgid "Title" msgstr "Titre" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:223 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:224 msgid "Email" msgstr "Adresse e-mail" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:238 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:239 msgid "Phone" msgstr "Numéro de téléphone" -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:259 -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:266 -msgid "Save changes" -msgstr "Enregistrer les modifications" - -#: js/pages/tola_management_pages/user/components/edit_user_profile.js:260 +#: js/pages/tola_management_pages/user/components/edit_user_profile.js:261 msgid "Save And Add Another" msgstr "Enregistrer et ajouter un autre" @@ -3296,11 +3408,6 @@ msgstr "DIG - de l’agence" msgid "DIG - Testing" msgstr "DIG - en cours de validation" -#. Translators: One of several choices for specifying what type of Indicator is being created. An Indicator is a performance measure e.g. "We will distribute 1000 food packs over the next two months" -#: tola/db_translations.js:132 -msgid "Donor" -msgstr "Donateur" - #. Translators: One of several choices for specifying what type of Indicator is being created. An Indicator is a performance measure e.g. "We will distribute 1000 food packs over the next two months" #: tola/db_translations.js:134 msgid "Key Performance Indicator (KPI)" @@ -3389,6 +3496,9 @@ msgstr "Paix, gouvernance, et partenariats" msgid "Public Health (non - nutrition, non - WASH)" msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" +#~ msgid "Donors" +#~ msgstr "Bailleurs de fonds" + #~ msgid "Fund Code" #~ msgstr "Code du fonds" @@ -3432,10 +3542,10 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "program participants or activities." #~ msgstr "" #~ "Les participants directs sont ceux qui ont reçu des avantages tangibles " -#~ "dans le cadre du programme, en tant que participant actuel du programme " -#~ "ou destinataire des avantages du programme prévu. Les participants " -#~ "indirects sont ceux qui ont reçu un avantage tangible basé sur leur lien " -#~ "avec des activités ou des participants du programme." +#~ "dans le cadre du programme, en tant que participant actuel du programme ou " +#~ "destinataire des avantages du programme prévu. Les participants indirects " +#~ "sont ceux qui ont reçu un avantage tangible basé sur leur lien avec des " +#~ "activités ou des participants du programme." #~ msgid "" #~ "Results are cumulative. The Life of Program result mirrors the latest " @@ -3464,9 +3574,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "%s indicators have missing or invalid information. Please update your " #~ "indicator template and upload again." #~ msgstr[0] "" -#~ "Les informations relatives à %s indicateur sont manquantes ou non " -#~ "valides. Veuillez mettre à jour votre modèle d’indicateur avant de le " -#~ "charger à nouveau." +#~ "Les informations relatives à %s indicateur sont manquantes ou non valides. " +#~ "Veuillez mettre à jour votre modèle d’indicateur avant de le charger à " +#~ "nouveau." #~ msgstr[1] "" #~ "Les informations relatives à %s indicateurs sont manquantes ou non " #~ "valides. Veuillez mettre à jour votre modèle d’indicateur avant de le " @@ -3504,10 +3614,10 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "enregistrées" #~ msgid "" -#~ "Choose your results framework " -#~ "template carefully! Once you begin building your " -#~ "framework, it will not be possible to change templates without first " -#~ "deleting all saved levels." +#~ "Choose your results framework template " +#~ "carefully! Once you begin building your framework, it will " +#~ "not be possible to change templates without first deleting all saved " +#~ "levels." #~ msgstr "" #~ "Choisissez bien la structure de votre " #~ "cadre de résultats ! Lorsque vous commencez à concevoir " @@ -3538,8 +3648,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "Choose your results framework template " -#~ "carefully! Once you begin building your framework, it will not " -#~ "be possible to change templates without first deleting all saved levels." +#~ "carefully!
Once you begin building your framework, it will not be " +#~ "possible to change templates without first deleting all saved levels." #~ msgstr "" #~ "Choisissez bien la structure de votre " #~ "cadre de résultats ! Lorsque vous commencez à concevoir votre " @@ -3547,8 +3657,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "niveaux enregistrés au préalable." #~ msgid "" -#~ "If we make these changes, %s data record will no longer be associated " -#~ "with the Life of Program target, and will need to be reassigned to a new " +#~ "If we make these changes, %s data record will no longer be associated with " +#~ "the Life of Program target, and will need to be reassigned to a new " #~ "target.\n" #~ "\n" #~ " Proceed anyway?" @@ -3592,10 +3702,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "Provide any additional details about how data quality will be ensured for " -#~ "this specific indicator. Additional details may include specific roles " -#~ "and responsibilities of team members for ensuring data quality and/or " -#~ "specific data sources to be verified, reviewed, or triangulated, for " -#~ "example." +#~ "this specific indicator. Additional details may include specific roles and " +#~ "responsibilities of team members for ensuring data quality and/or specific " +#~ "data sources to be verified, reviewed, or triangulated, for example." #~ msgstr "" #~ "Fournissez des informations supplémentaires sur la façon dont la qualité " #~ "des données sera assurée pour cet indicateur spécifique. Ces informations " @@ -3632,9 +3741,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "1. Indicator rows are provided for each result level. You can delete " #~ "indicator rows you do not need. You can also leave them empty and they " #~ "will be ignored.\n" -#~ "2. Required columns are highlighted with a dark background and an " -#~ "asterisk (*) in the header row. Unrequired columns can be left empty but " -#~ "cannot be deleted.\n" +#~ "2. Required columns are highlighted with a dark background and an asterisk " +#~ "(*) in the header row. Unrequired columns can be left empty but cannot be " +#~ "deleted.\n" #~ "3. When you are done, upload the template to the results framework or " #~ "program page." #~ msgstr "" @@ -3651,8 +3760,7 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "Enter indicators" #~ msgstr "Saisir des indicateurs" -#~ msgid "" -#~ "This number is automatically generated through the results framework." +#~ msgid "This number is automatically generated through the results framework." #~ msgstr "" #~ "Ce numéro est automatiquement généré par le biais du cadre de résultats." @@ -3663,8 +3771,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "The {field_name} you selected is unavailable. Please select a different " #~ "{field_name}." #~ msgstr "" -#~ "Le {field_name} sélectionné n’est pas disponible. Veuillez sélectionner " -#~ "un autre {field_name}." +#~ "Le {field_name} sélectionné n’est pas disponible. Veuillez sélectionner un " +#~ "autre {field_name}." #~ msgid "Indicator rows cannot be skipped." #~ msgstr "Les lignes d’indicateurs ne peuvent pas être ignorées." @@ -3745,8 +3853,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "Indicators are currently grouped by an older version of indicator levels. " -#~ "To group indicators according to the results framework, an admin will " -#~ "need to adjust program settings." +#~ "To group indicators according to the results framework, an admin will need " +#~ "to adjust program settings." #~ msgstr "" #~ "Les indicateurs sont actuellement regroupés selon une précédente version " #~ "de niveaux d’indicateur. Afin de regrouper les indicateurs selon le cadre " @@ -3757,8 +3865,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "This disaggregation cannot be unselected, because it was already used in " #~ "submitted program results." #~ msgstr "" -#~ "Cette désagrégation a déjà été utilisée au sein des résultats du " -#~ "programme envoyés, c'est pourquoi elle ne peut pas être désélectionnée." +#~ "Cette désagrégation a déjà été utilisée au sein des résultats du programme " +#~ "envoyés, c'est pourquoi elle ne peut pas être désélectionnée." #~ msgid "%(country_name)s disaggregations" #~ msgstr "Désagrégations %(country_name)s" @@ -3788,8 +3896,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "You can begin entering results on {program_start_date}, the program start " #~ "date" #~ msgstr "" -#~ "Vous pouvez commencer à saisir des résultats le {program_start_date}, " -#~ "date de début du programme" +#~ "Vous pouvez commencer à saisir des résultats le {program_start_date}, date " +#~ "de début du programme" #~ msgid "" #~ "Please select a date between {program_start_date} and {program_end_date}" @@ -4032,20 +4140,17 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "administrator." #~ msgstr "" #~ "Identifier les objectifs stratégiques du pays auquel un indicateur " -#~ "contribue nous permet de filtrer et d’analyser les ensembles " -#~ "d’indicateurs liés. Les objectifs stratégiques du pays sont gérés par " -#~ "l’administrateur de pays TolaData." +#~ "contribue nous permet de filtrer et d’analyser les ensembles d’indicateurs " +#~ "liés. Les objectifs stratégiques du pays sont gérés par l’administrateur " +#~ "de pays TolaData." #~ msgid "" -#~ "Provide an indicator statement of the precise information needed to " -#~ "assess whether intended changes have occurred." +#~ "Provide an indicator statement of the precise information needed to assess " +#~ "whether intended changes have occurred." #~ msgstr "" #~ "Fournir un relevé d’indicateur des informations précises nécessaires pour " #~ "évaluer si les changements prévus ont eu lieu." -#~ msgid "Number" -#~ msgstr "Nombre" - #~ msgid "" #~ "This number is displayed in place of the indicator number automatically " #~ "generated through the results framework. An admin can turn on auto-" @@ -4104,8 +4209,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "Select all relevant disaggregations. Disaggregations are managed by the " -#~ "TolaData country administrator. Mercy Corps required disaggregations (e." -#~ "g. SADD) are selected by default, but can be deselected when they are not " +#~ "TolaData country administrator. Mercy Corps required disaggregations (e.g. " +#~ "SADD) are selected by default, but can be deselected when they are not " #~ "applicable to the indicator." #~ msgstr "" #~ "Sélectionnez toutes les désagrégations pertinentes. Les désagrégations " @@ -4121,8 +4226,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "" #~ "Veuillez saisir une valeur numérique pour la mesure de base. Si vous ne " #~ "connaissez pas encore la mesure de base ou si elle n’est pas applicable, " -#~ "veuillez saisir un zéro ou cocher la case « Non applicable ». La mesure " -#~ "de base pourra être modifiée plus tard." +#~ "veuillez saisir un zéro ou cocher la case « Non applicable ». La mesure de " +#~ "base pourra être modifiée plus tard." #~ msgid "Life of Program (LoP) target" #~ msgstr "Cible de la vie du programme (LoP)" @@ -4199,12 +4304,12 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "utilisées par l’indicateur pour la collecte de données." #~ msgid "" -#~ "How frequently will you collect data for this indicator? The frequency " -#~ "and timing of data collection should be based on how often data are " -#~ "needed for management purposes, the cost of data collection, and the pace " -#~ "of change anticipated. If an indicator requires multiple data sources " -#~ "collected at varying frequencies, then it is recommended to select the " -#~ "frequency at which all data will be collected for calculation." +#~ "How frequently will you collect data for this indicator? The frequency and " +#~ "timing of data collection should be based on how often data are needed for " +#~ "management purposes, the cost of data collection, and the pace of change " +#~ "anticipated. If an indicator requires multiple data sources collected at " +#~ "varying frequencies, then it is recommended to select the frequency at " +#~ "which all data will be collected for calculation." #~ msgstr "" #~ "À quelle fréquence comptez-vous recueillir des données pour cet " #~ "indicateur ? Établissez votre calendrier de collecte des données en " @@ -4216,12 +4321,11 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "seront collectées et traitées." #~ msgid "" -#~ "List all data points required for reporting. While some indicators " -#~ "require a single data point (# of students attending training), others " -#~ "require multiple data points for calculation. For example, to calculate " -#~ "the % of students graduated from a training course, the two data points " -#~ "would be # of students graduated (numerator) and # of students enrolled " -#~ "(denominator)." +#~ "List all data points required for reporting. While some indicators require " +#~ "a single data point (# of students attending training), others require " +#~ "multiple data points for calculation. For example, to calculate the % of " +#~ "students graduated from a training course, the two data points would be # " +#~ "of students graduated (numerator) and # of students enrolled (denominator)." #~ msgstr "" #~ "Établissez une liste de tous les points de données nécessaires à la " #~ "présentation du rapport. Bien que certains indicateurs ne requirent qu’un " @@ -4248,28 +4352,28 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "The method of analysis should be detailed enough to allow an auditor or " -#~ "third party to reproduce the analysis or calculation and generate the " -#~ "same result." +#~ "third party to reproduce the analysis or calculation and generate the same " +#~ "result." #~ msgstr "" #~ "La méthode d’analyse doit être suffisamment détaillée pour permettre à un " -#~ "auditeur ou à une tierce partie de reproduire l’analyse ou le calcul et " -#~ "de générer le même résultat." +#~ "auditeur ou à une tierce partie de reproduire l’analyse ou le calcul et de " +#~ "générer le même résultat." #~ msgid "" -#~ "Describe the primary uses of the indicator and its intended audience. " -#~ "This is the most important field in an indicator plan, because it " -#~ "explains the utility of the indicator. If an indicator has no clear " -#~ "informational purpose, then it should not be tracked or measured. By " -#~ "articulating who needs the indicator data, why and what they need it for, " -#~ "teams ensure that only useful indicators are included in the program." +#~ "Describe the primary uses of the indicator and its intended audience. This " +#~ "is the most important field in an indicator plan, because it explains the " +#~ "utility of the indicator. If an indicator has no clear informational " +#~ "purpose, then it should not be tracked or measured. By articulating who " +#~ "needs the indicator data, why and what they need it for, teams ensure that " +#~ "only useful indicators are included in the program." #~ msgstr "" #~ "Décrivez les principales utilisations qui sont faites de l’indicateur et " #~ "de son public cible. Ce champ est le plus important dans un plan " -#~ "d’indicateurs car il justifie l’utilité de l’indicateur. Un indicateur " -#~ "qui ne possède aucun but informatif clair ne devrait pas être suivi ou " -#~ "mesuré. En précisant qui a besoin des données de l’indicateur, pour " -#~ "quelle raison et dans quel but, les équipes peuvent s’assurer que seuls " -#~ "les indicateurs utiles sont ajoutés au programme." +#~ "d’indicateurs car il justifie l’utilité de l’indicateur. Un indicateur qui " +#~ "ne possède aucun but informatif clair ne devrait pas être suivi ou mesuré. " +#~ "En précisant qui a besoin des données de l’indicateur, pour quelle raison " +#~ "et dans quel but, les équipes peuvent s’assurer que seuls les indicateurs " +#~ "utiles sont ajoutés au programme." #~ msgid "" #~ "This frequency should make sense in relation to the data collection " @@ -4284,15 +4388,15 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "List any limitations of the data used to calculate this indicator (e.g., " #~ "issues with validity, reliability, accuracy, precision, and/or potential " -#~ "for double counting.) Data issues can be related to indicator design, " -#~ "data collection methods, and/or data analysis methods. Please be specific " -#~ "and explain how data issues were addressed." +#~ "for double counting.) Data issues can be related to indicator design, data " +#~ "collection methods, and/or data analysis methods. Please be specific and " +#~ "explain how data issues were addressed." #~ msgstr "" #~ "Établissez la liste des données utilisées pour calculer cet indicateur " #~ "(par ex. : les problèmes de validité, de fiabilité, d’exactitude, de " #~ "précision et/ou en cas de double comptage). Les problèmes relatifs aux " -#~ "données peuvent être liés à la conception de l’indicateur, aux méthodes " -#~ "de collecte de données et/ou aux méthodes d’analyse des données. Veuillez " +#~ "données peuvent être liés à la conception de l’indicateur, aux méthodes de " +#~ "collecte de données et/ou aux méthodes d’analyse des données. Veuillez " #~ "être le plus précis possible et expliquer comment ces problèmes ont été " #~ "abordés." @@ -4529,9 +4633,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "" #~ "\n" #~ "

\n" -#~ " Un problème est survenu lors du chargement de cette page, " -#~ "probablement à cause de la demande envoyée par votre navigateur Web. Nous " -#~ "sommes désolés pour la gêne occasionnée.\n" +#~ " Un problème est survenu lors du chargement de cette page, probablement " +#~ "à cause de la demande envoyée par votre navigateur Web. Nous sommes " +#~ "désolés pour la gêne occasionnée.\n" #~ "

\n" #~ "

\n" #~ " Veuillez essayer de recharger la page. Si ce problème persiste, \n" #~ "

\n" #~ " If you need assistance, please contact the TolaData " -#~ "team.\n" +#~ "index.php/TOLA:Section_06/en\" target=\"_blank\">contact the TolaData team." +#~ "\n" #~ "

\n" #~ "

\n" #~ " [Error 500: internal server error]\n" -#~ " Un problème est survenu lors du chargement de cette page, " -#~ "probablement avec le serveur. Nous sommes désolés pour la gêne " -#~ "occasionnée.\n" +#~ " Un problème est survenu lors du chargement de cette page, probablement " +#~ "avec le serveur. Nous sommes désolés pour la gêne occasionnée.\n" #~ "

\n" #~ "

\n" #~ " Si vous avez besoin d'aide, veuillez for target periods completed to date" #~ msgstr "" -#~ "Les statistiques du programme pour les périodes cibles complétées " -#~ "à cette date" +#~ "Les statistiques du programme pour les périodes cibles complétées à " +#~ "cette date" #~ msgid "" #~ "\n" @@ -4829,8 +4931,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " " #~ msgstr "" #~ "\n" -#~ "

Tous les indicateurs ont des cibles " -#~ "manquantes.

\n" +#~ "

Tous les indicateurs ont des cibles manquantes." +#~ "

\n" #~ "

Rendez-vous sur la page du programme pour définir des cibles.\n" @@ -4952,8 +5054,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "All details about this indicator and results recorded to the indicator " -#~ "will be permanently removed. For future reference, please provide a " -#~ "reason for deleting this indicator." +#~ "will be permanently removed. For future reference, please provide a reason " +#~ "for deleting this indicator." #~ msgstr "" #~ "Les détails concernant cet indicateur ainsi que les résultats enregistrés " #~ "seront définitivement supprimés. À titre de référence, veuillez justifier " @@ -4963,9 +5065,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "Modifying target values will affect program metrics for this indicator. " #~ "For future reference, please provide a reason for modifying target values." #~ msgstr "" -#~ "La modification des valeurs cibles affectera les statistiques du " -#~ "programme pour cet indicateur. À titre de référence, veuillez justifier " -#~ "la modification des valeurs cibles." +#~ "La modification des valeurs cibles affectera les statistiques du programme " +#~ "pour cet indicateur. À titre de référence, veuillez justifier la " +#~ "modification des valeurs cibles." #~ msgid "All details about this indicator will be permanently removed." #~ msgstr "" @@ -4983,8 +5085,7 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "For future reference, please provide a reason for deleting this target." -#~ msgstr "" -#~ "À titre de référence, veuillez justifier la suppression de la cible." +#~ msgstr "À titre de référence, veuillez justifier la suppression de la cible." #~ msgid "This indicator is missing required details and cannot be saved." #~ msgstr "" @@ -4993,8 +5094,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "Modifying target values will affect program metrics for this indicator." #~ msgstr "" -#~ "La modification des valeurs cibles affectera les statistiques du " -#~ "programme pour cet indicateur." +#~ "La modification des valeurs cibles affectera les statistiques du programme " +#~ "pour cet indicateur." #~ msgid "Your changes will be recorded in a change log." #~ msgstr "" @@ -5013,14 +5114,14 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Indicateurs en pourcentage (%%)" #~ msgid "" -#~ "Life of Program (LoP) targets are now automatically displayed. The " -#~ "current LoP target does not match what was manually entered in the past " -#~ "-- %%s. You may need to update your target values." +#~ "Life of Program (LoP) targets are now automatically displayed. The current " +#~ "LoP target does not match what was manually entered in the past -- %%s. " +#~ "You may need to update your target values." #~ msgstr "" #~ "Les cibles de vie du programme (LoP) s’affichent désormais " #~ "automatiquement. La cible LoP actuelle ne correspond pas aux données " -#~ "précédemment saisies  — %%s. Il se peut que vos valeurs cibles " -#~ "nécessitent une mise à jour." +#~ "précédemment saisies  — %%s. Il se peut que vos valeurs cibles nécessitent " +#~ "une mise à jour." #~ msgid "" #~ "This program previously had a LoP target of %%s. Life of Program (LoP) " @@ -5060,8 +5161,7 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Veuillez remplir tous les champs obligatoires dans l’onglet Résumé." #~ msgid "Please complete all required fields in the Performance tab." -#~ msgstr "" -#~ "Veuillez compléter tous les champs requis dans l’onglet Performance." +#~ msgstr "Veuillez compléter tous les champs requis dans l’onglet Performance." #~ msgid "Summary" #~ msgstr "Résumé" @@ -5078,8 +5178,7 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "Indicator Plan" #~ msgstr "Plan de l’indicateur" -#~ msgid "" -#~ "Program reporting dates are required in order to view program metrics" +#~ msgid "Program reporting dates are required in order to view program metrics" #~ msgstr "" #~ "Les dates de rapport du programme sont requises pour afficher les " #~ "statistiques du programme" @@ -5087,12 +5186,12 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "\n" #~ " While a program may begin and end any day " -#~ "of the month, program periods must begin on the first day of the month " -#~ "and end on the last day of the month. Please note that the program start " -#~ "date can only be adjusted before periodic " -#~ "targets are set up and a program begins submitting performance results. The program end date can be moved later at any time, but can't be " -#~ "moved earlier once periodic targets are set up.\n" +#~ "of the month, program periods must begin on the first day of the month and " +#~ "end on the last day of the month. Please note that the program start date " +#~ "can only be adjusted before periodic targets are " +#~ "set up and a program begins submitting performance results. The " +#~ "program end date can be moved later at any time, but can't be moved " +#~ "earlier once periodic targets are set up.\n" #~ " " #~ msgstr "" #~ "\n" @@ -5110,24 +5209,23 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "\n" #~ " While a program may begin and end any day " -#~ "of the month, program periods must begin on the first day of the month " -#~ "and end on the last day of the month. Please note that the program start " -#~ "date can only be adjusted before targets are " -#~ "set up and a program begins submitting performance results. " -#~ "Because this program already has periodic targets set up, only the " -#~ "program end date can be moved later.\n" +#~ "of the month, program periods must begin on the first day of the month and " +#~ "end on the last day of the month. Please note that the program start date " +#~ "can only be adjusted before targets are set up " +#~ "and a program begins submitting performance results. Because this " +#~ "program already has periodic targets set up, only the program end date can " +#~ "be moved later.\n" #~ " " #~ msgstr "" #~ "\n" -#~ " Alors qu’un programme peut commencer et " -#~ "se terminer n’importe quel jour du mois, les périodes du programme " -#~ "doivent débuter le premier jour du mois et se terminer le dernier jour du " -#~ "mois. Veuillez noter que la date de début du programme peut seulement " -#~ "être ajustée avant que des cibles ont été " -#~ "spécifiées et qu’un programme commence à transmettre des résultats de " -#~ "performance. Puisque ce programme a déjà des cibles périodiques " -#~ "définies, seule la date de fin de programme peut être déplacée " -#~ "ultérieurement.\n" +#~ " Alors qu’un programme peut commencer et se " +#~ "terminer n’importe quel jour du mois, les périodes du programme doivent " +#~ "débuter le premier jour du mois et se terminer le dernier jour du mois. " +#~ "Veuillez noter que la date de début du programme peut seulement être " +#~ "ajustée avant que des cibles ont été spécifiées " +#~ "et qu’un programme commence à transmettre des résultats de performance. Puisque ce programme a déjà des cibles périodiques définies, seule " +#~ "la date de fin de programme peut être déplacée ultérieurement.\n" #~ " " #~ msgid "Back to Homepage" @@ -5156,24 +5254,24 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " " #~ msgstr "" #~ "\n" -#~ " Non cumulatif (NC) : Les résultats " -#~ "de la période cible sont calculés automatiquement à partir des données " +#~ " Non cumulatif (NC) : Les résultats de " +#~ "la période cible sont calculés automatiquement à partir des données " #~ "collectées durant la période. Le résultat de la vie du programme est la " #~ "somme des valeurs de la période cible.\n" #~ " " #~ msgid "" #~ "\n" -#~ " Cumulative (C): Target period " -#~ "results automatically include data from previous periods. The Life of " -#~ "Program result mirrors the latest period value.\n" +#~ " Cumulative (C): Target period results " +#~ "automatically include data from previous periods. The Life of Program " +#~ "result mirrors the latest period value.\n" #~ " " #~ msgstr "" #~ "\n" #~ " Cumulatif (C) : Les résultats de la " #~ "période cible incluent automatiquement les données des périodes " -#~ "précédentes. Le résultat de la vie du programme reflète la dernière " -#~ "valeur de période.\n" +#~ "précédentes. Le résultat de la vie du programme reflète la dernière valeur " +#~ "de période.\n" #~ " " #~ msgid "" @@ -5184,9 +5282,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " " #~ msgstr "" #~ "\n" -#~ " Cumulatif (C) : Le résultat de la " -#~ "vie du programme reflète le dernier résultat de période. Aucun calcul " -#~ "n’est effectué avec les résultats.\n" +#~ " Cumulatif (C) : Le résultat de la vie " +#~ "du programme reflète le dernier résultat de période. Aucun calcul n’est " +#~ "effectué avec les résultats.\n" #~ " " #~ msgid "" @@ -5223,16 +5321,15 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Créer un rapport IPTT" #~ msgid "Reports will be available after the program start date." -#~ msgstr "" -#~ "Les rapports seront disponibles après la date de début du programme." +#~ msgstr "Les rapports seront disponibles après la date de début du programme." #~ msgid "Program setup" #~ msgstr "Installation du programme" #~ msgid "" #~ "\n" -#~ " Before adding indicators and performance results, we need to know " -#~ "your program's\n" +#~ " Before adding indicators and performance results, we need to know your " +#~ "program's\n" #~ " target period in which you want the result to appear." +#~ "occurred after the target period ended, we recommend entering the last day " +#~ "of the target period in which you want the result to appear." #~ msgstr "" #~ "Cette date détermine l’endroit où le résultat apparaît dans les tableaux " #~ "de suivi des indicateurs de performance. Si la collecte des données a eu " #~ "lieu pendant la période cible, nous vous recommandons de renseigner le " -#~ "dernier jour où vous avez collecté des données. Si la collecte des " -#~ "données a eu lieu après la fin de la période cible, nous vous " -#~ "recommandons de renseigner le dernier jour de la période cible au sein " -#~ "de laquelle vous souhaitez voir apparaître le résultat" +#~ "dernier jour où vous avez collecté des données. Si la collecte des données " +#~ "a eu lieu après la fin de la période cible, nous vous recommandons de " +#~ "renseigner le dernier jour de la période cible au sein de laquelle vous " +#~ "souhaitez voir apparaître le résultat" #~ msgid "" #~ "All results for this indicator will be measured against the Life of " @@ -5478,21 +5575,21 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "The actual value matches the target value, plus or minus 15%%. So if your " #~ "target is 100 and your result is 110, the indicator is 10%% above target " -#~ "and on track.

Please note that if your indicator has a " -#~ "decreasing direction of change, then “above” and “below” are switched. In " -#~ "that case, if your target is 100 and your result is 200, your indicator " -#~ "is 50%% below target and not on track.

See our documentation for more information." -#~ msgstr "" -#~ "La valeur réelle correspond à la valeur cible à 15%% près. Ainsi, si " -#~ "votre cible est 100 et votre résultat 110, l’indicateur est 10%% au-" -#~ "dessus de la cible et est donc sur la bonne voie.

Veuillez noter " -#~ "que si le sens de changement de votre indicateur est décroissant, les " -#~ "indicateurs « au-dessus » et « en dessous » sont alors inversés. Dans ce " -#~ "cas, si votre cible est 100 et votre résultat 200, votre indicateur est " -#~ "50%% en dessous de la cible, ce qui veut dire qu’il n’est pas sur la " -#~ "bonne voie.

See our " +#~ "documentation for more information." +#~ msgstr "" +#~ "La valeur réelle correspond à la valeur cible à 15%% près. Ainsi, si votre " +#~ "cible est 100 et votre résultat 110, l’indicateur est 10%% au-dessus de la " +#~ "cible et est donc sur la bonne voie.

Veuillez noter que si le " +#~ "sens de changement de votre indicateur est décroissant, les indicateurs « " +#~ "au-dessus » et « en dessous » sont alors inversés. Dans ce cas, si votre " +#~ "cible est 100 et votre résultat 200, votre indicateur est 50%% en dessous " +#~ "de la cible, ce qui veut dire qu’il n’est pas sur la bonne voie.

Consultez " #~ "notre documentation pour plus d’informations." @@ -5503,8 +5600,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " " #~ msgstr "" #~ "\n" -#~ " %(low)s %% sont >%(margin)s%% " -#~ "en dessous de la cible\n" +#~ " %(low)s %% sont >%(margin)s%% en " +#~ "dessous de la cible\n" #~ " " #~ msgid "" @@ -5523,8 +5620,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " data-read-only=\"%(read_only)s\">\n" #~ " Program period\n" #~ " \n" -#~ " is
%(program." -#~ "percent_complete)s%% complete\n" +#~ " is
%(program.percent_complete)s" +#~ "%% complete\n" #~ " " #~ msgstr "" #~ "\n" @@ -5556,18 +5653,17 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " " #~ msgstr "" #~ "\n" -#~ "

La valeur réelle représente %(percent_met)s%% de " -#~ "la valeur cible. Un indicateur est en bonne voie si le résultat " -#~ "n’est ni inférieur à 85%% de la cible, ni supérieur à 115%% de la cible. " -#~ "

\n" +#~ "

La valeur réelle représente %(percent_met)s%% de la " +#~ "valeur cible. Un indicateur est en bonne voie si le résultat " +#~ "n’est ni inférieur à 85%% de la cible, ni supérieur à 115%% de la cible. \n" #~ "

Pensez à prendre en compte la direction du changement " #~ "souhaité lorsque vous réfléchissez au statut d’un indicateur.

\n" #~ " " #~ msgid "An error occured while logging in with your Okta account." #~ msgstr "" -#~ "Une erreur est survenue lors de la connexion à l’aide de votre compte " -#~ "Okta." +#~ "Une erreur est survenue lors de la connexion à l’aide de votre compte Okta." #~ msgid "Please contact the TolaData team for assistance." #~ msgstr "Veuillez contacter l’équipe TolaData pour obtenir de l’aide." @@ -5591,8 +5687,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "You can request an account from your TolaData administrator." #~ msgstr "" -#~ "Vous pouvez faire une demande de compte en contactant votre " -#~ "administrateur TolaData." +#~ "Vous pouvez faire une demande de compte en contactant votre administrateur " +#~ "TolaData." #~ msgid "" #~ "\n" @@ -5630,16 +5726,16 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "\n" -#~ "

Please enter a correct username and password. Note " -#~ "that both fields may be case-sensitive. Did you forget your password? Click here to reset it.

\n" +#~ "

Please enter a correct username and password. Note that " +#~ "both fields may be case-sensitive. Did you forget your password? Click here to reset it.

\n" #~ " " #~ msgstr "" #~ "\n" -#~ "

Veuillez saisir un nom d’utilisateur et un mot de " -#~ "passe valides. Notez que chaque champ peut être sensible à la casse. Vous " -#~ "avez oublié votre mot de passe ? Cliquez ici pour le réinitialiser.

\n" +#~ "

Veuillez saisir un nom d’utilisateur et un mot de passe " +#~ "valides. Notez que chaque champ peut être sensible à la casse. Vous avez " +#~ "oublié votre mot de passe ? Cliquez ici " +#~ "pour le réinitialiser.

\n" #~ " " #~ msgid "Need help logging in?" @@ -5662,8 +5758,7 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "\n" #~ "

Your password has been changed.

\n" -#~ "

Log in\n" +#~ "

Log in

\n" #~ " " #~ msgstr "" #~ "\n" @@ -5690,8 +5785,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "
    \n" #~ "
  • Check your spam or junk mail folder.
  • \n" #~ "
  • Verify that you entered your email address correctly.
  • \n" -#~ "
  • Verify that you entered the email address associated with " -#~ "your TolaData account.
  • \n" +#~ "
  • Verify that you entered the email address associated with your " +#~ "TolaData account.
  • \n" #~ "
\n" #~ "\n" #~ "

If you are using a mercycorps.org address to log in:

\n" @@ -5705,8 +5800,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ " " #~ msgstr "" #~ "\n" -#~ "

Nous avons envoyé un e-mail à l’adresse que vous nous avez " -#~ "indiquée.

\n" +#~ "

Nous avons envoyé un e-mail à l’adresse que vous nous avez indiquée." +#~ "

\n" #~ "\n" #~ "

Si vous n’avez pas reçu d’e-mail, veuillez suivre la procédure " #~ "suivante :

\n" @@ -5714,23 +5809,22 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "
    \n" #~ "
  • Sur votre compte e-mail, vérifiez les dossiers Spams ou " #~ "Courrier indésirable.
  • \n" -#~ "
  • Assurez-vous d’avoir correctement saisi votre adresse e-mail." -#~ "
  • \n" +#~ "
  • Assurez-vous d’avoir correctement saisi votre adresse e-mail.\n" #~ "
  • Assurez-vous d’avoir saisi l’adresse e-mail associée à votre " #~ "compte TolaData.
  • \n" #~ "
\n" #~ "\n" #~ "

Si vous vous connectez à l’aide d’une adresse e-mail mercycorps." #~ "org :

\n" -#~ "

Retournez sur la page de connexion " -#~ "et cliquez sur Se connecter avec une adresse e-mail mercycorps." -#~ "org.

\n" +#~ "

Retournez sur la page de connexion et " +#~ "cliquez sur Se connecter avec une adresse e-mail mercycorps.org.

\n" #~ "\n" -#~ "

Si vous vous connectez à l’aide d’une adresse e-mail Gmail :\n" -#~ "

Retournez sur la page de connexion " -#~ "et cliquez sur Se connecter avec Gmail. Nous ne " -#~ "pouvons pas réinitialiser votre mot de passe Gmail.

\n" +#~ "

Si vous vous connectez à l’aide d’une adresse e-mail Gmail :

\n" +#~ "

Retournez sur la page de connexion et " +#~ "cliquez sur Se connecter avec Gmail. Nous ne pouvons " +#~ "pas réinitialiser votre mot de passe Gmail.

\n" #~ " " #~ msgid "" @@ -5750,8 +5844,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "général, cela se produit lorsque vous cliquez sur le lien « oubli du mot " #~ "de passe ».\n" #~ "\n" -#~ "Si vous n’êtes pas à l’origine de cette demande, vous pouvez ignorer cet " -#~ "e-mail.\n" +#~ "Si vous n’êtes pas à l’origine de cette demande, vous pouvez ignorer cet e-" +#~ "mail.\n" #~ "\n" #~ "Si vous souhaitez modifier votre mot de passe, veuillez cliquer sur le " #~ "lien suivant et définir un nouveau mot de passe :\n" @@ -5788,8 +5882,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "" #~ "Votre sélection de langue détermine le format de nombre attendu lorsque " #~ "vous saisissez des cibles et des résultats. Votre langue détermine " -#~ "également la façon dont les nombres sont affichés sur la page du " -#~ "programme et les rapports, y compris les exportations Excel." +#~ "également la façon dont les nombres sont affichés sur la page du programme " +#~ "et les rapports, y compris les exportations Excel." #~ msgid "Number formatting conventions" #~ msgstr "Conventions de formatage des nombres" @@ -5826,8 +5920,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Espace" #~ msgid "" -#~ "Warning: This may be a badly formatted web address. It should be " -#~ "something like https://domain.com/path/to/file or https://docs.google.com/" +#~ "Warning: This may be a badly formatted web address. It should be something " +#~ "like https://domain.com/path/to/file or https://docs.google.com/" #~ "spreadsheets/d/OIjwljwoihgIHOEies" #~ msgstr "" #~ "Avertissement : Cette adresse Web semble ne pas être formatée " @@ -5847,9 +5941,9 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "on your hard drive. The link you provided does not appear to be a file " #~ "path or web link." #~ msgstr "" -#~ "Vous devez fournir un emplacement ou un chemin du fichier qui ne se " -#~ "trouve pas sur votre disque dur local. Le lien que vous avez fourni ne " -#~ "semble pas être un chemin du fichier ni un lien Web." +#~ "Vous devez fournir un emplacement ou un chemin du fichier qui ne se trouve " +#~ "pas sur votre disque dur local. Le lien que vous avez fourni ne semble pas " +#~ "être un chemin du fichier ni un lien Web." #~ msgid "Filter by:" #~ msgstr "Filtrer par :" @@ -6108,8 +6202,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "connecter en utilisant leur nom d’utilisateur et leur mot de passe Okta." #~ msgid "" -#~ "Mercy Corps accounts are managed by Okta. Mercy Corps employees should " -#~ "log in using their Okta username and password." +#~ "Mercy Corps accounts are managed by Okta. Mercy Corps employees should log " +#~ "in using their Okta username and password." #~ msgstr "" #~ "Les comptes Mercy Corps sont gérés par Okta. Les employés de Mercy Corps " #~ "doivent se connecter en utilisant leur nom d’utilisateur et leur mot de " @@ -6149,9 +6243,6 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "Places" #~ msgstr "Lieux" -#~ msgid "Map" -#~ msgstr "Carte" - #~ msgid "Demographic Information" #~ msgstr "Informations démographiques" @@ -6552,9 +6643,6 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "User programs updated" #~ msgstr "Programmes de l’utilisateur mis à jour" -#~ msgid "This field must be unique" -#~ msgstr "Ce champ doit être unique" - #~ msgid "Direction of change (not applicable)" #~ msgstr "Direction du changement (non applicable)" @@ -6610,8 +6698,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "" #~ "Standard disaggregations are entered by the administrator for the entire " -#~ "organizations. If you are not seeing any here, please contact your " -#~ "system administrator." +#~ "organizations. If you are not seeing any here, please contact your system " +#~ "administrator." #~ msgstr "" #~ "Les désagrégations standard sont entrées par l’administrateur pour " #~ "l’ensemble des organisations. Si vous n’en voyez aucun ici, veuillez " @@ -6747,8 +6835,7 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "Filtered by (Status): %(status|default_if_none:'')s" #~ msgstr "Filtré par (Status) : %(status|default_if_none:'')s" -#~ msgid "" -#~ "Filtered by (Program): %(filtered_program|default_if_none:'')s" +#~ msgid "Filtered by (Program): %(filtered_program|default_if_none:'')s" #~ msgstr "" #~ "Filtré par (Programme) : %(filtered_program|default_if_none:'')s" @@ -6896,9 +6983,6 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "User with Approval Authority" #~ msgstr "Utilisateur avec autorité d’approbation" -#~ msgid "Fund" -#~ msgstr "Fonds" - #~ msgid "Tola Approval Authority" #~ msgstr "Autorité d’approbation de Tola" @@ -6981,8 +7065,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Date de demande" #~ msgid "" -#~ "Please be specific in your name. Consider that your Project Name " -#~ "includes WHO, WHAT, WHERE, HOW" +#~ "Please be specific in your name. Consider that your Project Name includes " +#~ "WHO, WHAT, WHERE, HOW" #~ msgstr "" #~ "Veuillez être précis dans votre nom. Considérez que votre nom de projet " #~ "inclut QUI, QUOI, OÙ, COMMENT" @@ -7056,8 +7140,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Nombre estimé de bénéficiaires indirects" #~ msgid "" -#~ "This is a calculation - multiply direct beneficiaries by average " -#~ "household size" +#~ "This is a calculation - multiply direct beneficiaries by average household " +#~ "size" #~ msgstr "" #~ "C’est un calcul - multipliez les bénéficiaires directs par la taille " #~ "moyenne des ménages" @@ -7304,9 +7388,6 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgid "site" #~ msgstr "site" -#~ msgid "Complete" -#~ msgstr "Achevée" - #~ msgid "Project Components" #~ msgstr "Composants du projet" @@ -7360,8 +7441,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ "de rapport se situe dans le futur." #~ msgid "" -#~ "Your program administrator must initialize this program before you will " -#~ "be able to view or edit it" +#~ "Your program administrator must initialize this program before you will be " +#~ "able to view or edit it" #~ msgstr "" #~ "Ce programme doit être initialisé par votre administrateur de programme " #~ "avant de pouvoir être visible ou modifié" @@ -7494,8 +7575,8 @@ msgstr "Santé publique (ne se rapporte ni à la nutrition ni à WASH)" #~ msgstr "Cibles vs réels" #~ msgid "" -#~ "View results organized by target period for indicators that share the " -#~ "same target frequency." +#~ "View results organized by target period for indicators that share the same " +#~ "target frequency." #~ msgstr "" #~ "Voir les résultats organisés par période cible pour les indicateurs qui " #~ "partagent la même fréquence cible." diff --git a/tola_management/programadmin.py b/tola_management/programadmin.py index 51bc0a0aa..164081765 100644 --- a/tola_management/programadmin.py +++ b/tola_management/programadmin.py @@ -305,7 +305,7 @@ class ProgramAdminSerializer(ModelSerializer): def validate_country(self, values): if not values: - raise ValidationError("This field may not be blank.") + raise ValidationError(_("This field may not be blank.")) return values def validate_dates(self, start_date, end_date):