    001    /*
    002     * Licensed to the Apache Software Foundation (ASF) under one or more
    003     * contributor license agreements.  See the NOTICE file distributed with
    004     * this work for additional information regarding copyright ownership.
    005     * The ASF licenses this file to You under the Apache License, Version 2.0
    006     * (the "License"); you may not use this file except in compliance with
    007     * the License.  You may obtain a copy of the License at
    008     *
    009     *      http://www.apache.org/licenses/LICENSE-2.0
    010     *
    011     * Unless required by applicable law or agreed to in writing, software
    012     * distributed under the License is distributed on an "AS IS" BASIS,
    013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    014     * See the License for the specific language governing permissions and
    015     * limitations under the License.
    016     */
    017    package org.apache.commons.math.exception.util;
    018
    019    import java.util.Locale;
    020    import java.util.MissingResourceException;
    021    import java.util.ResourceBundle;
    022
    023    /**
    024     * Enumeration for localized messages formats used in exceptions messages.
    025     * <p>
    026     * The constants in this enumeration represent the available
    027     * formats as localized strings. These formats are intended to be
    028     * localized using simple properties files, using the constant
    029     * name as the key and the property value as the message format.
    030     * The source English format is provided in the constants themselves
    031     * to serve both as a reminder for developers to understand the parameters
    032     * needed by each format, as a basis for translators to create
    033     * localized properties files, and as a default format if some
    034     * translation is missing.
    035     * </p>
    036     * @since 2.2
    037     * @version $Revision: 1073165 $ $Date: 2011-02-21 23:04:14 +0100 (lun. 21 f??vr. 2011) $
    038     */
    039    public enum LocalizedFormats implements Localizable {
    040
    041        // CHECKSTYLE: stop MultipleVariableDeclarations
    042        // CHECKSTYLE: stop JavadocVariable
    043
    044        ARGUMENT_OUTSIDE_DOMAIN("Argument {0} outside domain [{1} ; {2}]"),
    045        ARRAY_SIZES_SHOULD_HAVE_DIFFERENCE_1("array sizes should have difference 1 ({0} != {1} + 1)"),
    046        ARRAY_SUMS_TO_ZERO("array sums to zero"),
    047        ASSYMETRIC_EIGEN_NOT_SUPPORTED("eigen decomposition of assymetric matrices not supported yet"),
    048        AT_LEAST_ONE_COLUMN("matrix must have at least one column"),
    049        AT_LEAST_ONE_ROW("matrix must have at least one row"),
    050        BANDWIDTH_OUT_OF_INTERVAL("bandwidth must be in the interval [0,1], but got {0}"),
    051        BINOMIAL_INVALID_PARAMETERS_ORDER("must have n >= k for binomial coefficient (n,k), got n = {0}, k = {1}"),
    052        BINOMIAL_NEGATIVE_PARAMETER("must have n >= 0 for binomial coefficient (n,k), got n = {0}"),
    053        CANNOT_CLEAR_STATISTIC_CONSTRUCTED_FROM_EXTERNAL_MOMENTS("statistics constructed from external moments cannot be cleared"),
    054        CANNOT_COMPUTE_0TH_ROOT_OF_UNITY("cannot compute 0-th root of unity, indefinite result"),
    055        CANNOT_COMPUTE_BETA_DENSITY_AT_0_FOR_SOME_ALPHA("cannot compute beta density at 0 when alpha = {0,number}"),
    056        CANNOT_COMPUTE_BETA_DENSITY_AT_1_FOR_SOME_BETA("cannot compute beta density at 1 when beta = %.3g"),
    057        CANNOT_COMPUTE_NTH_ROOT_FOR_NEGATIVE_N("cannot compute nth root for null or negative n: {0}"),
    058        CANNOT_CONVERT_OBJECT_TO_FRACTION("cannot convert given object to a fraction number: {0}"),
    059        CANNOT_DISCARD_NEGATIVE_NUMBER_OF_ELEMENTS("cannot discard a negative number of elements ({0})"),
    060        CANNOT_FORMAT_INSTANCE_AS_3D_VECTOR("cannot format a {0} instance as a 3D vector"),
    061        CANNOT_FORMAT_INSTANCE_AS_COMPLEX("cannot format a {0} instance as a complex number"),
    062        CANNOT_FORMAT_INSTANCE_AS_REAL_VECTOR("cannot format a {0} instance as a real vector"),
    063        CANNOT_FORMAT_OBJECT_TO_FRACTION("cannot format given object as a fraction number"),
    064        CANNOT_INCREMENT_STATISTIC_CONSTRUCTED_FROM_EXTERNAL_MOMENTS("statistics constructed from external moments cannot be incremented"),
    065        CANNOT_NORMALIZE_A_ZERO_NORM_VECTOR("cannot normalize a zero norm vector"),
    066        CANNOT_RETRIEVE_AT_NEGATIVE_INDEX("elements cannot be retrieved from a negative array index {0}"),
    067        CANNOT_SET_AT_NEGATIVE_INDEX("cannot set an element at a negative index {0}"),
    068        CANNOT_SUBSTITUTE_ELEMENT_FROM_EMPTY_ARRAY("cannot substitute an element from an empty array"),
    069        CANNOT_TRANSFORM_TO_DOUBLE("Conversion Exception in Transformation: {0}"),
    070        CARDAN_ANGLES_SINGULARITY("Cardan angles singularity"),
    071        CLASS_DOESNT_IMPLEMENT_COMPARABLE("class ({0}) does not implement Comparable"),
    072        CLOSEST_ORTHOGONAL_MATRIX_HAS_NEGATIVE_DETERMINANT("the closest orthogonal matrix has a negative determinant {0}"),
    073        COLUMN_INDEX_OUT_OF_RANGE("column index {0} out of allowed range [{1}, {2}]"),
    074        CONTINUED_FRACTION_INFINITY_DIVERGENCE("Continued fraction convergents diverged to +/- infinity for value {0}"),
    075        CONTINUED_FRACTION_NAN_DIVERGENCE("Continued fraction diverged to NaN for value {0}"),
    076        CONTRACTION_CRITERIA_SMALLER_THAN_EXPANSION_FACTOR("contraction criteria ({0}) smaller than the expansion factor ({1}).  This would lead to a never ending loop of expansion and contraction as a newly expanded internal storage array would immediately satisfy the criteria for contraction."),
    077        CONTRACTION_CRITERIA_SMALLER_THAN_ONE("contraction criteria smaller than one ({0}).  This would lead to a never ending loop of expansion and contraction as an internal storage array length equal to the number of elements would satisfy the contraction criteria."),
    078        CONVERGENCE_FAILED("convergence failed"),
    079        CUMULATIVE_PROBABILITY_RETURNED_NAN("Cumulative probability function returned NaN for argument {0} p = {1}"),
    080        DIFFERENT_ROWS_LENGTHS("some rows have length {0} while others have length {1}"),
    081        DIGEST_NOT_INITIALIZED("digest not initialized"),
    082        DIMENSIONS_MISMATCH_2x2("dimensions mismatch: got {0}x{1} but expected {2}x{3}"),
    083        DIMENSIONS_MISMATCH_SIMPLE("dimensions mismatch {0} != {1}"), /* keep */
    084        DISCRETE_CUMULATIVE_PROBABILITY_RETURNED_NAN("Discrete cumulative probability function returned NaN for argument {0}"),
    085        DISTRIBUTION_NOT_LOADED("distribution not loaded"),
    086        DUPLICATED_ABSCISSA("Abscissa {0} is duplicated at both indices {1} and {2}"),
    087        EMPTY_CLUSTER_IN_K_MEANS("empty cluster in k-means"),
    088        EMPTY_POLYNOMIALS_COEFFICIENTS_ARRAY("empty polynomials coefficients array"), /* keep */
    089        EMPTY_SELECTED_COLUMN_INDEX_ARRAY("empty selected column index array"),
    090        EMPTY_SELECTED_ROW_INDEX_ARRAY("empty selected row index array"),
    091        EMPTY_STRING_FOR_IMAGINARY_CHARACTER("empty string for imaginary character"),
    092        ENDPOINTS_NOT_AN_INTERVAL("endpoints do not specify an interval: [{0}, {1}]"),
    093        EQUAL_VERTICES_IN_SIMPLEX("equal vertices {0} and {1} in simplex configuration"),
    094        EULER_ANGLES_SINGULARITY("Euler angles singularity"),
    095        EVALUATION_FAILED("evaluation failed for argument = {0}"),
    096        EXPANSION_FACTOR_SMALLER_THAN_ONE("expansion factor smaller than one ({0})"),
    097        FACTORIAL_NEGATIVE_PARAMETER("must have n >= 0 for n!, got n = {0}"),
    098        FAILED_BRACKETING("number of iterations={0}, maximum iterations={1}, initial={2}, lower bound={3}, upper bound={4}, final a value={5}, final b value={6}, f(a)={7}, f(b)={8}"),
    099        FAILED_FRACTION_CONVERSION("Unable to convert {0} to fraction after {1} iterations"),
    100        FIRST_COLUMNS_NOT_INITIALIZED_YET("first {0} columns are not initialized yet"),
    101        FIRST_ELEMENT_NOT_ZERO("first element is not 0: {0}"),
    102        FIRST_ROWS_NOT_INITIALIZED_YET("first {0} rows are not initialized yet"),
    103        FRACTION_CONVERSION_OVERFLOW("Overflow trying to convert {0} to fraction ({1}/{2})"),
    104        FUNCTION_NOT_DIFFERENTIABLE("function is not differentiable"),
    105        FUNCTION_NOT_POLYNOMIAL("function is not polynomial"),
    106        GCD_OVERFLOW_32_BITS("overflow: gcd({0}, {1}) is 2^31"),
    107        GCD_OVERFLOW_64_BITS("overflow: gcd({0}, {1}) is 2^63"),
    108        HOLE_BETWEEN_MODELS_TIME_RANGES("{0} wide hole between models time ranges"),
    109        IDENTICAL_ABSCISSAS_DIVISION_BY_ZERO("identical abscissas x[{0}] == x[{1}] == {2} cause division by zero"),
    110        INDEX_LARGER_THAN_MAX("the index specified: {0} is larger than the current maximal index {1}"),
    111        INDEX_NOT_POSITIVE("index ({0}) is not positive"),
    112        INDEX_OUT_OF_RANGE("index {0} out of allowed range [{1}, {2}]"),
    113        INFINITE_ARRAY_ELEMENT("Array contains an infinite element, {0} at index {1}"),
    114        INFINITE_VALUE_CONVERSION("cannot convert infinite value"),
    115        INITIAL_CAPACITY_NOT_POSITIVE("initial capacity ({0}) is not positive"),
    116        INITIAL_COLUMN_AFTER_FINAL_COLUMN("initial column {0} after final column {1}"),
    117        INITIAL_ROW_AFTER_FINAL_ROW("initial row {0} after final row {1}"),
    118        INPUT_DATA_FROM_UNSUPPORTED_DATASOURCE("input data comes from unsupported datasource: {0}, supported sources: {1}, {2}"),
    119        INSTANCES_NOT_COMPARABLE_TO_EXISTING_VALUES("instance of class {0} not comparable to existing values"),
    120        INSUFFICIENT_DATA_FOR_T_STATISTIC("insufficient data for t statistic, needs at least 2, got {0}"),
    121        INSUFFICIENT_DIMENSION("insufficient dimension {0}, must be at least {1}"),
    122        INSUFFICIENT_OBSERVED_POINTS_IN_SAMPLE("sample contains {0} observed points, at least {1} are required"),
    123        INSUFFICIENT_ROWS_AND_COLUMNS("insufficient data: only {0} rows and {1} columns."),
    124        INTEGRATION_METHOD_NEEDS_AT_LEAST_ONE_PREVIOUS_POINT("{0} method needs at least one previous point"),
    125        INTERNAL_ERROR("internal error, please fill a bug report at {0}"),
    126        INVALID_BRACKETING_PARAMETERS("invalid bracketing parameters:  lower bound={0},  initial={1}, upper bound={2}"),
    127        INVALID_INTERVAL_INITIAL_VALUE_PARAMETERS("invalid interval, initial value parameters:  lower={0}, initial={1}, upper={2}"),
    128        INVALID_ITERATIONS_LIMITS("invalid iteration limits: min={0}, max={1}"),
    129        INVALID_MAX_ITERATIONS("bad value for maximum iterations number: {0}"),
    130        INVALID_REGRESSION_ARRAY("input data array length = {0} does not match the number of observations = {1} and the number of regressors = {2}"),
    131        INVALID_ROUNDING_METHOD("invalid rounding method {0}, valid methods: {1} ({2}), {3} ({4}), {5} ({6}), {7} ({8}), {9} ({10}), {11} ({12}), {13} ({14}), {15} ({16})"),
    132        ITERATOR_EXHAUSTED("iterator exhausted"),
    133        LCM_OVERFLOW_32_BITS("overflow: lcm({0}, {1}) is 2^31"),
    134        LCM_OVERFLOW_64_BITS("overflow: lcm({0}, {1}) is 2^63"),
    135        LIST_OF_CHROMOSOMES_BIGGER_THAN_POPULATION_SIZE("list of chromosomes bigger than maxPopulationSize"),
    136        LOESS_EXPECTS_AT_LEAST_ONE_POINT("Loess expects at least 1 point"),
    137        LOWER_BOUND_NOT_BELOW_UPPER_BOUND("lower bound ({0}) must be strictly less than upper bound ({1})"), /* keep */
    138        LOWER_ENDPOINT_ABOVE_UPPER_ENDPOINT("lower endpoint ({0}) must be less than or equal to upper endpoint ({1})"),
    139        MAP_MODIFIED_WHILE_ITERATING("map has been modified while iterating"),
    140        MAX_EVALUATIONS_EXCEEDED("maximal number of evaluations ({0}) exceeded"),
    141        MAX_ITERATIONS_EXCEEDED("maximal number of iterations ({0}) exceeded"),
    142        MINIMAL_STEPSIZE_REACHED_DURING_INTEGRATION("minimal step size ({0,number,0.00E00}) reached, integration needs {1,number,0.00E00}"),
    143        MISMATCHED_LOESS_ABSCISSA_ORDINATE_ARRAYS("Loess expects the abscissa and ordinate arrays to be of the same size, but got {0} abscissae and {1} ordinatae"),
    144        NAN_ELEMENT_AT_INDEX("element {0} is NaN"),
    145        NAN_VALUE_CONVERSION("cannot convert NaN value"),
    146        NEGATIVE_BRIGHTNESS_EXPONENT("brightness exponent should be positive or null, but got {0}"),
    147        NEGATIVE_COMPLEX_MODULE("negative complex module {0}"),
    148        NEGATIVE_ELEMENT_AT_2D_INDEX("element ({0}, {1}) is negative: {2}"),
    149        NEGATIVE_ELEMENT_AT_INDEX("element {0} is negative: {1}"),
    150        NEGATIVE_NUMBER_OF_SUCCESSES("number of successes must be non-negative ({0})"),
    151        NEGATIVE_NUMBER_OF_TRIALS("number of trials must be non-negative ({0})"),
    152        NEGATIVE_ROBUSTNESS_ITERATIONS("the number of robustness iterations must be non-negative, but got {0}"),
    153        START_POSITION("start position ({0})"), /* keep */
    154        NON_CONVERGENT_CONTINUED_FRACTION("Continued fraction convergents failed to converge for value {0}"),
    155        NON_POSITIVE_MICROSPHERE_ELEMENTS("number of microsphere elements must be positive, but got {0}"),
    156        NON_POSITIVE_POLYNOMIAL_DEGREE("polynomial degree must be positive: degree={0}"),
    157        NON_REAL_FINITE_ABSCISSA("all abscissae must be finite real numbers, but {0}-th is {1}"),
    158        NON_REAL_FINITE_ORDINATE("all ordinatae must be finite real numbers, but {0}-th is {1}"),
    159        NON_REAL_FINITE_WEIGHT("all weights must be finite real numbers, but {0}-th is {1}"),
    160        NON_SQUARE_MATRIX("a {0}x{1} matrix was provided instead of a square matrix"),
    161        NORMALIZE_INFINITE("Cannot normalize to an infinite value"),
    162        NORMALIZE_NAN("Cannot normalize to NaN"),
    163        NOT_ADDITION_COMPATIBLE_MATRICES("{0}x{1} and {2}x{3} matrices are not addition compatible"),
    164        NOT_DECREASING_NUMBER_OF_POINTS("points {0} and {1} are not decreasing ({2} < {3})"),
    165        NOT_DECREASING_SEQUENCE("points {3} and {2} are not decreasing ({1} < {0})"), /* keep */
    166        NOT_ENOUGH_DATA_FOR_NUMBER_OF_PREDICTORS("not enough data ({0} rows) for this many predictors ({1} predictors)"),
    167        NOT_ENOUGH_POINTS_IN_SPLINE_PARTITION("spline partition must have at least {0} points, got {1}"),
    168        NOT_INCREASING_NUMBER_OF_POINTS("points {0} and {1} are not increasing ({2} > {3})"),
    169        NOT_INCREASING_SEQUENCE("points {3} and {2} are not increasing ({1} > {0})"), /* keep */
    170        NOT_MULTIPLICATION_COMPATIBLE_MATRICES("{0}x{1} and {2}x{3} matrices are not multiplication compatible"),
    171        NOT_OVERRIDEN("method not overriden"),
    172        NOT_POSITIVE_ALPHA("alpha must be positive ({0})"),
    173        NOT_POSITIVE_BETA("beta must be positive ({0})"),
    174        NOT_POSITIVE_COLUMNDIMENSION("invalid column dimension: {0} (must be positive)"),
    175        NOT_POSITIVE_DEFINITE_MATRIX("not positive definite matrix"),
    176        NOT_POSITIVE_DEGREES_OF_FREEDOM("degrees of freedom must be positive ({0})"),
    177        NOT_POSITIVE_ELEMENT_AT_INDEX("element {0} is not positive: {1}"),
    178        NOT_POSITIVE_EXPONENT("invalid exponent {0} (must be positive)"),
    179        NOT_POSITIVE_LENGTH("length must be positive ({0})"),
    180        LENGTH("length ({0})"), /* keep */
    181        NOT_POSITIVE_MEAN("mean must be positive ({0})"),
    182        MEAN("mean ({0})"), /* keep */
    183        NOT_POSITIVE_NUMBER_OF_SAMPLES("number of sample is not positive: {0}"),
    184        NUMBER_OF_SAMPLES("number of samples ({0})"), /* keep */
    185        NOT_POSITIVE_PERMUTATION("permutation k ({0}) must be positive"),
    186        PERMUTATION_SIZE("permutation size ({0}"), /* keep */
    187        NOT_POSITIVE_POISSON_MEAN("the Poisson mean must be positive ({0})"),
    188        NOT_POSITIVE_POPULATION_SIZE("population size must be positive ({0})"),
    189        NOT_POSITIVE_ROW_DIMENSION("invalid row dimension: {0} (must be positive)"),
    190        NOT_POSITIVE_SAMPLE_SIZE("sample size must be positive ({0})"),
    191        NOT_POSITIVE_SCALE("scale must be positive ({0})"),
    192        NOT_POSITIVE_SHAPE("shape must be positive ({0})"),
    193        NOT_POSITIVE_STANDARD_DEVIATION("standard deviation must be positive ({0})"),
    194        STANDARD_DEVIATION("standard deviation ({0})"), /* keep */
    195        NOT_POSITIVE_UPPER_BOUND("upper bound must be positive ({0})"),
    196        NOT_POSITIVE_WINDOW_SIZE("window size must be positive ({0})"),
    197        NOT_POWER_OF_TWO("{0} is not a power of 2"),
    198        NOT_POWER_OF_TWO_CONSIDER_PADDING("{0} is not a power of 2, consider padding for fix"),
    199        NOT_POWER_OF_TWO_PLUS_ONE("{0} is not a power of 2 plus one"),
    200        NOT_STRICTLY_DECREASING_NUMBER_OF_POINTS("points {0} and {1} are not strictly decreasing ({2} <= {3})"),
    201        NOT_STRICTLY_DECREASING_SEQUENCE("points {3} and {2} are not strictly decreasing ({1} <= {0})"), /* keep */
    202        NOT_STRICTLY_INCREASING_KNOT_VALUES("knot values must be strictly increasing"),
    203        NOT_STRICTLY_INCREASING_NUMBER_OF_POINTS("points {0} and {1} are not strictly increasing ({2} >= {3})"),
    204        NOT_STRICTLY_INCREASING_SEQUENCE("points {3} and {2} are not strictly increasing ({1} >= {0})"), /* keep */
    205        NOT_SUBTRACTION_COMPATIBLE_MATRICES("{0}x{1} and {2}x{3} matrices are not subtraction compatible"),
    206        NOT_SYMMETRIC_MATRIX("not symmetric matrix"),
    207        NO_BIN_SELECTED("no bin selected"),
    208        NO_CONVERGENCE_WITH_ANY_START_POINT("none of the {0} start points lead to convergence"),
    209        NO_DATA("no data"), /* keep */
    210        NO_DEGREES_OF_FREEDOM("no degrees of freedom ({0} measurements, {1} parameters)"),
    211        NO_DENSITY_FOR_THIS_DISTRIBUTION("This distribution does not have a density function implemented"),
    212        NO_FEASIBLE_SOLUTION("no feasible solution"),
    213        NO_OPTIMUM_COMPUTED_YET("no optimum computed yet"),
    214        NO_RESULT_AVAILABLE("no result available"),
    215        NO_SUCH_MATRIX_ENTRY("no entry at indices ({0}, {1}) in a {2}x{3} matrix"),
    216        NULL_NOT_ALLOWED("null is not allowed"), /* keep */
    217        COVARIANCE_MATRIX("covariance matrix"), /* keep */
    218        DENOMINATOR("denominator"), /* keep */
    219        DENOMINATOR_FORMAT("denominator format"), /* keep */
    220        FRACTION("fraction"), /* keep */
    221        FUNCTION("function"), /* keep */
    222        IMAGINARY_FORMAT("imaginary format"), /* keep */
    223        INPUT_ARRAY("input array"), /* keep */
    224        NUMERATOR("numerator"), /* keep */
    225        NUMERATOR_FORMAT("numerator format"), /* keep */
    226        OBJECT_TRANSFORMATION("conversion exception in transformation"), /* keep */
    227        REAL_FORMAT("real format"), /* keep */
    228        WHOLE_FORMAT("whole format"), /* keep */
    229        NUMBER_TOO_LARGE("{0} is larger than the maximum ({1})"), /* keep */
    230        NUMBER_TOO_SMALL("{0} is smaller than the minimum ({1})"), /* keep */
    231        NUMBER_TOO_LARGE_BOUND_EXCLUDED("{0} is larger than, or equal to, the maximum ({1})"), /* keep */
    232        NUMBER_TOO_SMALL_BOUND_EXCLUDED("{0} is smaller than, or equal to, the minimum ({1})"), /* keep */
    233        NUMBER_OF_SUCCESS_LARGER_THAN_POPULATION_SIZE("number of successes ({0}) must be less than or equal to population size ({1})"),
    234        NUMERATOR_OVERFLOW_AFTER_MULTIPLY("overflow, numerator too large after multiply: {0}"),
    235        N_POINTS_GAUSS_LEGENDRE_INTEGRATOR_NOT_SUPPORTED("{0} points Legendre-Gauss integrator not supported, number of points must be in the {1}-{2} range"),
    236        OBSERVED_COUNTS_ALL_ZERO("observed counts are all 0 in observed array {0}"),
    237        OBSERVED_COUNTS_BOTTH_ZERO_FOR_ENTRY("observed counts are both zero for entry {0}"),
    238        OUT_OF_BOUNDS_QUANTILE_VALUE("out of bounds quantile value: {0}, must be in (0, 100]"),
    239        OUT_OF_BOUND_SIGNIFICANCE_LEVEL("out of bounds significance level {0}, must be between {1} and {2}"),
    240        OUT_OF_ORDER_ABSCISSA_ARRAY("the abscissae array must be sorted in a strictly increasing order, but the {0}-th element is {1} whereas {2}-th is {3}"),
    241        OUT_OF_RANGE_ROOT_OF_UNITY_INDEX("out of range root of unity index {0} (must be in [{1};{2}])"),
    242        OUT_OF_RANGE_SIMPLE("{0} out of [{1}, {2}] range"), /* keep */
    243        OVERFLOW_IN_FRACTION("overflow in fraction {0}/{1}, cannot negate"),
    244        OVERFLOW_IN_ADDITION("overflow in addition: {0} + {1}"),
    245        OVERFLOW_IN_SUBTRACTION("overflow in subtraction: {0} - {1}"),
    246        PERCENTILE_IMPLEMENTATION_CANNOT_ACCESS_METHOD("cannot access {0} method in percentile implementation {1}"),
    247        PERCENTILE_IMPLEMENTATION_UNSUPPORTED_METHOD("percentile implementation {0} does not support {1}"),
    248        PERMUTATION_EXCEEDS_N("permutation size ({0}) exceeds permuation domain ({1})"), /* keep */
    249        POLYNOMIAL_INTERPOLANTS_MISMATCH_SEGMENTS("number of polynomial interpolants must match the number of segments ({0} != {1} - 1)"),
    250        POPULATION_LIMIT_NOT_POSITIVE("population limit has to be positive"),
    251        POSITION_SIZE_MISMATCH_INPUT_ARRAY("position {0} and size {1} don't fit to the size of the input array {2}"),
    252        POWER_NEGATIVE_PARAMETERS("cannot raise an integral value to a negative power ({0}^{1})"),
    253        PROPAGATION_DIRECTION_MISMATCH("propagation direction mismatch"),
    254        RANDOMKEY_MUTATION_WRONG_CLASS("RandomKeyMutation works only with RandomKeys, not {0}"),
    255        ROOTS_OF_UNITY_NOT_COMPUTED_YET("roots of unity have not been computed yet"),
    256        ROTATION_MATRIX_DIMENSIONS("a {0}x{1} matrix cannot be a rotation matrix"),
    257        ROW_INDEX_OUT_OF_RANGE("row index {0} out of allowed range [{1}, {2}]"),
    258        SAME_SIGN_AT_ENDPOINTS("function values at endpoints do not have different signs, endpoints: [{0}, {1}], values: [{2}, {3}]"),
    259        SAMPLE_SIZE_EXCEEDS_COLLECTION_SIZE("sample size ({0}) exceeds collection size ({1})"), /* keep */
    260        SAMPLE_SIZE_LARGER_THAN_POPULATION_SIZE("sample size ({0}) must be less than or equal to population size ({1})"),
    261        SIMPLEX_NEED_ONE_POINT("simplex must contain at least one point"),
    262        SIMPLE_MESSAGE("{0}"),
    263        SINGULAR_MATRIX("matrix is singular"),
    264        SUBARRAY_ENDS_AFTER_ARRAY_END("subarray ends after array end"),
    265        TOO_LARGE_CUTOFF_SINGULAR_VALUE("cutoff singular value is {0}, should be at most {1}"),
    266        TOO_MANY_ELEMENTS_TO_DISCARD_FROM_ARRAY("cannot discard {0} elements from a {1} elements array"),
    267        TOO_SMALL_BANDWIDTH("the bandwidth must be large enough to accomodate at least 2 points. There are {0}  data points, and bandwidth must be at least {1}  but it is only {2}"),
    268        TOO_SMALL_COST_RELATIVE_TOLERANCE("cost relative tolerance is too small ({0}), no further reduction in the sum of squares is possible"),
    269        TOO_SMALL_INTEGRATION_INTERVAL("too small integration interval: length = {0}"),
    270        TOO_SMALL_ORTHOGONALITY_TOLERANCE("orthogonality tolerance is too small ({0}), solution is orthogonal to the jacobian"),
    271        TOO_SMALL_PARAMETERS_RELATIVE_TOLERANCE("parameters relative tolerance is too small ({0}), no further improvement in the approximate solution is possible"),
    272        TWO_OR_MORE_CATEGORIES_REQUIRED("two or more categories required, got {0}"),
    273        TWO_OR_MORE_VALUES_IN_CATEGORY_REQUIRED("two or more values required in each category, one has {0}"),
    274        UNABLE_TO_BRACKET_OPTIMUM_IN_LINE_SEARCH("unable to bracket optimum in line search"),
    275        UNABLE_TO_COMPUTE_COVARIANCE_SINGULAR_PROBLEM("unable to compute covariances: singular problem"),
    276        UNABLE_TO_FIRST_GUESS_HARMONIC_COEFFICIENTS("unable to first guess the harmonic coefficients"),
    277        UNABLE_TO_ORTHOGONOLIZE_MATRIX("unable to orthogonalize matrix in {0} iterations"),
    278        UNABLE_TO_PERFORM_QR_DECOMPOSITION_ON_JACOBIAN("unable to perform Q.R decomposition on the {0}x{1} jacobian matrix"),
    279        UNABLE_TO_SOLVE_SINGULAR_PROBLEM("unable to solve: singular problem"),
    280        UNBOUNDED_SOLUTION("unbounded solution"),
    281        UNKNOWN_MODE("unknown mode {0}, known modes: {1} ({2}), {3} ({4}), {5} ({6}), {7} ({8}), {9} ({10}) and {11} ({12})"),
    282        UNPARSEABLE_3D_VECTOR("unparseable 3D vector: \"{0}\""),
    283        UNPARSEABLE_COMPLEX_NUMBER("unparseable complex number: \"{0}\""),
    284        UNPARSEABLE_FRACTION_NUMBER("unparseable fraction number: \"{0}\""),
    285        UNPARSEABLE_REAL_VECTOR("unparseable real vector: \"{0}\""),
    286        UNSUPPORTED_EXPANSION_MODE("unsupported expansion mode {0}, supported modes are {1} ({2}) and {3} ({4})"),
    287        UNSUPPORTED_OPERATION("unsupported operation"), /* keep */
    288        USER_EXCEPTION("exception generated in user code"), /* keep */
    289        URL_CONTAINS_NO_DATA("URL {0} contains no data"),
    290        VALUES_ADDED_BEFORE_CONFIGURING_STATISTIC("{0} values have been added before statistic is configured"),
    291        VECTOR_LENGTH_MISMATCH("vector length mismatch: got {0} but expected {1}"),
    292        VECTOR_MUST_HAVE_AT_LEAST_ONE_ELEMENT("vector must have at least one element"),
    293        WEIGHT_AT_LEAST_ONE_NON_ZERO("weigth array must contain at least one non-zero value"),
    294        WRONG_BLOCK_LENGTH("wrong array shape (block length = {0}, expected {1})"),
    295        WRONG_NUMBER_OF_POINTS("{0} points are required, got only {1}"),
    296        NUMBER_OF_POINTS("number of points ({0})"), /* keep */
    297        ZERO_DENOMINATOR("denominator must be different from 0"),
    298        ZERO_DENOMINATOR_IN_FRACTION("zero denominator in fraction {0}/{1}"),
    299        ZERO_FRACTION_TO_DIVIDE_BY("the fraction to divide by must not be zero: {0}/{1}"),
    300        ZERO_NORM("zero norm"),
    301        ZERO_NORM_FOR_ROTATION_AXIS("zero norm for rotation axis"),
    302        ZERO_NORM_FOR_ROTATION_DEFINING_VECTOR("zero norm for rotation defining vector"),
    303        ZERO_NOT_ALLOWED("zero not allowed here");
    304
    305        // CHECKSTYLE: resume JavadocVariable
    306        // CHECKSTYLE: resume MultipleVariableDeclarations
    307
    308
    309        /** Source English format. */
    310        private final String sourceFormat;
    311
    312        /** Simple constructor.
    313         * @param sourceFormat source English format to use when no
    314         * localized version is available
    315         */
    316        private LocalizedFormats(final String sourceFormat) {
    317            this.sourceFormat = sourceFormat;
    318        }
    319
    320        /** {@inheritDoc} */
    321        public String getSourceString() {
    322            return sourceFormat;
    323        }
    324
    325        /** {@inheritDoc} */
    326        public String getLocalizedString(final Locale locale) {
    327            try {
    328                ResourceBundle bundle =
    329                        ResourceBundle.getBundle("META-INF/localization/LocalizedFormats", locale);
    330                if (bundle.getLocale().getLanguage().equals(locale.getLanguage())) {
    331                    // the value of the resource is the translated format
    332                    return bundle.getString(toString());
    333                }
    334
    335            } catch (MissingResourceException mre) {
    336                // do nothing here
    337            }
    338
    339            // either the locale is not supported or the resource is unknown
    340            // don't translate and fall back to using the source format
    341            return sourceFormat;
    342
    343        }
    344
    345    }