Ich verstehe Ihre Beschreibung und Ihren Standpunkt. Nun müssen wir herausfinden, wie es technisch funktionieren nehme.
Eine Frage, die ich hier sehe, ist, wie wir erkennen, dass wir bereits über Grenzen verfügbar, nachdem solche, bei denen vor erreicht.
Wir können einfach jedes Mal bitten, bevorzugter Anbieter und dann gehen Sie zum nächsten. Das kostet Leistung-, da für jede Anforderung zur Seite die Übersetzung erfordert, werden wir fehlgeschlagenen Aufruf bevorzugter Anbieter, dann zur nächsten ein (so dass es mehrere erfolglose Aufrufe bei vBET weitere APIs unterstützt werden kann).
Andere Lösung wäre es, Informationen, die bevorzugten Anbieter nicht verfügbar ist speichern und direkt zu nächsten. Dies wäre sehr viel schneller, weil die Überprüfung lokale Variable ist viel schneller als Warten auf eine Antwort von einem externen Server. Dieses Mal haben wir andere Frage - wir wissen nicht, wann bevorzugten Anbieter verfügbar ist. Wir können natürlich haben einige geplante Aufgabe, die für einfache (kurze) Übersetzung zum Beispiel fragen würde einmal pro Stunde / Tag, um es zu überprüfen. So in dieser Strategie müssen wir uns entscheiden, wie oft standardmäßig solche Aufgabe zu arbeiten nehme. Natürlich würden wir prüfen es nur, wenn einige Anbieter als nicht verfügbar markiert ist.
Auch wenn wir markieren Anbieter als nicht verfügbar - was tun, wenn wir, dass alle Anbieter nicht verfügbar sind, wissen - fügen Sie einige Informationen für Endverbraucher oder einfach nur übersetzen, was im Cache und der Rest als original, ohne zusätzliche Informationen über die vorübergehende Fehlen einer Übersetzung Anbieter .
Egal, welchen Weg es gemacht wird, wird Google als behandelt werden eine API (V1 oder V2 je nach Konfiguration) - es macht keinen Sinn zu spalten, weil Google v1 sehr bald geschlossen werden.
Eine andere Sache ist Anbieter-Warteschlange für jede Sprachkombination separat konfigurieren. Im Moment kann vBET bereits Übersetzungsanbieter für jedes Sprachpaar konfigurieren. Ich denke, dass wir es von einem Wert in kommagetrennten Werten (CSV) ändern können. Auf diese Weise, die wir für jedes Sprachenpaar wissen, welche Anbieter unterstützen diese Übersetzung und welche Bestellung Einstellungen (nur Reihenfolge auf CSV-Liste).
BITTE BEACHTEN SIE: dies wird einige Auswirkungen auf die Leistung sowieso. Anstatt ein Objekt für die Übersetzung müssen wir Anordnung solcher Objekte und zusätzliche Verpackung Objekt (transparent zu machen für andere Teile des Codes und weniger Bugs anfällig) zu schaffen. Natürlich werden wir keine Objekte für die Anbieter wissen wir, sind in diesem Moment nicht verfügbar.
Lösung hierfür wäre neu zu konfigurieren, um die Leistung und entfernen Anbieter Warteschlange - wie es jetzt ist - ein Anbieter pro Sprachrichtung.
Dies sollte nicht teuer für die Leistung, aber immer noch einige zusätzliche Logik-und Speicher Verbrauch.
Bitte teilen Sie, welche Lösung bevorzugt wird.