first relase

This commit is contained in:
Lê đ tú 2025-10-17 11:11:14 +07:00
parent d3a42ba6e9
commit c6afce22ed
288 changed files with 55505 additions and 192 deletions

51
context/i18n.ts Normal file
View file

@ -0,0 +1,51 @@
import type { Locale } from '@/i18n-config';
import {
getDocLanguage,
getLanguage,
getPricingPageLanguage,
} from '@/i18n-config/language';
import { noop } from 'lodash-es';
import { createContext, useContext } from 'use-context-selector';
type II18NContext = {
locale: Locale;
i18n: Record<string, any>;
setLocaleOnClient: (_lang: Locale, _reloadPage?: boolean) => Promise<void>;
};
const I18NContext = createContext<II18NContext>({
locale: 'en-US',
i18n: {},
setLocaleOnClient: async (_lang: Locale, _reloadPage?: boolean) => {
noop();
},
});
export const useI18N = () => useContext(I18NContext);
export const useGetLanguage = () => {
const { locale } = useI18N();
return getLanguage(locale);
};
export const useGetPricingPageLanguage = () => {
const { locale } = useI18N();
return getPricingPageLanguage(locale);
};
export const defaultDocBaseUrl = 'https://docs.dify.ai';
export const useDocLink = (
baseUrl?: string,
): ((path?: string, pathMap?: { [index: string]: string }) => string) => {
let baseDocUrl = baseUrl || defaultDocBaseUrl;
baseDocUrl = baseDocUrl.endsWith('/') ? baseDocUrl.slice(0, -1) : baseDocUrl;
const { locale } = useI18N();
const docLanguage = getDocLanguage(locale);
return (path?: string, pathMap?: { [index: string]: string }): string => {
const pathUrl = path || '';
let targetPath = pathMap ? pathMap[locale] || pathUrl : pathUrl;
targetPath = targetPath.startsWith('/') ? targetPath.slice(1) : targetPath;
return `${baseDocUrl}/${docLanguage}/${targetPath}`;
};
};
export default I18NContext;