Skip to content

fix french report by copying the english ones#199

Merged
EtienneLt merged 1 commit into
mainfrom
fix-report
Jun 9, 2026
Merged

fix french report by copying the english ones#199
EtienneLt merged 1 commit into
mainfrom
fix-report

Conversation

@EtienneLt

Copy link
Copy Markdown
Contributor

PR Summary

@EtienneLt EtienneLt self-assigned this Jun 9, 2026
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The French localization properties file for modification reports is updated. All previously empty message entries across equipment types, operational status changes, limits, tabular operations, and dispatch summaries are populated with full French text while preserving placeholder variables.

Changes

French Localization for Modification Reports

Layer / File(s) Summary
Populate French modification report messages
src/main/resources/org/gridsuite/modification/reports_fr.properties
All network.modification.* localization keys are filled with French message strings. The update covers equipment modifications (transformers, batteries, generators, loads, HVDC, switches), operational status changes, limits and taps handling, tabular creation/modification outcomes, and aggregated dispatch/balance summaries. Placeholder variables such as ${id}, ${value}, ${filterName}, and ${count} remain in the message content.

Suggested reviewers

  • benrejebmoh
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description body is empty except for a template header, providing no meaningful context about the changes, objectives, or rationale for the modification. Add a detailed description explaining the purpose of copying English reports to French, any testing performed, and context for reviewers.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: updating French report messages by copying from English ones, as confirmed by the file summary showing French localization keys now populated.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sonarqubecloud

sonarqubecloud Bot commented Jun 9, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/main/resources/org/gridsuite/modification/reports_fr.properties`:
- Around line 1-368: The file reports_fr.properties contains English messages
and must be replaced with French translations while preserving all placeholder
tokens; update each key (e.g.
network.modification.2WindingsTransformerModification,
network.modification.generatorCreated,
network.modification.SumGeneratorActivePower and every other
network.modification.* key) to proper French strings, keeping exact ${...}
placeholders and punctuation intact, and ensure grammar/plural forms remain
correct for placeholders like ${count}, ${isPlural}, ${nb}, etc.; run a quick
scan after editing to validate no English fragments or altered placeholder names
remain.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f419fc4b-d712-410c-9cbd-934dfbf62dd4

📥 Commits

Reviewing files that changed from the base of the PR and between dcdfcb9 and ec0b99c.

📒 Files selected for processing (1)
  • src/main/resources/org/gridsuite/modification/reports_fr.properties

Comment on lines +1 to +368
network.modification.2WindingsTransformerModification = 2 windings transformer with id=${id} modified :
network.modification.2WindingsTransformerNotFound = 2 windings transformer with id=${id} not found
network.modification.2WindingsTransformerRatioTapChangerNotFound = 2 windings transformer with id=${id} : Ratio tap changer not found
network.modification.2WindingsTransformersModifications = 2 windings transformers
network.modification.3WindingsTransformerModification = 3 windings transformer with id=${id} modified :
network.modification.3WindingsTransformerNotFound = 3 windings transformer with id=${id} not found
network.modification.3WindingsTransformerRatioTapChangerNotFound = 3 windings transformer with id=${id} : Ratio tap changer for leg ${leg} not found
network.modification.3WindingsTransformersModifications = 3 windings transformers
network.modification.ActiveLimits = Active limits
network.modification.activelimits = Active limits
network.modification.ActiveLimitsCreated = Active limits
network.modification.ActiveLimitSets= Active limit sets
network.modification.activeLimitsSets = Active limits sets
network.modification.activePowerControlModified = Active power control
network.modification.activePowerExtensionAddError.battery = cannot add active power extension on battery with id=${id} : ${message}
network.modification.activePowerExtensionAddError.generator = cannot add active power extension on generator with id=${id} : ${message}
network.modification.ActivePowerRegulationCreated = Active power regulation
network.modification.allFiltersWrong = All of the following filters have equipments with wrong id : ${filterNames}
network.modification.allFiltersWrong.variation = All of the following variation's filters have equipments with wrong id : ${filterNames}
network.modification.angleDroopActivePowerControl = ${status}
network.modification.applicabilityChanged = limit set ${operationalLimitsGroupName} applicability changed to ${applicability}
network.modification.appliedAssignment = ${modificationTypeLabel} on filters : ${filtersEachAssignment}
network.modification.appliedByFilterModifications = ${modificationTypeLabel}s on ${equipmentType} type
network.modification.balancesAdjustment = Balances adjustment
network.modification.balancesAdjustment.addingGenerators = Adding ${count} generators for ${countries} in the scalable
network.modification.balancesAdjustment.addingLoads = Adding ${count} loads for ${countries} in the scalable
network.modification.balancesAdjustment.usingDefaultLoadFlowParameters = Using default load flow parameters: ${reason}
network.modification.battery.modification = Battery modification ${batteryId}
network.modification.batteryCreated = New battery with id=${id} created
network.modification.batteryCreation = Battery creation ${batteryId}
network.modification.batteryModification = Battery with id=${id} modified :
network.modification.BatteryProperties = Properties
network.modification.BusesModifications = Buses
network.modification.busModification = Bus with id=${id} modified :
network.modification.busModificationsResume = ${count} bus(es) have been modified.
network.modification.busNotFound = Bus with id=${id} not found
network.modification.byFilter.deletion = By filter deletion
network.modification.byFilterModificationAll = All equipments have been modified : ${equipmentCount} equipment(s)
network.modification.byFilterModificationFailed = No equipment(s) have been modified on filter ${filterName}
network.modification.byFilterModificationNone = No equipment have been modified
network.modification.byFilterModificationNotFound = No equipments were found for filter ${filterName}
network.modification.byFilterModificationSome = Some of the equipment have been modified : ${nbChanged} equipment(s) modified and ${nbUnchanged} equipment(s) not modified
network.modification.byFilterModificationSuccess = Successful application of ${modificationTypeLabel} on filter ${filterName}
network.modification.byFormulaModification = Modification by formula
network.modification.Characteristics = Characteristics
network.modification.characteristics = Characteristics
network.modification.composite.apply = Composite modification : '${modificationName}'
network.modification.composite.exception.report = Cannot execute ${modificationName} : ${errorMessage}
network.modification.ConnectivityCreated = Connectivity
network.modification.ConnectivityModified = Connectivity
network.modification.ConverterStation = Converter station ${id} modified
network.modification.converterStationCharacteristics = Characteristics
network.modification.converterStationFilters = Filters
network.modification.converterStationSetPoint = Setpoints
network.modification.converterStationSetPointsVoltageRegulation = Voltage regulation
network.modification.createCouplingDevice = Create coupling device in voltage level ${voltageLevelId}
network.modification.createVoltageLevelTopology = Create bus bars in voltage level ${voltageLevelId}
network.modification.creation.fieldName = ${fieldName} : ${value}
network.modification.curveReactiveLimitsCreated = By diagram
network.modification.curveReactiveLimitsModified = By diagram
network.modification.deleteAttachingLine = Delete attaching line
network.modification.deleteVoltageLevelOnLine = Delete voltage level on line
network.modification.DisconnectedGenerator = Generator ${generator} has been discarded from generation dispatch because it is disconnected. Its active power set point remains unchanged
network.modification.distributionKeysNotFound = This mode is available only for equipment with distribution key
network.modification.editedFieldFilter = Edited field : ${fieldName}
network.modification.energise.equipment.EndApplied = ${equipmentType} ${id} (id) : energise the side ${side} applied
network.modification.equipmentAttributeModification = ${EquipmentType} '${EquipmentId}' change
network.modification.equipmentByFilterDeleted = ${nbEquipments} equipments of type=${type} will be removed
network.modification.equipmentConnect = Equipment with id=${id} connected
network.modification.equipmentConnect.side = Equipment with id=${id} connected on side ${side}
network.modification.equipmentConnectedToHvdc = Equipment with id=${id} is connected to Hvdc
network.modification.equipmentDeleted = equipment of type=${type} and id=${id} deleted
network.modification.equipmentDeletion = Equipment deletion ${equipmentId}
network.modification.equipmentDisconnect = Equipment with id=${id} disconnected
network.modification.equipmentDisconnect.side = Equipment with id=${id} disconnected on side ${side}
network.modification.equipmentDisconnected = Equipment with id=${id} disconnected
network.modification.equipmentModifiedError.missing = Cannot modify equipment ${equipmentName} : At least one of the value or referenced field is missing
network.modification.equipmentModifiedError.zero = Cannot modify equipment ${equipmentName} : The value or referenced field of the second operand in the division operator is zero
network.modification.equipmentModifiedReport = ${equipmentType} id : ${equipmentName}, ${fieldName} : ${oldValue} ${arrow} ${newValue}
network.modification.equipmentModifiedReportException = Cannot modify equipment ${equipmentName} : ${errorMessage}
network.modification.equipmentNotConnectedToHvdc = Equipment with id=${id} is not connected to Hvdc
network.modification.fieldModification = ${fieldName} : ${oldValue} ${arrow} ${newValue}
network.modification.filterEquipmentsNotFound = Equipment not found : ${equipmentIds}
network.modification.filterEquipmentsNotFound.inFilter = Cannot find the following equipments ${equipmentIds} in filter ${filters}
network.modification.filterGeneratorsNotFound.generatorsFrequencyReserve = Frequency reserve: Cannot find ${nbNotFoundGen} generators in filter ${filterName}
network.modification.filterGeneratorsNotFound.generatorsWithFixedSupply = Generators with fixed active power: Cannot find ${nbNotFoundGen} generators in filter ${filterName}
network.modification.filterGeneratorsNotFound.generatorsWithoutOutage = Generators without outage simulation: Cannot find ${nbNotFoundGen} generators in filter ${filterName}
network.modification.filterNotFound = Cannot find the following filter: ${name}
network.modification.generationDispatch = Generation dispatch
network.modification.generator.creation = Generator creation ${generatorId}
network.modification.generator.modification = Generator modification ${generatorId}
network.modification.generator.ValueShouldBeGreaterThan = Generator ${equipmentName} : Invalid value ${fieldValue} for field ${fieldName}. Value should be greater or equal to ${targetValue}.
network.modification.generator.ValueShouldBeSmallerThan = Generator ${equipmentName} : Invalid value ${fieldValue} for field ${fieldName}. Value should be smaller or equal to ${targetValue}.
network.modification.generator.ValueShouldBeWithinInterval = Generator ${equipmentName} : Invalid value ${fieldValue} for field ${fieldName}. Value should be within interval [${minValue}; ${maxValue}].
network.modification.generatorChanged = Generator with id=${id} targetP changed
network.modification.generatorCreated = New generator with id=${id} created
network.modification.generatorModification = Generator with id=${id} modified :
network.modification.generatorModificationsResume = ${count} generator(s) have been modified.
network.modification.generatorNotFound = Generator with id=${id} not found
network.modification.generatorNotFound.generatorsFrequencyReserve = Frequency reserve: Cannot find generator ${notFoundGeneratorId} in filter ${filterName}
network.modification.generatorNotFound.generatorsWithFixedSupply = Generators with fixed active power: Cannot find generator ${notFoundGeneratorId} in filter ${filterName}
network.modification.generatorNotFound.generatorsWithoutOutage = Generators without outage simulation: Cannot find generator ${notFoundGeneratorId} in filter ${filterName}
network.modification.GeneratorProperties = Properties
network.modification.generatorScaling = Generator scaling
network.modification.GeneratorSetTargetP = The active power set point of generator ${generator} has been set to ${newValue} MW
network.modification.GeneratorsModifications = Generators
network.modification.GeneratorsWithoutPredefinedActivePowerSetpoint = ${numGeneratorsWithoutSetpoint} generator${isPlural} not have a predefined active power set point. ${itsPlural} active power set point has been set to 0.
network.modification.GeneratorUnchangedTargetP = Generator ${generator} has not been selected by the merit order algorithm. Its active power set point has been set to 0
network.modification.groovyScript = Apply groovy script
network.modification.groovyScriptApplied = Groovy script applied
network.modification.invalidFilters = ${errorType}: There is no valid equipment ID among the provided filter(s)
network.modification.lcc.creation = Lcc creation ${lccId}
network.modification.lcc.modification = Lcc modification ${lccId}
network.modification.lcc.shuntCompensator.connected = Equipment with id=${id} is connected
network.modification.lcc.shuntCompensator.disconnected = Equipment with id=${id} is disconnected
network.modification.lcc.shuntCompensator.modification = Shunt compensator id=${id}
network.modification.lcc.shuntCompensator.notFound = Shunt compensator id=${id} not found
network.modification.lcc.shuntCompensator.removed = Shunt compensator id=${id} removed
network.modification.LCC_Properties = Properties
network.modification.lccCharacteristics = Characteristics
network.modification.lccConverterStationCreated = Lcc converter station ${fieldName} with id=${id} created
network.modification.lccConverterStationModified = Lcc converter station ${fieldName} with id=${id}
network.modification.lccCreated = New lcc with id=${id} created
network.modification.LccSetPoints = Setpoints
network.modification.limitGroupsDeletedAfterMerge = Limit set ${limitset_name} with applicability on side ${applicability} of ${line_with_limitset} but missing from ${line_without_limitset} : not included
network.modification.limits = Limits
network.modification.LimitsAndSetpointsCreated = Limits and Setpoints
network.modification.limitsCreated = Limits
network.modification.limitSetAbsentOnSide1 = limit set '${selectedOperationalLimitsGroup}' on side 1 does not exist
network.modification.limitSetAbsentOnSide2 = limit set '${selectedOperationalLimitsGroup}' on side 2 does not exist
network.modification.limitSetAdded = ${name} added
network.modification.LimitSets= Limit sets
network.modification.limitSetSelectedOnSide1 = limit set selected on side 1 : ${selectedOperationalLimitsGroup1}
network.modification.limitSetSelectedOnSide2 = limit set selected on side 2 : ${selectedOperationalLimitsGroup2}
network.modification.limitsSets = Limits sets
network.modification.LimitsSetsOnSide1 = Limit Sets Side 1
network.modification.LimitsSetsOnSide2 = Limit Sets Side 2
network.modification.line.modification = Line modification ${lineId}
network.modification.lineAttachToVoltageLevel = Line attach to voltage level
network.modification.lineCreated = New line with id=${id} created
network.modification.lineCreation = Creation of line ${lineId}
network.modification.lineModification = Line with id=${id} modified :
network.modification.LineProperties = Properties
network.modification.linesAttachToSplitLines = Lines attach to split lines
network.modification.lineSplitWithVoltageLevel = Line split with voltage level
network.modification.lineStatusChanged = Branch with id=${id} status changed
network.modification.load.creation = Load creation ${loadId}
network.modification.load.modification = Load modification ${loadId}
network.modification.loadCreated = New load with id=${id} created
network.modification.loadModification = Load with id=${id} modified :
network.modification.LoadProperties = Properties
network.modification.loadScaling = Load Scaling
network.modification.lockout.equipment.Applied = ${equipmentType} ${id} (id) : lockout applied
network.modification.MaxUsedMarginalCost = Marginal cost: ${maxUsedMarginalCost}
network.modification.measurements = Measurements
network.modification.measurementsSide1 = Side 1
network.modification.measurementsSide2 = Side 2
network.modification.mergeLimits = Merging of limits in replacing line ${replacing_line}
network.modification.mergeLimitsOfLimitSet = Merging of limits set ${limitset_name} with applicability on side ${side}
network.modification.mergingPermanentLimits = PATL with value ${value1} in ${line1} and value ${value2} in ${line2} : ${lowest_value} selected
network.modification.mergingTemporaryLimits = Limit ${limit_name} with acceptable duration ${tempo} with value ${value1} in ${line1} and value ${value2} in ${line2} : ${lowest_value} selected
network.modification.minMaxReactiveLimitsCreated = By range
network.modification.minMaxReactiveLimitsModified = By range
network.modification.missingFiltersInGenerationDispatch = The modification points to at least ${nb} filter${isPlural} that does not exist anymore
network.modification.MissingMarginalCostForGenerator = The generator ${generator} does not have a marginal cost
network.modification.MissingPredefinedActivePowerSetpointForGenerator = The generator ${generatorId} does not have a predefined active power set point
network.modification.modificationByAssignment = Modification by filter
network.modification.MOVE_VOLTAGE_LEVEL_FEEDER_BAYS = Moving connections in ${voltageLevelId}
network.modification.moveFeederBaysConnectableNotFoundWarning = When moving feeder bays, the equipment with id ${id} was not found and has been ignored.
network.modification.NbGeneratorsWithNoCost = ${nbNoCost} generator${isPlural} been discarded from generation dispatch because of missing marginal cost. Their active power set point has been set to 0
network.modification.NbSynchronousComponents = Network has ${scNumber} synchronous component${isPlural}: ${scList}
network.modification.NetworkCC0.SYNCHRONOUS_COMPONENT = Network CC0 SC${componentNum}
network.modification.newStepAlpha = Shift angle : ${value}
network.modification.newStepConductance = ${delta} conductance : ${value}
network.modification.newStepIndex = Tap (${value})
network.modification.newStepRatio = Ratio : ${value}
network.modification.newStepReactance = ${delta} reactance : ${value}
network.modification.newStepResistance = ${delta} resistance : ${value}
network.modification.newStepSusceptance = ${delta} susceptance : ${value}
network.modification.NoAvailableAdjustableGenerator = There is no adjustable generator
network.modification.noLimitSetSelectedOnSide1 = No limit set selected on side 1
network.modification.noLimitSetSelectedOnSide2 = No limit set selected on side 2
network.modification.notEditedEquipmentsFilter = ${nbUnchanged} equipment(s) were not modified
network.modification.notFoundBurOrBusbarSection = Bus or busbar section ID ${busbarSectionId} not found. Coupler was not created.
network.modification.numberOfValidEquipment = Number of equipment modified : ${nbChanged}
network.modification.OPERATING_STATUS_MODIFICATION_ENERGISE_END_ONE = Energise ${equipmentId}
network.modification.OPERATING_STATUS_MODIFICATION_ENERGISE_END_TWO = Energise ${equipmentId}
network.modification.OPERATING_STATUS_MODIFICATION_LOCKOUT = Lockout ${equipmentId}
network.modification.OPERATING_STATUS_MODIFICATION_SWITCH_ON = Switch on ${equipmentId}
network.modification.OPERATING_STATUS_MODIFICATION_TRIP = Trip ${equipmentId}
network.modification.operationalLimitsGroup.creation = Creation of ${operationalLimitsGroupName}
network.modification.operationalLimitsGroupAdded = Limit set ${operationalLimitsGroupName} added on ${side}
network.modification.operationalLimitsGroupAdded.detail = Added to operational limits group on ${side}
network.modification.operationalLimitsGroupDeleted = Limit set ${operationalLimitsGroupName} has been deleted on ${side}
network.modification.operationalLimitsGroupModified = Limit set ${operationalLimitsGroupName} has been modified on ${side}
network.modification.operationalLimitsGroupModified.detail = Modified in operational limits group on ${side}
network.modification.operationalLimitsGroupPropertyValueMultipleError = Cannot modify equipment ${id} : multiple limit sets applicable on side ${side} with property named ${propertyName} and with value ${propertyValue} : equipment ignored
network.modification.operationalLimitsGroupPropertyValueNotFoundError = Cannot modify equipment ${id} : missing limit set applicable on side ${side} with property named ${propertyName} and with value ${propertyValue} : equipment ignored
network.modification.operationalLimitsGroupReplaced = Limit set ${operationalLimitsGroupName} has replaced the existing limit sets on ${side}
network.modification.permanentLimit = Permanent limit value: ${value}
network.modification.PHASE = Phase tap changer
network.modification.phaseTapChanger1.tapPosition = 3WT with id=${id} phase tap changer 1 position changed
network.modification.phaseTapChanger2.tapPosition = 3WT with id=${id} phase tap changer 2 position changed
network.modification.phaseTapChanger3.tapPosition = 3WT with id=${id} phase tap changer 3 position changed
network.modification.PhaseTapChangerCreated = Phase Tap Changer
network.modification.phaseTapChangerEquipmentModifiedError = Cannot modify field ${fieldName} of equipment ${equipmentName} : Phase tab changer is null
network.modification.phaseTapChangerPositionsAndStepsModification = Tap Changer
network.modification.PhaseTapChangerRemoved = The phase tap changer has been removed
network.modification.phaseTapPositionChanged = 2WT with id=${id} phase tap changer position changed
network.modification.PowerToDispatch = PowerToDispatch
network.modification.propertyAdded = Property ${name} added with value ${value}
network.modification.propertyChanged = Property ${name} changed : ${from} -> ${to}
network.modification.propertyDeleted = Property ${name} deleted
network.modification.propertyNameUnique = Property ${name} should be unique
network.modification.propertyOfLimitsGroupDeletedAfterMerge = Property ${property_name} with value ${property_value_1} in ${line1} and value ${property_value_2} in ${line2} : not included
network.modification.RATIO = Ratio tap changer
network.modification.ratioTapChanger1.tapPosition = 3WT with id=${id} ratio tap changer 1 position changed
network.modification.ratioTapChanger2.tapPosition = 3WT with id=${id} ratio tap changer 2 position changed
network.modification.ratioTapChanger3.tapPosition = 3WT with id=${id} ratio tap changer 3 position changed
network.modification.RatioTapChangerCreated = Ratio Tap Changer
network.modification.ratioTapChangerEquipmentModifiedError = Cannot modify field ${fieldName} of equipment ${equipmentName} : Ratio tab changer is null
network.modification.ratioTapChangerPositionsAndStepsModification = Taps
network.modification.ratioTapChangerRegulationModification = Regulation
network.modification.RatioTapChangerRemoved = The ratio tap changer has been removed
network.modification.ratioTapChangerTerminalRegulatedModification = Regulated Terminal
network.modification.ratioTapPositionChanged = 2WT with id=${id} ratio tap changer position changed
network.modification.ReactiveLimits = Reactive limits
network.modification.ReactivePercentageError = cannot add Coordinated reactive extension on generator with id=${id} : ${message}
network.modification.RegulatedTerminalCreated = Regulated terminal
network.modification.RegulatingCreated = Regulation
network.modification.RegulationCreated = Regulation
network.modification.Result = Result
network.modification.scalingApplied = Successfully scaling variation in ${variationMode} mode with variation value asked is ${askedValue} and variation done is ${actualValue}
network.modification.scalingCreated = new scaling created
network.modification.SCNotRemoved = Shunt compensators were not removed for HVDC line id=${id}
network.modification.SetPointCreated = Setpoints
network.modification.Setpoints = Setpoints
network.modification.shortCircuitAttributesModified = Short-circuit
network.modification.shortCircuitCreated = Short-circuit
network.modification.ShortCircuitExtensionAddError = cannot add short-circuit extension on ${equipmentType} with id=${id} : ${message}
network.modification.shuntCompensatorConnectUndefined = Connect value is undefined
network.modification.shuntCompensatorCreated = New shunt compensator with id=${id} created
network.modification.shuntCompensatorCreation = Shunt compensator creation ${shuntCompensatorId}
network.modification.shuntCompensatorModification = Shunt compensator with id=${id} modified :
network.modification.shuntCompensatorModification.modification = Shunt compensator modification ${shuntCompensatorId}
network.modification.shuntCompensatorModification.withId = Shunt Compensator with id=${id} modified :
network.modification.shuntCompensatorModificationsResume = ${count} shunt compensator(s) have been modified.
network.modification.shuntCompensatorNotDeleted = Shunt compensator with id=${id} not found in the network
network.modification.shuntCompensatorNotFound = Shunt compensator with id=${id} not found
network.modification.ShuntCompensatorProperties = Properties
network.modification.shuntCompensatorReconnected = Shunt compensator reconnected
network.modification.shuntCompensatorSectionCountUndefined = Section count value is undefined
network.modification.ShuntCompensatorsModifications = Shunt compensators
network.modification.side1Characteristics = Side 1
network.modification.side1LimitsModification = Side 1
network.modification.side2Characteristics = Side 2
network.modification.side2LimitsModification = Side 2
network.modification.Stacking = Stacking
network.modification.StandbyAutomatonCreated = Standby automaton
network.modification.StandbyAutomatonExtensionAddError = Cannot add standby automaton extension on ${message}
network.modification.startUpAttributesCreated = Start up
network.modification.startUpAttributesModified = Start up
network.modification.StartupExtensionAddError = cannot add startup extension on generator with id=${id} : ${message}
network.modification.StateEstimationData = State estimation
network.modification.stateEstimationData = State estimation
network.modification.staticVarCompensatorCreated = New static var compensator with id=${id} created
network.modification.staticVarCompensatorCreation = Static var compensator creation ${id}
network.modification.staticVarCompensatorModification = Static var compensator with id=${id} modified :
network.modification.staticVarCompensatorNotFound = Static var compensator with id=${id} not found
network.modification.StaticVarCompensatorProperties = Properties
network.modification.StaticVarCompensatorsModifications = Static var compensators
network.modification.substation.creation = Substation creation ${substationId}
network.modification.substation.modification = Substation modification ${substationId}
network.modification.substationCreated = New substation with id=${id} created
network.modification.substationModification = Substation with id=${id} modified :
network.modification.SubstationNotFound = Substation ${substation} not found
network.modification.SubstationProperties = Properties
network.modification.SumGeneratorActivePower = Sum of generator active power setpoints in ${region} region: ${sum} MW (NUCLEAR: ${nuclearSum} MW, THERMAL: ${thermalSum} MW, HYDRO: ${hydroSum} MW, WIND AND SOLAR: ${windAndSolarSum} MW, OTHER: ${otherSum} MW).
network.modification.SupplyDemandBalanceCouldBeMet = The supply-demand balance could be met
network.modification.SupplyDemandBalanceCouldNotBeMet = The supply-demand balance could not be met : the remaining power imbalance is ${remainingPower} MW
network.modification.svcModificationsResume = ${count} static var compensator(s) have been modified.
network.modification.switchChanged = ${operation} switch '${id}' in voltage level ${voltageLevelId}
network.modification.switchOn.equipment.Applied = ${equipmentType} ${id} (id) : switch on applied
network.modification.tabular.creation = Tabular creation: ${modificationsCount} ${defaultMessage}
network.modification.tabular.creation.equipmentId = Creation of ${equipmentId}
network.modification.tabular.creation.error = Tabular creation: No ${defaultMessage}
network.modification.tabular.creation.error.equipmentError = Creation errors
network.modification.tabular.creation.exception = ${message}
network.modification.tabular.creation.partial = Tabular creation: ${modificationsCount} ${defaultMessage} and ${failuresCount} have not been created
network.modification.tabular.creation.shuntCompensator.maxSusceptanceIgnored.1 = Tabular creation: Input for maximum susceptance has been ignored since it is not possible to simultaneously set type, maximum reactive power and maximum susceptance for shunt compensator with id ${id}
network.modification.tabular.creation.shuntCompensator.maxSusceptanceIgnored.2 = Tabular creation: Input for maximum susceptance has been ignored since it is not possible to simultaneously set type and maximum susceptance for shunt compensator with id ${id}
network.modification.tabular.creation.shuntCompensator.maxSusceptanceIgnored.3 = Tabular creation: Input for maximum susceptance has been ignored since it is not possible to simultaneously set maximum reactive power and maximum susceptance for shunt compensator with id ${id}
network.modification.tabular.modification = Tabular modification: ${modificationsCount} ${defaultMessage}
network.modification.tabular.modification.equipmentId = Modification of ${equipmentId}
network.modification.tabular.modification.error = Tabular modification: No ${defaultMessage}
network.modification.tabular.modification.error.equipmentError = Modification errors
network.modification.tabular.modification.exception = ${message}
network.modification.tabular.modification.partial = Tabular modification: ${modificationsCount} ${defaultMessage} and ${failuresCount} have not been modified
network.modification.tabular.modification.shuntCompensator.maxSusceptanceIgnored.1 = Tabular modification: Input for maximum susceptance has been ignored since it is not possible to simultaneously update type, maximum reactive power and maximum susceptance for shunt compensator with id ${id}
network.modification.tabular.modification.shuntCompensator.maxSusceptanceIgnored.2 = Tabular modification: Input for maximum susceptance has been ignored since it is not possible to simultaneously update type and maximum susceptance for shunt compensator with id ${id}
network.modification.tabular.modification.shuntCompensator.maxSusceptanceIgnored.3 = Tabular modification: Input for maximum susceptance has been ignored since it is not possible to simultaneously update maximum reactive power and maximum susceptance for shunt compensator with id ${id}
network.modification.tabular.shuntCompensator.modifyImpossible = Tabular modification: It is currently not possible to modify non-linear shunt compensator with id ${id}
network.modification.tabularCreation = Tabular creation (${creationType})
network.modification.tabularModification = Tabular modification (${modificationType})
network.modification.tapChangerStepsModification = Taps were replaced by new ones below
network.modification.TapsCreated = Taps
network.modification.tapsModification = Taps
network.modification.temporaryLimitDeleted.name = ${name} (${duration}) deleted
network.modification.temporaryLimitModified.name = Temporary limit ${name}; value: ${value}; acceptable duration: ${duration}
network.modification.temporaryLimitsDeletedAfterMerge = Limit ${limit_name} with acceptable duration ${tempo} with applicability on side ${applicability} from ${line_with_limit} but missing from ${line_without_limit} : not included
network.modification.temporaryLimitsDuplicateDuration = Duplicate duration for temporary limit ${name} (duration: ${duration}) to ${modificationType}: ignored
network.modification.temporaryLimitsDuplicateName = Duplicate name for temporary limit ${name} (duration: ${duration}) to ${modificationType}: ignored
network.modification.temporaryLimitsMissingDuration = Missing acceptable duration for temporary limit to ${modificationType}: ignored
network.modification.temporaryLimitsMissingModificationType = Missing modification type for temporary limit: ignored
network.modification.temporaryLimitsMissingName = Missing name for temporary limit to ${modificationType}: ignored
network.modification.temporaryLimitsNoMatch = No existing temporary limit found with acceptableDuration=${limitAcceptableDuration}: ignored
network.modification.temporaryLimitsReplaced = Previous temporary limits were removed
network.modification.temporaryLimitsWithDifferentAcceptableDuration = Limit ${limit_name} is present on both lines but with different acceptable duration : ${tempo1} for ${line1} and ${tempo2} for ${line2} : not included
network.modification.temporaryLimitsWrongModification = Temporary limit modification type can only be ADD when limit group modification type is not MODIFY: switched from ${modificationType} to ADD
network.modification.temporaryLimitValueModified.name = Temporary limit ${name} (duration: ${duration}) : ${oldValue} -> ${value}
network.modification.terminal1Disconnected = Equipment with id=${id} disconnected on side 1
network.modification.terminal2Disconnected = Equipment with id=${id} disconnected on side 2
network.modification.TotalActiveBatteryTargetP = The battery balance is : ${batteryBalance} MW
network.modification.TotalAmountFixedSupply = The total amount of fixed supply is : ${totalAmountFixedSupply} MW
network.modification.TotalAmountFixedSupplyExceedsTotalDemand = The total amount of fixed supply exceeds the total demand
network.modification.TotalAmountSupplyToBeDispatched = The total amount of supply to be dispatched is : ${totalAmountSupplyToBeDispatched} MW
network.modification.TotalDemand = The total demand is : ${totalDemand} MW
network.modification.TotalDisconnectedGenerator = ${nbDisconnectedGenerator} generator${isPlural} been discarded from generation dispatch because their are disconnected. Their active power set point remains unchanged
network.modification.TotalGeneratorSetTargetP = The active power set points of ${nbUpdatedGenerator} generator${isPlural} have been updated as a result of generation dispatch
network.modification.TotalGeneratorUnchangedTargetP = ${nbUnchangedGenerator} eligible generator${isPlural} not been selected by the merit order algorithm. Their active power set point has been set to 0
network.modification.TotalOutwardHvdcFlow = The HVDC balance is : ${hvdcBalance} MW
network.modification.trip.equipment.Applied = ${equipmentType} ${id} (id) : trip applied
network.modification.twoWindingsTransformerCreated = New two windings transformer with id=${id} created
network.modification.twoWindingsTransformerCreation = Two windings transformer creation ${twoWindingsTransformerId}
network.modification.twoWindingsTransformerModification.modification = Two windings transformer modification ${twoWindingsTransformerId}
network.modification.twoWindingsTransformerModification.modified = TwoWindingsTransformer with id=${id} modified :
network.modification.TwoWindingsTransformerProperties = Properties
network.modification.twtToBeEstimated = Estimate tap position
network.modification.VlProperties = Properties
network.modification.VOLTAGE_LEVEL_TOPOLOGY_MODIFICATION = Voltage Level topology modification ${voltageLevelId}
network.modification.voltageInitModification = Voltage init modification
network.modification.voltageLevel.busbarSection.measurements = Measurements for busbar section '${id}'
network.modification.voltageLevel.creation = VoltageLevel creation ${voltageLevelId}
network.modification.voltageLevel.modification = VoltageLevel modification ${voltageLevelId}
network.modification.voltageLevel.section.created = Adding busbar section on ${voltageLevelId}
network.modification.voltageLevel.sectionCreation = Busbar index '${busbarIndex}' : Adding new section '${sectionId}' with index '${sectionIndex}'
network.modification.voltageLevelCreated = New voltage level with id=${id} created
network.modification.voltageLevelModification = Voltage level with id=${id} modified :
network.modification.voltageLevelTopologyModified = Voltage level '${id}' topology has been modified
network.modification.VoltageRegulationCreated = Voltage regulation
network.modification.voltageRegulationModified = Voltage regulation
network.modification.VoltageRegulationOn = ${status}
network.modification.vsc.creation = Vsc creation ${vscId}
network.modification.vsc.modification = Vsc modification ${vscId}
network.modification.vscAngleDroop = Angle droop active power control
network.modification.vscCharacteristics = Characteristics
network.modification.vscConverterStationCreated = Vsc converter station ${fieldName} with id=${id} created
network.modification.vscConverterStationModification = Vsc converter station with id=${id} modified :
network.modification.vscConverterStationModified = Vsc converter station ${fieldName} with id=${id}
network.modification.vscConverterStationNotFound = Vsc converter station with id=${id} not found
network.modification.VscConverterStationsModifications = Vsc converter stations
network.modification.vscCreated = New vsc with id=${id} created
network.modification.vscLimits = Limits
network.modification.VscModification = Vsc with id=${id} modified :
network.modification.vscModificationsResume = ${count} vsc converter station(s) have been modified.
network.modification.VscProperties = Properties
network.modification.vscSetPoints = Setpoints
network.modification.windingsTransformerModificationsResume = ${count} transformer(s) have been modified.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical | ⚡ Quick win

Critical: French properties file contains English text instead of French translations.

This file is named reports_fr.properties, indicating it should contain French localization strings. However, all 368 message entries contain English text instead of French translations. For example:

  • Line 1: "2 windings transformer with id=${id} modified :" (should be French)
  • Line 96: "New generator with id=${id} created" (should be French)
  • Line 278: "Sum of generator active power setpoints in ${region} region..." (should be French)

This completely breaks French language support. Users with French locale configured will receive English messages, defeating the purpose of i18n/l10n.

All entries need to be translated to proper French text while preserving the ${...} placeholder variables.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/main/resources/org/gridsuite/modification/reports_fr.properties` around
lines 1 - 368, The file reports_fr.properties contains English messages and must
be replaced with French translations while preserving all placeholder tokens;
update each key (e.g. network.modification.2WindingsTransformerModification,
network.modification.generatorCreated,
network.modification.SumGeneratorActivePower and every other
network.modification.* key) to proper French strings, keeping exact ${...}
placeholders and punctuation intact, and ensure grammar/plural forms remain
correct for placeholders like ${count}, ${isPlural}, ${nb}, etc.; run a quick
scan after editing to validate no English fragments or altered placeholder names
remain.

@EtienneLt EtienneLt merged commit 6e97880 into main Jun 9, 2026
5 checks passed
@EtienneLt EtienneLt deleted the fix-report branch June 9, 2026 11:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants