{
    "en": {
        "like": [
            "{0, plural, offset:1",
            "     =0 {Be the first to like this}",
            "     =1 {You liked this}",
            "    one {You and someone else liked this}",
            "  other {You and # others liked this}",
            "}"
        ],
        "test-hello-array": "Hello, {0} {1} {2}",
        "test-hello-object": "Hello, {first} {middle} {last}",
        "test-repeat-array": "{0} {0} {0}",
        "test-repeat-object": "{value} {value} {value}",

        "classdeclaration-constructor-modelastreq": "ModelFile and AST are required to create a ClassDecl.",
        "classdeclaration-process-unrecmodelelem": "Unrecognised model element {type}",
        "classdeclaration-getfield-notfindsupertype": "Could not find super type {type}",
        "classdeclaration-validate-identifiernotproperty": "Class {class} is identified by field ({idField}) but does not contain this property.",
        "classdeclaration-validate-identifiernotstring": "Class {class} is identified by field ({idField}) but the type of the field is not String.",
        "classdeclaration-validate-duplicatefieldname": "Class {class} has more than one field named ({fieldName}).",
        "classdeclaration-validate-missingidentifier" : "Class {class} is not declared as abstract. It must define an identifying field.",

        "modelfile-constructor-unrecmodelelem": "Unrecognised model element {type}",
        "modelfile-resolvetype-undecltype": "Undeclared type {type} in {context}",
        "modelfile-resolveimport-failfindimp": "Failed to find {type} in list of imports [{imports}] for namespace {namespace}",

        "transactiondeclaration-getidentifierfieldname-noidentifyingfield": "Transactions do not have an identifying field.",

        "composer-connect-noconopts": "connectOptions not specified",
        "composer-connect-nokeyvalstore": "connectOptions.keyValStore not specified",
        "composer-connect-nomembersrvcurl": "connectOptions.membershipServicesURL not specified",
        "composer-connect-nopeerurl": "connectOptions.peerURL not specified",
        "composer-connect-noeventhuburl": "connectOptions.eventHubURL not specified",
        "composer-connect-notconnected": "Connection needs to be connected. Call connect(..)",
        "composer-login-noenrollmentid": "enrollmentID not specified",
        "composer-login-noenrollmentsecret": "enrollmentSecret not specified",
        "composer-deploy-nosecuritycontext": "securityContext not specified",

        "factory-newinstance-missingidentifier": "Missing identifier for Type {type} in namespace {namespace}",
        "factory-newinstance-invalididentifier": "Invalid or missing identifier for Type {type} in namespace {namespace}",
        "factory-newinstance-abstracttype": "Cannot instantiate Abstract Type {type} in namespace {namespace}",
        "factory-newrelationship-notregisteredwithmm" : "Cannot create relationship as namespace {namespace} is not known",
        "factory-newinstance-typenotdeclaredinns" : "Cannot instantiate Type {type} in namespace {namespace}",

        "instancegenerator-newinstance-noconcreteclass": "No concrete extending type for {type}",

        "modelmanager-resolvetype-nonsfortype": "No registered namespace for type {type} in {context}",
        "modelmanager-resolvetype-notypeinnsforcontext": "No type {type} in namespace {namespace} for {context}",

        "modelmanager-gettype-noregisteredns": "Namespace is not defined for type {type}",
        "modelmanager-gettype-notypeinns": "Type {type} is not defined in namespace {namespace}",

        "serializer-constructor-factorynull": "Factory cannot be null",
        "serializer-constructor-modelmanagernull": "ModelManager cannot be null",
        "serializer-tojson-notcobject": "Serializer.toJSON only accepts Concept, Event, Asset, Participant or Transaction.",

        "util-securitycheck-novalidcontext": "A valid SecurityContext must be specified.",

        "modelutil-getnamespace-nofnq": "FQN is invalid.",

        "resourcevalidator-notresourceorconcept": "Model violation in instance {resourceId} class {classFQN} has value {invalidValue} expected a Resource or a Concept.",
        "resourcevalidator-notrelationship": "Model violation in instance {resourceId} class {classFQN} has value {invalidValue} expected a Relationship.",
        "resourcevalidator-fieldtypeviolation": "Model violation in instance {resourceId} field {propertyName} has value {value} ({typeOfValue}) expected type {fieldType}",
        "resourcevalidator-missingrequiredproperty": "Instance {resourceId} missing required field {fieldName}",
        "resourcevalidator-invalidenumvalue": "Instance {resourceId} invalid enum value {value} for field {fieldName}",
        "resourcevalidator-abstractclass": "The class {className} is abstract. Should not have an instance!",
        "resourcevalidator-undeclaredfield": "Instance {resourceId} has a property named {propertyName} which is not declared in {fullyQualifiedTypeName}",
        "resourcevalidator-invalidfieldassignment": "Instance {resourceId} has property {propertyName} with type {objectType} that is not derived from {fieldType}",
        "resourcevalidator-emptyidentifier": "Instance {resourceId} has an empty identifier.",

        "typenotfounderror-defaultmessage": "Type not found: {typeName}",

        "whereastvalidator-propertytypeviolation": "Property {propertyName} cannot be compared with {value} ({typeOfValue}) expected type {fieldType}",
        "whereastvalidator-enum-propertytypeviolation": "Enum property {propertyName} cannot be compared with {value} ({typeOfValue}) expected a String",
        "whereastvalidator-relationship-propertytypeviolation": "Relationship {propertyName} cannot be compared with {value} ({typeOfValue}) expected type String",
         "whereastvalidator-unsupportedtype": "Property {propertyName} of type {fieldType} cannot be compared with a literal value.",
        "whereastvalidator-invalidoperator": "Property {propertyName} cannot be compared using the {operator} operator."
    }
}
