Difference between revisions of "Multilang field"

From EPrints Documentation
Jump to: navigation, search
 
m (Additional Properties)
 
(7 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 +
{{fieldtypes}}
 +
 +
 +
== 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 ==
 
* [[Metadata]]
 
* [[Metadata]]
 
** [[Compound field]]
 
** [[Compound field]]
 
*** [[Multilang field]]
 
*** [[Multilang field]]
  
== Description ==
+
== Additional Properties ==
 
+
Same as [[Compound field#Additional_Properties|Compound fields]] except for
== Properties ==
 
  
 
{| border="1" cellpadding="3" cellspacing="0"
 
{| border="1" cellpadding="3" cellspacing="0"
| name || default || description
+
! Name !! Default Value !! Required !! Description !! Notes
 
|-
 
|-
| '''input_boxes''' || 1 || ''as for [[Metadata]] but with a different default.''
+
| '''input_boxes''' || <tt>1</tt> || NO || Number of boxes for this field in input form to insert separate values.  || Different from [[Metadata]] default (<tt>0</tt>).
 
|-
 
|-
| '''input_ordered''' || 0 || ''as for [[Metadata]] but with a different default.''
+
| '''input_ordered''' || <tt>0</tt> || NO || Whether the rows of values are numbered and therefore can be re-ordered. || Different from [[Metadata]] default (<tt>1</tt>). Ordering is unnecessary, as priority is determined based on the language sub-field value (and the repository's configuration for language prioritisation).
 
|-
 
|-
| '''languages''' || undef || ...
+
| '''match''' || <tt>IN</tt> || NO || How to match values in search results. || Different from [[Metadata]] default (<tt>EQ</tt>). Treat the search value as a list of whitespace-separated words rather than a single string.
 
|}
 
|}
  
 
== Required Phrases ==
 
== Required Phrases ==
 +
Same as [[Compound field#Required_Phrases|Compounds fields]] but 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</tt> 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',
 +
        },
 +
    ],
 +
}

Latest revision as of 10:05, 16 April 2023

EPrints 3 Reference: Directory Structure - Metadata Fields - Repository Configuration - XML Config Files - XML Export Format - EPrints data structure - Core API - Data Objects


Metadata Fields: Arclanguage - Base64 - Bigint - Boolean - Compound - Counter - Dataobjref - Date - Decimal - Email - Fields - Float - Id - Idci - Image - Int - Itemref - Keywords - Langid - Longtext - Longtext_counter - Multilang - Multipart - Name - Namedset - Pagerange - Recaptcha - Relation - Search - Secret - Set - Storable - Subject - Subobject - Text - Time - Timestamp - Url - Uuid


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

Additional Properties

Same as Compound fields except for

Name Default Value Required Description Notes
input_boxes 1 NO Number of boxes for this field in input form to insert separate values. Different from Metadata default (0).
input_ordered 0 NO Whether the rows of values are numbered and therefore can be re-ordered. Different from Metadata default (1). Ordering is unnecessary, as priority is determined based on the language sub-field value (and the repository's configuration for language prioritisation).
match IN NO How to match values in search results. Different from Metadata default (EQ). Treat the search value as a list of whitespace-separated words rather than a single string.

Required Phrases

Same as Compounds fields but 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 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',
        },
    ],
}