@bettertogether/community-engine-vue 0.1.7 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/README.md +140 -1
  2. package/dist/assets/BBadge.vue_vue_type_script_setup_true_lang-IIZ8QpjG-Z9WDKHqT.js +1 -0
  3. package/dist/assets/BCardText.vue_vue_type_script_setup_true_lang-Be6CD36N-B5JCTdmm.js +3 -0
  4. package/dist/assets/BFormSelect.vue_vue_type_script_setup_true_lang-BigptVap-B_HbOOZR.js +1 -0
  5. package/dist/assets/BRow.vue_vue_type_script_setup_true_lang-69TY75-8-DJdEdyx7.js +1 -0
  6. package/dist/assets/Communities-Cx4tT-bx.js +1 -0
  7. package/dist/assets/Communities-n33ssuUH.css +1 -0
  8. package/dist/assets/CommunityConversation-bBkYBs2k.css +1 -0
  9. package/dist/assets/CommunityConversation-jHAnv_Ps.js +1 -0
  10. package/dist/assets/CommunityConversations-rEDGS7To.js +1 -0
  11. package/dist/assets/CommunityEvent-CUdT0aT4.js +1 -0
  12. package/dist/assets/CommunityEvents-rsOgcxQr.js +1 -0
  13. package/dist/assets/CommunityHome-ChuTE2Nz.js +1 -0
  14. package/dist/assets/CommunityJoaTu-CpLIY_83.js +1 -0
  15. package/dist/assets/CommunityMembers-C3UtzQGp.css +1 -0
  16. package/dist/assets/CommunityMembers-DKf74ltl.js +1 -0
  17. package/dist/assets/CommunityPage-C5x23iQl.css +1 -0
  18. package/dist/assets/CommunityPage-CRYg9-rW.js +1 -0
  19. package/dist/assets/CommunityPages-IsLTNFC3.js +1 -0
  20. package/dist/assets/CommunityPost-BOnqqxVs.js +1 -0
  21. package/dist/assets/CommunityPost-BRYtkDSY.css +1 -0
  22. package/dist/assets/CommunityPosts-DY1olmcU.js +1 -0
  23. package/dist/assets/Error404-D10VQARe.js +1 -0
  24. package/dist/assets/EventCard-vfutXTdg.js +1 -0
  25. package/dist/assets/EventList-ChtehYcJ.js +1 -0
  26. package/dist/assets/ExtensionSlot-DJKbrq4c.js +1 -0
  27. package/dist/assets/PostList-BuHrBBqX.css +1 -0
  28. package/dist/assets/PostList-DYFgxlE8.js +1 -0
  29. package/dist/assets/SyncBadge-B1JBsdUk.js +1 -0
  30. package/dist/assets/SyncBadge-FNO-QLuu.css +1 -0
  31. package/dist/assets/UserPasswordNew-D_Djldm9.css +1 -0
  32. package/dist/assets/UserPasswordNew-al9bNBTZ.js +1 -0
  33. package/dist/assets/UserPasswordReset-42zs98RW.js +1 -0
  34. package/dist/assets/UserPasswordReset-D_6OQDZY.css +1 -0
  35. package/dist/assets/UserResendConfirmation-CGavYB81.js +1 -0
  36. package/dist/assets/UserResendConfirmation-DNTHcaar.css +1 -0
  37. package/dist/assets/UserSignIn-BIRb0HkV.js +1 -0
  38. package/dist/assets/UserSignIn-C-Pol8OD.css +1 -0
  39. package/dist/assets/UserSignUp-ChkKQAd2.css +1 -0
  40. package/dist/assets/UserSignUp-Df6o3vlO.js +1 -0
  41. package/dist/assets/better-together-logo-61cxo5d5.png +0 -0
  42. package/dist/assets/index-BFt-JKVh.css +5 -0
  43. package/dist/assets/index-COo3Jb7v.js +1088 -0
  44. package/dist/assets/nodefs-Bfyh92qg.js +1 -0
  45. package/dist/assets/opfs-ahp-BLzlXf6u.js +3 -0
  46. package/dist/assets/pglite-BdRI_ZYT.wasm +0 -0
  47. package/dist/assets/pglite-COscPi1Y.data +0 -0
  48. package/dist/assets/usePages-DDjDQRCy.js +1 -0
  49. package/dist/assets/usePosts-Bf2Ccwr4.js +1 -0
  50. package/{public → dist}/index.html +9 -19
  51. package/package.json +57 -45
  52. package/src/BtApp.vue +34 -43
  53. package/src/components/BtBrandingLogo.vue +10 -18
  54. package/src/components/BtHeader.vue +31 -89
  55. package/src/components/BtMainContent.vue +12 -43
  56. package/src/components/BtNavBar.vue +25 -38
  57. package/src/components/BtNavItem.vue +25 -58
  58. package/src/components/BtNavUser.vue +65 -86
  59. package/src/components/BtProfileForm.vue +48 -39
  60. package/src/components/BtUserNewPasswordForm.vue +52 -74
  61. package/src/components/BtUserResendConfirmationForm.vue +45 -83
  62. package/src/components/BtUserResetPasswordForm.vue +45 -77
  63. package/src/components/BtUserSignInForm.vue +59 -75
  64. package/src/components/BtUserSignUpForm.vue +90 -103
  65. package/src/components/CommunityForm.vue +47 -39
  66. package/src/components/community/CommunityCard.vue +113 -0
  67. package/src/components/community/CommunityHeader.vue +91 -0
  68. package/src/components/community/CommunityList.vue +59 -0
  69. package/src/components/community/MemberRoleRow.vue +107 -0
  70. package/src/components/conversation/ConversationCard.vue +49 -0
  71. package/src/components/conversation/ConversationDetail.vue +53 -0
  72. package/src/components/conversation/ConversationList.vue +51 -0
  73. package/src/components/conversation/MessageForm.vue +45 -0
  74. package/src/components/conversation/MessageItem.vue +43 -0
  75. package/src/components/conversation/MessageList.vue +39 -0
  76. package/src/components/event/EventCard.vue +82 -0
  77. package/src/components/event/EventForm.vue +99 -0
  78. package/src/components/event/EventList.vue +47 -0
  79. package/src/components/invitation/InvitationCard.vue +56 -0
  80. package/src/components/invitation/InvitationForm.vue +70 -0
  81. package/src/components/invitation/InvitationList.vue +51 -0
  82. package/src/components/joatu/AgreementCard.vue +57 -0
  83. package/src/components/joatu/AgreementList.vue +51 -0
  84. package/src/components/joatu/OfferCard.vue +65 -0
  85. package/src/components/joatu/OfferForm.vue +82 -0
  86. package/src/components/joatu/OfferList.vue +51 -0
  87. package/src/components/joatu/RequestCard.vue +65 -0
  88. package/src/components/joatu/RequestForm.vue +82 -0
  89. package/src/components/joatu/RequestList.vue +51 -0
  90. package/src/components/page/PageCard.vue +55 -0
  91. package/src/components/page/PageDetail.vue +35 -0
  92. package/src/components/page/PageList.vue +51 -0
  93. package/src/components/person/MemberList.vue +61 -0
  94. package/src/components/person/PersonAvatar.vue +54 -0
  95. package/src/components/person/PersonCard.vue +47 -0
  96. package/src/components/post/PostCard.vue +105 -0
  97. package/src/components/post/PostDetail.vue +98 -0
  98. package/src/components/post/PostForm.vue +84 -0
  99. package/src/components/post/PostList.vue +53 -0
  100. package/src/components/role/BlockButton.vue +44 -0
  101. package/src/components/role/RoleBadge.vue +19 -0
  102. package/src/components/role/RoleGate.vue +62 -0
  103. package/src/components/role/RoleSelector.vue +29 -0
  104. package/src/components/shared/ExtensionSlot.vue +27 -0
  105. package/src/components/sync/OfflineBanner.vue +49 -0
  106. package/src/components/sync/SyncBadge.vue +108 -0
  107. package/src/components/sync/SyncStatusBar.vue +121 -0
  108. package/src/composables/useCommunities.js +19 -0
  109. package/src/composables/useConversations.js +5 -0
  110. package/src/composables/useEvents.js +28 -0
  111. package/src/composables/useInvitations.js +10 -0
  112. package/src/composables/useJoaTuAgreements.js +11 -0
  113. package/src/composables/useJoaTuOffers.js +10 -0
  114. package/src/composables/useJoaTuRequests.js +10 -0
  115. package/src/composables/useMembers.js +30 -0
  116. package/src/composables/useMessages.js +5 -0
  117. package/src/composables/useNotifications.js +5 -0
  118. package/src/composables/usePages.js +6 -0
  119. package/src/composables/usePersonBlocks.js +65 -0
  120. package/src/composables/usePosts.js +27 -0
  121. package/src/composables/useResource.js +137 -0
  122. package/src/composables/useRoles.js +94 -0
  123. package/src/composables/useSyncStatus.js +22 -0
  124. package/src/composables/useToaster.js +20 -0
  125. package/src/context.js +18 -0
  126. package/src/db/client.js +343 -0
  127. package/src/db/migrations/001_initial.sql +131 -0
  128. package/src/db/migrations/003_conversations_invitations_pages_joatu.sql +76 -0
  129. package/src/db/sync.js +276 -0
  130. package/src/endpoints/BtApiAuth.js +1 -1
  131. package/src/endpoints/BtApiV1.js +1 -1
  132. package/src/extension.js +45 -0
  133. package/src/i18n/index.js +105 -0
  134. package/src/i18n/locales/en.json +275 -0
  135. package/src/i18n/locales/es.json +275 -0
  136. package/src/i18n/locales/fr.json +223 -0
  137. package/src/i18n/locales/uk.json +275 -0
  138. package/src/index.js +168 -22
  139. package/src/layouts/CommunityLayout.vue +89 -0
  140. package/src/main.js +16 -12
  141. package/src/mixins/error-handling.js +6 -15
  142. package/src/mixins/toaster.js +15 -10
  143. package/src/pages/Communities.vue +59 -0
  144. package/src/pages/Error404.vue +10 -14
  145. package/src/pages/Home.vue +11 -18
  146. package/src/pages/Me.vue +39 -59
  147. package/src/pages/UserPasswordNew.vue +12 -68
  148. package/src/pages/UserPasswordReset.vue +15 -64
  149. package/src/pages/UserResendConfirmation.vue +39 -113
  150. package/src/pages/UserSignIn.vue +18 -67
  151. package/src/pages/UserSignUp.vue +15 -64
  152. package/src/pages/community/CommunityConversation.vue +31 -0
  153. package/src/pages/community/CommunityConversations.vue +18 -0
  154. package/src/pages/community/CommunityEvent.vue +39 -0
  155. package/src/pages/community/CommunityEvents.vue +58 -0
  156. package/src/pages/community/CommunityHome.vue +49 -0
  157. package/src/pages/community/CommunityJoaTu.vue +115 -0
  158. package/src/pages/community/CommunityMembers.vue +23 -0
  159. package/src/pages/community/CommunityPage.vue +31 -0
  160. package/src/pages/community/CommunityPages.vue +25 -0
  161. package/src/pages/community/CommunityPost.vue +28 -0
  162. package/src/pages/community/CommunityPosts.vue +58 -0
  163. package/src/pages/community/CommunitySettingsPage.vue +117 -0
  164. package/src/pages/community/RoleManagerPage.vue +93 -0
  165. package/src/plugins/bootstrap-vue.js +5 -5
  166. package/src/plugins/font-awesome.js +3 -2
  167. package/src/plugins/index.js +9 -4
  168. package/src/plugins/progress.js +16 -0
  169. package/src/pwa/index.js +156 -0
  170. package/src/pwa/sw-helpers.js +130 -0
  171. package/src/router/communityRoutes.js +78 -0
  172. package/src/router/index.js +30 -144
  173. package/src/slot-registry.js +15 -0
  174. package/src/stores/auth.js +134 -0
  175. package/src/stores/communities.js +59 -0
  176. package/src/stores/index.js +5 -0
  177. package/src/stores/menus.js +14 -0
  178. package/src/stores/people.js +48 -0
  179. package/src/stores/sync.js +93 -0
  180. package/src/stylesheets/sync-indicators.scss +34 -0
  181. package/.env.sample +0 -1
  182. package/.eslintrc.js +0 -51
  183. package/.gitlab-ci.yml +0 -14
  184. package/.travis/.rbenv-gemsets +0 -1
  185. package/.travis/.ruby-version +0 -1
  186. package/.travis.yml +0 -31
  187. package/babel.config.js +0 -5
  188. package/cypress.json +0 -3
  189. package/deploy/build.sh +0 -8
  190. package/eslint.config.js +0 -16
  191. package/postcss.config.js +0 -5
  192. package/src/eslint.config.js +0 -16
  193. package/src/forms/BtProfileFormSchema.js +0 -19
  194. package/src/forms/BtUserConfirmationFormSchema.js +0 -20
  195. package/src/forms/BtUserNewPasswordFormSchema.js +0 -29
  196. package/src/forms/BtUserResetPasswordFormSchema.js +0 -20
  197. package/src/forms/BtUserSignInFormSchema.js +0 -29
  198. package/src/forms/BtUserSignUpFormSchema.js +0 -63
  199. package/src/forms/CommunityFormSchema.js +0 -19
  200. package/src/plugins/vue-form-generator.js +0 -4
  201. package/src/plugins/vue-loading.js +0 -10
  202. package/src/registerServiceWorker.js +0 -32
  203. package/src/store/index.js +0 -32
  204. package/src/store/modules/authentication.js +0 -170
  205. package/src/store/modules/communities.js +0 -98
  206. package/src/store/modules/community-engine.js +0 -14
  207. package/src/store/modules/menus.js +0 -52
  208. package/src/store/modules/people.js +0 -88
  209. package/src/vue.config.js +0 -0
  210. package/tests/e2e/.eslintrc.js +0 -12
  211. package/tests/e2e/plugins/index.js +0 -26
  212. package/tests/e2e/specs/home.js +0 -8
  213. package/tests/e2e/support/commands.js +0 -25
  214. package/tests/e2e/support/index.js +0 -20
  215. package/tests/unit/.eslintrc.js +0 -5
  216. package/tests/unit/example.spec.js +0 -13
  217. package/vue.config.js +0 -11
  218. package/webpack.config.js +0 -28
  219. /package/{public → dist}/_redirects +0 -0
  220. /package/{public → dist}/favicon.ico +0 -0
  221. /package/{public → dist}/img/favicon.ico +0 -0
  222. /package/{public → dist}/img/icons/android-chrome-192x192.png +0 -0
  223. /package/{public → dist}/img/icons/android-chrome-384x384.png +0 -0
  224. /package/{public → dist}/img/icons/apple-touch-icon.png +0 -0
  225. /package/{public → dist}/img/icons/favicon-16x16.png +0 -0
  226. /package/{public → dist}/img/icons/favicon-32x32.png +0 -0
  227. /package/{public → dist}/img/icons/favicon.ico +0 -0
  228. /package/{public → dist}/img/icons/mstile-150x150.png +0 -0
  229. /package/{public → dist}/img/icons/safari-pinned-tab.svg +0 -0
  230. /package/{public → dist}/robots.txt +0 -0
@@ -0,0 +1,223 @@
1
+ {
2
+ "bt": {
3
+ "actions": {
4
+ "view": "Voir",
5
+ "edit": "Modifier",
6
+ "delete": "Supprimer",
7
+ "remove": "Retirer",
8
+ "save": "Enregistrer",
9
+ "cancel": "Annuler",
10
+ "send": "Envoyer",
11
+ "create": "Créer",
12
+ "close": "Fermer",
13
+ "open": "Ouvrir",
14
+ "back": "Retour",
15
+ "submit": "Soumettre",
16
+ "confirm": "Confirmer",
17
+ "learn_more": "En savoir plus",
18
+ "read_more": "Lire la suite"
19
+ },
20
+ "sync": {
21
+ "status": {
22
+ "local": "Enregistré localement",
23
+ "local_title": "Enregistré localement — sera synchronisé une fois en ligne",
24
+ "syncing": "Synchronisation en cours…",
25
+ "synced": "Synchronisé",
26
+ "needs_auth": "Connecte-toi pour synchroniser",
27
+ "needs_auth_title": "Connecte-toi pour synchroniser cet élément",
28
+ "conflict": "Conflit"
29
+ },
30
+ "offline_banner": "Tu es hors ligne. Les modifications seront synchronisées à la reconnexion.",
31
+ "pending_count": "0 en attente | 1 en attente | {count} en attente",
32
+ "pending_label": "Synchronisation en attente",
33
+ "status_bar_online": "En ligne",
34
+ "status_bar_offline": "Hors ligne"
35
+ },
36
+ "auth": {
37
+ "sign_in": "Connexion",
38
+ "sign_out": "Déconnexion",
39
+ "sign_up": "Inscription",
40
+ "email": "Courriel",
41
+ "password": "Mot de passe",
42
+ "password_confirmation": "Confirmation du mot de passe",
43
+ "forgot_password": "Mot de passe oublié?",
44
+ "reset_password": "Réinitialiser le mot de passe",
45
+ "new_password": "Nouveau mot de passe",
46
+ "resend_confirmation": "Renvoyer la confirmation",
47
+ "sign_in_failed": "Connexion échouée. Vérifie tes identifiants.",
48
+ "sign_up_failed": "Inscription échouée. Réessaie.",
49
+ "errors": {
50
+ "invalid_credentials": "Courriel ou mot de passe invalide.",
51
+ "confirmation_mismatch": "La confirmation du mot de passe ne correspond pas.",
52
+ "network": "Impossible de se connecter au serveur. Réessaie."
53
+ }
54
+ },
55
+ "navigation": {
56
+ "home": "Accueil",
57
+ "communities": "Communautés",
58
+ "profile": "Profil",
59
+ "settings": "Paramètres"
60
+ },
61
+ "errors": {
62
+ "not_found": "Introuvable.",
63
+ "load_failed": "Chargement échoué. Réessaie.",
64
+ "save_failed": "Enregistrement échoué. Réessaie.",
65
+ "network": "Erreur réseau. Vérifie ta connexion.",
66
+ "unexpected": "Une erreur inattendue s'est produite."
67
+ },
68
+ "communities": {
69
+ "list_empty": "Aucune communauté trouvée.",
70
+ "loading": "Chargement des communautés…",
71
+ "view": "Voir la communauté",
72
+ "create": "Créer une communauté",
73
+ "edit": "Modifier la communauté",
74
+ "members_count": "0 membre | 1 membre | {count} membres"
75
+ },
76
+ "posts": {
77
+ "list_empty": "Aucune publication pour l'instant.",
78
+ "loading": "Chargement des publications…",
79
+ "read_more": "Lire la suite",
80
+ "save": "Enregistrer la publication",
81
+ "saving": "Enregistrement…",
82
+ "title_label": "Titre",
83
+ "content_label": "Contenu",
84
+ "privacy_label": "Confidentialité"
85
+ },
86
+ "events": {
87
+ "list_empty": "Aucun événement à venir.",
88
+ "loading": "Chargement des événements…",
89
+ "view": "Voir l'événement",
90
+ "save": "Enregistrer l'événement",
91
+ "name_label": "Nom de l'événement",
92
+ "description_label": "Description",
93
+ "starts_at_label": "Commence à",
94
+ "ends_at_label": "Se termine à"
95
+ },
96
+ "conversations": {
97
+ "list_empty": "Aucune conversation pour l'instant.",
98
+ "loading": "Chargement des conversations…",
99
+ "open": "Ouvrir",
100
+ "no_subject": "Sans objet",
101
+ "participants": "0 participant | 1 participant | {count} participants"
102
+ },
103
+ "messages": {
104
+ "list_empty": "Aucun message pour l'instant. Commence la conversation!",
105
+ "loading": "Chargement des messages…",
106
+ "placeholder": "Écris un message…",
107
+ "send": "Envoyer",
108
+ "author_unknown": "Inconnu"
109
+ },
110
+ "invitations": {
111
+ "list_empty": "Aucune invitation pour l'instant.",
112
+ "loading": "Chargement des invitations…",
113
+ "email_label": "Adresse courriel",
114
+ "name_label": "Nom (facultatif)",
115
+ "message_label": "Message personnel (facultatif)",
116
+ "email_placeholder": "personne@exemple.com",
117
+ "name_placeholder": "Son nom",
118
+ "message_placeholder": "Ajoute un message personnel…",
119
+ "send": "Envoyer l'invitation",
120
+ "cancel": "Annuler",
121
+ "status": {
122
+ "pending": "En attente",
123
+ "accepted": "Acceptée",
124
+ "expired": "Expirée"
125
+ },
126
+ "expires": "Expire le {date}"
127
+ },
128
+ "pages": {
129
+ "list_empty": "Aucune page pour l'instant.",
130
+ "loading": "Chargement…",
131
+ "not_found": "Page introuvable.",
132
+ "read": "Lire"
133
+ },
134
+ "person": {
135
+ "members_empty": "Aucun membre trouvé.",
136
+ "loading": "Chargement des membres…",
137
+ "profile": "Profil",
138
+ "unknown": "Inconnu",
139
+ "block": "Bloquer",
140
+ "unblock": "Débloquer"
141
+ },
142
+ "roles": {
143
+ "title": "Gestionnaire de rôles",
144
+ "assign": "Attribuer un rôle",
145
+ "revoke": "Révoquer",
146
+ "no_roles": "Aucun rôle attribué",
147
+ "grant_success": "Rôle attribué",
148
+ "revoke_success": "Rôle révoqué"
149
+ },
150
+ "community": {
151
+ "settings": {
152
+ "title": "Paramètres de la communauté",
153
+ "general": "Général",
154
+ "members": "Membres",
155
+ "danger_zone": "Zone dangereuse",
156
+ "leave": "Quitter la communauté",
157
+ "leave_confirm": "Êtes-vous sûr de vouloir quitter cette communauté ?"
158
+ }
159
+ },
160
+ "joatu": {
161
+ "heading": "Banque de temps",
162
+ "tagline": "1 crédit de temps = 1 heure. Tout le travail a une valeur égale.",
163
+ "tabs": {
164
+ "offers": "Offres",
165
+ "requests": "Demandes",
166
+ "agreements": "Ententes"
167
+ },
168
+ "offers": {
169
+ "list_empty": "Aucune offre pour l'instant.",
170
+ "loading": "Chargement des offres…",
171
+ "add": "+ Ajouter une offre",
172
+ "view": "Voir l'offre",
173
+ "title_label": "Qu'est-ce que tu offres?",
174
+ "title_placeholder": "p. ex. Aide en conception web, Jardinage, Cours de guitare",
175
+ "description_label": "Description",
176
+ "description_placeholder": "Décris ce que tu peux offrir en détail…",
177
+ "category_label": "Catégorie",
178
+ "category_placeholder": "p. ex. Compétences, Travail, Connaissances, Biens",
179
+ "credits_label": "Crédits de temps",
180
+ "credits_hint": "1 crédit de temps = 1 heure. Tout le travail a une valeur égale.",
181
+ "submit": "Ajouter l'offre",
182
+ "status": {
183
+ "open": "Disponible",
184
+ "fulfilled": "Accomplie",
185
+ "withdrawn": "Retirée"
186
+ },
187
+ "credits_display": "0 crédit de temps | 1 crédit de temps | {count} crédits de temps"
188
+ },
189
+ "requests": {
190
+ "list_empty": "Aucune demande pour l'instant.",
191
+ "loading": "Chargement des demandes…",
192
+ "add": "+ Ajouter une demande",
193
+ "view": "Voir la demande",
194
+ "fulfill": "Répondre à la demande",
195
+ "title_label": "De quoi as-tu besoin?",
196
+ "title_placeholder": "p. ex. Aide au déménagement, Garde d'enfants, Réparation d'ordinateur",
197
+ "description_label": "Description",
198
+ "description_placeholder": "Décris ce dont tu as besoin en détail…",
199
+ "category_label": "Catégorie",
200
+ "credits_label": "Crédits de temps",
201
+ "credits_hint": "1 crédit de temps = 1 heure. Tout le travail a une valeur égale.",
202
+ "submit": "Ajouter la demande",
203
+ "status": {
204
+ "open": "Disponible",
205
+ "fulfilled": "Accomplie",
206
+ "withdrawn": "Retirée"
207
+ }
208
+ },
209
+ "agreements": {
210
+ "list_empty": "Aucune entente pour l'instant.",
211
+ "loading": "Chargement des ententes…",
212
+ "agreed_on": "Convenu le {date}",
213
+ "status": {
214
+ "pending": "En attente",
215
+ "active": "Active",
216
+ "completed": "Complétée",
217
+ "disputed": "En litige"
218
+ },
219
+ "credits_display": "0 crédit de temps | 1 crédit de temps | {count} crédits de temps"
220
+ }
221
+ }
222
+ }
223
+ }
@@ -0,0 +1,275 @@
1
+ {
2
+ "bt": {
3
+ "app": {
4
+ "name": "Better Together",
5
+ "home_heading": "Спілкуйся зі своїми спільнотами",
6
+ "home_tagline": "Платформа Community Engine дозволяє тобі спілкуватися з іншими людьми як ніколи раніше"
7
+ },
8
+ "actions": {
9
+ "view": "Переглянути",
10
+ "edit": "Редагувати",
11
+ "delete": "Видалити",
12
+ "remove": "Прибрати",
13
+ "save": "Зберегти",
14
+ "cancel": "Скасувати",
15
+ "send": "Надіслати",
16
+ "create": "Створити",
17
+ "close": "Закрити",
18
+ "open": "Відкрити",
19
+ "back": "Назад",
20
+ "submit": "Надіслати",
21
+ "confirm": "Підтвердити",
22
+ "learn_more": "Дізнатися більше",
23
+ "read_more": "Читати далі"
24
+ },
25
+ "sync": {
26
+ "status": {
27
+ "local": "Збережено локально",
28
+ "local_title": "Збережено локально — синхронізується при підключенні",
29
+ "syncing": "Синхронізація…",
30
+ "synced": "Синхронізовано",
31
+ "needs_auth": "Увійди для синхронізації",
32
+ "needs_auth_title": "Увійди, щоб синхронізувати цей елемент",
33
+ "conflict": "Конфлікт"
34
+ },
35
+ "offline_banner": "Ти офлайн. Зміни синхронізуються, коли ти знову підключишся.",
36
+ "pending_count": "0 в очікуванні | 1 в очікуванні | {count} в очікуванні",
37
+ "pending_label": "Очікує синхронізації",
38
+ "status_bar_online": "Онлайн",
39
+ "status_bar_offline": "Офлайн"
40
+ },
41
+ "auth": {
42
+ "sign_in": "Увійти",
43
+ "sign_out": "Вийти",
44
+ "sign_up": "Зареєструватися",
45
+ "email": "Електронна пошта",
46
+ "password": "Пароль",
47
+ "password_confirmation": "Підтвердження пароля",
48
+ "forgot_password": "Забули пароль?",
49
+ "reset_password": "Скинути пароль",
50
+ "new_password": "Новий пароль",
51
+ "resend_confirmation": "Надіслати підтвердження повторно",
52
+ "sign_in_failed": "Помилка входу. Перевір свої дані.",
53
+ "sign_up_failed": "Помилка реєстрації. Спробуй ще раз.",
54
+ "login_info": "Дані для входу",
55
+ "personal_info": "Особиста інформація",
56
+ "password_hint": "Мінімум 12 символів.",
57
+ "change_password": "Змінити пароль",
58
+ "send_reset_email": "Надіслати лист для скидання пароля",
59
+ "send_confirmation_email": "Надіслати підтверджувальний лист",
60
+ "heading_sign_in": "Увійти",
61
+ "heading_sign_up": "Зареєструватися",
62
+ "heading_password_new": "Створити новий пароль",
63
+ "heading_password_reset": "Скинути пароль",
64
+ "heading_resend_confirmation": "Надіслати підтверджувальний лист повторно",
65
+ "prompt_sign_up": "Немає облікового запису? Зареєструйся!",
66
+ "prompt_sign_in": "Вже маєш обліковий запис? Увійди!",
67
+ "prompt_forgot_password": "Забув(ла) пароль? Скинь його!",
68
+ "prompt_resend": "Не отримав(ла) підтверджувальний лист? Надішли знову!",
69
+ "prompt_resend_full": "Не отримав(ла) підтверджувальний лист для облікового запису? Надішли знову!",
70
+ "prompt_remembered_password": "Пригадав(ла) пароль? Увійди!",
71
+ "prompt_confirmed": "Вже підтвердив(ла)? Увійди!",
72
+ "errors": {
73
+ "invalid_credentials": "Неправильна електронна пошта або пароль.",
74
+ "confirmation_mismatch": "Підтвердження пароля не збігається.",
75
+ "network": "Не вдалося підключитися до сервера. Спробуй ще раз."
76
+ }
77
+ },
78
+ "navigation": {
79
+ "home": "Головна",
80
+ "communities": "Спільноти",
81
+ "profile": "Профіль",
82
+ "settings": "Налаштування",
83
+ "me": "Я",
84
+ "posts": "Публікації",
85
+ "events": "Події",
86
+ "members": "Учасники",
87
+ "conversations": "Розмови",
88
+ "about": "Про нас"
89
+ },
90
+ "errors": {
91
+ "not_found": "Не знайдено.",
92
+ "load_failed": "Помилка завантаження. Спробуй ще раз.",
93
+ "save_failed": "Помилка збереження. Спробуй ще раз.",
94
+ "network": "Помилка мережі. Перевір підключення.",
95
+ "unexpected": "Виникла несподівана помилка.",
96
+ "not_found_heading": "Це не та сторінка, яку ти шукаєш",
97
+ "not_found_message": "Здається, введена тобою адреса не відповідає жодній сторінці нашого сайту. Можливо, сторінку було переміщено на нову адресу. Будь ласка, спробуй ще раз.",
98
+ "visit_home": "Перейти на головну сторінку"
99
+ },
100
+ "communities": {
101
+ "list_empty": "Спільноти не знайдено.",
102
+ "loading": "Завантаження спільнот…",
103
+ "view": "Переглянути спільноту",
104
+ "create": "Створити спільноту",
105
+ "edit": "Редагувати спільноту",
106
+ "members_count": "0 учасників | 1 учасник | {count} учасників",
107
+ "name_label": "Назва",
108
+ "description_label": "Опис",
109
+ "not_found": "Спільноту не знайдено.",
110
+ "new": "Нова спільнота",
111
+ "save": "Зберегти спільноту"
112
+ },
113
+ "posts": {
114
+ "list_empty": "Публікацій ще немає.",
115
+ "loading": "Завантаження публікацій…",
116
+ "read_more": "Читати далі",
117
+ "save": "Зберегти публікацію",
118
+ "saving": "Збереження…",
119
+ "title_label": "Заголовок",
120
+ "content_label": "Зміст",
121
+ "privacy_label": "Приватність",
122
+ "create": "Нова публікація",
123
+ "recent": "Останні публікації"
124
+ },
125
+ "events": {
126
+ "list_empty": "Найближчих подій немає.",
127
+ "loading": "Завантаження подій…",
128
+ "view": "Переглянути подію",
129
+ "save": "Зберегти подію",
130
+ "name_label": "Назва події",
131
+ "description_label": "Опис",
132
+ "starts_at_label": "Початок",
133
+ "ends_at_label": "Кінець",
134
+ "create": "Нова подія",
135
+ "upcoming": "Найближчі події",
136
+ "not_found": "Подію не знайдено."
137
+ },
138
+ "conversations": {
139
+ "list_empty": "Розмов ще немає.",
140
+ "loading": "Завантаження розмов…",
141
+ "open": "Відкрити",
142
+ "no_subject": "Без теми",
143
+ "participants": "0 учасників | 1 учасник | {count} учасників",
144
+ "not_found": "Розмову не знайдено.",
145
+ "coming_soon": "Розмови з'являться у Фазі 5."
146
+ },
147
+ "messages": {
148
+ "list_empty": "Повідомлень ще немає. Почни розмову!",
149
+ "loading": "Завантаження повідомлень…",
150
+ "placeholder": "Напиши повідомлення…",
151
+ "send": "Надіслати",
152
+ "author_unknown": "Невідомо"
153
+ },
154
+ "invitations": {
155
+ "list_empty": "Запрошень ще немає.",
156
+ "loading": "Завантаження запрошень…",
157
+ "email_label": "Адреса електронної пошти",
158
+ "name_label": "Ім'я (необов'язково)",
159
+ "message_label": "Особисте повідомлення (необов'язково)",
160
+ "email_placeholder": "людина@приклад.com",
161
+ "name_placeholder": "Їхнє ім'я",
162
+ "message_placeholder": "Додай особисте повідомлення…",
163
+ "send": "Надіслати запрошення",
164
+ "cancel": "Скасувати",
165
+ "status": {
166
+ "pending": "В очікуванні",
167
+ "accepted": "Прийнято",
168
+ "expired": "Прострочено"
169
+ },
170
+ "expires": "Дійсне до {date}"
171
+ },
172
+ "pages": {
173
+ "list_empty": "Сторінок ще немає.",
174
+ "loading": "Завантаження…",
175
+ "not_found": "Сторінку не знайдено.",
176
+ "read": "Читати",
177
+ "heading": "Сторінки"
178
+ },
179
+ "person": {
180
+ "members_empty": "Учасників не знайдено.",
181
+ "loading": "Завантаження учасників…",
182
+ "profile": "Профіль",
183
+ "unknown": "Невідомо",
184
+ "name_label": "Ім'я",
185
+ "description_label": "Опис",
186
+ "fill_profile": "Заповни свій профіль",
187
+ "my_profile": "Мій профіль",
188
+ "fill_profile_details": "Заповни деталі свого профілю",
189
+ "unsaved_changes": "змінено",
190
+ "block": "Заблокувати",
191
+ "unblock": "Розблокувати"
192
+ },
193
+ "roles": {
194
+ "title": "Менеджер ролей",
195
+ "assign": "Призначити роль",
196
+ "revoke": "Відкликати",
197
+ "no_roles": "Ролі не призначено",
198
+ "grant_success": "Роль надано",
199
+ "revoke_success": "Роль відкликано"
200
+ },
201
+ "community": {
202
+ "settings": {
203
+ "title": "Налаштування спільноти",
204
+ "general": "Загальне",
205
+ "members": "Учасники",
206
+ "danger_zone": "Небезпечна зона",
207
+ "leave": "Покинути спільноту",
208
+ "leave_confirm": "Ви впевнені, що хочете покинути цю спільноту?"
209
+ }
210
+ },
211
+ "joatu": {
212
+ "heading": "Банк часу",
213
+ "tagline": "1 часовий кредит = 1 година. Вся праця має однакову цінність.",
214
+ "tabs": {
215
+ "offers": "Пропозиції",
216
+ "requests": "Запити",
217
+ "agreements": "Угоди"
218
+ },
219
+ "offers": {
220
+ "list_empty": "Пропозицій ще немає.",
221
+ "loading": "Завантаження пропозицій…",
222
+ "add": "+ Додати пропозицію",
223
+ "view": "Переглянути пропозицію",
224
+ "title_label": "Що ти пропонуєш?",
225
+ "title_placeholder": "напр. Допомога з веб-дизайном, Садівництво, Уроки гітари",
226
+ "description_label": "Опис",
227
+ "description_placeholder": "Опиши детальніше, що ти можеш запропонувати…",
228
+ "category_label": "Категорія",
229
+ "category_placeholder": "напр. Навички, Праця, Знання, Товари",
230
+ "credits_label": "Часові кредити",
231
+ "credits_hint": "1 часовий кредит = 1 година. Вся праця має однакову цінність.",
232
+ "submit": "Додати пропозицію",
233
+ "status": {
234
+ "open": "Відкрита",
235
+ "fulfilled": "Виконана",
236
+ "withdrawn": "Відкликана"
237
+ },
238
+ "credits_display": "0 часових кредитів | 1 часовий кредит | {count} часових кредитів"
239
+ },
240
+ "requests": {
241
+ "list_empty": "Запитів ще немає.",
242
+ "loading": "Завантаження запитів…",
243
+ "add": "+ Додати запит",
244
+ "view": "Переглянути запит",
245
+ "fulfill": "Виконати запит",
246
+ "title_label": "Що тобі потрібно?",
247
+ "title_placeholder": "напр. Допомога з переїздом, Догляд за дитиною, Ремонт комп'ютера",
248
+ "description_label": "Опис",
249
+ "description_placeholder": "Опиши детальніше, що тобі потрібно…",
250
+ "category_label": "Категорія",
251
+ "credits_label": "Часові кредити",
252
+ "credits_hint": "1 часовий кредит = 1 година. Вся праця має однакову цінність.",
253
+ "submit": "Додати запит",
254
+ "seeking": "Шукаю:",
255
+ "status": {
256
+ "open": "Відкритий",
257
+ "fulfilled": "Виконаний",
258
+ "withdrawn": "Відкликаний"
259
+ }
260
+ },
261
+ "agreements": {
262
+ "list_empty": "Угод ще немає.",
263
+ "loading": "Завантаження угод…",
264
+ "agreed_on": "Погоджено {date}",
265
+ "status": {
266
+ "pending": "В очікуванні",
267
+ "active": "Активна",
268
+ "completed": "Завершена",
269
+ "disputed": "Оскаржена"
270
+ },
271
+ "credits_display": "0 часових кредитів | 1 часовий кредит | {count} часових кредитів"
272
+ }
273
+ }
274
+ }
275
+ }