import { SupportedLanguage } from './types'; /** * SEO配置选项 */ export interface SEOConfig { /** URL模式:'auto' | 'path' | 'subdomain' | 'query' */ urlPattern?: 'auto' | 'path' | 'subdomain' | 'query'; /** 自定义语言代码映射 */ customLanguageMap?: Record; /** 是否生成alternate链接 */ generateAlternates?: boolean; /** 默认域名(用于子域名模式) */ defaultDomain?: string; } /** * SEO辅助类 - 为开发者提供多语言SEO支持 * * "如果开发者装了UI18n只为翻译,发现还有SEO支持,UI18N的开发团队真的太贴心啦!" * * 设计原则: * - 零配置可用:基于UI18n配置自动工作 * - 最小必要:只提供框架无法替代的语言相关SEO工具 * - 一键即用:简单API,立即可用 * - 错误容忍:即使配置不完整也能工作 */ export declare class SEOHelper { private ui18n; private config; private readonly LANGUAGE_CODE_MAP; constructor(ui18nInstance: any, config?: SEOConfig); /** * 🎉 惊喜功能1:生成hreflang标签 * * 自动基于UI18n配置生成完整的hreflang标签 * * @param currentUrl 当前页面URL * @param options 生成选项 * @returns hreflang HTML标签字符串 * * @example * ```javascript * const ui18n = createUI18n({ supportedLanguages: ['en', 'zh-cn', 'es'] }); * * // 惊喜发现! * const hreflangTags = ui18n.seo.generateHreflang('/about'); * // 输出: * // * // * // * ``` */ generateHreflang(currentUrl: string, options?: { /** 指定支持的语言(默认使用UI18n配置) */ languages?: SupportedLanguage[]; /** 强制使用特定的URL模式 */ forceUrlPattern?: 'path' | 'subdomain' | 'query'; /** 是否包含x-default链接 */ includeXDefault?: boolean; /** 自定义域名 */ domain?: string; }): string; /** * 🎉 惊喜功能2:语言代码标准化 * * 将用户输入的语言代码转换为SEO友好的BCP47格式 * * @param languageCode 原始语言代码 * @returns 标准化的语言代码 * * @example * ```javascript * ui18n.seo.standardizeLanguageCode('zh-cn'); // "zh-CN" * ui18n.seo.standardizeLanguageCode('en-us'); // "en-US" * ``` */ standardizeLanguageCode(languageCode: string): string; /** * 🎉 惊喜功能3:获取HTML lang属性 * * 生成适用于HTML标签的lang属性值 * * @param language 语言代码(可选,默认使用当前语言) * @returns 标准化的语言代码 * * @example * ```javascript * const htmlLang = ui18n.seo.getHtmlLangAttr(); // "zh-CN" * // * ``` */ getHtmlLangAttr(language?: SupportedLanguage): string; /** * 🎉 惊喜功能4:获取Open Graph locale * * 生成适用于Open Graph的locale值 * * @param language 语言代码(可选,默认使用当前语言) * @returns Open Graph格式的locale * * @example * ```javascript * const ogLocale = ui18n.seo.getOpenGraphLocale(); // "zh_CN" * // * ``` */ getOpenGraphLocale(language?: SupportedLanguage): string; /** * 🎉 惊喜功能5:生成规范化URL * * 为指定语言生成规范化URL,避免重复内容问题 * * @param currentUrl 当前URL * @param language 目标语言 * @returns 规范化URL * * @example * ```javascript * const canonicalUrl = ui18n.seo.getCanonicalUrl('/about', 'zh-cn'); * // "/zh-cn/about" * ``` */ getCanonicalUrl(currentUrl: string, language?: SupportedLanguage): string; /** * 🎉 惊喜功能6:获取SEO最佳实践建议 * * 返回多语言SEO的最佳实践建议(不是完整实现,是指导) * * @returns SEO最佳实践建议 * * @example * ```javascript * const tips = ui18n.seo.getSEOBestPractices(); * console.log(tips.hreflang); // "使用hreflang告诉搜索引擎页面的语言版本关系" * ``` */ getSEOBestPractices(): { hreflang: string; urlStructure: string; contentStrategy: string; technicalTips: string[]; }; /** * 🎉 惊喜功能7:验证SEO配置 * * 检查当前SEO配置的完整性和正确性 * * @param currentUrl 当前页面URL(用于检测URL模式) * @returns 验证结果 * * @example * ```javascript * const validation = ui18n.seo.validateSEOConfig('/about'); * if (!validation.valid) { * console.warn('SEO配置问题:', validation.warnings); * } * ``` */ validateSEOConfig(currentUrl?: string): { valid: boolean; warnings: string[]; suggestions: string[]; }; /** * 检测URL的多语言模式 */ private detectUrlPattern; /** * 为指定语言生成URL */ private generateLanguageUrl; /** * 生成路径模式URL:/en/page */ private generatePathUrl; /** * 生成子域名模式URL:en.site.com */ private generateSubdomainUrl; /** * 生成查询参数模式URL:?lang=en */ private generateQueryUrl; /** * 检查是否为有效的语言代码 */ private isValidLanguageCode; /** * 从UI18n实例获取支持的语言列表 */ private getSupportedLanguagesFromUI18n; /** * 从UI18n实例获取当前语言 */ private getCurrentLanguageFromUI18n; /** * 从UI18n实例获取默认语言 */ private getDefaultLanguageFromUI18n; /** * 调试日志 */ private log; } /** * 创建SEO辅助实例的工厂函数 * @param ui18nInstance UI18n实例 * @param config SEO配置 * @returns SEOHelper实例 */ export declare function createSEOHelper(ui18nInstance: any, config?: SEOConfig): SEOHelper; //# sourceMappingURL=seo-helper.d.ts.map