Allow to register custom categories

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
chapril
Thomas Citharel 9 months ago
parent f5bdedf789
commit 368911b58e
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773
  1. 8
      js/src/graphql/config.ts
  2. 15
      js/src/i18n/en_US.json
  3. 15
      js/src/i18n/fr_FR.json
  4. 1
      js/src/types/config.model.ts
  5. 68
      js/src/utils/categories.ts
  6. 6
      js/src/views/Event/Edit.vue
  7. 3
      js/src/views/Event/Event.vue
  8. 5
      js/src/views/Search.vue
  9. 12
      lib/graphql/resolvers/config.ex
  10. 15
      lib/graphql/schema/config.ex
  11. 86
      lib/graphql/schema/custom/enum_types.ex
  12. 144
      lib/mobilizon/events/categories.ex
  13. 150
      priv/gettext/ar/LC_MESSAGES/default.po
  14. 150
      priv/gettext/be/LC_MESSAGES/default.po
  15. 150
      priv/gettext/ca/LC_MESSAGES/default.po
  16. 150
      priv/gettext/cs/LC_MESSAGES/default.po
  17. 150
      priv/gettext/de/LC_MESSAGES/default.po
  18. 150
      priv/gettext/default.pot
  19. 150
      priv/gettext/en/LC_MESSAGES/default.po
  20. 150
      priv/gettext/es/LC_MESSAGES/default.po
  21. 150
      priv/gettext/fi/LC_MESSAGES/default.po
  22. 707
      priv/gettext/fr/LC_MESSAGES/default.po
  23. 327
      priv/gettext/fr/LC_MESSAGES/errors.po
  24. 150
      priv/gettext/gd/LC_MESSAGES/default.po
  25. 150
      priv/gettext/gl/LC_MESSAGES/default.po
  26. 150
      priv/gettext/he/LC_MESSAGES/default.po
  27. 150
      priv/gettext/hr/LC_MESSAGES/default.po
  28. 150
      priv/gettext/hu/LC_MESSAGES/default.po
  29. 150
      priv/gettext/id/LC_MESSAGES/default.po
  30. 150
      priv/gettext/it/LC_MESSAGES/default.po
  31. 150
      priv/gettext/ja/LC_MESSAGES/default.po
  32. 150
      priv/gettext/nb_NO/LC_MESSAGES/default.po
  33. 150
      priv/gettext/nl/LC_MESSAGES/default.po
  34. 150
      priv/gettext/nn/LC_MESSAGES/default.po
  35. 150
      priv/gettext/oc/LC_MESSAGES/default.po
  36. 150
      priv/gettext/pl/LC_MESSAGES/default.po
  37. 150
      priv/gettext/pt/LC_MESSAGES/default.po
  38. 150
      priv/gettext/pt_BR/LC_MESSAGES/default.po
  39. 150
      priv/gettext/ru/LC_MESSAGES/default.po
  40. 150
      priv/gettext/sv/LC_MESSAGES/default.po

@ -11,6 +11,10 @@ export const CONFIG = gql`
demoMode
countryCode
languages
eventCategories {
id
label
}
anonymous {
participation {
allowed
@ -103,6 +107,10 @@ export const CONFIG_EDIT_EVENT = gql`
features {
groups
}
eventCategories {
id
label
}
anonymous {
participation {
allowed

@ -1307,21 +1307,6 @@
"Last seen on": "Last seen on",
"No user matches the filters": "No user matches the filters",
"Reset filters": "Reset filters",
"Arts": "Arts",
"Book Clubs": "Book Clubs",
"Business": "Business",
"Causes": "Causes",
"Comedy": "Comedy",
"Crafts": "Crafts",
"Food & Drink": "Food & Drink",
"Health": "Health",
"Music": "Music",
"Auto, Boat & Air": "Auto, Boat & Air",
"Community": "Community",
"Family & Education": "Family & Education",
"Fashion & Beauty": "Fashion & Beauty",
"Film & Media": "Film & Media",
"Games": "Games",
"Category": "Category",
"Select a category": "Select a category",
"Any category": "Any category"

@ -1306,21 +1306,6 @@
"{title} ({count} todos)": "{title} ({count} todos)",
"{username} was invited to {group}": "{username} a été invité à {group}",
"© The OpenStreetMap Contributors": "© Les Contributeur⋅ices OpenStreetMap",
"Arts": "Arts",
"Book Clubs": "Clubs de lecture",
"Business": "Entreprises",
"Causes": "Causes",
"Comedy": "Comédie",
"Crafts": "Artisanat",
"Food & Drink": "Alimentation et boissons",
"Health": "Santé",
"Music": "Musique",
"Auto, Boat & Air": "Automobile, bateaux et aéronautique",
"Community": "Communauté",
"Family & Education": "Famille et éducation",
"Fashion & Beauty": "Mode et beauté",
"Film & Media": "Films et médias",
"Games": "Jeux",
"Category": "Catégorie",
"Select a category": "Choisissez une categorie",
"Any category": "N'importe quelle catégorie"

@ -17,6 +17,7 @@ export interface IConfig {
registrationsAllowlist: boolean;
demoMode: boolean;
countryCode: string;
eventCategories: { id: string; label: string }[];
languages: string[];
location: {
latitude: number;

@ -1,68 +0,0 @@
import { i18n } from "@/utils/i18n";
export const eventCategories = [
{
id: "ARTS",
label: i18n.t("Arts"),
icon: "palette",
},
{
id: "BOOK_CLUBS",
label: i18n.t("Book Clubs"),
icon: "favourite-book",
},
{
id: "BUSINESS",
label: i18n.t("Business"),
},
{
id: "CAUSES",
label: i18n.t("Causes"),
},
{
id: "COMEDY",
label: i18n.t("Comedy"),
},
{
id: "CRAFTS",
label: i18n.t("Crafts"),
},
{
id: "FOOD_DRINK",
label: i18n.t("Food & Drink"),
},
{
id: "HEALTH",
label: i18n.t("Health"),
},
{
id: "MUSIC",
label: i18n.t("Music"),
},
{
id: "AUTO_BOAT_AIR",
label: i18n.t("Auto, Boat & Air"),
},
{
id: "COMMUNITY",
label: i18n.t("Community"),
},
{
id: "FAMILY_EDUCATION",
label: i18n.t("Family & Education"),
},
{
id: "FASHION_BEAUTY",
label: i18n.t("Fashion & Beauty"),
},
{
id: "FILM_MEDIA",
label: i18n.t("Film & Media"),
},
{
id: "GAMES",
label: i18n.t("Games"),
},
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
].sort(({ label: label1 }, { label: label2 }) => label1.localeCompare(label2));

@ -34,6 +34,7 @@
<div class="flex flex-wrap gap-4">
<b-field
v-if="config"
:label="$t('Category')"
label-for="category"
class="w-full md:max-w-fit"
@ -44,7 +45,7 @@
expanded
>
<option
v-for="category in eventCategories"
v-for="category in config.eventCategories"
:value="category.id"
:key="category.id"
>
@ -665,7 +666,6 @@ import { USER_SETTINGS } from "@/graphql/user";
import { IUser } from "@/types/current-user.model";
import { IAddress } from "@/types/address.model";
import { LOGGED_USER_PARTICIPATIONS } from "@/graphql/participant";
import { eventCategories } from "@/utils/categories";
const DEFAULT_LIMIT_NUMBER_OF_PLACES = 10;
@ -775,8 +775,6 @@ export default class EditEvent extends Vue {
formatList = formatList;
eventCategories = eventCategories;
@Watch("eventId", { immediate: true })
resetFormForCreation(eventId: string): void {
if (eventId === undefined) {

@ -507,7 +507,6 @@ import { IEventMetadataDescription } from "@/types/event-metadata";
import { eventMetaDataList } from "../../services/EventMetadata";
import { USER_SETTINGS } from "@/graphql/user";
import { IUser } from "@/types/current-user.model";
import { eventCategories } from "@/utils/categories";
// noinspection TypeScriptValidateTypes
@Component({
@ -1138,7 +1137,7 @@ export default class Event extends EventMixin {
if (this.event?.category === "MEETING") {
return undefined;
}
return eventCategories.find((eventCategory) => {
return this.config.eventCategories.find((eventCategory) => {
return eventCategory.id === this.event?.category;
})?.label as string;
}

@ -109,7 +109,7 @@
</option>
<option
:value="category.id"
v-for="category in eventCategories"
v-for="category in config.eventCategories"
:key="category.id"
>
{{ category.label }}
@ -247,7 +247,6 @@ import { REVERSE_GEOCODE } from "../graphql/address";
import debounce from "lodash/debounce";
import { CURRENT_USER_CLIENT } from "@/graphql/user";
import { ICurrentUser } from "@/types/current-user.model";
import { eventCategories } from "@/utils/categories";
interface ISearchTimeOption {
label: string;
@ -389,8 +388,6 @@ export default class Search extends Vue {
GROUP_PAGE_LIMIT = GROUP_PAGE_LIMIT;
eventCategories = eventCategories;
$refs!: {
aac: FullAddressAutoComplete;
autocompleteSearchInput: any;

@ -4,6 +4,7 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
"""
alias Mobilizon.Config
alias Mobilizon.Events.Categories
@doc """
Gets config.
@ -57,6 +58,17 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
{:ok, %{body_html: body_html, type: type, url: url}}
end
@spec event_categories(any(), map(), Absinthe.Resolution.t()) :: {:ok, [map()]}
def event_categories(_parent, _args, _resolution) do
categories =
Categories.list()
|> Enum.map(fn %{id: id, label: label} ->
%{id: id |> to_string |> String.upcase(), label: label}
end)
{:ok, categories}
end
@spec config_cache :: map()
defp config_cache do
case Cachex.fetch(:config, "full_config", fn _key ->

@ -16,6 +16,13 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
field(:contact, :string, description: "The instance's contact details")
field(:languages, list_of(:string), description: "The instance's admins languages")
field(:event_categories, list_of(:event_category_option),
description: "The instance list of event categories possibilities"
) do
resolve(&Config.event_categories/3)
end
field(:registrations_open, :boolean, description: "Whether the registrations are opened")
field(:registrations_allowlist, :boolean,
@ -332,6 +339,14 @@ defmodule Mobilizon.GraphQL.Schema.ConfigType do
)
end
@desc """
Event categories list configuration
"""
object :event_category_option do
field(:id, :string, description: "The ID of the event category")
field(:label, :string, description: "The translated name of the event category")
end
object :config_queries do
@desc "Get the instance config"
field :config, :config do

@ -1,81 +1,18 @@
defmodule Mobilizon.GraphQL.Schema.Custom.EnumTypes do
@moduledoc """
Register extra enum types dynamically
"""
alias Absinthe.Blueprint.Schema
alias Absinthe.Schema.Notation
alias Absinthe.{Blueprint, Pipeline, Phase}
@categories [
%{
id: :arts,
label: "ARTS"
},
%{
id: :book_clubs,
label: "BOOK_CLUBS"
},
%{
id: :business,
label: "BUSINESS"
},
%{
id: :causes,
label: "CAUSES"
},
%{
id: :comedy,
label: "COMEDY"
},
%{
id: :crafts,
label: "CRAFTS"
},
%{
id: :food_drink,
label: "FOOD_DRINK"
},
%{
id: :health,
label: "HEALTH"
},
%{
id: :music,
label: "MUSIC"
},
%{
id: :auto_boat_air,
label: "AUTO_BOAT_AIR"
},
%{
id: :community,
label: "COMMUNITY"
},
%{
id: :family_education,
label: "FAMILY_EDUCATION"
},
%{
id: :fashion_beauty,
label: "FASHION_BEAUTY"
},
%{
id: :film_media,
label: "FILM_MEDIA"
},
%{
id: :games,
label: "GAMES"
},
# Legacy default value
%{
id: :meeting,
label: "MEETING"
}
]
alias Absinthe.{Blueprint, Phase, Pipeline}
alias Mobilizon.Events.Categories
def pipeline(pipeline) do
Pipeline.insert_after(pipeline, Phase.Schema.TypeImports, __MODULE__)
end
def run(blueprint = %Blueprint{}, _) do
@spec run(Absinthe.Blueprint.t(), any()) :: {:ok, Absinthe.Blueprint.t()}
def run(%Blueprint{} = blueprint, _) do
%{schema_definitions: [schema]} = blueprint
new_enum = build_dynamic_enum()
@ -88,18 +25,19 @@ defmodule Mobilizon.GraphQL.Schema.Custom.EnumTypes do
{:ok, %{blueprint | schema_definitions: [schema]}}
end
def build_dynamic_enum() do
@spec build_dynamic_enum :: Absinthe.Blueprint.Schema.EnumTypeDefinition.t()
defp build_dynamic_enum do
%Schema.EnumTypeDefinition{
name: "EventCategory",
identifier: :event_category,
module: __MODULE__,
__reference__: Notation.build_reference(__ENV__),
values:
Enum.map(@categories, fn %{id: id, label: label} ->
Enum.map(Categories.list(), fn %{id: id} ->
%Schema.EnumValueDefinition{
identifier: id,
value: label,
name: label,
value: String.upcase(to_string(id)),
name: String.upcase(to_string(id)),
module: __MODULE__,
__reference__: Notation.build_reference(__ENV__)
}

@ -0,0 +1,144 @@
defmodule Mobilizon.Events.Categories do
@moduledoc """
Module that handles event categories
"""
import Mobilizon.Web.Gettext
@spec list :: [%{id: atom(), label: String.t()}]
def list do
build_in_categories() ++ extra_categories()
end
defp build_in_categories do
[
%{
id: :arts,
label: gettext("Arts")
},
%{
id: :book_clubs,
label: gettext("Book clubs")
},
%{
id: :business,
label: gettext("Business")
},
%{
id: :causes,
label: gettext("Causes")
},
%{
id: :comedy,
label: gettext("Comedy")
},
%{
id: :crafts,
label: gettext("Crafts")
},
%{
id: :food_drink,
label: gettext("Food & Drink")
},
%{
id: :health,
label: gettext("Health")
},
%{
id: :music,
label: gettext("Music")
},
%{
id: :auto_boat_air,
label: gettext("Auto, boat and air")
},
%{
id: :community,
label: gettext("Community")
},
%{
id: :family_education,
label: gettext("Family & Education")
},
%{
id: :fashion_beauty,
label: gettext("Fashion & Beauty")
},
%{
id: :film_media,
label: gettext("Film & Media")
},
%{
id: :games,
label: gettext("Games")
},
%{
id: :language_culture,
label: gettext("Language & Culture")
},
%{
id: :learning,
label: gettext("Learning")
},
%{
id: :lgbtq,
label: gettext("LGBTQ")
},
%{
id: :movements_politics,
label: gettext("Movements and politics")
},
%{
id: :networking,
label: gettext("Networking")
},
%{
id: :party,
label: gettext("Party")
},
%{
id: :performing_visual_arts,
label: gettext("Performing & Visual Arts")
},
%{
id: :pets,
label: gettext("Pets")
},
%{
id: :photography,
label: gettext("Photography")
},
%{
id: :outdoors_adventure,
label: gettext("Outdoors & Adventure")
},
%{
id: :spirituality_religion_beliefs,
label: gettext("Spirituality, Religion & Beliefs")
},
%{
id: :science_tech,
label: gettext("Science & Tech")
},
%{
id: :sports,
label: gettext("Sports")
},
%{
id: :theatre,
label: gettext("Theatre")
},
# Legacy default value
%{
id: :meeting,
label: gettext("Meeting")
}
]
end
@spec extra_categories :: [%{id: atom(), label: String.t()}]
defp extra_categories do
:mobilizon
|> Application.get_env(:instance)
|> Keyword.get(:extra_categories, [])
end
end

@ -1875,3 +1875,153 @@ msgstr ""
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:46
msgid "Auto, boat and air"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:14
msgid "Book clubs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:18
msgid "Business"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:22
msgid "Causes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:26
msgid "Comedy"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:50
msgid "Community"
msgstr "التعليقات"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:30
msgid "Crafts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:54
msgid "Family & Education"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:58
msgid "Fashion & Beauty"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:62
msgid "Film & Media"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:34
msgid "Food & Drink"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:66
msgid "Games"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:38
msgid "Health"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:78
msgid "LGBTQ"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:70
msgid "Language & Culture"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:74
msgid "Learning"
msgstr "تنبيه"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:127
msgid "Meeting"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:82
msgid "Movements and politics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:42
msgid "Music"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:86
msgid "Networking"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:106
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:90
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:94
msgid "Performing & Visual Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:98
msgid "Pets"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:102
msgid "Photography"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:114
msgid "Science & Tech"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:110
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:118
msgid "Sports"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:122
msgid "Theatre"
msgstr ""

@ -1851,3 +1851,153 @@ msgstr ""
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:46
msgid "Auto, boat and air"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:14
msgid "Book clubs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:18
msgid "Business"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:22
msgid "Causes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:26
msgid "Comedy"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:50
msgid "Community"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:30
msgid "Crafts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:54
msgid "Family & Education"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:58
msgid "Fashion & Beauty"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:62
msgid "Film & Media"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:34
msgid "Food & Drink"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:66
msgid "Games"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:38
msgid "Health"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:78
msgid "LGBTQ"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:70
msgid "Language & Culture"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:74
msgid "Learning"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:127
msgid "Meeting"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:82
msgid "Movements and politics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:42
msgid "Music"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:86
msgid "Networking"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:106
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:90
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:94
msgid "Performing & Visual Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:98
msgid "Pets"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:102
msgid "Photography"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:114
msgid "Science & Tech"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:110
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:118
msgid "Sports"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:122
msgid "Theatre"
msgstr ""

@ -2111,3 +2111,153 @@ msgstr ""
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:46
msgid "Auto, boat and air"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:14
msgid "Book clubs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:18
msgid "Business"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:22
msgid "Causes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:26
msgid "Comedy"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:50
msgid "Community"
msgstr "Comentaris"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:30
msgid "Crafts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:54
msgid "Family & Education"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:58
msgid "Fashion & Beauty"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:62
msgid "Film & Media"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:34
msgid "Food & Drink"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:66
msgid "Games"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:38
msgid "Health"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:78
msgid "LGBTQ"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:70
msgid "Language & Culture"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:74
msgid "Learning"
msgstr "Alerta"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:127
msgid "Meeting"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:82
msgid "Movements and politics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:42
msgid "Music"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:86
msgid "Networking"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:106
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:90
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:94
msgid "Performing & Visual Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:98
msgid "Pets"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:102
msgid "Photography"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:114
msgid "Science & Tech"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:110
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:118
msgid "Sports"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:122
msgid "Theatre"
msgstr ""

@ -2207,3 +2207,153 @@ msgstr "Chcete-li tuto pozvánku přijmout, přejděte na stránku správce prof
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr "Zobrazit podrobnosti"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:46
msgid "Auto, boat and air"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:14
msgid "Book clubs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:18
msgid "Business"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:22
msgid "Causes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:26
msgid "Comedy"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:50
msgid "Community"
msgstr "Komentáře"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:30
msgid "Crafts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:54
msgid "Family & Education"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:58
msgid "Fashion & Beauty"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:62
msgid "Film & Media"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:34
msgid "Food & Drink"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:66
msgid "Games"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:38
msgid "Health"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:78
msgid "LGBTQ"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:70
msgid "Language & Culture"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:74
msgid "Learning"
msgstr "Upozornění"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:127
msgid "Meeting"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:82
msgid "Movements and politics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:42
msgid "Music"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:86
msgid "Networking"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:106
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:90
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:94
msgid "Performing & Visual Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:98
msgid "Pets"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:102
msgid "Photography"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:114
msgid "Science & Tech"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:110
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:118
msgid "Sports"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:122
msgid "Theatre"
msgstr ""

@ -2261,3 +2261,153 @@ msgstr ""
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr "Die Details ansehen"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:46
msgid "Auto, boat and air"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:14
msgid "Book clubs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:18
msgid "Business"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:22
msgid "Causes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:26
msgid "Comedy"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:50
msgid "Community"
msgstr "Kommentare"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:30
msgid "Crafts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:54
msgid "Family & Education"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:58
msgid "Fashion & Beauty"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:62
msgid "Film & Media"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:34
msgid "Food & Drink"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:66
msgid "Games"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:38
msgid "Health"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:78
msgid "LGBTQ"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:70
msgid "Language & Culture"
msgstr ""
#, elixir-autogen, elixir-format, fuzzy
#: lib/mobilizon/events/categories.ex:74
msgid "Learning"
msgstr "Warnung"
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:127
msgid "Meeting"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:82
msgid "Movements and politics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:42
msgid "Music"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:86
msgid "Networking"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:106
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:90
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:94
msgid "Performing & Visual Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:98
msgid "Pets"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:102
msgid "Photography"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:114
msgid "Science & Tech"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:110
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:118
msgid "Sports"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:122
msgid "Theatre"
msgstr ""

@ -1830,3 +1830,153 @@ msgstr ""
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:46
msgid "Auto, boat and air"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:14
msgid "Book clubs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:18
msgid "Business"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:22
msgid "Causes"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:26
msgid "Comedy"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:50
msgid "Community"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:30
msgid "Crafts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:54
msgid "Family & Education"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:58
msgid "Fashion & Beauty"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:62
msgid "Film & Media"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:34
msgid "Food & Drink"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:66
msgid "Games"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:38
msgid "Health"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:78
msgid "LGBTQ"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:70
msgid "Language & Culture"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:74
msgid "Learning"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:127
msgid "Meeting"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:82
msgid "Movements and politics"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:42
msgid "Music"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:86
msgid "Networking"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:106
msgid "Outdoors & Adventure"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:90
msgid "Party"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:94
msgid "Performing & Visual Arts"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:98
msgid "Pets"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:102
msgid "Photography"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:114
msgid "Science & Tech"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:110
msgid "Spirituality, Religion & Beliefs"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:118
msgid "Sports"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:122
msgid "Theatre"
msgstr ""

@ -1883,3 +1883,153 @@ msgstr ""
#: lib/web/templates/email/instance_follow.html.heex:75
msgid "View the details"
msgstr ""
#, elixir-autogen, elixir-format
#: lib/mobilizon/events/categories.ex:10
msgid "Arts"
msgstr ""