Make localization keys compatible with agglutinative and/or SOV type languages (#10159)

* Make localization keys on HelpUserSettingsTab compatible with agglutinative and/or SOV type languages
* Make localization keys on room notifications debug dialog on devtools compatible with agglutinative and/or SOV type languages
* Make keys compatible with inflection
* Clarify context for Weblate translators

---------

Signed-off-by: Suguru Hirahara <luixxiul@users.noreply.github.com>
This commit is contained in:
Suguru Hirahara 2023-02-22 11:40:18 +00:00 committed by GitHub
parent e4552111c0
commit b9ff6558e9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 69 additions and 32 deletions

View file

@ -20,7 +20,7 @@ import React, { useContext } from "react";
import MatrixClientContext from "../../../../contexts/MatrixClientContext";
import { useNotificationState } from "../../../../hooks/useRoomNotificationState";
import { _t } from "../../../../languageHandler";
import { _t, _td } from "../../../../languageHandler";
import { determineUnreadState } from "../../../../RoomNotifs";
import { humanReadableNotificationColor } from "../../../../stores/notifications/NotificationColor";
import { doesRoomOrThreadHaveUnreadMessages } from "../../../../Unread";
@ -39,22 +39,38 @@ export default function RoomNotifications({ onBack }: IDevtoolsProps): JSX.Eleme
<h2>{_t("Room status")}</h2>
<ul>
<li>
{_t("Room unread status: ")}
<strong>{humanReadableNotificationColor(color)}</strong>
{count > 0 && (
<>
{_t(", count:")} <strong>{count}</strong>
</>
{_t(
"Room unread status: <strong>%(status)s</strong>, count: <strong>%(count)s</strong>",
{
status: humanReadableNotificationColor(color),
count,
},
{
strong: (sub) => <strong>{sub}</strong>,
},
)}
</li>
<li>
{_t("Notification state is")} <strong>{notificationState}</strong>
{_t(
"Notification state is <strong>%(notificationState)s</strong>",
{
notificationState,
},
{
strong: (sub) => <strong>{sub}</strong>,
},
)}
</li>
<li>
{_t("Room is ")}
<strong>
{cli.isRoomEncrypted(room.roomId!) ? _t("encrypted ✅") : _t("not encrypted 🚨")}
</strong>
{_t(
cli.isRoomEncrypted(room.roomId!)
? _td("Room is <strong>encrypted ✅</strong>")
: _td("Room is <strong>not encrypted 🚨</strong>"),
{},
{
strong: (sub) => <strong>{sub}</strong>,
},
)}
</li>
</ul>
</section>

View file

@ -327,10 +327,26 @@ export default class HelpUserSettingsTab extends React.Component<IProps, IState>
<span className="mx_SettingsTab_subheading">{_t("Advanced")}</span>
<div className="mx_SettingsTab_subsectionText">
<div>
{_t("Homeserver is")} <code>{MatrixClientPeg.get().getHomeserverUrl()}</code>
{_t(
"Homeserver is <code>%(homeserverUrl)s</code>",
{
homeserverUrl: MatrixClientPeg.get().getHomeserverUrl(),
},
{
code: (sub) => <code>{sub}</code>,
},
)}
</div>
<div>
{_t("Identity server is")} <code>{MatrixClientPeg.get().getIdentityServerUrl()}</code>
{_t(
"Identity server is <code>%(identityServerUrl)s</code>",
{
identityServerUrl: MatrixClientPeg.get().getIdentityServerUrl(),
},
{
code: (sub) => <code>{sub}</code>,
},
)}
</div>
<details>
<summary>{_t("Access Token")}</summary>