Value for Nominal Groups
value is used to generate nominal groups: determiners, adjectives, nouns, plurals, etc.
Structure:
-
The first parameter of the tag is always the noun (or a list of nouns, see further)
-
The second parameter is a structured object with many optional keys, like
detto indicate a determiner
For instance, #[+value('homme', {det:'INDEFINITE', adj:'vieux', adjPos:'BEFORE'})] will generate un vieil homme.
If there is only the first parameter (a string), and nothing else, the string will be output as is. In necessary you can protect from inappropriate capitalization and contraction using protectString.
Determiners
Use det key to add a determiner. Available determiners are DEFINITE, INDEFINITE, DEMONSTRATIVE and POSSESSIVE.
Some languages have multiple distance levels for DEMONSTRATIVE. Use the additional key dist:
-
in English and Italian, use
NEAR(default) for this/these (in English) andFARfor that/those (in English) -
in Spanish, use
PROXIMAL,MEDIALorDISTAL
In English, when determiner is DEFINITE and number is plural, it will by default generate no article (machines). To trigger the article, put the useTheWhenPlural to true: #[+value('machine', {det:'DEFINITE', number:'P', useTheWhenPlural: true})] will output the machines.
In French, when determiner is INDEFINITE and number is plural and there is an adjective before the noun, de will be output instead of des: de bons restaurants. To disable this mechanism, use FORCE_DES: #[+value('service', {det:'INDEFINITE', adj:'nouveau', adjPos:'BEFORE', number:'P', FORCE_DES: true})] will output des bons restaurants.
In rare cases, you might want to generate only the determiner: #[+value('', {det:'DEFINITE', gender:'M', number:'S'})].
|
Adjectives
One or multiple adjectives can be added and agreed automatically.
Apocope and specific cases are managed, like gran árbol in Spanish, vieil homme in French, etc.
One single adjective
If you wish to add only one single adjective, use the adj key. For instance #[+value('house', { det:'DEFINITE', adj:'white'})] will generate the white house.
In some languages, like English, the adjective is always put before the noun. In some others, like French, it is often placed after (les gâteaux délicieux), but can also be placed before (les bons gâteaux). Set adjPos to BEFORE or AFTER to change the position of the adjective.
| Language | Default | Can be changed using adjPos |
|---|---|---|
|
before |
no |
|
before |
no |
|
after |
yes |
|
after |
yes |
|
after |
yes |
In French, #[+value('affaire', {det:'INDEFINITE', adj:'sale', adjPos:'BEFORE', number:'P'})] will generate des sales affaires.
Multiple adjectives, some before, some after
When you wish to have some adjectives before the noun and some other adjectives after, you can use the full form with BEFORE and AFTER: in French, #[+value('vache', {det:'INDEFINITE', adj:{ BEFORE: ['beau', 'intelligent'], AFTER: ['brun'] } })] will generate une belle et intelligente vache brune.
Use SEP_BEFORE and SEP_AFTER to override the default separator between adjectives (defaut is localized and): for instance, in Spanish, #[+value('árbol', { det:'DEFINITE', adj:{BEFORE:['primero', 'grande'], SEP_BEFORE:''} })] will output el primer gran árbol.
In agreeAdj and subjectVerbAdj mixins, you can also put a list of adjectives, but there is a difference: value will output all the adjectives, while agreeAdj and subjectVerbAdj will randomly choose one.
|
Case (German only)
In German, use case to indicate the case: NOMINATIVE, ACCUSATIVE, DATIVE or GENITIVE.
#[+value('Gurke', {case:'GENITIVE', det:'DEFINITE', adj:'alt'})] will output der alten Gurke.
Assign the gender of the word to an object
This is useful when using referring expressions: different words, having potentially a different gender (and sometimes number) can be used to refer to a same concept (in practice an object).
Use represents to assign the gender of the word to the representant.
| only useful for languages with a gender, like French, German, Italian, Spanish etc. - not for English. |
Just plain text, and setting gender directly: | cette bague - setRefGender(PRODUIT, 'F'); |
Just plain text, and using the dictionnary to set the gender (French or German): | cette bague - setRefGender(PRODUIT, 'bague'); |
Using value with | cette #[+value('bague', {represents: PRODUIT})]
|
Using value with | #[+value('bague', {represents: PRODUIT, det: 'DEMONSTRATIVE'})]
|
Number and gender
Number
The determiner, noun and adjectives can be agreed in number. You can set explicitely the number using number:
-
can be directly
SorP:#[+value('affaire', {det:'INDEFINITE', number:'P'})]will output des affaires -
or you can refer to an existing object that carries a number:
#[+value("tomato", { number: getAnonMP() } )]will output tomatoes
If the gender of the word cannot be determined automatically from the dictionnary (for instance it is a brand name), you can add a gender key.
|
| It indicates the number of the owned object. When using possessives, you might also have to indicate the owner of the object. |
Gender
By default the gender is automatically inferred from the word itself, using linguistic resources.
When some words or expressions are not in the dictionnary, you must indicate explicitely the gender. For instance, #[+value('OnePlus 5T', {represents: PRODUKT2, gender:'N', det: 'DEFINITE'})] will output das OnePlus 5T in German, and also assign N to current gender of PRODUKT2.
Ownership
Use owner to indicate an owner. See third possession.