Difference between revisions of "Multilang field"
(Added examples. Improved other sections unhide ToC.) |
|||
Line 1: | Line 1: | ||
{{fieldtypes}} | {{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 == | == Inheritance == | ||
− | |||
* [[Metadata]] | * [[Metadata]] | ||
** [[Compound field]] | ** [[Compound field]] | ||
*** [[Multilang field]] | *** [[Multilang field]] | ||
− | |||
− | |||
== 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.'' | ||
− | |||
− | |||
|} | |} | ||
== 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
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 - Recaptcha3 - 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
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', }, ], }