Fehler beim Ändern der Seitentexte

Hallo,
heute versuche ich, einige Seitentexte im Admin-Bereich zu ändern. Wenn ich auf „Änderungen speichern“ klicke, erhalte ich einen Serverfehler 500.
Danach bekomme ich bei jeder Suche nach einer Text-ID oder einem Textinhalt ebenfalls einen Serverfehler 500.

Ich vermute, dass der übersetzte Text das Schlüsselwort „{{count}}“ enthält.

Mein Discourse ist auf dem neuesten Stand. Hier sind die Log-Informationen:

Umgebung:

REQUEST_URI	/admin/customize/site_texts?q=off_
REQUEST_METHOD	GET

Informationen:

TypeError (keine implizite Umwandlung von Symbol in Integer)
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:172:in `[]'

Rückverfolgung:

/var/www/discourse/app/controllers/admin/site_texts_controller.rb:172:in `[]'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:172:in `block in fix_plural_keys'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:171:in `map'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:171:in `fix_plural_keys'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:153:in `block in find_translations'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:151:in `each'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:151:in `find_translations'
/var/www/discourse/app/controllers/admin/site_texts_controller.rb:30:in `index'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/base.rb:194:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:132:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/rescue.rb:22:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:34:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications.rb:168:in `block in instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/notifications.rb:168:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/params_wrapper.rb:256:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:24:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/abstract_controller/base.rb:134:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionview-5.2.3/lib/action_view/rendering.rb:32:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiling_methods.rb:104:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal.rb:191:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal.rb:252:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:52:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:34:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/mapper.rb:48:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:52:in `block in serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:35:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/journey/router.rb:35:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/routing/route_set.rb:840:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-protection-2.0.5/lib/rack/protection/frame_options.rb:31:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/tempfile_reaper.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/conditional_get.rb:25:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/head.rb:12:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:220:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:232:in `context'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/session/abstract/id.rb:226:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/cookies.rb:670:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.3/lib/active_support/callbacks.rb:98:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.3.1/lib/logster/middleware/reporter.rb:30:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/rack/logger.rb:38:in `call_app'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/method_override.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_dispatch/middleware/executor.rb:14:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/sendfile.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.0.2/lib/mini_profiler/profiler.rb:281:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.2/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:169:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/engine.rb:524:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-5.2.3/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:68:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/urlmap.rb:53:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.1/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'
3 „Gefällt mir“

Ich kann das hier nicht reproduzieren, es könnte sich um eine fehlerhafte Übersetzung handeln. Welche Spracheinstellung hast du?

1 „Gefällt mir“

Meine Discourse-Sprache ist fa_IR. Dies tritt auf, nachdem ich versucht habe, den Text zu ändern.
Manchmal führen Textänderungen zu Fehlern, insbesondere wenn Variablen im Text enthalten sind.

Ich vermute, dass einige Variablen im Laufe der Zeit geändert wurden, aber in alten Übersetzungen weiterhin verwendet werden. Beispiele hierfür sind {site_title} und {site_name} oder {base_url} und {basePath} bzw. {base_path}.

Es wäre möglicherweise hilfreich, den englischen Text als Erklärung für die Übersetzung unterhalb des Änderungs-Textfelds anzuzeigen, wenn Discourse eine andere Sprache verwendet.

2 „Gefällt mir“

Ja, ich vermute, dass etwas bei der Übersetzung kaputtgegangen ist. Bitte gib mir Bescheid, sobald du auf Englisch umstellst. Kannst du helfen, die Strings in Transifex zu reparieren?

3 „Gefällt mir“

Ehrlich gesagt kann ich nicht auf Englisch wechseln, da mein Discourse-Server live geschaltet ist und viele Nutzer ihn verwenden.

Ja, ich helfe gerne dabei, die persische Übersetzung zu korrigieren, da es in dieser Sprache viele Fehler gibt. Wir bearbeiten die Textinhalte unserer Discourse-Instanz und passen sie an. Ich kann einige der häufigen Fehler, die ich in meinem Discourse im Laufe der Zeit sehe, in Transifex korrigieren.


Die Seite zur Textanpassung in Discourse ist sehr einfach gestaltet. Es wäre nicht schlecht, etwas mehr Zeit in dieses großartige Feature zu investieren.

Änderungen wie:

  • Anzeige des Standard-Englisch-Texts für jeden Eintrag beim Anpassen der Texte
  • Anzeige des Community-Vorschlags in der ausgewählten Lokalisierung für jeden Eintrag beim Anpassen der Texte
  • Vorschlag einer besseren Übersetzung direkt für die Community
  • Möglichkeit, Übersetzungen in Texten zu ändern, die in der Datenbank gespeichert sind, z. B. Systemnachrichten
  • Anzeige einer Liste der erlaubten Variablen, die im Text verwendet werden können, beim Anpassen der Texte
2 „Gefällt mir“

Ich kann ein Suchproblem mit off_, das Discourse bei der Einstellung fa_IR beschädigt, nicht reproduzieren. Bist du dir sicher, dass du die neueste Version verwendest?

@gerhard Ist dies ein Fehler in fix_plural_keys? Sollte es nicht vorsichtiger sein? Ich vermute, I18n.t(key, locale: :en) könnte theoretisch hier eine Nicht-Plural-Form zurückgeben:

Mindestens, wenn wir dies etwas mehrzeilig gestalten, werden wir sehen können, was explodiert ist.

6 „Gefällt mir“

Meine Discourse-Instanz ist auf dem neuesten Stand. Falls Sie einen bestimmten Protokoll- oder Bericht zur Fehleranalyse benötigen, lassen Sie es mich wissen, ich sende ihn Ihnen gerne zu. Wir können Ihnen auch Fernzugriff oder administrative Berechtigungen für weitere Untersuchungen gewähren.

@nildarar Ich möchte herausfinden, was diesen Fehler verursacht. Könntest du bitte Folgendes ausführen und die Ausgabe hier posten?

cd /var/discourse
./launcher enter app
rails c

TranslationOverride.where("translation_key LIKE '%off_%'").pluck(:locale, :translation_key, :value)
2 „Gefällt mir“

Danke für deine Unterstützung. Ich habe diesen Befehl ausgeführt und folgende Ausgabe erhalten:

[1] pry(main)> TranslationOverride.where("translation_key LIKE '%off_%'").pluck(:locale, :translation_key, :value)
=> [["fa_IR", "post_action_types.off_topic.title", "Kein Bezug zum gewählten Chat-Thema oder zur Kategorie"],
 ["fa_IR", "js.post.actions.undo.off_topic", "Flagge entfernen"],
 ["fa_IR", "js.post.actions.by_others.off_topic.one", "{{count}} Benutzer haben diesen Beitrag als themenfremd gemeldet"],
 ["fa_IR", "post_action_types.off_topic.long_form", "Diesen Beitrag als themenfremd markieren"],
 ["fa_IR", "js.post.actions.people.off_topic", "Als themenfremd im Chat markiert"],
 ["fa_IR", "js.post.actions.by_you.off_topic", "Du hast diesen Beitrag zur thematischen Prüfung an die Moderatoren gemeldet."],
 ["fa_IR", "js.composer.drafts_offline", "Offline-Entwurf"],
 ["fa_IR", "js.flagging.official_warning", "Offizielles Warnsignal senden"],
 ["fa_IR", "js.flagging.formatted_name.off_topic", "Kein Bezug zum gewählten Chat-Thema oder zur Kategorie"],
 ["fa_IR", "post_action_types.off_topic.short_description", "Kein Bezug zum gewählten Chat-Thema oder zur Kategorie"],
 ["fa_IR", "post_action_types.off_topic.description", "Dieser Beitrag ist in Ordnung, hat aber keinen Bezug zum gewählten Chat-Thema oder zur Kategorie. Er sollte besser in einen anderen Chat verschoben oder in die richtige Kategorie eingeordnet werden."]]
[2] pry(main)>
2 „Gefällt mir“

Danke! Das hat sehr geholfen. Der Fehler wurde in FIX: An overridden text of a non-existent plural key resulted in error · discourse/discourse@d516e49 · GitHub behoben.

3 „Gefällt mir“