i18n.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400
  1. const { a, em, strong } = require("hyperaxe");
  2. const i18n = {
  3. en: {
  4. // navbar items
  5. extended: "Extended",
  6. extendedDescription: [
  7. "When you support someone you may download posts from the inhabitants they support, and those posts show up here, sorted by recency.",
  8. ],
  9. popular: "Highlights",
  10. popularDescription: [
  11. "Posts from inhabitants in your network, ",
  12. strong("sorted by spreads"),
  13. ". Select the period of time, to get a list.",
  14. ],
  15. day: "Day",
  16. week: "Week",
  17. month: "Month",
  18. year: "Year",
  19. latest: "Latest",
  20. latestDescription: [
  21. strong("Posts"),
  22. " from yourself and inhabitants you support, sorted by recency.",
  23. ],
  24. topics: "Themes",
  25. topicsDescription: [
  26. strong("Themes"),
  27. " from yourself and inhabitants you support, sorted by recency. Select the timestamp of any post to see the rest of the thread.",
  28. ],
  29. summaries: "Summaries",
  30. summariesDescription: [
  31. strong("Themes and some comments"),
  32. " from yourself and inhabitants you support, sorted by recency. Select the timestamp of any post to see the rest of the thread.",
  33. ],
  34. threads: "Threads",
  35. threadsDescription: [
  36. strong("Posts that have comments"),
  37. " from inhabitants you support and your extended network, sorted by recency. Select the timestamp of any post to see the rest of the thread.",
  38. ],
  39. profile: "Avatar",
  40. manualMode: "Manual Mode",
  41. mentions: "Mentions",
  42. mentionsDescription: [
  43. strong("Posts that @mention you"),
  44. ", sorted by recency.",
  45. ],
  46. private: "Inbox",
  47. peers: "Peers",
  48. privateDescription: [
  49. "The latest comment from ",
  50. strong("private threads that include you"),
  51. ", sorted by recency. Private posts are encrypted for your public key, and have a maximum of 7 recipients. Recipients cannot be added after the thread has started. Select the timestamp to view the full thread.",
  52. ],
  53. search: "Search",
  54. imageSearch: "Image Search",
  55. settings: "Settings",
  56. // post actions
  57. comment: "Comment",
  58. subtopic: "Subtopic",
  59. json: "JSON",
  60. // relationships
  61. unfollow: "Unsupport",
  62. follow: "Support",
  63. block: "Block",
  64. unblock: "Unblock",
  65. newerPosts: "Newer posts",
  66. olderPosts: "Older posts",
  67. feedRangeEmpty: "The given range is empty for this feed. Try viewing the ",
  68. seeFullFeed: "full feed",
  69. feedEmpty: "The local client has never seen posts from this account.",
  70. beginningOfFeed: "This is the beginning of the feed",
  71. noNewerPosts: "No newer posts have been received yet.",
  72. relationshipNotFollowing: "",
  73. relationshipTheyFollow: "",
  74. relationshipMutuals: "",
  75. relationshipFollowing: "You are supporting",
  76. relationshipYou: "You",
  77. relationshipBlocking: "You are blocking",
  78. relationshipNone: "",
  79. relationshipConflict: "",
  80. relationshipBlockingPost: "Blocked post",
  81. // spreads view
  82. viewLikes: "View spreads",
  83. clonedDescription: "List of posts spread by the inhabitant.",
  84. likedBy: " -> Spreads",
  85. // composer
  86. attachFiles: "Attach files",
  87. mentionsMatching: "Matching mentions",
  88. preview: "Preview",
  89. publish: "Publish",
  90. contentWarningPlaceholder: "Add a subject to the post (optional)",
  91. publishWarningPlaceholder: "...",
  92. publishCustomDescription: [
  93. "REMEMBER: Due to blockchain technology, once a post is published it cannot be edited or deleted.",
  94. ],
  95. commentWarning: [
  96. "REMEMBER: Due to blockchain technology, once a post is published it cannot be edited or deleted.",
  97. ],
  98. commentPublic: "public",
  99. commentPrivate: "private",
  100. commentLabel: ({ publicOrPrivate, markdownUrl }) => [
  101. ],
  102. publishLabel: ({ markdownUrl, linkTarget }) => [
  103. "REMEMBER: Due to blockchain technology, once a post is published it cannot be edited or deleted.",
  104. ],
  105. replyLabel: ({ markdownUrl }) => [
  106. "REMEMBER: Due to blockchain technology, once a post is published it cannot be edited or deleted.",
  107. ],
  108. publishCustomInfo: ({ href }) => [
  109. "If you have experience, you can also ",
  110. a({ href }, "publish an advanced post"),
  111. ".",
  112. ],
  113. publishBasicInfo: ({ href }) => [
  114. "If you have not experience, you should ",
  115. a({ href }, "publish a post"),
  116. ".",
  117. ],
  118. publishCustom: "Publish advanced post",
  119. subtopicLabel: ({ markdownUrl }) => [
  120. "Create a ",
  121. strong("public subtopic"),
  122. " of this post with ",
  123. a({ href: markdownUrl }, "Markdown"),
  124. ". Posts cannot be edited or deleted. To respond to an entire thread, select ",
  125. strong("comment"),
  126. " instead. Preview shows attached media.",
  127. ],
  128. // settings
  129. versionIntro: "Version",
  130. info: "Info",
  131. settingsIntro: ({ version }) => [
  132. `SNH-Oasis: ${version}...`,
  133. ],
  134. // SNH
  135. docsUrls: ({ snhUrl, projectUrl, roleUrl }) => [
  136. a({ href: snhUrl }, "Website"),
  137. " | ",
  138. a({ href: projectUrl }, "The Project Network"),
  139. " | ",
  140. a({ href: roleUrl }, "Role-playing"),
  141. ],
  142. theme: "Theme",
  143. themeIntro:
  144. "Choose a theme.",
  145. setTheme: "Set theme",
  146. language: "Language",
  147. languageDescription:
  148. "If you'd like to use another language, select it here.",
  149. setLanguage: "Set language",
  150. status: "Status",
  151. peerConnections: "Peers",
  152. connectionsIntro:
  153. "Your device is syncing data with these other devices:",
  154. noConnections: "No peers connected.",
  155. connectionActionIntro:
  156. "",
  157. startNetworking: "Start networking",
  158. stopNetworking: "Stop networking",
  159. restartNetworking: "Restart networking",
  160. sync: "Sync",
  161. indexes: "Indexes",
  162. indexesDescription:
  163. "Rebuilding your indexes is safe, and may fix some types of bugs.",
  164. invites: "Invites",
  165. invitesDescription:
  166. "Use the PUB's invite codes here.",
  167. acceptInvite: "Accept invite",
  168. // search page
  169. searchLabel: "Seek inhabitants and keywords, among the posts you have downloaded.",
  170. // image search page
  171. imageSearchLabel: "Enter words to search for images labelled with them.",
  172. // posts and comments
  173. commentDescription: ({ parentUrl }) => [
  174. " commented on ",
  175. a({ href: parentUrl }, " thread"),
  176. ],
  177. commentTitle: ({ authorName }) => [`Comment on @${authorName}'s post`],
  178. subtopicDescription: ({ parentUrl }) => [
  179. " created a subtopic from ",
  180. a({ href: parentUrl }, " a post"),
  181. ],
  182. subtopicTitle: ({ authorName }) => [`Subtopic on @${authorName}'s post`],
  183. mysteryDescription: "posted a mysterious post",
  184. // misc
  185. oasisDescription: "SNH Project Network",
  186. submit: "Submit",
  187. editProfile: "Edit Avatar",
  188. editProfileDescription:
  189. "",
  190. profileName: "Avatar name (plain text)",
  191. profileImage: "Avatar image",
  192. profileDescription: "Avatar description (Markdown)",
  193. hashtagDescription:
  194. "Posts from inhabitants in your network that reference this #hashtag, sorted by recency.",
  195. rebuildName: "Rebuild database",
  196. },
  197. /* spell-checker: disable */
  198. es: {
  199. latest: "Novedades",
  200. profile: "Avatar",
  201. search: "Buscar",
  202. imageSearch: "Buscar Imágenes",
  203. settings: "Configuración",
  204. // navbar items
  205. extended: "Extendida",
  206. extendedDescription: [
  207. "Cuando apoyes a alguien, podrás descargar publicaciones de habitantes que apoye, y esas publicaciones aparecerán aquí, ordenadas por las más recientes.",
  208. ],
  209. popular: "Destacadas",
  210. day: "Día",
  211. week: "Semana",
  212. month: "Mes",
  213. year: "Año",
  214. popularDescription: [
  215. "Posts de habitantes de tu red, ",
  216. strong("ordenados por difusiones"),
  217. ". Selecciona el periodo de tiempo, para obtener una lista.",
  218. ],
  219. latestDescription: [
  220. strong("Posts"),
  221. " tuyos y de habitantes que apoyas, ordenados por los más recientes.",
  222. ],
  223. topics: "Temáticas",
  224. topicsDescription: [
  225. strong("Temáticas"),
  226. " tuyas y de habitantes que apoyas, ordenadas por las más recientes. Selecciona la hora de una publicación para leer el hilo completo.",
  227. ],
  228. summaries: "Resumen",
  229. summariesDescription: [
  230. strong("Temáticas y algunos comentarios"),
  231. " tuyos y de habitantes que apoyas, ordenado por lo más reciente. Selecciona la hora de una publicación para leer el hilo completo.",
  232. ],
  233. threads: "Hilos",
  234. threadsDescription: [
  235. strong("Posts que tienen comentarios"),
  236. " de habitantes que apoyas y de tu red extendida, ordenados por los más recientes. Selecciona la hora de una publicación para leer el hilo completo.",
  237. ],
  238. manualMode: "Modo manual",
  239. mentions: "Menciones",
  240. mentionsDescription: [
  241. strong("Posts que te @mencionan"),
  242. ", ordenados por los más recientes.",
  243. ],
  244. private: "Buzón",
  245. peers: "Enlaces",
  246. privateDescription: [
  247. "Los comentarios más recientes de ",
  248. strong("hilos privados que te incluyen"),
  249. ". Las publicaciones privadas están cifradas para ti, y contienen un máximo de 7 destinatarios. No se podrán añadir nuevos destinarios después de que empieze el hilo. Selecciona la hora de una publicación para leer el hilo completo.",
  250. ],
  251. // post actions
  252. comment: "Comentar",
  253. reply: "Responder",
  254. subtopic: "Subhilo",
  255. json: "JSON",
  256. // relationships
  257. relationshipNotFollowing: "",
  258. relationshipTheyFollow: "",
  259. relationshipMutuals: "",
  260. relationshipFollowing: "Apoyando",
  261. relationshipYou: "Tú",
  262. relationshipBlocking: "Bloqueado",
  263. relationshipNone: "",
  264. relationshipConflict: "",
  265. relationshipBlockingPost: "Post bloqueado",
  266. unfollow: "Dejar de apoyar",
  267. follow: "Apoyar",
  268. block: "Bloquear",
  269. unblock: "Desbloquear",
  270. newerPosts: "Nuevos posts",
  271. olderPosts: "Anteriores posts",
  272. feedRangeEmpty: "El rango requerido está vacío para éste hilo. Prueba a ver el ",
  273. seeFullFeed: "hilo completo",
  274. feedEmpty: "No tienes posts de ésta cuenta.",
  275. beginningOfFeed: "Éste es el comienzo del hilo",
  276. noNewerPosts: "No se han recibido nuevos posts aún.",
  277. // spreads view
  278. viewLikes: "Ver difusiones",
  279. clonedDescription: "Listado de posts difundidos del habitante.",
  280. likedBy: " -> Difusiones",
  281. // composer
  282. attachFiles: "Agregar archivos",
  283. mentionsMatching: "Menciones coincidentes",
  284. preview: "Vista previa",
  285. publish: "Publicar",
  286. contentWarningPlaceholder: "Añade un asunto al post (opcional)",
  287. publishWarningPlaceholder: "...",
  288. publishCustomDescription: [
  289. "RECUERDA: Debido a la tecnología blockchain, una vez publicado un post, no podrá ser editado o borrado.",
  290. ],
  291. commentWarning: [
  292. " RECUERDA: Debido a la tecnología blockchain, una vez publicado un post, no podrá ser editado o borrado.",
  293. ],
  294. commentPublic: "público",
  295. commentPrivate: "privado",
  296. commentLabel: ({ publicOrPrivate, markdownUrl }) => [
  297. ],
  298. publishLabel: ({ markdownUrl, linkTarget }) => [
  299. "RECUERDA: Debido a la tecnología blockchain, una vez publicado un post, no podrá ser editado o borrado.",
  300. ],
  301. publishCustomInfo: ({ href }) => [
  302. "Si tienes experiencia, también puedes ",
  303. a({ href }, "publicar un post avanzado"),
  304. ".",
  305. ],
  306. publishBasicInfo: ({ href }) => [
  307. "Si no tienes experiencia, lo mejor es ",
  308. a({ href }, "publicar un post normal"),
  309. ".",
  310. ],
  311. publishCustom: "Publicar post avanzado",
  312. replyLabel: ({ markdownUrl }) => [
  313. "RECUERDA: Debido a la tecnología blockchain, una vez publicados los posts, no podrán ser editados o borrados.",
  314. ],
  315. // settings-es
  316. versionIntro: "Versión",
  317. info: "Info",
  318. settingsIntro: ({ version }) => [
  319. `SNH-Oasis: ${version}...`,
  320. ],
  321. // SNH
  322. docsUrls: ({ snhUrl, projectUrl, roleUrl }) => [
  323. a({ href: snhUrl }, "Website"),
  324. " | ",
  325. a({ href: projectUrl }, "The Project Network"),
  326. " | ",
  327. a({ href: roleUrl }, "Role-playing"),
  328. ],
  329. theme: "Tema",
  330. themeIntro:
  331. "Elige un tema.",
  332. setTheme: "Seleccionar tema",
  333. language: "Idioma",
  334. languageDescription:
  335. "Si quieres usar otro idioma, seleccionalo aquí.",
  336. setLanguage: "Seleccionar idioma",
  337. status: "Estado",
  338. peerConnections: "Enlaces",
  339. connectionsIntro:
  340. "Tu dispositivo está sincronizando datos con los siguientes dispositivos:",
  341. noConnections: "Sin enlaces conectados.",
  342. connectionActionIntro:
  343. "",
  344. startNetworking: "Iniciar red",
  345. stopNetworking: "Detener red",
  346. restartNetworking: "Reiniciar red",
  347. sync: "Sincronizar",
  348. indexes: "Índices",
  349. indexesDescription:
  350. "Reconstruir la caché de forma segura, puede solucionar algunos errores si se presentan.",
  351. invites: "Invitaciones",
  352. invitesDescription:
  353. "Utiliza los códigos de invitación de los PUBs aquí.",
  354. acceptInvite: "Aceptar la invitación",
  355. // search page
  356. searchLabel:
  357. "Busca habitantes y palabras clave, entre los posts que tienes descargados.",
  358. // posts and comments
  359. commentDescription: ({ parentUrl }) => [
  360. " comentó en el hilo ",
  361. a({ href: parentUrl }, ""),
  362. ],
  363. replyDescription: ({ parentUrl }) => [
  364. " respondido al ",
  365. a({ href: parentUrl }, "post "),
  366. ],
  367. // image search page
  368. imageSearchLabel:
  369. "Busca entre los títulos de las imágenes que tienes descargadas.",
  370. // posts and comments
  371. commentTitle: ({ authorName }) => [
  372. `Comentó en el post de @${authorName}`,
  373. ],
  374. subtopicDescription: ({ parentUrl }) => [
  375. " creó un nuevo hilo para ",
  376. a({ href: parentUrl }, "este post"),
  377. ],
  378. subtopicTitle: ({ authorName }) => [
  379. `Nuevo hilo en el post de @${authorName}`,
  380. ],
  381. mysteryDescription: "publicó un post misterioso",
  382. // misc
  383. oasisDescription:
  384. "Red de Proyectos de SNH",
  385. submit: "Aceptar",
  386. editProfile: "Editar avatar",
  387. editProfileDescription:
  388. "",
  389. profileName: "Nombre del avatar (texto)",
  390. profileImage: "Imagen del avatar",
  391. profileDescription: "Descripción del avatar (Markdown)",
  392. hashtagDescription:
  393. "Posts de habitantes en tu red que referencian a ésta #etiqueta, ordenados por los más recientes.",
  394. rebuildName: "Reconstruir base de datos",
  395. },
  396. };
  397. module.exports = i18n;