mirror of
https://github.com/usememos/memos.git
synced 2025-06-05 22:09:59 +02:00
chore: update memo comment i18n
This commit is contained in:
@ -50,8 +50,12 @@ const Header = () => {
|
|||||||
layoutStore.setHeaderStatus(true);
|
layoutStore.setHeaderStatus(true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
window.addEventListener("resize", handleWindowResize);
|
|
||||||
handleWindowResize();
|
handleWindowResize();
|
||||||
|
window.addEventListener("resize", handleWindowResize);
|
||||||
|
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener("resize", handleWindowResize);
|
||||||
|
};
|
||||||
}, [location]);
|
}, [location]);
|
||||||
|
|
||||||
const homeNavLink: NavLinkItem = {
|
const homeNavLink: NavLinkItem = {
|
||||||
@ -111,7 +115,7 @@ const Header = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const navLinks: NavLinkItem[] = user
|
const navLinks: NavLinkItem[] = user
|
||||||
? [homeNavLink, dailyReviewNavLink, resourcesNavLink, inboxNavLink, exploreNavLink, archivedNavLink, settingNavLink]
|
? [homeNavLink, dailyReviewNavLink, resourcesNavLink, exploreNavLink, inboxNavLink, archivedNavLink, settingNavLink]
|
||||||
: [exploreNavLink, signInNavLink];
|
: [exploreNavLink, signInNavLink];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -5,8 +5,10 @@ import toast from "react-hot-toast";
|
|||||||
import { activityServiceClient } from "@/grpcweb";
|
import { activityServiceClient } from "@/grpcweb";
|
||||||
import useNavigateTo from "@/hooks/useNavigateTo";
|
import useNavigateTo from "@/hooks/useNavigateTo";
|
||||||
import useInboxStore from "@/store/v1/inbox";
|
import useInboxStore from "@/store/v1/inbox";
|
||||||
|
import { extractUsernameFromName } from "@/store/v1/user";
|
||||||
import { Activity } from "@/types/proto/api/v2/activity_service";
|
import { Activity } from "@/types/proto/api/v2/activity_service";
|
||||||
import { Inbox, Inbox_Status } from "@/types/proto/api/v2/inbox_service";
|
import { Inbox, Inbox_Status } from "@/types/proto/api/v2/inbox_service";
|
||||||
|
import { useTranslate } from "@/utils/i18n";
|
||||||
import Icon from "../Icon";
|
import Icon from "../Icon";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
@ -14,6 +16,7 @@ interface Props {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const MemoCommentMessage = ({ inbox }: Props) => {
|
const MemoCommentMessage = ({ inbox }: Props) => {
|
||||||
|
const t = useTranslate();
|
||||||
const navigateTo = useNavigateTo();
|
const navigateTo = useNavigateTo();
|
||||||
const inboxStore = useInboxStore();
|
const inboxStore = useInboxStore();
|
||||||
const [activity, setActivity] = useState<Activity | undefined>(undefined);
|
const [activity, setActivity] = useState<Activity | undefined>(undefined);
|
||||||
@ -90,7 +93,10 @@ const MemoCommentMessage = ({ inbox }: Props) => {
|
|||||||
className="text-base leading-tight cursor-pointer text-gray-500 dark:text-gray-400 hover:underline hover:text-blue-600"
|
className="text-base leading-tight cursor-pointer text-gray-500 dark:text-gray-400 hover:underline hover:text-blue-600"
|
||||||
onClick={handleNavigateToMemo}
|
onClick={handleNavigateToMemo}
|
||||||
>
|
>
|
||||||
{inbox.sender} has a comment in your memo #{activity?.payload?.memoComment?.relatedMemoId}.
|
{t("inbox.memo-comment", {
|
||||||
|
user: extractUsernameFromName(inbox.sender),
|
||||||
|
memo: `memo#${activity?.payload?.memoComment?.relatedMemoId}`,
|
||||||
|
})}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -369,5 +369,8 @@
|
|||||||
"file-exceeds-upload-limit-of": "File {{file}} exceeds upload limit of {{size}} MiB",
|
"file-exceeds-upload-limit-of": "File {{file}} exceeds upload limit of {{size}} MiB",
|
||||||
"updating-setting-failed": "Updating setting failed",
|
"updating-setting-failed": "Updating setting failed",
|
||||||
"password-login-disabled": "Can't remove last identity provider when password login is disabled"
|
"password-login-disabled": "Can't remove last identity provider when password login is disabled"
|
||||||
|
},
|
||||||
|
"inbox": {
|
||||||
|
"memo-comment": "{{user}} has a comment on your {{memo}}."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -116,10 +116,12 @@ const DailyReview = () => {
|
|||||||
<MemoResourceListView resourceList={memo.resourceList} />
|
<MemoResourceListView resourceList={memo.resourceList} />
|
||||||
<MemoRelationListView memo={memo} relationList={memo.relationList.filter((relation) => relation.type === "REFERENCE")} />
|
<MemoRelationListView memo={memo} relationList={memo.relationList.filter((relation) => relation.type === "REFERENCE")} />
|
||||||
<div className="absolute left-1 sm:left-2 top-3 h-full">
|
<div className="absolute left-1 sm:left-2 top-3 h-full">
|
||||||
<Icon.Circle className="w-4 h-auto bg-gray-400 text-gray-400 dark:bg-gray-500 dark:text-gray-500 rounded-full" />
|
|
||||||
{index !== dailyMemos.length - 1 && (
|
{index !== dailyMemos.length - 1 && (
|
||||||
<div className="absolute top-2 left-1.5 h-full w-1 bg-gray-400 dark:bg-gray-500 block"></div>
|
<div className="absolute top-2 left-[7px] h-full w-0.5 bg-gray-400 dark:bg-gray-500 block"></div>
|
||||||
)}
|
)}
|
||||||
|
<div className="border-4 rounded-full border-white relative dark:border-zinc-700">
|
||||||
|
<Icon.Circle className="w-2 h-auto bg-gray-400 text-gray-400 dark:bg-gray-500 dark:text-gray-500 rounded-full" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
))}
|
))}
|
||||||
|
@ -57,4 +57,8 @@ const useUserV1Store = create<UserV1Store>()((set, get) => ({
|
|||||||
},
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
export const extractUsernameFromName = (name: string) => {
|
||||||
|
return name.split("/")[1];
|
||||||
|
};
|
||||||
|
|
||||||
export default useUserV1Store;
|
export default useUserV1Store;
|
||||||
|
Reference in New Issue
Block a user