⧼vector-jumptocontent⧽

Multilang field: Difference between revisions

From EPrints Documentation
Moj (talk | contribs)
No edit summary
Added examples. Improved other sections unhide ToC.
Line 1: Line 1:
{{fieldtypes}}
{{fieldtypes}}
__NOTOC__
 
 
== Description ==
Allows multiple text values to be recorded representing the same text in different languages.  This is a sub-class of the [[Compound field]] as at least two sub-fields are required.  At least one to store the text and one to store the language (sub-field called <tt>lang</tt>) in which it is written.  By default a Multilang field still sets <tt>multiple => 0</tt> so if more than only one language will be used for any one record then <tt>multiple => 1</tt> also needs to be set.
 
The languages available for the <tt>lang</tt> sub-field are specified in the <tt>cfg/namedsets/languages</tt> file.
 
== Inheritance ==
== Inheritance ==
* [[Metadata]]
* [[Metadata]]
** [[Compound field]]
** [[Compound field]]
*** [[Multilang field]]
*** [[Multilang field]]
== Description ==


== Properties ==
== Properties ==
{| border="1" cellpadding="3" cellspacing="0"
{| border="1" cellpadding="3" cellspacing="0"
| name || default || description  
| name || default || description  
Line 17: Line 19:
|-
|-
| '''input_ordered''' || 0 || ''as for [[Metadata]] but with a different default.''
| '''input_ordered''' || 0 || ''as for [[Metadata]] but with a different default.''
|-
| '''languages''' || undef || ...
|}
|}


== Required Phrases ==
== Required Phrases ==
Rather than needing:
datasetid + "_fieldname_" + fieldname
Multilang fields require the following phrases.  The first directly replaces the original fieldname phrase and the second specifies the language used:
datasetid + "_fieldname_" + fieldname + "_" + subfieldname
datasetid + "_fieldname_" + fieldname + "_lang"
As Multilang fields are compound there may be more than two phrases to add depending on the number of subfields specified.
If you were to change the <tt>title</title> phrase for an eprint to have type <tt>multilang</tt>, you would need the phrases:
eprint_fieldname_title_text
eprint_fieldname_title_lang
If you modify the <tt>cfg/namedsets/languages</tt> file you will need to make sure you add the appropriate additional phrases in the form:
languages_typename_LANGID
E.g. <tt>languages_typename_fr_ca</tt> could be <tt>French Canadian</tt>
== Database ==
Multilang fields do not have a standard way of being stored in the database as they are compound fields.  The <tt>lang</tt> sub-field will appear in the dataset table (or separate table if a <tt>multiple</tt> field) as:
fieldname_lang VARCHAR(16)
== API ==
See [[API:EPrints/MetaField/Multilang|API page]].
== Examples ==
Most basic example.
{
    name => 'title_multilang',
    type => 'multilang',
    fields => [
        {
            sub_name => 'text',
            type => 'text',
        },
    ],
}
Multiple languages for a single record field.
{
    name => 'title_multilang',
    type => 'multilang',
    multiple => 1,
    fields => [
        {
            sub_name => 'text',
            type => 'text',
        },
    ],
}
More than one non-language sub-field.
{
    name => 'question',
    type => 'multilang',
    multiple => 1,
    fields => [
        {
            sub_name => 'question',
            type => 'longtext',
        },
        {
            sub_name => 'answer',
            type => 'text',
        },
    ],
}

Revision as of 10:43, 30 March 2023


Description

Allows multiple text values to be recorded representing the same text in different languages. This is a sub-class of the Compound field as at least two sub-fields are required. At least one to store the text and one to store the language (sub-field called lang) in which it is written. By default a Multilang field still sets multiple => 0 so if more than only one language will be used for any one record then multiple => 1 also needs to be set.

The languages available for the lang sub-field are specified in the cfg/namedsets/languages file.

Inheritance

Properties

name default description
input_boxes 1 as for Metadata but with a different default.
input_ordered 0 as for Metadata but with a different default.

Required Phrases

Rather than needing:

datasetid + "_fieldname_" + fieldname

Multilang fields require the following phrases. The first directly replaces the original fieldname phrase and the second specifies the language used:

datasetid + "_fieldname_" + fieldname + "_" + subfieldname
datasetid + "_fieldname_" + fieldname + "_lang"

As Multilang fields are compound there may be more than two phrases to add depending on the number of subfields specified.

If you were to change the title</title> phrase for an eprint to have type multilang, you would need the phrases:

eprint_fieldname_title_text
eprint_fieldname_title_lang

If you modify the cfg/namedsets/languages file you will need to make sure you add the appropriate additional phrases in the form:

languages_typename_LANGID

E.g. languages_typename_fr_ca could be French Canadian

Database

Multilang fields do not have a standard way of being stored in the database as they are compound fields. The lang sub-field will appear in the dataset table (or separate table if a multiple field) as:

fieldname_lang VARCHAR(16)

API

See API page.

Examples

Most basic example.

{
    name => 'title_multilang',
    type => 'multilang',
    fields => [
        {
            sub_name => 'text',
            type => 'text',
        },
    ],
}

Multiple languages for a single record field.

{
    name => 'title_multilang',
    type => 'multilang',
    multiple => 1,
    fields => [
        {
            sub_name => 'text',
            type => 'text',
        },
    ],
}

More than one non-language sub-field.

{
    name => 'question',
    type => 'multilang',
    multiple => 1,
    fields => [
        {
            sub_name => 'question',
            type => 'longtext',
        },
        {
            sub_name => 'answer',
            type => 'text',
        },
    ],
}