Okay I've found the problem and I fixed it.
The problem occurs in the CustomTranslationValidator class where it checks for 'OriginalTranslation'. But that value doesn't exist when creating clicking the 'Create Custom Language Translation'-button.
Since the whole function depends on that value it will never return true nor will it display.
Here's the edited method:
function php($data) {
// Set value to true unless set otherwise below
$valid = true;
if (!parent::php($data)) return false; // required fields failed.
// do we have a OriginalTranslatio value? If not, why continue validating? ;)
if (isset($data['OriginalTranslation'])) {
$origTokens = $this->getTokens($data['OriginalTranslation']);
$newTokens = $this->getTokens($data['Translation']);
// determine if they are the same
$valid = count($origTokens) == count($newTokens);
if ($valid && count($origTokens) > 0) {
// Counts are the same, so iterate over both arrays and ensure they are compatible.
for ($i = 0; $i < count($origTokens); $i++) {
// @todo This requires an exact match. For example, %10d and %d won't match, but should.
if ($origTokens[$i] != $newTokens[$i]) $valid = false;
}
}
}
if (!$valid) {
$this->validationError(
'Translation',
_t('Form.FIELDSIGNATUREMISMATCH', "The value substitution tokens in the new translation must match the tokens in the original translation string"),
"invalid"
);
}
return $valid;
}