-
MorganL
-
-
Offline
-
Platinum Member
-
- Posts: 438
- Thank you received: 53
-
Karma: 15
-
|
So we have a 1:n FK table using a cross reference table. Here is the generated code
<div class="chzn-drop">
<ul class="chzn-results">
<li class="active-result" data-option-array-index="0" style="">Full Time</li>
<li class="active-result" data-option-array-index="1" style="">Part Time (1/5)</li>
<li class="active-result" data-option-array-index="2" style="">Part Time (2/5)</li>
<li class="active-result" data-option-array-index="3" style="">Part Time (3/5)</li>
<li class="active-result" data-option-array-index="4" style="">Part Time (4/5)</li>
<li class="active-result" data-option-array-index="5" style="">Selected Days</li>
</ul>
</div>
the problem is however, i need to make this fully multiligual, whcih is EASY with an enum table, but not with FK 1:n
Ideally I want the generated multiselect to output
<li class="active-result" data-option-array-index="5" style=""><?php echo JText::_('Selected Days'); ?></li>
then I can just add the strings to the language overrides (or use simpler labels such as SELECTED_DAYS
Thanks for any assistance
|
Morgan Leecy MCSE
Novell / Linux
PHP. MYSQL, Apache, node.js
Coldfusion, JQuery, HTML5
Joomla
|
-
Romkabouter
-
-
Offline
-
Elite Member
-
- Posts: 310
- Thank you received: 131
-
Karma: 48
-
|
My advice: add a field language, check the joomla 'content' table.
You can find the current language via JFactory::getLanguage()->getTag(); It will return "en-GB" if the site is currently shown in english.
Use it in your orm statements
The field in the table can be filled in the form, you can achieve it via an enum or via the contentlanguage field
docs.joomla.org/Contentlanguage_form_field_type
|
|
-
Romkabouter
-
-
Offline
-
Elite Member
-
- Posts: 310
- Thank you received: 131
-
Karma: 48
-
|
Sorry, I was incomplete.
You need to have a "base", so you can switch the language without losing the ID
The base will be linked to the translated versions, the translated versions should have the language field
|
|
-
admin
-
-
Offline
-
Administrator
-
-
Chef
- Posts: 3711
- Thank you received: 987
-
Karma: 140
-
|
If the label is multilanguage, then you need that translated string into the data row.
Just change "labelKey" for setting which column you select on the row item.
I think it is quite basic question...
The most dificult is the language system iteself at the database level.
You need a versioning system, wich is still not avalailable in Cook
|
Coding is now a piece of cake
|
-
MorganL
-
-
Offline
-
Platinum Member
-
- Posts: 438
- Thank you received: 53
-
Karma: 15
-
|
I think there may be a little misunderstanding of my problem,
I know how multilingual works, and the site is live in three languages with everything translated except for this cross reference field
JOB (id)
|
JOBtoREGIEME (job_id, regieme_id)
|
REGIME (id, regieme_string)
The generated mutlselect (relational) dropdown pulls in the regieme string as the 'choices' and I need these to be in several languages
I have no way that I can see of letting the system know 'THIS is a constant, translate me'
This is the current model for reference as to what type it is
<field name="regimens"
alias="id"
label="MYPROJECT_FIELD_REGIME"
filter="array"
type="relation"
multiple="true"
labelKey="regimen"/>
|
Morgan Leecy MCSE
Novell / Linux
PHP. MYSQL, Apache, node.js
Coldfusion, JQuery, HTML5
Joomla
Last Edit: 14 Nov 2017 15:58 by MorganL.
|
-
MorganL
-
-
Offline
-
Platinum Member
-
- Posts: 438
- Thank you received: 53
-
Karma: 15
-
|
I think this is all generated by the chosen jquery script
|
Morgan Leecy MCSE
Novell / Linux
PHP. MYSQL, Apache, node.js
Coldfusion, JQuery, HTML5
Joomla
|
-
Romkabouter
-
-
Offline
-
Elite Member
-
- Posts: 310
- Thank you received: 131
-
Karma: 48
-
|
Sorry, I was a bit busy. I will post an update soon but I think I have a solution
|
The following user(s) said Thank You: MorganL
|
-
MorganL
-
-
Offline
-
Platinum Member
-
- Posts: 438
- Thank you received: 53
-
Karma: 15
-
|
You are a clever chap! I expected no less
|
Morgan Leecy MCSE
Novell / Linux
PHP. MYSQL, Apache, node.js
Coldfusion, JQuery, HTML5
Joomla
|
-
Romkabouter
-
-
Offline
-
Elite Member
-
- Posts: 310
- Thank you received: 131
-
Karma: 48
-
|
I almost got this one, just to make sure: this translation you need a frontend form yes?
|
The following user(s) said Thank You: MorganL
|
-
MorganL
-
-
Offline
-
Platinum Member
-
- Posts: 438
- Thank you received: 53
-
Karma: 15
-
|
Absolutely only Front End
|
Morgan Leecy MCSE
Novell / Linux
PHP. MYSQL, Apache, node.js
Coldfusion, JQuery, HTML5
Joomla
|
-
Romkabouter
-
-
Offline
-
Elite Member
-
- Posts: 310
- Thank you received: 131
-
Karma: 48
-
|
Ok good. I've got it working for a 1-1 relation of job-regime when I read you have a 1-N.
Will change that now, attached is a working version with 1-1 but do not pay too much attention to that
In general:
- extra table 1-N from regime->translation
- translation item has a language field and a translation field. And FK to regime. The language is a string field, but you could take that a step further
- fork the job, the regimes are joined with the translations and the translation is added a extra select
- fork the form.xml, change the labelKey
I do not know if this will work for 1-N, so I am going to try that
- attach did not work :\
|
|
-
Romkabouter
-
-
Offline
-
Elite Member
-
- Posts: 310
- Thank you received: 131
-
Karma: 48
-
|
So ok, that also works, with some other steps: a custom field
Here's how I made this:
- add an extra table regimetranslations, with field: regime (FK), translation (string) and language (string). The language could be a dropdown, but is ok for now
- add views for this table, the item view having the regime dropdown and the two textfields
- for language, fill in the tag like en-GB
- create folder "fork" in the site component folder, with "models" as subfolder and in there a "forms" folder
- copy job.xml from the non-forked folder in there and edit it: remove all fieldsets except the one with the regimes field
- in the addfieldpath, add "fork" in the path: addfieldpath="/administrator/components/com_yourcomponent/fork/models/fields"
- change labelKey to " translation" and type to "regimetranslation", see attached job.xml
- create folder "fork" in the admin component folder, with "models" as subfolder and in there a "fields" folder
- copy relation from the non-forked folder in there and rename to regimetranslation.php
- remove all functions, change "extends JFormFieldModel" to "extends JFormFieldRelation" and loadFieldClass('model') to loadFieldClass('relation'); See attached choicetranslation.php
- put in the protected function getOptions(), this will override the items
Now you got a translated multiselect field. This can be made smoother, as to work with EVERY multiselect but for now it works
See my attached custom field, you will have to edit it to reflect the correct classnames!
If you see only a textfield in the JobForm, that means something is (still) wrong with the custom field. Let us know if you encounter problems.
|
|
|