No. It’s not really an issue in the plugin, it was Kirby 2.5.0. Therefor a fix in the plugin would be a hack.
But you can now fix it by upgrading Kirby again or as a workaround set the site url in config.php .
Yikes! I hate it, when this happens. A last minute bug made it into 2.5.0 and a couple of you already reported issues with broken URLs. I’m really sorry about this. Unfortunately none of our tests detected it
We decided to publish a fix for it as soon as possible and so here’s a very unglamorous bugfix release, which you should use instead of 2.5.0: https://getkirby.com/changelog/kirby-2-5-1
Why there has been no update since 0.5 is because of this problem. I got tired of breaking my multi language site with Kirby SEO for an unknown reason.
opened 09:26AM - 31 Oct 16 UTC
closed 12:09PM - 04 Dec 17 UTC
bug
https://forum.getkirby.com/t/panel-language-session-problem/4959
If a field c… ontains javascript it's a risk that they can make the panel save in the wrong language in a multi language setup. I think it's very serious because of the frustration that comes with lost/overwritten content.
This issue is not new, I just don't think it has been addressed before.
**Fields that I know suffer from it:**
https://github.com/jenstornell/kirby-seo
https://github.com/jenstornell/kirby-boiler-plugin
https://github.com/jenstornell/kirby-boiler-field
## To reproduce
### 1. Install Kirby multi languages
**In the Kirby Cli:**
```
kirby install bigbug --kit langkit
```
### 2. Install boiler field or below
You can install the boiler field to try it, link above. If not here is an even simpler version of the boiler field:
**It's a field, not a plugin. It's named `boiler.php`**
```php
<?php
class BoilerField extends BaseField {
static public $fieldname = 'boiler';
static public $assets = array(
'js' => array(
'script.js',
),
);
public function input() {
$html = '<input type="text" class="input" id="' . $this->id() . '" name="' . $this->name() . '" value="' . $this->value() . '">';
return $html;
}
public function element() {
$element = parent::element();
$element->data('field', self::$fieldname);
return $element;
}
public function routes() {
return array(
array(
'pattern' => 'ajax/(:any)/(:any)',
'method' => 'get',
'action' => function($var1, $var2) {
return response::json( array( $var1, $var2 ) );
}
)
);
}
}
```
**script.js**
```js
(function($) {
$.fn.boiler = function() {
return this.each(function() {
var field = $(this);
var fieldname = 'boiler';
if(field.data( fieldname )) {
return true;
} else {
field.data( fieldname, true );
}
$.fn.ajax(fieldname);
});
};
$.fn.ajax = function(fieldname) {
var blueprint_key = $('[data-field="' + fieldname + '"]').find('[name]').attr('name');
var base_url = window.location.href.replace('/edit', '/field') + '/' + blueprint_key + '/' + fieldname + '/ajax/';
$.ajax({
url: base_url + '1/value',
type: 'GET',
success: function(result) {
console.log('Hello from Ajax!');
console.log(result);
}
});
};
})(jQuery);
```
### 3. Add to your blueprint
**default.yml**
```yml
title: Bug
fields:
title:
label: Title
type: text
boiler:
label: Bug
type: boiler
```
### 4. Run it
In the test above, when I save in DE it switches back to EN.

This issue in this particular case has to do with the ajax route, that it does not go to a language specific version of the panel and that makes it switch back to EN.
With my Kirby SEO it's still unknown why the same thing happends there.
## In conclusion
For me this proves that the panel is quite fragile. A field can this easily break the save behavior. I want it to be solid as a rock.
**Suggestions:**
- Keep `en` or whatever language prefix in the url to never accidently switch away from it.
- Same as above with a get variable.
- Keep it in a hidden field, not in memory.
That would mean that I can't switch language by accedent from an ajax route or anything else. I will no longer be worried that my content is lost when using multiple languages.
But I agree that a new version soon would be nice. The same goes for a few other of the plugins, like Revisions , Reveal etc.