Typowe problemy
Typowe problemyNie udało się zdekodować odpowiedzi usługi AI jako JSON

Nie udało się zdekodować odpowiedzi usługi AI jako JSON

Gato AI Translations for Polylang wysyła prompt do usługi AI, a odpowiedź jest w formacie JSON.

W zależności od wysyłanych danych (ciągi znaków do przetłumaczenia i język), usługa AI może zwrócić odpowiedź, która nie jest prawidłowym JSON-em. W dziennikach pojawi się komunikat o błędzie podobny do tego:

Error [Query "translate-customposts"] Execution with errors: 🔴 Translation to zh_CN failed - There was an error requesting data from the API for provider 'OpenRouter': Could not JSON-decode the OpenRouter API's 'choices[0].message.content' field in the response

Gdy odkrywamy nowy problem, dostosowujemy prompt, aby zapobiec jego ponownemu wystąpieniu.

Obecnie prompt zawiera następujące instrukcje:

If a sentence contains HTML:
- Translate the text inside the HTML tags. (eg: `<p>Hello world</p>` => `<p>Hola mundo</p>`)
- Translate the following properties inside the HTML tags: alt, title, placeholder, aria-label, aria-describedby, aria-labelledby, aria-placeholder. Do not translate any other property.
- Ensure that any double quotes (") within a translated string inside an HTML tag attribute are properly escaped by adding a backslash before them (\"), but only if they haven't been escaped already.
- Ensure that the quotes in HTML tag attributes are not escaped (eg: keep `<mark class="has-inline-color">` as is, do not convert to `<mark class=\"has-inline-color\">`).
- Ensure that slashes within HTML tags are not escaped (eg: keep `<p>Hello world</p>` as is, do not convert to `<p>Hello world<\/p>`).
Keep emojis exactly as they are, do not translate them.
Ensure that the response is encoded using UTF-8 for all characters.

Jeśli wystąpi błąd, oznacza to nowy problem, który musimy zidentyfikować i naprawić.

Wykonaj następujące kroki:

  • Spróbuj zrozumieć, na czym polega problem
  • Dostosuj prompt, aby poradzić sobie z problemem

Gdy zadziała, prześlij nam swój prompt, a my wbudujemy to rozwiązanie bezpośrednio w plugin.