Fix exception with AmountFormatter if Si prefix were enabled and no unit symbol were set.

Also this case is now prevented by Validator (as it is not very useful). Fixes issue #171.
This commit is contained in:
Jan Böhmer 2022-09-17 17:58:01 +02:00
parent 430c9fed67
commit 8338c0f2d6
4 changed files with 94 additions and 86 deletions

View file

@ -77,8 +77,9 @@ class MeasurementUnit extends AbstractPartsContainingDBElement
/** /**
* @var bool Determines if the unit can be used with SI Prefixes (kilo, giga, milli, etc.). * @var bool Determines if the unit can be used with SI Prefixes (kilo, giga, milli, etc.).
* Useful for sizes like meters. * Useful for sizes like meters. For this the unit must be set
* @ORM\Column(type="boolean", name="use_si_prefix") * @ORM\Column(type="boolean", name="use_si_prefix")
* @Assert\Expression("this.isUseSIPrefix() == false or this.getUnit() != null", message="validator.measurement_unit.use_si_prefix_needs_unit")
*/ */
protected $use_si_prefix = false; protected $use_si_prefix = false;

View file

@ -131,7 +131,8 @@ class AmountFormatter
/** @var MeasurementUnit $unit */ /** @var MeasurementUnit $unit */
$unit = $options['measurement_unit']; $unit = $options['measurement_unit'];
return $unit->getUnit(); //When no unit is set, return empty string so that this can be formatted properly
return $unit->getUnit() ?? '';
} }
return ''; return '';

View file

@ -893,9 +893,9 @@ The user will have to set up all two-factor authentication methods again and pri
</notes> </notes>
<segment> <segment>
<source>entity.delete.message</source> <source>entity.delete.message</source>
<target>This can not be undone! <target><![CDATA[This can not be undone!
&lt;br&gt; <br>
Sub elements will be moved upwards.</target> Sub elements will be moved upwards.]]></target>
</segment> </segment>
</unit> </unit>
<unit id="eyyICVM" name="entity.delete"> <unit id="eyyICVM" name="entity.delete">
@ -9316,457 +9316,457 @@ Element 3</target>
</segment> </segment>
</unit> </unit>
<unit id="7FpEp24" name="user.pw_change_needed.flash"> <unit id="7FpEp24" name="user.pw_change_needed.flash">
<segment state="translated"> <segment>
<source>user.pw_change_needed.flash</source> <source>user.pw_change_needed.flash</source>
<target>Your password needs to be changed! Please set a new password.</target> <target>Your password needs to be changed! Please set a new password.</target>
</segment> </segment>
</unit> </unit>
<unit id="uEMvuw8" name="tree.root_node.text"> <unit id="uEMvuw8" name="tree.root_node.text">
<segment state="translated"> <segment>
<source>tree.root_node.text</source> <source>tree.root_node.text</source>
<target>Root node</target> <target>Root node</target>
</segment> </segment>
</unit> </unit>
<unit id="EieqscF" name="part_list.action.select_null"> <unit id="EieqscF" name="part_list.action.select_null">
<segment state="translated"> <segment>
<source>part_list.action.select_null</source> <source>part_list.action.select_null</source>
<target>No elements existing!</target> <target>No elements existing!</target>
</segment> </segment>
</unit> </unit>
<unit id="4IH1qgL" name="part_list.action.delete-title"> <unit id="4IH1qgL" name="part_list.action.delete-title">
<segment state="translated"> <segment>
<source>part_list.action.delete-title</source> <source>part_list.action.delete-title</source>
<target>Do you really want to delete these parts?</target> <target>Do you really want to delete these parts?</target>
</segment> </segment>
</unit> </unit>
<unit id="te3YmqA" name="part_list.action.delete-message"> <unit id="te3YmqA" name="part_list.action.delete-message">
<segment state="translated"> <segment>
<source>part_list.action.delete-message</source> <source>part_list.action.delete-message</source>
<target>These parts and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone!</target> <target>These parts and any associated information (like attachments, price information, etc.) will be deleted. This can not be undone!</target>
</segment> </segment>
</unit> </unit>
<unit id="xd6OiPE" name="part.table.actions.success"> <unit id="xd6OiPE" name="part.table.actions.success">
<segment state="translated"> <segment>
<source>part.table.actions.success</source> <source>part.table.actions.success</source>
<target>Actions finished successfully.</target> <target>Actions finished successfully.</target>
</segment> </segment>
</unit> </unit>
<unit id="_3l6FO_" name="attachment.edit.delete.confirm"> <unit id="_3l6FO_" name="attachment.edit.delete.confirm">
<segment state="translated"> <segment>
<source>attachment.edit.delete.confirm</source> <source>attachment.edit.delete.confirm</source>
<target>Do you really want to delete this attachment?</target> <target>Do you really want to delete this attachment?</target>
</segment> </segment>
</unit> </unit>
<unit id="JtGEdQP" name="filter.text_constraint.value.operator.EQ"> <unit id="JtGEdQP" name="filter.text_constraint.value.operator.EQ">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.EQ</source> <source>filter.text_constraint.value.operator.EQ</source>
<target>Is</target> <target>Is</target>
</segment> </segment>
</unit> </unit>
<unit id="9RAGNGw" name="filter.text_constraint.value.operator.NEQ"> <unit id="9RAGNGw" name="filter.text_constraint.value.operator.NEQ">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.NEQ</source> <source>filter.text_constraint.value.operator.NEQ</source>
<target>Is not</target> <target>Is not</target>
</segment> </segment>
</unit> </unit>
<unit id="N1AQsNF" name="filter.text_constraint.value.operator.STARTS"> <unit id="N1AQsNF" name="filter.text_constraint.value.operator.STARTS">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.STARTS</source> <source>filter.text_constraint.value.operator.STARTS</source>
<target>Starts with</target> <target>Starts with</target>
</segment> </segment>
</unit> </unit>
<unit id="3Rr21xj" name="filter.text_constraint.value.operator.CONTAINS"> <unit id="3Rr21xj" name="filter.text_constraint.value.operator.CONTAINS">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.CONTAINS</source> <source>filter.text_constraint.value.operator.CONTAINS</source>
<target>Contains</target> <target>Contains</target>
</segment> </segment>
</unit> </unit>
<unit id="S_U21kw" name="filter.text_constraint.value.operator.ENDS"> <unit id="S_U21kw" name="filter.text_constraint.value.operator.ENDS">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.ENDS</source> <source>filter.text_constraint.value.operator.ENDS</source>
<target>Ends with</target> <target>Ends with</target>
</segment> </segment>
</unit> </unit>
<unit id="l2ojG4Z" name="filter.text_constraint.value.operator.LIKE"> <unit id="l2ojG4Z" name="filter.text_constraint.value.operator.LIKE">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.LIKE</source> <source>filter.text_constraint.value.operator.LIKE</source>
<target>LIKE pattern</target> <target>LIKE pattern</target>
</segment> </segment>
</unit> </unit>
<unit id="hAcin33" name="filter.text_constraint.value.operator.REGEX"> <unit id="hAcin33" name="filter.text_constraint.value.operator.REGEX">
<segment state="translated"> <segment>
<source>filter.text_constraint.value.operator.REGEX</source> <source>filter.text_constraint.value.operator.REGEX</source>
<target>Regular expression</target> <target>Regular expression</target>
</segment> </segment>
</unit> </unit>
<unit id="hWtqvI3" name="filter.number_constraint.value.operator.BETWEEN"> <unit id="hWtqvI3" name="filter.number_constraint.value.operator.BETWEEN">
<segment state="translated"> <segment>
<source>filter.number_constraint.value.operator.BETWEEN</source> <source>filter.number_constraint.value.operator.BETWEEN</source>
<target>Between</target> <target>Between</target>
</segment> </segment>
</unit> </unit>
<unit id="Pho_nY5" name="filter.number_constraint.AND"> <unit id="Pho_nY5" name="filter.number_constraint.AND">
<segment state="translated"> <segment>
<source>filter.number_constraint.AND</source> <source>filter.number_constraint.AND</source>
<target>and</target> <target>and</target>
</segment> </segment>
</unit> </unit>
<unit id="NOmRxFG" name="filter.entity_constraint.operator.EQ"> <unit id="NOmRxFG" name="filter.entity_constraint.operator.EQ">
<segment state="translated"> <segment>
<source>filter.entity_constraint.operator.EQ</source> <source>filter.entity_constraint.operator.EQ</source>
<target>Is (excluding children)</target> <target>Is (excluding children)</target>
</segment> </segment>
</unit> </unit>
<unit id="7zxBnzb" name="filter.entity_constraint.operator.NEQ"> <unit id="7zxBnzb" name="filter.entity_constraint.operator.NEQ">
<segment state="translated"> <segment>
<source>filter.entity_constraint.operator.NEQ</source> <source>filter.entity_constraint.operator.NEQ</source>
<target>Is not (excluding children)</target> <target>Is not (excluding children)</target>
</segment> </segment>
</unit> </unit>
<unit id="oX1nk5D" name="filter.entity_constraint.operator.INCLUDING_CHILDREN"> <unit id="oX1nk5D" name="filter.entity_constraint.operator.INCLUDING_CHILDREN">
<segment state="translated"> <segment>
<source>filter.entity_constraint.operator.INCLUDING_CHILDREN</source> <source>filter.entity_constraint.operator.INCLUDING_CHILDREN</source>
<target>Is (including children)</target> <target>Is (including children)</target>
</segment> </segment>
</unit> </unit>
<unit id="AS9s6LU" name="filter.entity_constraint.operator.EXCLUDING_CHILDREN"> <unit id="AS9s6LU" name="filter.entity_constraint.operator.EXCLUDING_CHILDREN">
<segment state="translated"> <segment>
<source>filter.entity_constraint.operator.EXCLUDING_CHILDREN</source> <source>filter.entity_constraint.operator.EXCLUDING_CHILDREN</source>
<target>Is not (excluding children)</target> <target>Is not (excluding children)</target>
</segment> </segment>
</unit> </unit>
<unit id="7.bq.cZ" name="part.filter.dbId"> <unit id="7.bq.cZ" name="part.filter.dbId">
<segment state="translated"> <segment>
<source>part.filter.dbId</source> <source>part.filter.dbId</source>
<target>Database ID</target> <target>Database ID</target>
</segment> </segment>
</unit> </unit>
<unit id="RphtSCZ" name="filter.tags_constraint.operator.ANY"> <unit id="RphtSCZ" name="filter.tags_constraint.operator.ANY">
<segment state="translated"> <segment>
<source>filter.tags_constraint.operator.ANY</source> <source>filter.tags_constraint.operator.ANY</source>
<target>Any of the tags</target> <target>Any of the tags</target>
</segment> </segment>
</unit> </unit>
<unit id="So3q9VW" name="filter.tags_constraint.operator.ALL"> <unit id="So3q9VW" name="filter.tags_constraint.operator.ALL">
<segment state="translated"> <segment>
<source>filter.tags_constraint.operator.ALL</source> <source>filter.tags_constraint.operator.ALL</source>
<target>All of the tags</target> <target>All of the tags</target>
</segment> </segment>
</unit> </unit>
<unit id="mqkIc_4" name="filter.tags_constraint.operator.NONE"> <unit id="mqkIc_4" name="filter.tags_constraint.operator.NONE">
<segment state="translated"> <segment>
<source>filter.tags_constraint.operator.NONE</source> <source>filter.tags_constraint.operator.NONE</source>
<target>None of the tags</target> <target>None of the tags</target>
</segment> </segment>
</unit> </unit>
<unit id="wgXINWq" name="part.filter.lot_count"> <unit id="wgXINWq" name="part.filter.lot_count">
<segment state="translated"> <segment>
<source>part.filter.lot_count</source> <source>part.filter.lot_count</source>
<target>Number of lots</target> <target>Number of lots</target>
</segment> </segment>
</unit> </unit>
<unit id="tjfJAIq" name="part.filter.attachments_count"> <unit id="tjfJAIq" name="part.filter.attachments_count">
<segment state="translated"> <segment>
<source>part.filter.attachments_count</source> <source>part.filter.attachments_count</source>
<target>Number of attachments</target> <target>Number of attachments</target>
</segment> </segment>
</unit> </unit>
<unit id="6Bt9ZhB" name="part.filter.orderdetails_count"> <unit id="6Bt9ZhB" name="part.filter.orderdetails_count">
<segment state="translated"> <segment>
<source>part.filter.orderdetails_count</source> <source>part.filter.orderdetails_count</source>
<target>Number of orderdetails</target> <target>Number of orderdetails</target>
</segment> </segment>
</unit> </unit>
<unit id="QnS490v" name="part.filter.lotExpirationDate"> <unit id="QnS490v" name="part.filter.lotExpirationDate">
<segment state="translated"> <segment>
<source>part.filter.lotExpirationDate</source> <source>part.filter.lotExpirationDate</source>
<target>Lot expiration date</target> <target>Lot expiration date</target>
</segment> </segment>
</unit> </unit>
<unit id="fIZmzas" name="part.filter.lotNeedsRefill"> <unit id="fIZmzas" name="part.filter.lotNeedsRefill">
<segment state="translated"> <segment>
<source>part.filter.lotNeedsRefill</source> <source>part.filter.lotNeedsRefill</source>
<target>Any lot needs refill</target> <target>Any lot needs refill</target>
</segment> </segment>
</unit> </unit>
<unit id="_ERegGt" name="part.filter.lotUnknwonAmount"> <unit id="_ERegGt" name="part.filter.lotUnknwonAmount">
<segment state="translated"> <segment>
<source>part.filter.lotUnknwonAmount</source> <source>part.filter.lotUnknwonAmount</source>
<target>Any lot has unknown amount</target> <target>Any lot has unknown amount</target>
</segment> </segment>
</unit> </unit>
<unit id="lRKoTj_" name="part.filter.attachmentName"> <unit id="lRKoTj_" name="part.filter.attachmentName">
<segment state="translated"> <segment>
<source>part.filter.attachmentName</source> <source>part.filter.attachmentName</source>
<target>Attachment name</target> <target>Attachment name</target>
</segment> </segment>
</unit> </unit>
<unit id=".gg9fsx" name="filter.choice_constraint.operator.ANY"> <unit id=".gg9fsx" name="filter.choice_constraint.operator.ANY">
<segment state="translated"> <segment>
<source>filter.choice_constraint.operator.ANY</source> <source>filter.choice_constraint.operator.ANY</source>
<target>Any of</target> <target>Any of</target>
</segment> </segment>
</unit> </unit>
<unit id="dbzWAHM" name="filter.choice_constraint.operator.NONE"> <unit id="dbzWAHM" name="filter.choice_constraint.operator.NONE">
<segment state="translated"> <segment>
<source>filter.choice_constraint.operator.NONE</source> <source>filter.choice_constraint.operator.NONE</source>
<target>None of</target> <target>None of</target>
</segment> </segment>
</unit> </unit>
<unit id="ZnYcxRf" name="part.filter.amount_sum"> <unit id="ZnYcxRf" name="part.filter.amount_sum">
<segment state="translated"> <segment>
<source>part.filter.amount_sum</source> <source>part.filter.amount_sum</source>
<target>Total amount</target> <target>Total amount</target>
</segment> </segment>
</unit> </unit>
<unit id="FGuEete" name="filter.submit"> <unit id="FGuEete" name="filter.submit">
<segment state="translated"> <segment>
<source>filter.submit</source> <source>filter.submit</source>
<target>Update</target> <target>Update</target>
</segment> </segment>
</unit> </unit>
<unit id="4jJXUNM" name="filter.discard"> <unit id="4jJXUNM" name="filter.discard">
<segment state="translated"> <segment>
<source>filter.discard</source> <source>filter.discard</source>
<target>Discard changes</target> <target>Discard changes</target>
</segment> </segment>
</unit> </unit>
<unit id="uVrP0no" name="filter.clear_filters"> <unit id="uVrP0no" name="filter.clear_filters">
<segment state="translated"> <segment>
<source>filter.clear_filters</source> <source>filter.clear_filters</source>
<target>Clear all filters</target> <target>Clear all filters</target>
</segment> </segment>
</unit> </unit>
<unit id="Rd0n9wc" name="filter.title"> <unit id="Rd0n9wc" name="filter.title">
<segment state="translated"> <segment>
<source>filter.title</source> <source>filter.title</source>
<target>Filter</target> <target>Filter</target>
</segment> </segment>
</unit> </unit>
<unit id="kTizqBM" name="filter.parameter_value_constraint.operator.="> <unit id="kTizqBM" name="filter.parameter_value_constraint.operator.=">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.=</source> <source>filter.parameter_value_constraint.operator.=</source>
<target>Typ. Value =</target> <target>Typ. Value =</target>
</segment> </segment>
</unit> </unit>
<unit id="2Nf2h2a" name="filter.parameter_value_constraint.operator.!="> <unit id="2Nf2h2a" name="filter.parameter_value_constraint.operator.!=">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.!=</source> <source>filter.parameter_value_constraint.operator.!=</source>
<target>Typ. Value !=</target> <target>Typ. Value !=</target>
</segment> </segment>
</unit> </unit>
<unit id="0fmepxx" name="filter.parameter_value_constraint.operator.&lt;"> <unit id="0fmepxx" name="filter.parameter_value_constraint.operator.&lt;">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.&lt;</source> <source>filter.parameter_value_constraint.operator.&lt;</source>
<target>Typ. Value &lt;</target> <target><![CDATA[Typ. Value <]]></target>
</segment> </segment>
</unit> </unit>
<unit id="ubkcT6U" name="filter.parameter_value_constraint.operator.&gt;"> <unit id="ubkcT6U" name="filter.parameter_value_constraint.operator.&gt;">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.&gt;</source> <source>filter.parameter_value_constraint.operator.&gt;</source>
<target>Typ. Value &gt;</target> <target><![CDATA[Typ. Value >]]></target>
</segment> </segment>
</unit> </unit>
<unit id="O4x0opb" name="filter.parameter_value_constraint.operator.&lt;="> <unit id="O4x0opb" name="filter.parameter_value_constraint.operator.&lt;=">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.&lt;=</source> <source>filter.parameter_value_constraint.operator.&lt;=</source>
<target>Typ. Value &lt;=</target> <target><![CDATA[Typ. Value <=]]></target>
</segment> </segment>
</unit> </unit>
<unit id="ituiTs9" name="filter.parameter_value_constraint.operator.&gt;="> <unit id="ituiTs9" name="filter.parameter_value_constraint.operator.&gt;=">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.&gt;=</source> <source>filter.parameter_value_constraint.operator.&gt;=</source>
<target>Typ. Value &gt;=</target> <target><![CDATA[Typ. Value >=]]></target>
</segment> </segment>
</unit> </unit>
<unit id="Y8B3A9X" name="filter.parameter_value_constraint.operator.BETWEEN"> <unit id="Y8B3A9X" name="filter.parameter_value_constraint.operator.BETWEEN">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.BETWEEN</source> <source>filter.parameter_value_constraint.operator.BETWEEN</source>
<target>Typ. Value is between</target> <target>Typ. Value is between</target>
</segment> </segment>
</unit> </unit>
<unit id="FqUoIEy" name="filter.parameter_value_constraint.operator.IN_RANGE"> <unit id="FqUoIEy" name="filter.parameter_value_constraint.operator.IN_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.IN_RANGE</source> <source>filter.parameter_value_constraint.operator.IN_RANGE</source>
<target>In Value range</target> <target>In Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="v_1AWPE" name="filter.parameter_value_constraint.operator.NOT_IN_RANGE"> <unit id="v_1AWPE" name="filter.parameter_value_constraint.operator.NOT_IN_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.NOT_IN_RANGE</source> <source>filter.parameter_value_constraint.operator.NOT_IN_RANGE</source>
<target>Not in Value range</target> <target>Not in Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="X4hI3kL" name="filter.parameter_value_constraint.operator.GREATER_THAN_RANGE"> <unit id="X4hI3kL" name="filter.parameter_value_constraint.operator.GREATER_THAN_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.GREATER_THAN_RANGE</source> <source>filter.parameter_value_constraint.operator.GREATER_THAN_RANGE</source>
<target>Greater than Value range</target> <target>Greater than Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="yQO92R2" name="filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE"> <unit id="yQO92R2" name="filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE</source> <source>filter.parameter_value_constraint.operator.GREATER_EQUAL_RANGE</source>
<target>Greater equal than Value range</target> <target>Greater equal than Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="h8zJtL5" name="filter.parameter_value_constraint.operator.LESS_THAN_RANGE"> <unit id="h8zJtL5" name="filter.parameter_value_constraint.operator.LESS_THAN_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.LESS_THAN_RANGE</source> <source>filter.parameter_value_constraint.operator.LESS_THAN_RANGE</source>
<target>Less than Value range</target> <target>Less than Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="sxSjUOg" name="filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE"> <unit id="sxSjUOg" name="filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE</source> <source>filter.parameter_value_constraint.operator.LESS_EQUAL_RANGE</source>
<target>Less equal than Value range</target> <target>Less equal than Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="fqRL5fp" name="filter.parameter_value_constraint.operator.RANGE_IN_RANGE"> <unit id="fqRL5fp" name="filter.parameter_value_constraint.operator.RANGE_IN_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.RANGE_IN_RANGE</source> <source>filter.parameter_value_constraint.operator.RANGE_IN_RANGE</source>
<target>Range is completly in Value range</target> <target>Range is completly in Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="PJgHP5E" name="filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE"> <unit id="PJgHP5E" name="filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE">
<segment state="translated"> <segment>
<source>filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE</source> <source>filter.parameter_value_constraint.operator.RANGE_INTERSECT_RANGE</source>
<target>Range intersects Value range</target> <target>Range intersects Value range</target>
</segment> </segment>
</unit> </unit>
<unit id="5Svrc5E" name="filter.text_constraint.value"> <unit id="5Svrc5E" name="filter.text_constraint.value">
<segment state="translated"> <segment>
<source>filter.text_constraint.value</source> <source>filter.text_constraint.value</source>
<target>No value set</target> <target>No value set</target>
</segment> </segment>
</unit> </unit>
<unit id="EIwFuHJ" name="filter.number_constraint.value1"> <unit id="EIwFuHJ" name="filter.number_constraint.value1">
<segment state="translated"> <segment>
<source>filter.number_constraint.value1</source> <source>filter.number_constraint.value1</source>
<target>No value set</target> <target>No value set</target>
</segment> </segment>
</unit> </unit>
<unit id="nb9L_bM" name="filter.number_constraint.value2"> <unit id="nb9L_bM" name="filter.number_constraint.value2">
<segment state="translated"> <segment>
<source>filter.number_constraint.value2</source> <source>filter.number_constraint.value2</source>
<target>Maximum value</target> <target>Maximum value</target>
</segment> </segment>
</unit> </unit>
<unit id="Chr6I.s" name="filter.datetime_constraint.value1"> <unit id="Chr6I.s" name="filter.datetime_constraint.value1">
<segment state="translated"> <segment>
<source>filter.datetime_constraint.value1</source> <source>filter.datetime_constraint.value1</source>
<target>No datetime set</target> <target>No datetime set</target>
</segment> </segment>
</unit> </unit>
<unit id="OX2SbVT" name="filter.datetime_constraint.value2"> <unit id="OX2SbVT" name="filter.datetime_constraint.value2">
<segment state="translated"> <segment>
<source>filter.datetime_constraint.value2</source> <source>filter.datetime_constraint.value2</source>
<target>Maximum datetime</target> <target>Maximum datetime</target>
</segment> </segment>
</unit> </unit>
<unit id="HsxzALM" name="filter.constraint.add"> <unit id="HsxzALM" name="filter.constraint.add">
<segment state="translated"> <segment>
<source>filter.constraint.add</source> <source>filter.constraint.add</source>
<target>Add constraint</target> <target>Add constraint</target>
</segment> </segment>
</unit> </unit>
<unit id=".CuxL5L" name="part.filter.parameters_count"> <unit id=".CuxL5L" name="part.filter.parameters_count">
<segment state="translated"> <segment>
<source>part.filter.parameters_count</source> <source>part.filter.parameters_count</source>
<target>Number of parameters</target> <target>Number of parameters</target>
</segment> </segment>
</unit> </unit>
<unit id="Dn0SKIi" name="part.filter.lotDescription"> <unit id="Dn0SKIi" name="part.filter.lotDescription">
<segment state="translated"> <segment>
<source>part.filter.lotDescription</source> <source>part.filter.lotDescription</source>
<target>Lot description</target> <target>Lot description</target>
</segment> </segment>
</unit> </unit>
<unit id="W1rWF5g" name="parts_list.search.searching_for"> <unit id="W1rWF5g" name="parts_list.search.searching_for">
<segment state="translated"> <segment>
<source>parts_list.search.searching_for</source> <source>parts_list.search.searching_for</source>
<target>Searching parts with keyword &lt;b&gt;%keyword%&lt;/b&gt;</target> <target><![CDATA[Searching parts with keyword <b>%keyword%</b>]]></target>
</segment> </segment>
</unit> </unit>
<unit id="lkQ2zTi" name="parts_list.search_options.caption"> <unit id="lkQ2zTi" name="parts_list.search_options.caption">
<segment state="translated"> <segment>
<source>parts_list.search_options.caption</source> <source>parts_list.search_options.caption</source>
<target>Enabled search options</target> <target>Enabled search options</target>
</segment> </segment>
</unit> </unit>
<unit id="biszSr8" name="attachment.table.element_type"> <unit id="biszSr8" name="attachment.table.element_type">
<segment state="translated"> <segment>
<source>attachment.table.element_type</source> <source>attachment.table.element_type</source>
<target>Associated element type</target> <target>Associated element type</target>
</segment> </segment>
</unit> </unit>
<unit id="nUZamS5" name="log.level.debug"> <unit id="nUZamS5" name="log.level.debug">
<segment state="translated"> <segment>
<source>log.level.debug</source> <source>log.level.debug</source>
<target>Debug</target> <target>Debug</target>
</segment> </segment>
</unit> </unit>
<unit id="ZPxm2Ee" name="log.level.info"> <unit id="ZPxm2Ee" name="log.level.info">
<segment state="translated"> <segment>
<source>log.level.info</source> <source>log.level.info</source>
<target>Info</target> <target>Info</target>
</segment> </segment>
</unit> </unit>
<unit id="NVXjDhG" name="log.level.notice"> <unit id="NVXjDhG" name="log.level.notice">
<segment state="translated"> <segment>
<source>log.level.notice</source> <source>log.level.notice</source>
<target>Notice</target> <target>Notice</target>
</segment> </segment>
</unit> </unit>
<unit id="9ObjWuR" name="log.level.warning"> <unit id="9ObjWuR" name="log.level.warning">
<segment state="translated"> <segment>
<source>log.level.warning</source> <source>log.level.warning</source>
<target>Warning</target> <target>Warning</target>
</segment> </segment>
</unit> </unit>
<unit id="WxMwuLP" name="log.level.error"> <unit id="WxMwuLP" name="log.level.error">
<segment state="translated"> <segment>
<source>log.level.error</source> <source>log.level.error</source>
<target>Error</target> <target>Error</target>
</segment> </segment>
</unit> </unit>
<unit id="idch78J" name="log.level.critical"> <unit id="idch78J" name="log.level.critical">
<segment state="translated"> <segment>
<source>log.level.critical</source> <source>log.level.critical</source>
<target>Critical</target> <target>Critical</target>
</segment> </segment>
</unit> </unit>
<unit id="jehoQTd" name="log.level.alert"> <unit id="jehoQTd" name="log.level.alert">
<segment state="translated"> <segment>
<source>log.level.alert</source> <source>log.level.alert</source>
<target>Alert</target> <target>Alert</target>
</segment> </segment>
</unit> </unit>
<unit id="XvKEDM0" name="log.level.emergency"> <unit id="XvKEDM0" name="log.level.emergency">
<segment state="translated"> <segment>
<source>log.level.emergency</source> <source>log.level.emergency</source>
<target>Emergency</target> <target>Emergency</target>
</segment> </segment>
</unit> </unit>
<unit id="sEvRe10" name="log.type.security"> <unit id="sEvRe10" name="log.type.security">
<segment state="translated"> <segment>
<source>log.type.security</source> <source>log.type.security</source>
<target>Security related event</target> <target>Security related event</target>
</segment> </segment>
</unit> </unit>
<unit id="gJDmvym" name="log.type.instock_changed"> <unit id="gJDmvym" name="log.type.instock_changed">
<segment state="translated"> <segment>
<source>log.type.instock_changed</source> <source>log.type.instock_changed</source>
<target>[LEGACY] Instock changed</target> <target>[LEGACY] Instock changed</target>
</segment> </segment>
</unit> </unit>
<unit id="4Od2HUk" name="device_part.label"> <unit id="4Od2HUk" name="device_part.label">
<segment state="translated"> <segment>
<source>device_part.label</source> <source>device_part.label</source>
<target>Device part</target> <target>Device part</target>
</segment> </segment>
</unit> </unit>
<unit id="lJZCHHM" name="log.target_id"> <unit id="lJZCHHM" name="log.target_id">
<segment state="translated"> <segment>
<source>log.target_id</source> <source>log.target_id</source>
<target>Target element ID</target> <target>Target element ID</target>
</segment> </segment>

View file

@ -227,5 +227,11 @@
<target>You must select an supplier!</target> <target>You must select an supplier!</target>
</segment> </segment>
</unit> </unit>
<unit id="k5DDdB4" name="validator.measurement_unit.use_si_prefix_needs_unit">
<segment>
<source>validator.measurement_unit.use_si_prefix_needs_unit</source>
<target>To enable SI prefixes, you have to set a unit symbol!</target>
</segment>
</unit>
</file> </file>
</xliff> </xliff>