@motchju I understand that but it's not practical in my scenario for UI/UX reasons and the way the data is grouped to separate the translatable and non-translatable fields.
My quick solution is as follows:
I have 2 partials for the create and edit fields:
partials/create-fields.blade.php
partials/create-fields-translatable.blade.php
partials/edit-fields.blade.php
partials/edit-fields-translatable.blade.php
the create-fields.blade.php and edit-fields.blade.php have all the fields as normal.
the create-fields-translatable.blade.php looks like this:
{!! Form::i18nInput('salutation', trans('module::section.form.salutation'), $errors, $lang) !!}
{!! Form::normalInput('first_name', trans('module::section.form.first_name'), $errors, null, ['disabled'=>'disabled', 'placeholder'=>trans('modules::section.placeholders.non_translatable')]) !!}
{!! Form::normalInput('last_name', trans('module::section.form.last_name'), $errors, null, ['disabled'=>'disabled', 'placeholder'=>trans('modules::section.placeholders.non_translatable']) !!}
{!! Form::i18nInput('country', trans('module::section.form.country'), $errors, $lang) !!}
and the edit-fields-translatable.blade.php
{!! Form::i18nInput('salutation', trans('module::section.form.salutation'), $errors, $lang) !!}
{!! Form::normalInput('first_name', trans('module::section.form.first_name'), $errors, null, ['disabled'=>'disabled']) !!}
{!! Form::normalInput('last_name', trans('module::section.form.last_name'), $errors, null, ['disabled'=>'disabled']) !!}
{!! Form::i18nInput('country', trans('module::section.form.country'), $errors, $lang) !!}
where the placeholder text reads something like 'This field is non-translatable, please enter the value on the site's default language tab'
then in the create.blade.php and edit.blade.php files I have the following:
@foreach (LaravelLocalization::getSupportedLocales() as $locale => $language)
<?php $i++; ?>
<div class="tab-pane {{ locale() == $locale ? 'active' : '' }}" id="tab_{{ $i }}">
@if( config('app.fallback_locale') == $locale )
@include('module::admin.section.partials.create-fields', ['lang' => $locale])
@else
@include('module::admin.section.partials.create-fields-translatable', ['lang' => $locale])
@endif
</div>
@endforeach
Whilst it's not particularly elegant it does what I need it to do - the user doesn't have to fill in the same field multiple times but they can see the data structure and are told where to fill the data in for the create.
When I have a bit more time I'll amend it so that none of the fields are disabled and add an onBlur event to the non-translatable fields so that when they complete a field on one tab it will auto-populate all the other tab values.