Yes, that would also be possible as well. You can use something like this in the header
section of a theme component
<script type="text/discourse-plugin" version="0.8">
const i18nTopicLable = I18n.lookup("topic.create");
api.modifyClass("component:create-topic-button", {
didInsertElement: function() {
var button = $(this),
category = button[0].parentView.get("category"),
label = button[0].label,
newTopicLabel = "topic.create",
buttonText = "";
if (category) {
categoryName = category.name;
if (label != newTopicLabel) {
return;
} else {
switch (categoryName) {
case "category1": // category name
buttonText = "category1 text"; // button text
break;
// repeat
case "category2":
buttonText = "category2 text";
break;
// add more above this line
default:
buttonText = i18nTopicLable;
}
$("#create-topic .d-button-label").text(buttonText);
}
}
}
});
</script>
To add new categories, you only need to add this above where it says default
case "category":
buttonText = "text";
break;
If you have a pending draft and the button says “open draft” the script won’t fire.
I’ve created a small preview on theme creator and changed the text for the movies, tech, school, videos and gaming categories
Edit:
@dax informed me that I had missed something in the snippet I posted previously and so I updated it and the preview so be sure to use the latest one @tophee