1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| CREATE TABLE multilingual_content ( id INT AUTO_INCREMENT PRIMARY KEY, content_key VARCHAR(100) NOT NULL, language_code VARCHAR(10) NOT NULL, content_title VARCHAR(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, content_body TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, content_metadata JSON, is_active TINYINT DEFAULT 1, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uk_content_lang (content_key, language_code), INDEX idx_language_code (language_code), INDEX idx_content_key (content_key) ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
INSERT INTO multilingual_content (content_key, language_code, content_title, content_body, content_metadata) VALUES ('welcome_message', 'en', 'Welcome to Our Platform', 'Thank you for joining our community! 🎉', JSON_OBJECT('region', 'global', 'rtl', false)), ('welcome_message', 'zh-CN', '欢迎来到我们的平台', '感谢您加入我们的社区!🎉', JSON_OBJECT('region', 'china', 'rtl', false)), ('welcome_message', 'zh-TW', '歡迎來到我們的平台', '感謝您加入我們的社群!🎉', JSON_OBJECT('region', 'taiwan', 'rtl', false)), ('welcome_message', 'ja', 'プラットフォームへようこそ', 'コミュニティへの参加をありがとうございます!🎉', JSON_OBJECT('region', 'japan', 'rtl', false)), ('welcome_message', 'ko', '플랫폼에 오신 것을 환영합니다', '커뮤니티에 참여해 주셔서 감사합니다! 🎉', JSON_OBJECT('region', 'korea', 'rtl', false)), ('welcome_message', 'ar', 'مرحباً بك في منصتنا', 'شكراً لانضمامك إلى مجتمعنا! 🎉', JSON_OBJECT('region', 'middle_east', 'rtl', true)), ('welcome_message', 'fr', 'Bienvenue sur notre plateforme', 'Merci de rejoindre notre communauté ! 🎉', JSON_OBJECT('region', 'france', 'rtl', false)), ('welcome_message', 'de', 'Willkommen auf unserer Plattform', 'Danke, dass Sie unserer Community beigetreten sind! 🎉', JSON_OBJECT('region', 'germany', 'rtl', false)), ('welcome_message', 'es', 'Bienvenido a nuestra plataforma', '¡Gracias por unirte a nuestra comunidad! 🎉', JSON_OBJECT('region', 'spain', 'rtl', false)), ('welcome_message', 'ru', 'Добро пожаловать на нашу платформу', 'Спасибо за присоединение к нашему сообществу! 🎉', JSON_OBJECT('region', 'russia', 'rtl', false)), ('welcome_message', 'hi', 'हमारे प्लेटफॉर्म में आपका स्वागत है', 'हमारे समुदाय में शामिल होने के लिए धन्यवाद! 🎉', JSON_OBJECT('region', 'india', 'rtl', false));
DELIMITER // CREATE PROCEDURE ProcessMultilingualData() BEGIN SELECT '=== 多语言数据处理示例 ===' as section; SELECT language_code as '语言代码', COUNT(*) as '内容数量', COUNT(DISTINCT content_key) as '唯一内容键', CASE language_code WHEN 'en' THEN 'English' WHEN 'zh-CN' THEN '简体中文' WHEN 'zh-TW' THEN '繁体中文' WHEN 'ja' THEN '日本語' WHEN 'ko' THEN '한국어' WHEN 'ar' THEN 'العربية' WHEN 'fr' THEN 'Français' WHEN 'de' THEN 'Deutsch' WHEN 'es' THEN 'Español' WHEN 'ru' THEN 'Русский' WHEN 'hi' THEN 'हिन्दी' ELSE language_code END as '语言名称' FROM multilingual_content WHERE is_active = 1 GROUP BY language_code ORDER BY COUNT(*) DESC; SELECT '=== 多语言内容展示 ===' as subsection; SELECT content_key as '内容键', language_code as '语言', content_title as '标题', LEFT(content_body, 50) as '内容预览', JSON_UNQUOTE(JSON_EXTRACT(content_metadata, '$.region')) as '地区', JSON_UNQUOTE(JSON_EXTRACT(content_metadata, '$.rtl')) as 'RTL支持' FROM multilingual_content WHERE content_key = 'welcome_message' ORDER BY CASE language_code WHEN 'en' THEN 1 WHEN 'zh-CN' THEN 2 WHEN 'zh-TW' THEN 3 WHEN 'ja' THEN 4 WHEN 'ko' THEN 5 ELSE 99 END; SELECT '=== 字符长度分析 ===' as subsection; SELECT language_code as '语言', AVG(CHAR_LENGTH(content_title)) as '平均标题字符数', AVG(CHAR_LENGTH(content_body)) as '平均内容字符数', AVG(LENGTH(content_title)) as '平均标题字节数', AVG(LENGTH(content_body)) as '平均内容字节数', ROUND(AVG(LENGTH(content_title)) / AVG(CHAR_LENGTH(content_title)), 2) as '平均字节/字符比' FROM multilingual_content GROUP BY language_code ORDER BY AVG(LENGTH(content_title)) / AVG(CHAR_LENGTH(content_title)) DESC; END // DELIMITER ;
CALL ProcessMultilingualData();
|