Ist das eine homegrown Library oder irgendetwas, das man kennen könnte?
Nein. Eine eigene Lösung
Ist der Quelltext irgendwo einzusehen?
Könntest du das mal genauer beschreiben? Ich habe ja schon eine "Übersetzungsschicht" zwischen den ORM-Klassen und der Datenbankklasse
Schwierig ohne deinen Code zu kennen, aber ich versuch mal ein Beispiel zu geben, ich gehe davon aus, dass du eine Klasse Model
in deinem ORM hast. Ein Proxy für das Model, würde auf der Model-Klasse aufbauen, und sie um Mehrsprachigkeit erweitern.
class I18NProxy {
protected model;
public function __construct(Model $model) {
$this->model = $model;
}
public function __get(string $name) {
if ($this->model instanceof I18N && $this->model->canTranslate($name)) {
return $this->model->translate($name);
} else {
return $this->model->__get($name);
}
}
}
interface I18N {
public function canTranslate(string $name) : boolean;
public function translate(string $name);
}
Angenommen bisher hast du einen Aufruf $model->greeting
um eine englische Begrüßungsformel zu erhalten, müsstest du nun folgedes schreiben, um eine übersetzte Begrüßungsformel zu erhaten:
$greeting = (new I18NProxy($model))->greeting;