From e8a76ac43cc11e226e9c4708b7b37211938db216 Mon Sep 17 00:00:00 2001 From: Saverio Trioni <476895+rewritten@users.noreply.github.com> Date: Thu, 26 Mar 2026 13:17:59 +0100 Subject: [PATCH 1/2] fix: handle missing category translations gracefully (fixes #829) Add display_name to Category that falls back to any available translation when the current locale's name is nil or blank, appending [locale] to indicate the language it came from. Fixes crash in all_categories sort when a category is created without a translation for the current locale. Co-Authored-By: Claude Sonnet 4.6 --- app/helpers/categories_helper.rb | 2 +- app/models/category.rb | 9 ++++++++- app/views/shared/_post_filters.html.erb | 4 ++-- app/views/shared/_show_filter_hint.html.erb | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/helpers/categories_helper.rb b/app/helpers/categories_helper.rb index f644257b8..ee6c29ec5 100644 --- a/app/helpers/categories_helper.rb +++ b/app/helpers/categories_helper.rb @@ -1,6 +1,6 @@ module CategoriesHelper def all_categories - @all_categories ||= Category.all.sort_by { |a| a.name.downcase } + @all_categories ||= Category.all.sort_by { |a| a.to_s.downcase } end def categories_for_select diff --git a/app/models/category.rb b/app/models/category.rb index 16b4e6063..1adb578b8 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -3,7 +3,14 @@ class Category < ApplicationRecord translates :name + def display_name + return name if name.present? + + fallback_locale, fallback_name = name_translations&.find { |_, v| v.present? } + "#{fallback_name} [#{fallback_locale}]" if fallback_name + end + def to_s - name + display_name end end diff --git a/app/views/shared/_post_filters.html.erb b/app/views/shared/_post_filters.html.erb index d471cb0c8..fa87f9dee 100644 --- a/app/views/shared/_post_filters.html.erb +++ b/app/views/shared/_post_filters.html.erb @@ -19,7 +19,7 @@