' + \
diff --git a/pronouns.py b/pronouns.py
new file mode 100644
index 000000000..64b189d7e
--- /dev/null
+++ b/pronouns.py
@@ -0,0 +1,98 @@
+__filename__ = "pronouns.py"
+__author__ = "Bob Mottram"
+__license__ = "AGPL3+"
+__version__ = "1.5.0"
+__maintainer__ = "Bob Mottram"
+__email__ = "bob@libreserver.org"
+__status__ = "Production"
+__module_group__ = "Profile Metadata"
+
+
+from utils import get_attachment_property_value
+from utils import remove_html
+
+
+def get_pronouns(actor_json: {}) -> str:
+ """Returns pronouns for the given actor
+ """
+ if not actor_json.get('attachment'):
+ return ''
+ if not isinstance(actor_json['attachment'], list):
+ return ''
+ for property_value in actor_json['attachment']:
+ name_value = None
+ if property_value.get('name'):
+ name_value = property_value['name'].lower()
+ elif property_value.get('schema:name'):
+ name_value = property_value['schema:name'].lower()
+ if not name_value:
+ continue
+ if 'pronouns' not in name_value:
+ continue
+ if not property_value.get('type'):
+ continue
+ prop_value_name, _ = \
+ get_attachment_property_value(property_value)
+ if not prop_value_name:
+ continue
+ if not property_value['type'].endswith('PropertyValue'):
+ continue
+ pronouns_text = property_value[prop_value_name]
+ return remove_html(pronouns_text)
+ return ''
+
+
+def set_pronouns(actor_json: {}, pronouns: str) -> None:
+ """Sets pronouns for the given actor
+ """
+ if not actor_json.get('attachment'):
+ actor_json['attachment'] = []
+
+ # remove any existing value
+ property_found = None
+ for property_value in actor_json['attachment']:
+ name_value = None
+ if property_value.get('name'):
+ name_value = property_value['name'].lower()
+ elif property_value.get('schema:name'):
+ name_value = property_value['schema:name'].lower()
+ if not name_value:
+ continue
+ if not property_value.get('type'):
+ continue
+ if 'pronouns' not in name_value:
+ continue
+ property_found = property_value
+ break
+
+ if property_found:
+ actor_json['attachment'].remove(property_found)
+
+ for property_value in actor_json['attachment']:
+ name_value = None
+ if property_value.get('name'):
+ name_value = property_value['name']
+ elif property_value.get('schema:name'):
+ name_value = property_value['schema:name']
+ if not name_value:
+ continue
+ if not property_value.get('type'):
+ continue
+ name_value = name_value.lower()
+ if 'pronouns' not in name_value:
+ continue
+ if not property_value['type'].endswith('PropertyValue'):
+ continue
+ prop_value_name, _ = \
+ get_attachment_property_value(property_value)
+ if not prop_value_name:
+ continue
+ property_value[prop_value_name] = pronouns
+ return
+
+ new_pronouns = {
+ "type": "PropertyValue",
+ "name": "Pronouns",
+ "value": pronouns
+ }
+ actor_json['attachment'].append(new_pronouns)
diff --git a/translations/ar.json b/translations/ar.json
index 3e58dcf0f..7ecae810d 100644
--- a/translations/ar.json
+++ b/translations/ar.json
@@ -696,5 +696,6 @@
"PGP Public Key": "مفتاح PGP العام",
"Don't show already seen posts": "لا تظهر المشاركات التي تمت مشاهدتها بالفعل",
"Watermark image": "صورة العلامة المائية",
- "Apply a watermark to uploaded images": "إضافة علامة مائية على الصور التي تم تحميلها"
+ "Apply a watermark to uploaded images": "إضافة علامة مائية على الصور التي تم تحميلها",
+ "Pronouns": "الضمائر"
}
diff --git a/translations/bn.json b/translations/bn.json
index 2a9467ca7..6d86d3599 100644
--- a/translations/bn.json
+++ b/translations/bn.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP পাবলিক কী",
"Don't show already seen posts": "ইতিমধ্যে দেখা পোস্ট দেখাবেন না",
"Watermark image": "ওয়াটারমার্ক ইমেজ",
- "Apply a watermark to uploaded images": "আপলোড করা ছবিগুলিতে একটি জলছাপ প্রয়োগ করুন"
+ "Apply a watermark to uploaded images": "আপলোড করা ছবিগুলিতে একটি জলছাপ প্রয়োগ করুন",
+ "Pronouns": "সর্বনাম"
}
diff --git a/translations/ca.json b/translations/ca.json
index 8d578c341..4b730b398 100644
--- a/translations/ca.json
+++ b/translations/ca.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Clau pública PGP",
"Don't show already seen posts": "No mostris les publicacions ja vistes",
"Watermark image": "Imatge de filigrana",
- "Apply a watermark to uploaded images": "Apliqueu una marca d'aigua a les imatges penjades"
+ "Apply a watermark to uploaded images": "Apliqueu una marca d'aigua a les imatges penjades",
+ "Pronouns": "Els pronoms"
}
diff --git a/translations/cy.json b/translations/cy.json
index 9eafd4657..3fcdc8fc8 100644
--- a/translations/cy.json
+++ b/translations/cy.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Allwedd Gyhoeddus PGP",
"Don't show already seen posts": "Peidiwch â dangos postiadau a welwyd eisoes",
"Watermark image": "Delwedd dyfrnod",
- "Apply a watermark to uploaded images": "Cymhwyso dyfrnod i ddelweddau sydd wedi'u llwytho i fyny"
+ "Apply a watermark to uploaded images": "Cymhwyso dyfrnod i ddelweddau sydd wedi'u llwytho i fyny",
+ "Pronouns": "Rhagenwau"
}
diff --git a/translations/de.json b/translations/de.json
index 6bda2e6f3..12fe63f2c 100644
--- a/translations/de.json
+++ b/translations/de.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Öffentlicher PGP-Schlüssel",
"Don't show already seen posts": "Bereits gesehene Beiträge nicht anzeigen",
"Watermark image": "Wasserzeichenbild",
- "Apply a watermark to uploaded images": "Hochgeladenen Bildern ein Wasserzeichen hinzufügen"
+ "Apply a watermark to uploaded images": "Hochgeladenen Bildern ein Wasserzeichen hinzufügen",
+ "Pronouns": "Pronomen"
}
diff --git a/translations/el.json b/translations/el.json
index b27dfb2a8..7c8543aee 100644
--- a/translations/el.json
+++ b/translations/el.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Δημόσιο κλειδί PGP",
"Don't show already seen posts": "Να μην εμφανίζονται οι αναρτήσεις που έχετε ήδη δει",
"Watermark image": "Εικόνα υδατογραφήματος",
- "Apply a watermark to uploaded images": "Εφαρμόστε ένα υδατογράφημα στις μεταφορτωμένες εικόνες"
+ "Apply a watermark to uploaded images": "Εφαρμόστε ένα υδατογράφημα στις μεταφορτωμένες εικόνες",
+ "Pronouns": "Αντωνυμίες"
}
diff --git a/translations/en.json b/translations/en.json
index 27ae0d56f..6bc90e5a0 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP Public Key",
"Don't show already seen posts": "Don't show already seen posts",
"Watermark image": "Watermark image",
- "Apply a watermark to uploaded images": "Apply a watermark to uploaded images"
+ "Apply a watermark to uploaded images": "Apply a watermark to uploaded images",
+ "Pronouns": "Pronouns"
}
diff --git a/translations/es.json b/translations/es.json
index a1ee62495..fb043730f 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Clave pública PGP",
"Don't show already seen posts": "No mostrar publicaciones ya vistas",
"Watermark image": "Imagen de marca de agua",
- "Apply a watermark to uploaded images": "Aplicar una marca de agua a las imágenes cargadas"
+ "Apply a watermark to uploaded images": "Aplicar una marca de agua a las imágenes cargadas",
+ "Pronouns": "Pronombres"
}
diff --git a/translations/fa.json b/translations/fa.json
index e50aacfd3..cc764cc6e 100644
--- a/translations/fa.json
+++ b/translations/fa.json
@@ -696,5 +696,6 @@
"PGP Public Key": "کلید عمومی PGP",
"Don't show already seen posts": "پست های قبلا دیده شده را نشان ندهید",
"Watermark image": "تصویر واترمارک",
- "Apply a watermark to uploaded images": "اعمال واترمارک روی تصاویر آپلود شده"
+ "Apply a watermark to uploaded images": "اعمال واترمارک روی تصاویر آپلود شده",
+ "Pronouns": "ضمایر"
}
diff --git a/translations/fi.json b/translations/fi.json
index b275ffa37..f54fcec57 100644
--- a/translations/fi.json
+++ b/translations/fi.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP julkinen avain",
"Don't show already seen posts": "Älä näytä jo nähtyjä viestejä",
"Watermark image": "Vesileiman kuva",
- "Apply a watermark to uploaded images": "Lisää ladattuihin kuviin vesileima"
+ "Apply a watermark to uploaded images": "Lisää ladattuihin kuviin vesileima",
+ "Pronouns": "Pronominit"
}
diff --git a/translations/fr.json b/translations/fr.json
index e151a3ea6..97b9d0592 100644
--- a/translations/fr.json
+++ b/translations/fr.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Clé publique PGP",
"Don't show already seen posts": "Ne pas afficher les messages déjà vus",
"Watermark image": "Image en filigrane",
- "Apply a watermark to uploaded images": "Appliquer un filigrane aux images téléchargées"
+ "Apply a watermark to uploaded images": "Appliquer un filigrane aux images téléchargées",
+ "Pronouns": "Pronoms"
}
diff --git a/translations/ga.json b/translations/ga.json
index 8afe817d0..402cf2be3 100644
--- a/translations/ga.json
+++ b/translations/ga.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Eochair Phoiblí PGP",
"Don't show already seen posts": "Ná taispeáin postálacha atá feicthe cheana féin",
"Watermark image": "Íomhá comhartha uisce",
- "Apply a watermark to uploaded images": "Cuir comhartha uisce i bhfeidhm ar íomhánna uaslódáilte"
+ "Apply a watermark to uploaded images": "Cuir comhartha uisce i bhfeidhm ar íomhánna uaslódáilte",
+ "Pronouns": "Forainmneacha"
}
diff --git a/translations/he.json b/translations/he.json
index 957676ca3..fbfd7d239 100644
--- a/translations/he.json
+++ b/translations/he.json
@@ -696,5 +696,6 @@
"PGP Public Key": "מפתח PGP ציבורי",
"Don't show already seen posts": "אל תראה פוסטים שכבר נראו",
"Watermark image": "תמונת סימן מים",
- "Apply a watermark to uploaded images": "החל סימן מים על תמונות שהועלו"
+ "Apply a watermark to uploaded images": "החל סימן מים על תמונות שהועלו",
+ "Pronouns": "כינויים"
}
diff --git a/translations/hi.json b/translations/hi.json
index 165dd963a..a1d44693f 100644
--- a/translations/hi.json
+++ b/translations/hi.json
@@ -696,5 +696,6 @@
"PGP Public Key": "पीजीपी सार्वजनिक कुंजी",
"Don't show already seen posts": "पहले से देखी गई पोस्ट न दिखाएं",
"Watermark image": "वॉटरमार्क छवि",
- "Apply a watermark to uploaded images": "अपलोड की गई छवियों पर वॉटरमार्क लागू करें"
+ "Apply a watermark to uploaded images": "अपलोड की गई छवियों पर वॉटरमार्क लागू करें",
+ "Pronouns": "सर्वनाम"
}
diff --git a/translations/it.json b/translations/it.json
index 8d662c087..d253ecb5a 100644
--- a/translations/it.json
+++ b/translations/it.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Chiave pubblica PGP",
"Don't show already seen posts": "Non mostrare i post già visti",
"Watermark image": "Immagine filigrana",
- "Apply a watermark to uploaded images": "Applicare una filigrana alle immagini caricate"
+ "Apply a watermark to uploaded images": "Applicare una filigrana alle immagini caricate",
+ "Pronouns": "Pronomi"
}
diff --git a/translations/ja.json b/translations/ja.json
index a02b001c4..233ac3491 100644
--- a/translations/ja.json
+++ b/translations/ja.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP公開鍵",
"Don't show already seen posts": "すでに閲覧した投稿を表示しない",
"Watermark image": "透かし画像",
- "Apply a watermark to uploaded images": "アップロードした画像に透かしを適用する"
+ "Apply a watermark to uploaded images": "アップロードした画像に透かしを適用する",
+ "Pronouns": "代名詞"
}
diff --git a/translations/ko.json b/translations/ko.json
index 687760ce9..91694e996 100644
--- a/translations/ko.json
+++ b/translations/ko.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP 공개 키",
"Don't show already seen posts": "이미 본 게시물을 표시하지 않음",
"Watermark image": "워터마크 이미지",
- "Apply a watermark to uploaded images": "업로드한 이미지에 워터마크를 적용합니다"
+ "Apply a watermark to uploaded images": "업로드한 이미지에 워터마크를 적용합니다",
+ "Pronouns": "대명사"
}
diff --git a/translations/ku.json b/translations/ku.json
index 85e7884ca..318fd8700 100644
--- a/translations/ku.json
+++ b/translations/ku.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Mifteya Giştî ya PGP",
"Don't show already seen posts": "Mesajên ku berê hatine dîtin nîşan nedin",
"Watermark image": "Wêneyê Watermark",
- "Apply a watermark to uploaded images": "Li ser wêneyên barkirî ava nîşanek bicîh bikin"
+ "Apply a watermark to uploaded images": "Li ser wêneyên barkirî ava nîşanek bicîh bikin",
+ "Pronouns": "Cînavk"
}
diff --git a/translations/nl.json b/translations/nl.json
index 4d1074443..58c6cef20 100644
--- a/translations/nl.json
+++ b/translations/nl.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP publieke sleutel",
"Don't show already seen posts": "Toon geen reeds bekeken berichten",
"Watermark image": "Watermerk afbeelding",
- "Apply a watermark to uploaded images": "Een watermerk toepassen op geüploade afbeeldingen"
+ "Apply a watermark to uploaded images": "Een watermerk toepassen op geüploade afbeeldingen",
+ "Pronouns": "Voornaamwoorden"
}
diff --git a/translations/oc.json b/translations/oc.json
index ec316b374..b6a6de6ad 100644
--- a/translations/oc.json
+++ b/translations/oc.json
@@ -692,5 +692,6 @@
"PGP Public Key": "PGP Public Key",
"Don't show already seen posts": "Don't show already seen posts",
"Watermark image": "Watermark image",
- "Apply a watermark to uploaded images": "Apply a watermark to uploaded images"
+ "Apply a watermark to uploaded images": "Apply a watermark to uploaded images",
+ "Pronouns": "Pronouns"
}
diff --git a/translations/pl.json b/translations/pl.json
index 60d93eb35..d223700a5 100644
--- a/translations/pl.json
+++ b/translations/pl.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Klucz publiczny PGP",
"Don't show already seen posts": "Nie pokazuj już wyświetlonych postów",
"Watermark image": "Obraz znaku wodnego",
- "Apply a watermark to uploaded images": "Zastosuj znak wodny do przesłanych obrazów"
+ "Apply a watermark to uploaded images": "Zastosuj znak wodny do przesłanych obrazów",
+ "Pronouns": "Zaimki"
}
diff --git a/translations/pt.json b/translations/pt.json
index 1ae6b3e58..84d935ec9 100644
--- a/translations/pt.json
+++ b/translations/pt.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Chave pública PGP",
"Don't show already seen posts": "Não mostrar posts já vistos",
"Watermark image": "Imagem de marca de água",
- "Apply a watermark to uploaded images": "Aplicar uma marca de água nas imagens enviadas"
+ "Apply a watermark to uploaded images": "Aplicar uma marca de água nas imagens enviadas",
+ "Pronouns": "Pronomes"
}
diff --git a/translations/ru.json b/translations/ru.json
index 439fc7d35..2ea0c6f5e 100644
--- a/translations/ru.json
+++ b/translations/ru.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Открытый ключ PGP",
"Don't show already seen posts": "Не показывать уже просмотренные публикации",
"Watermark image": "Изображение водяного знака",
- "Apply a watermark to uploaded images": "Накладывать водяной знак на загружаемые изображения"
+ "Apply a watermark to uploaded images": "Накладывать водяной знак на загружаемые изображения",
+ "Pronouns": "Местоимения"
}
diff --git a/translations/sw.json b/translations/sw.json
index c8a035948..f76b4bd0f 100644
--- a/translations/sw.json
+++ b/translations/sw.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Ufunguo wa Umma wa PGP",
"Don't show already seen posts": "Usionyeshe machapisho ambayo tayari yameonekana",
"Watermark image": "Picha ya watermark",
- "Apply a watermark to uploaded images": "Tumia watermark kwa picha zilizopakiwa"
+ "Apply a watermark to uploaded images": "Tumia watermark kwa picha zilizopakiwa",
+ "Pronouns": "Viwakilishi"
}
diff --git a/translations/tr.json b/translations/tr.json
index 45978536c..ea0ec9409 100644
--- a/translations/tr.json
+++ b/translations/tr.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP Genel Anahtarı",
"Don't show already seen posts": "Daha önce görülen gönderileri gösterme",
"Watermark image": "Filigran resmi",
- "Apply a watermark to uploaded images": "Yüklenen görsellere filigran uygulayın"
+ "Apply a watermark to uploaded images": "Yüklenen görsellere filigran uygulayın",
+ "Pronouns": "Zamirler"
}
diff --git a/translations/uk.json b/translations/uk.json
index c1d332991..91ad01a1f 100644
--- a/translations/uk.json
+++ b/translations/uk.json
@@ -696,5 +696,6 @@
"PGP Public Key": "Відкритий ключ PGP",
"Don't show already seen posts": "Не показувати вже переглянуті публікації",
"Watermark image": "Зображення водяного знака",
- "Apply a watermark to uploaded images": "Застосування водяного знака до завантажених зображень"
+ "Apply a watermark to uploaded images": "Застосування водяного знака до завантажених зображень",
+ "Pronouns": "Займенники"
}
diff --git a/translations/yi.json b/translations/yi.json
index 0aeabfe40..57e105746 100644
--- a/translations/yi.json
+++ b/translations/yi.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP ציבור שליסל",
"Don't show already seen posts": "צי ניט ווייַזן שוין געזען אַרטיקלען",
"Watermark image": "וואָטערמאַרק בילד",
- "Apply a watermark to uploaded images": "צולייגן אַ וואָטערמאַרק צו ופּלאָאַדעד בילדער"
+ "Apply a watermark to uploaded images": "צולייגן אַ וואָטערמאַרק צו ופּלאָאַדעד בילדער",
+ "Pronouns": "פּראָנאָונס"
}
diff --git a/translations/zh.json b/translations/zh.json
index 55d38b51d..855925d72 100644
--- a/translations/zh.json
+++ b/translations/zh.json
@@ -696,5 +696,6 @@
"PGP Public Key": "PGP 公钥",
"Don't show already seen posts": "不显示已经看过的帖子",
"Watermark image": "水印图像",
- "Apply a watermark to uploaded images": "将水印应用于上传的图像"
+ "Apply a watermark to uploaded images": "将水印应用于上传的图像",
+ "Pronouns": "代词"
}
diff --git a/webapp_person_options.py b/webapp_person_options.py
index c5596b1a5..bd260847a 100644
--- a/webapp_person_options.py
+++ b/webapp_person_options.py
@@ -145,6 +145,7 @@ def html_person_options(default_timeline: str,
donate_url: str,
web_address: str,
gemini_link: str,
+ pronouns: str,
xmpp_address: str,
matrix_address: str,
ssb_address: str,
@@ -388,6 +389,10 @@ def html_person_options(default_timeline: str,
if ctr > 0:
options_str += other_accounts_html
+ if pronouns:
+ options_str += \
+ ' ' + translate['Pronouns'] + \
+ ': ' + pronouns + '
\n'
if email_address:
options_str += \
' ' + translate['Email'] + \
diff --git a/webapp_profile.py b/webapp_profile.py
index ef40437c1..4d3fd9c2b 100644
--- a/webapp_profile.py
+++ b/webapp_profile.py
@@ -66,6 +66,7 @@ from posts import get_max_profile_posts
from donate import get_donation_url
from donate import get_website
from donate import get_gemini_link
+from pronouns import get_pronouns
from xmpp import get_xmpp_address
from matrix import get_matrix_address
from ssb import get_ssb_address
@@ -1082,6 +1083,7 @@ def html_profile(signing_priv_key_pem: str,
pgp_pub_key = get_pgp_pub_key(profile_json)
pgp_fingerprint = get_pgp_fingerprint(profile_json)
email_address = get_email_address(profile_json)
+ pronouns = get_pronouns(profile_json)
xmpp_address = get_xmpp_address(profile_json)
matrix_address = get_matrix_address(profile_json)
ssb_address = get_ssb_address(profile_json)
@@ -1090,7 +1092,7 @@ def html_profile(signing_priv_key_pem: str,
cwtch_address = get_cwtch_address(profile_json)
verified_site_checkmark = '✔'
premium = is_premium_account(base_dir, nickname, domain)
- if donate_url or website_url or repo_url or xmpp_address or \
+ if donate_url or website_url or repo_url or pronouns or xmpp_address or \
matrix_address or ssb_address or tox_address or briar_address or \
cwtch_address or pgp_pub_key or enigma_pub_key or \
pgp_fingerprint or email_address:
@@ -1150,6 +1152,9 @@ def html_profile(signing_priv_key_pem: str,
'
Blog: ' + \
blog_address + '
\n'
+ if pronouns:
+ donate_section += \
+ '' + translate['Pronouns'] + ': ' + pronouns + '
\n'
if xmpp_address:
donate_section += \
'' + translate['XMPP'] + ':