feat: 更新国际化内容和优化首页组件
refactor: 移除调试日志和简化博客页面逻辑 docs: 更新多语言翻译文件,添加公司信息、产品中心和应用领域等内容
This commit is contained in:
@@ -1,59 +1,13 @@
|
||||
import { Callout } from "@/components/mdx/Callout";
|
||||
import MDXComponents from "@/components/mdx/MDXComponents";
|
||||
import TableOfContents from "@/components/mdx/TableOfContents.client";
|
||||
import { Locale } from "@/i18n/routing";
|
||||
import { getPostDetail } from "@/lib/getBlogDetail";
|
||||
import { Locale, LOCALES } from "@/i18n/routing";
|
||||
import { getPosts } from "@/lib/getBlogs";
|
||||
import { constructMetadata } from "@/lib/metadata";
|
||||
import { BlogPost } from "@/types/blog";
|
||||
import { Metadata } from "next";
|
||||
import { MDXRemote } from "next-mdx-remote-client/rsc";
|
||||
import { notFound } from "next/navigation";
|
||||
|
||||
interface TableOfContentsItem {
|
||||
id: string;
|
||||
text: string;
|
||||
level: number;
|
||||
}
|
||||
|
||||
// 解析MDX内容并提取标题
|
||||
async function parseMDXContent(content: string): Promise<TableOfContentsItem[]> {
|
||||
if (!content) {
|
||||
return [];
|
||||
}
|
||||
|
||||
try {
|
||||
const headingRegex = /^#{2,4}\s+(.+)$/gm;
|
||||
const headings: TableOfContentsItem[] = [];
|
||||
let match;
|
||||
|
||||
while ((match = headingRegex.exec(content)) !== null) {
|
||||
const fullMatch = match[0];
|
||||
const text = match[1]?.trim();
|
||||
|
||||
if (!text) continue;
|
||||
|
||||
// 确定标题级别
|
||||
let level = 2;
|
||||
if (fullMatch.startsWith("###")) {
|
||||
level = fullMatch.startsWith("####") ? 4 : 3;
|
||||
}
|
||||
|
||||
// 生成ID(将文本转换为URL友好的格式)
|
||||
const id = text
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9\u4e00-\u9fa5\s-]/g, "")
|
||||
.replace(/\s+/g, "-");
|
||||
|
||||
headings.push({ id, text, level });
|
||||
}
|
||||
|
||||
return headings;
|
||||
} catch (error) {
|
||||
console.error("Error parsing MDX content for TOC:", error);
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
type Params = Promise<{
|
||||
locale: string;
|
||||
slug: string;
|
||||
@@ -67,10 +21,10 @@ export async function generateMetadata({
|
||||
params,
|
||||
}: MetadataProps): Promise<Metadata> {
|
||||
const { locale, slug } = await params;
|
||||
let post: BlogPost = await getPostDetail(slug);
|
||||
|
||||
console.log(post);
|
||||
let { posts }: { posts: BlogPost[] } = await getPosts(locale);
|
||||
const post = posts.find((post) => post.slug === slug);
|
||||
|
||||
console.log(post, posts);
|
||||
if (!post) {
|
||||
return constructMetadata({
|
||||
title: "404",
|
||||
@@ -95,73 +49,56 @@ export async function generateMetadata({
|
||||
|
||||
export default async function BlogPage({ params }: { params: Params }) {
|
||||
const { locale, slug } = await params;
|
||||
let post: BlogPost = await getPostDetail(slug);
|
||||
let { posts }: { posts: BlogPost[] } = await getPosts(locale);
|
||||
|
||||
const post = posts.find((item) => item.slug === slug);
|
||||
|
||||
if (!post) {
|
||||
return notFound();
|
||||
}
|
||||
|
||||
console.log(post);
|
||||
|
||||
// 提取博客内容中的标题用于目录
|
||||
const tocItems = await parseMDXContent(post.content || "");
|
||||
|
||||
// 使用默认目录标题
|
||||
const tocTitle = "目录";
|
||||
|
||||
return (
|
||||
<div className="flex flex-col md:flex-row w-full gap-8">
|
||||
{/* 侧边目录 - 在移动端显示在内容上方 */}
|
||||
<div className="w-full md:w-1/4 lg:w-1/5 order-2 md:order-1">
|
||||
<TableOfContents
|
||||
items={tocItems || []}
|
||||
title={tocTitle}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* 主要内容 */}
|
||||
<article className="w-full md:w-3/4 lg:w-4/5 px-2 md:px-8 ml-0 md:ml-64 order-1 md:order-2">
|
||||
<h1 className="break-words text-4xl font-bold mt-6 mb-4">{post.title}</h1>
|
||||
{post.image && (
|
||||
<img src={post.image} alt={post.title} className="rounded-sm" />
|
||||
)}
|
||||
{post.tags && post.tags.split(",").length ? (
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{post.tags.split(",").map((tag) => {
|
||||
return (
|
||||
<div
|
||||
key={tag}
|
||||
className={`rounded-md bg-gray-200 hover:!no-underline dark:bg-[#24272E] flex px-2.5 py-1.5 text-sm font-medium transition-colors hover:text-black hover:dark:bg-[#15AFD04C] hover:dark:text-[#82E9FF] text-gray-500 dark:text-[#7F818C] outline-none focus-visible:ring transition`}
|
||||
>
|
||||
{tag.trim()}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{post.description && <Callout>{post.description}</Callout>}
|
||||
<MDXRemote source={post?.content || ""} components={MDXComponents} />
|
||||
</article>
|
||||
<div className="w-full md:w-3/5 px-2 md:px-12">
|
||||
<h1 className="break-words text-4xl font-bold mt-6 mb-4">{post.title}</h1>
|
||||
{post.image && (
|
||||
<img src={post.image} alt={post.title} className="rounded-sm" />
|
||||
)}
|
||||
{post.tags && post.tags.split(",").length ? (
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{post.tags.split(",").map((tag) => {
|
||||
return (
|
||||
<div
|
||||
key={tag}
|
||||
className={`rounded-md bg-gray-200 hover:!no-underline dark:bg-[#24272E] flex px-2.5 py-1.5 text-sm font-medium transition-colors hover:text-black hover:dark:bg-[#15AFD04C] hover:dark:text-[#82E9FF] text-gray-500 dark:text-[#7F818C] outline-none focus-visible:ring transition`}
|
||||
>
|
||||
{tag.trim()}
|
||||
</div>
|
||||
);
|
||||
})}
|
||||
</div>
|
||||
) : (
|
||||
<></>
|
||||
)}
|
||||
{post.description && <Callout>{post.description}</Callout>}
|
||||
<MDXRemote source={post?.content || ""} components={MDXComponents} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
// export async function generateStaticParams() {
|
||||
// let post = (await getPostDetail());
|
||||
|
||||
// // Filter out posts without a slug
|
||||
// posts = posts.filter((post) => post.slug);
|
||||
export async function generateStaticParams() {
|
||||
let posts = (await getPosts()).posts;
|
||||
|
||||
// return LOCALES.flatMap((locale) =>
|
||||
// posts.map((post) => {
|
||||
// const slugPart = post.slug.replace(/^\//, "").replace(/^blog\//, "");
|
||||
// Filter out posts without a slug
|
||||
posts = posts.filter((post) => post.slug);
|
||||
|
||||
// return {
|
||||
// locale,
|
||||
// slug: slugPart,
|
||||
// };
|
||||
// })
|
||||
// );
|
||||
// }
|
||||
return LOCALES.flatMap((locale) =>
|
||||
posts.map((post) => {
|
||||
const slugPart = post.slug.replace(/^\//, "").replace(/^blog\//, "");
|
||||
|
||||
return {
|
||||
locale,
|
||||
slug: slugPart,
|
||||
};
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@@ -4,6 +4,9 @@ import { useTranslations } from "next-intl";
|
||||
export default function HomeComponent() {
|
||||
const t = useTranslations("Home");
|
||||
|
||||
// 客户端组件中直接使用翻译键,next-intl 会自动处理
|
||||
// 注意:在客户端组件中,我们不能使用 raw() 函数,需要直接访问翻译键
|
||||
|
||||
return (
|
||||
<>
|
||||
<section className="mx-auto text-center">
|
||||
@@ -24,20 +27,20 @@ export default function HomeComponent() {
|
||||
<div className="w-full lg:w-1/2 flex flex-col justify-center p-8 lg:p-16">
|
||||
{/* 第一部分:标题 */}
|
||||
<div className="mb-6">
|
||||
<h2 className="text-3xl font-bold text-gray-900">天津友发钢管集团股份有限公司</h2>
|
||||
<h2 className="text-3xl font-bold text-gray-900">{t("company.title")}</h2>
|
||||
</div>
|
||||
|
||||
{/* 第二部分:介绍 */}
|
||||
<div className="mb-8">
|
||||
<p className="text-lg text-gray-700 leading-relaxed">
|
||||
友发集团是集直缝焊接圆管(含热浸镀锌)、直缝焊接方矩管(含热浸镀锌)、钢塑复合管、不锈钢管及管件、螺旋焊管(含承插及防腐加工)、热镀锌无缝管、石油管道、管件、保温管道、塑料管及管件、盘扣脚手架、光伏支架及地桩等多种产品生产销售于一体的大型企业集团,拥有'友发'和'正金'两个品牌。已经形成天津、河北唐山、河北邯郸、河北沧州、陕西韩城、江苏溧阳、辽宁葫芦岛、云南玉溪、安徽临泉、吉林磐石10个生产基地,同时正在建设四川成都基地。
|
||||
{t("company.description")}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
{/* 第三部分:按钮 */}
|
||||
<div>
|
||||
<button className="bg-red-600 hover:bg-red-700 text-white font-medium py-2 px-6 rounded transition-colors">
|
||||
了解更多
|
||||
{t("company.button")}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -50,39 +53,39 @@ export default function HomeComponent() {
|
||||
{/* 第一组卡片 */}
|
||||
<div className="min-w-full flex justify-center px-4 gap-6">
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">5</div>
|
||||
<div className="text-gray-700">国家级绿色产品</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card1.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card1.title")}</div>
|
||||
</div>
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">3+</div>
|
||||
<div className="text-gray-700">国家级绿色工厂</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card2.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card2.title")}</div>
|
||||
</div>
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">7</div>
|
||||
<div className="text-gray-700">CNAS(国家认可)实验室</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card3.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card3.title")}</div>
|
||||
</div>
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">10</div>
|
||||
<div className="text-gray-700">生产基地</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card4.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card4.title")}</div>
|
||||
</div>
|
||||
</div>
|
||||
{/* 第二组卡片 - 用于无缝轮播 */}
|
||||
<div className="min-w-full flex justify-center px-4 gap-6">
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">5</div>
|
||||
<div className="text-gray-700">国家级绿色产品</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card1.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card1.title")}</div>
|
||||
</div>
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">3+</div>
|
||||
<div className="text-gray-700">国家级绿色工厂</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card2.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card2.title")}</div>
|
||||
</div>
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">7</div>
|
||||
<div className="text-gray-700">CNAS(国家认可)实验室</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card3.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card3.title")}</div>
|
||||
</div>
|
||||
<div className="bg-white rounded-lg shadow-md p-6 flex-1 max-w-[22%] text-center">
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">10</div>
|
||||
<div className="text-gray-700">生产基地</div>
|
||||
<div className="text-red-600 text-4xl font-bold mb-2">{t("stats.card4.number")}</div>
|
||||
<div className="text-gray-700">{t("stats.card4.title")}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -108,7 +111,7 @@ export default function HomeComponent() {
|
||||
{/* 标题 */}
|
||||
<div className="text-center mb-12">
|
||||
<h2 className="text-3xl font-bold text-gray-900 inline-block relative">
|
||||
最新资讯
|
||||
{t("news.title")}
|
||||
<span className="absolute bottom-0 left-1/4 w-1/2 h-1 bg-red-600"></span>
|
||||
</h2>
|
||||
</div>
|
||||
@@ -118,33 +121,33 @@ export default function HomeComponent() {
|
||||
{/* 第一张卡片 */}
|
||||
<div className="w-full md:w-[28vw] lg:w-[28vw] bg-white rounded-lg overflow-hidden transition-all duration-300 hover:shadow-lg">
|
||||
<div className="p-4">
|
||||
<div className="text-red-600 mb-2 font-medium text-left">2025/11/17</div>
|
||||
<div className="text-gray-800 mb-3 line-clamp-1 text-base whitespace-nowrap overflow-hidden text-ellipsis">核聚变区,智创未来,友发集团亮相202...</div>
|
||||
<div className="text-red-600 mb-2 font-medium text-left">{t("news.items.news1.date")}</div>
|
||||
<div className="text-gray-800 mb-3 line-clamp-1 text-base whitespace-nowrap overflow-hidden text-ellipsis">{t("news.items.news1.title")}</div>
|
||||
</div>
|
||||
<div className="p-4 h-48 overflow-hidden">
|
||||
<img src="/placeholder.svg" alt="资讯图片1" className="w-full h-full object-cover rounded" />
|
||||
<img src="/placeholder.svg" alt={t("news.items.news1.title")} className="w-full h-full object-cover rounded" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 第二张卡片 - 中间突出显示 */}
|
||||
<div className="w-full md:w-[28vw] lg:w-[28vw] bg-white rounded-lg overflow-hidden transition-all duration-300 hover:shadow-lg relative -mt-2 z-10">
|
||||
<div className="p-4">
|
||||
<div className="text-red-600 mb-2 font-medium text-left">2025/11/17</div>
|
||||
<div className="text-gray-800 mb-3 line-clamp-1 text-base whitespace-nowrap overflow-hidden text-ellipsis">携手再攀产业新高峰,友发集团应邀出席...</div>
|
||||
<div className="text-red-600 mb-2 font-medium text-left">{t("news.items.news2.date")}</div>
|
||||
<div className="text-gray-800 mb-3 line-clamp-1 text-base whitespace-nowrap overflow-hidden text-ellipsis">{t("news.items.news2.title")}</div>
|
||||
</div>
|
||||
<div className="p-4 h-48 overflow-hidden">
|
||||
<img src="/placeholder.svg" alt="资讯图片2" className="w-full h-full object-cover rounded" />
|
||||
<img src="/placeholder.svg" alt={t("news.items.news2.title")} className="w-full h-full object-cover rounded" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{/* 第三张卡片 */}
|
||||
<div className="w-full md:w-[26vw] lg:w-[26vw] bg-white rounded-lg overflow-hidden transition-all duration-300 hover:shadow-lg">
|
||||
<div className="p-4">
|
||||
<div className="text-red-600 mb-2 font-medium text-left">2025/09/20</div>
|
||||
<div className="text-gray-800 mb-3 line-clamp-1 text-base whitespace-nowrap overflow-hidden text-ellipsis">友发集团与中诚投建工集团签订战略合作...</div>
|
||||
<div className="text-red-600 mb-2 font-medium text-left">{t("news.items.news3.date")}</div>
|
||||
<div className="text-gray-800 mb-3 line-clamp-1 text-base whitespace-nowrap overflow-hidden text-ellipsis">{t("news.items.news3.title")}</div>
|
||||
</div>
|
||||
<div className="p-4 h-48 overflow-hidden">
|
||||
<img src="/placeholder.svg" alt="资讯图片3" className="w-full h-full object-cover rounded" />
|
||||
<img src="/placeholder.svg" alt={t("news.items.news3.title")} className="w-full h-full object-cover rounded" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -152,7 +155,7 @@ export default function HomeComponent() {
|
||||
{/* 了解更多按钮 */}
|
||||
<div className="text-center mt-12">
|
||||
<button className="px-6 py-2 bg-white border border-red-600 text-red-600 hover:bg-red-600 hover:text-white transition-all duration-300 rounded-sm">
|
||||
了解更多 >
|
||||
{t("news.button")}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
@@ -160,7 +163,7 @@ export default function HomeComponent() {
|
||||
<div className="py-16 px-4 bg-white">
|
||||
<div className="text-center mb-12">
|
||||
<h2 className="text-3xl font-bold text-gray-900 inline-block relative">
|
||||
产品中心
|
||||
{t("products.title")}
|
||||
<span className="absolute bottom-0 left-1/4 w-1/2 h-1 bg-red-600"></span>
|
||||
</h2>
|
||||
</div>
|
||||
@@ -173,13 +176,13 @@ export default function HomeComponent() {
|
||||
<img
|
||||
id="productImage"
|
||||
src="/placeholder.svg"
|
||||
alt="直缝高频焊接圆管"
|
||||
alt={t("products.list.product1.alt")}
|
||||
className="w-full h-full object-contain p-8 transition-opacity duration-300"
|
||||
/>
|
||||
|
||||
{/* 产品标题覆盖层 */}
|
||||
<div className="absolute bottom-0 left-0 right-0 p-6 bg-gradient-to-t from-black/70 to-transparent">
|
||||
<h3 id="productTitle" className="text-white text-2xl font-bold">直缝高频焊接圆管(含热浸镀锌)</h3>
|
||||
<h3 id="productTitle" className="text-white text-2xl font-bold">{t("products.list.product1.name")}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -190,11 +193,11 @@ export default function HomeComponent() {
|
||||
className="product-item p-6 flex items-center justify-center text-center bg-gray-200 cursor-pointer transition-colors duration-300 hover:bg-red-600 hover:text-white"
|
||||
onMouseEnter={() => {
|
||||
document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg');
|
||||
document.getElementById('productImage')?.setAttribute('alt', '直缝高频焊接圆管');
|
||||
document.getElementById('productTitle')!.textContent = '直缝高频焊接圆管(含热浸镀锌)';
|
||||
document.getElementById('productImage')?.setAttribute('alt', t("products.list.product1.alt"));
|
||||
document.getElementById('productTitle')!.textContent = t("products.list.product1.name");
|
||||
}}
|
||||
>
|
||||
<span>直缝高频焊接圆管(含热浸镀锌)</span>
|
||||
<span>{t("products.list.product1.name")}</span>
|
||||
</div>
|
||||
|
||||
{/* 产品2 */}
|
||||
@@ -202,11 +205,11 @@ export default function HomeComponent() {
|
||||
className="product-item p-6 flex items-center justify-center text-center bg-gray-200 cursor-pointer transition-colors duration-300 hover:bg-red-600 hover:text-white"
|
||||
onMouseEnter={() => {
|
||||
document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg');
|
||||
document.getElementById('productImage')?.setAttribute('alt', '方形焊接钢管');
|
||||
document.getElementById('productTitle')!.textContent = '方形焊接钢管(含热浸镀锌)';
|
||||
document.getElementById('productImage')?.setAttribute('alt', t("products.list.product2.alt"));
|
||||
document.getElementById('productTitle')!.textContent = t("products.list.product2.name");
|
||||
}}
|
||||
>
|
||||
<span>方形焊接钢管(含热浸镀锌)</span>
|
||||
<span>{t("products.list.product2.name")}</span>
|
||||
</div>
|
||||
|
||||
{/* 产品3 */}
|
||||
@@ -214,11 +217,11 @@ export default function HomeComponent() {
|
||||
className="product-item p-6 flex items-center justify-center text-center bg-gray-200 cursor-pointer transition-colors duration-300 hover:bg-red-600 hover:text-white"
|
||||
onMouseEnter={() => {
|
||||
document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg');
|
||||
document.getElementById('productImage')?.setAttribute('alt', '钢塑复合管');
|
||||
document.getElementById('productTitle')!.textContent = '钢塑复合管';
|
||||
document.getElementById('productImage')?.setAttribute('alt', t("products.list.product3.alt"));
|
||||
document.getElementById('productTitle')!.textContent = t("products.list.product3.name");
|
||||
}}
|
||||
>
|
||||
<span>钢塑复合管</span>
|
||||
<span>{t("products.list.product3.name")}</span>
|
||||
</div>
|
||||
|
||||
{/* 产品4 */}
|
||||
@@ -226,11 +229,11 @@ export default function HomeComponent() {
|
||||
className="product-item p-6 flex items-center justify-center text-center bg-gray-200 cursor-pointer transition-colors duration-300 hover:bg-red-600 hover:text-white"
|
||||
onMouseEnter={() => {
|
||||
document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg');
|
||||
document.getElementById('productImage')?.setAttribute('alt', '管路连接件');
|
||||
document.getElementById('productTitle')!.textContent = '管路连接件';
|
||||
document.getElementById('productImage')?.setAttribute('alt', t("products.list.product4.alt"));
|
||||
document.getElementById('productTitle')!.textContent = t("products.list.product4.name");
|
||||
}}
|
||||
>
|
||||
<span>管路连接件</span>
|
||||
<span>{t("products.list.product4.name")}</span>
|
||||
</div>
|
||||
|
||||
{/* 产品5 */}
|
||||
@@ -238,11 +241,11 @@ export default function HomeComponent() {
|
||||
className="product-item p-6 flex items-center justify-center text-center bg-gray-200 cursor-pointer transition-colors duration-300 hover:bg-red-600 hover:text-white"
|
||||
onMouseEnter={() => {
|
||||
document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg');
|
||||
document.getElementById('productImage')?.setAttribute('alt', '盘扣脚手架');
|
||||
document.getElementById('productTitle')!.textContent = '盘扣脚手架';
|
||||
document.getElementById('productImage')?.setAttribute('alt', t("products.list.product5.alt"));
|
||||
document.getElementById('productTitle')!.textContent = t("products.list.product5.name");
|
||||
}}
|
||||
>
|
||||
<span>盘扣脚手架</span>
|
||||
<span>{t("products.list.product5.name")}</span>
|
||||
</div>
|
||||
|
||||
{/* 产品6 */}
|
||||
@@ -250,11 +253,11 @@ export default function HomeComponent() {
|
||||
className="product-item p-6 flex items-center justify-center text-center bg-gray-200 cursor-pointer transition-colors duration-300 hover:bg-red-600 hover:text-white"
|
||||
onMouseEnter={() => {
|
||||
document.getElementById('productImage')?.setAttribute('src', '/placeholder.svg');
|
||||
document.getElementById('productImage')?.setAttribute('alt', '不锈钢管及管件');
|
||||
document.getElementById('productTitle')!.textContent = '不锈钢管及管件';
|
||||
document.getElementById('productImage')?.setAttribute('alt', t("products.list.product6.alt"));
|
||||
document.getElementById('productTitle')!.textContent = t("products.list.product6.name");
|
||||
}}
|
||||
>
|
||||
<span>不锈钢管及管件</span>
|
||||
<span>{t("products.list.product6.name")}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -265,7 +268,7 @@ export default function HomeComponent() {
|
||||
{/* 标题 */}
|
||||
<div className="text-center mb-12">
|
||||
<h2 className="text-3xl font-bold text-gray-900 inline-block relative">
|
||||
应用领域
|
||||
{t("applications.title")}
|
||||
<span className="absolute bottom-0 left-1/4 w-1/2 h-1 bg-red-600"></span>
|
||||
</h2>
|
||||
</div>
|
||||
@@ -303,11 +306,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/4 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="电梯井道"
|
||||
alt={t("applications.groups.group1.items.app1.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
电梯井道
|
||||
{t("applications.groups.group1.items.app1.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -315,11 +318,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/2 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="塔机制造"
|
||||
alt={t("applications.groups.group1.items.app2.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
塔机制造
|
||||
{t("applications.groups.group1.items.app2.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -327,11 +330,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/4 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="工程机械"
|
||||
alt={t("applications.groups.group1.items.app3.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
工程机械
|
||||
{t("applications.groups.group1.items.app3.name")}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -342,11 +345,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/2 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="高速护栏"
|
||||
alt={t("applications.groups.group1.items.app4.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
高速护栏
|
||||
{t("applications.groups.group1.items.app4.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -354,11 +357,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/4 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="桥梁"
|
||||
alt={t("applications.groups.group1.items.app5.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
桥梁
|
||||
{t("applications.groups.group1.items.app5.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -366,11 +369,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/4 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="钢结构"
|
||||
alt={t("applications.groups.group1.items.app6.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
钢结构
|
||||
{t("applications.groups.group1.items.app6.name")}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -384,11 +387,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/3 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="建筑工程"
|
||||
alt={t("applications.groups.group2.items.app7.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
建筑工程
|
||||
{t("applications.groups.group2.items.app7.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -396,11 +399,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/3 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="水利水电"
|
||||
alt={t("applications.groups.group2.items.app8.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
水利水电
|
||||
{t("applications.groups.group2.items.app8.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -408,11 +411,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/3 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="轨道交通"
|
||||
alt={t("applications.groups.group2.items.app9.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
轨道交通
|
||||
{t("applications.groups.group2.items.app9.name")}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -423,11 +426,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/3 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="市政工程"
|
||||
alt={t("applications.groups.group2.items.app10.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
市政工程
|
||||
{t("applications.groups.group2.items.app10.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -435,11 +438,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/3 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="农业设施"
|
||||
alt={t("applications.groups.group2.items.app11.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
农业设施
|
||||
{t("applications.groups.group2.items.app11.name")}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -447,11 +450,11 @@ export default function HomeComponent() {
|
||||
<div className="w-1/3 relative overflow-hidden rounded-lg">
|
||||
<img
|
||||
src="/placeholder.svg"
|
||||
alt="能源化工"
|
||||
alt={t("applications.groups.group2.items.app12.alt")}
|
||||
className="w-full h-[280px] object-cover hover:scale-105 transition-transform duration-300"
|
||||
/>
|
||||
<div className="absolute bottom-0 left-0 right-0 bg-black/60 text-white py-2 px-4">
|
||||
能源化工
|
||||
{t("applications.groups.group2.items.app12.name")}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -171,7 +171,156 @@
|
||||
"tagLine": "Next.js Multilingual Starter Template",
|
||||
"description": "Next.js 16 starter template with built-in multilingual support to help you quickly build global websites. Clean, efficient, ready-to-use, with a fully optimized SEO infrastructure.",
|
||||
"carousel": "Carousel",
|
||||
"company_video": "Company Video"
|
||||
"company_video": "Company Video",
|
||||
"company": {
|
||||
"title": "Tianjin Youfa Steel Pipe Group Co., Ltd.",
|
||||
"description": "Youfa Group is a large enterprise group integrating the production and sales of various products such as straight seam welded round pipes (including hot-dip galvanizing), straight seam welded square and rectangular pipes (including hot-dip galvanizing), steel-plastic composite pipes, stainless steel pipes and fittings, spiral welded pipes (including socket and anti-corrosion processing), hot-dip galvanized seamless pipes, oil pipelines, pipe fittings, insulated pipelines, plastic pipes and fittings, disc buckle scaffolding, photovoltaic brackets and ground piles, etc., with two brands of 'Youfa' and 'Zhengjin'. It has formed 10 production bases in Tianjin, Tangshan, Hebei, Handan, Hebei, Cangzhou, Hebei, Hancheng, Shaanxi, Liyang, Jiangsu, Huludao, Liaoning, Yuxi, Yunnan, Linquan, Anhui, and Panshi, Jilin, and is currently building a production base in Chengdu, Sichuan.",
|
||||
"button": "Learn More"
|
||||
},
|
||||
"stats": {
|
||||
"card1": {
|
||||
"number": "5",
|
||||
"title": "National Green Products"
|
||||
},
|
||||
"card2": {
|
||||
"number": "3+",
|
||||
"title": "National Green Factories"
|
||||
},
|
||||
"card3": {
|
||||
"number": "7",
|
||||
"title": "CNAS (National Accreditation) Laboratories"
|
||||
},
|
||||
"card4": {
|
||||
"number": "10",
|
||||
"title": "Production Bases"
|
||||
}
|
||||
},
|
||||
"news": {
|
||||
"title": "Latest News",
|
||||
"button": "Learn More >",
|
||||
"items": {
|
||||
"news1": {
|
||||
"date": "2025/11/17",
|
||||
"title": "Nuclear Fusion Zone, Intelligent Future, Youfa Group Appears at 202..."
|
||||
},
|
||||
"news2": {
|
||||
"date": "2025/11/17",
|
||||
"title": "Hand in Hand to Climb New Industry Peaks, Youfa Group Was Invited to Attend..."
|
||||
},
|
||||
"news3": {
|
||||
"date": "2025/09/20",
|
||||
"title": "Youfa Group Signed Strategic Cooperation with Zhongchengtou Construction Engineering Group..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"products": {
|
||||
"title": "Product Center",
|
||||
"list": {
|
||||
"product1": {
|
||||
"name": "Straight Seam High Frequency Welded Round Pipes (Including Hot-dip Galvanizing)",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Straight Seam High Frequency Welded Round Pipes"
|
||||
},
|
||||
"product2": {
|
||||
"name": "Square Welded Steel Pipes (Including Hot-dip Galvanizing)",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Square Welded Steel Pipes"
|
||||
},
|
||||
"product3": {
|
||||
"name": "Steel-plastic Composite Pipes",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Steel-plastic Composite Pipes"
|
||||
},
|
||||
"product4": {
|
||||
"name": "Pipeline Connectors",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Pipeline Connectors"
|
||||
},
|
||||
"product5": {
|
||||
"name": "Disc Buckle Scaffolding",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Disc Buckle Scaffolding"
|
||||
},
|
||||
"product6": {
|
||||
"name": "Stainless Steel Pipes and Fittings",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Stainless Steel Pipes and Fittings"
|
||||
}
|
||||
}
|
||||
},
|
||||
"applications": {
|
||||
"title": "Application Areas",
|
||||
"groups": {
|
||||
"group1": {
|
||||
"items": {
|
||||
"app1": {
|
||||
"name": "Elevator Shaft",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Elevator Shaft"
|
||||
},
|
||||
"app2": {
|
||||
"name": "Tower Crane Manufacturing",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Tower Crane Manufacturing"
|
||||
},
|
||||
"app3": {
|
||||
"name": "Construction Machinery",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Construction Machinery"
|
||||
},
|
||||
"app4": {
|
||||
"name": "Highway Guardrails",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Highway Guardrails"
|
||||
},
|
||||
"app5": {
|
||||
"name": "Bridges",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Bridges"
|
||||
},
|
||||
"app6": {
|
||||
"name": "Steel Structures",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Steel Structures"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group2": {
|
||||
"items": {
|
||||
"app7": {
|
||||
"name": "Construction Engineering",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Construction Engineering"
|
||||
},
|
||||
"app8": {
|
||||
"name": "Water Conservancy and Hydropower",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Water Conservancy and Hydropower"
|
||||
},
|
||||
"app9": {
|
||||
"name": "Rail Transit",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Rail Transit"
|
||||
},
|
||||
"app10": {
|
||||
"name": "Municipal Engineering",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Municipal Engineering"
|
||||
},
|
||||
"app11": {
|
||||
"name": "Agricultural Facilities",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Agricultural Facilities"
|
||||
},
|
||||
"app12": {
|
||||
"name": "Energy and Chemical Industry",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Energy and Chemical Industry"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Blog": {
|
||||
"title": "News Center",
|
||||
|
||||
@@ -171,7 +171,156 @@
|
||||
"tagLine": "Mẫu Khởi Động Nhiều Ngôn Ngữ Next.js",
|
||||
"description": "Mẫu khởi động Next.js 16 với hỗ trợ đa ngôn ngữ tích hợp sẵn, giúp bạn nhanh chóng xây dựng website toàn cầu. Sạch sẽ, hiệu quả, sẵn sàng sử dụng, với cơ sở hạ tầng SEO được tối ưu hóa hoàn toàn.",
|
||||
"carousel": "Slider Ảnh",
|
||||
"company_video": "Video Công Ty"
|
||||
"company_video": "Video Công Ty",
|
||||
"company": {
|
||||
"title": "Công ty TNHH Cong Ty Hoa Sen Thép Youfa Tianjin",
|
||||
"description": "Tập đoàn Youfa là một tập đoàn doanh nghiệp lớn kết hợp sản xuất và bán các sản phẩm khác nhau như ống tròn hàn nối thẳng (bao gồm sơn kẽm nóng), ống vuông và hình chữ nhật hàn nối thẳng (bao gồm sơn kẽm nóng), ống复合 thép-nhựa, ống thép không gỉ và phụ kiện, ống xoắn hàn (bao gồm ổ cắm và xử lý chống ăn mòn), ống không seem sơn kẽm nóng, đường ống dầu, phụ kiện đường ống, đường ống cách nhiệt, ống nhựa và phụ kiện, giàn giáo đ扣 đĩa, giá đỡ quang điện và cọc mặt đất, v.v., với hai thương hiệu 'Youfa' và 'Zhengjin'. Nó đã hình thành 10 cơ sở sản xuất ở Tianjin, Tangshan, Hebei, Handan, Hebei, Cangzhou, Hebei, Hancheng, Shaanxi, Liyang, Jiangsu, Huludao, Liaoning, Yuxi, Yunnan, Linquan, Anhui, và Panshi, Jilin, và hiện đang xây dựng cơ sở sản xuất ở Chengdu, Sichuan.",
|
||||
"button": "Tìm Hiểu Thêm"
|
||||
},
|
||||
"stats": {
|
||||
"card1": {
|
||||
"number": "5",
|
||||
"title": "Sản Phẩm Xanh Quốc Gia"
|
||||
},
|
||||
"card2": {
|
||||
"number": "3+",
|
||||
"title": "Nhà Máy Xanh Quốc Gia"
|
||||
},
|
||||
"card3": {
|
||||
"number": "7",
|
||||
"title": "Phòng Thí Nghiệm CNAS (Được Nhận Thực Quốc Gia)"
|
||||
},
|
||||
"card4": {
|
||||
"number": "10",
|
||||
"title": "Cơ Sở Sản Xuất"
|
||||
}
|
||||
},
|
||||
"news": {
|
||||
"title": "Tin Tức Mới Nhất",
|
||||
"button": "Tìm Hiểu Thêm >",
|
||||
"items": {
|
||||
"news1": {
|
||||
"date": "2025/11/17",
|
||||
"title": "Khu Vực Hợp Nhôm, Tương Lai Trí Tuệ, Tập Đoàn Youfa Xuất Hiện Tại 202..."
|
||||
},
|
||||
"news2": {
|
||||
"date": "2025/11/17",
|
||||
"title": "Cùng Tay Leo Đỉnh Mới Của Ngành, Tập Đoàn Youfa Được Mời Tham Dự..."
|
||||
},
|
||||
"news3": {
|
||||
"date": "2025/09/20",
|
||||
"title": "Tập Đoàn Youfa Ký Hợp Đồng Hợp Tác Chiến Lược Với Tập Đoàn Công Nghiệp Trung Thành..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"products": {
|
||||
"title": "Trung Tâm Sản Phẩm",
|
||||
"list": {
|
||||
"product1": {
|
||||
"name": "Ống Tròn Hàn Tần Số Cao Nối Thẳng (Bao Gồm Sơn Kẽm Nóng)",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Ống Tròn Hàn Tần Số Cao"
|
||||
},
|
||||
"product2": {
|
||||
"name": "Ống Thép Vuông Hàn (Bao Gồm Sơn Kẽm Nóng)",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Ống Thép Vuông Hàn"
|
||||
},
|
||||
"product3": {
|
||||
"name": "Ống复合 Thép-Nhựa",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Ống复合 Thép-Nhựa"
|
||||
},
|
||||
"product4": {
|
||||
"name": "Phụ Kiện Đường Ống",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Phụ Kiện Đường Ống"
|
||||
},
|
||||
"product5": {
|
||||
"name": "Giàn Giáo Đ扣 Đĩa",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Giàn Giáo Đ扣 Đĩa"
|
||||
},
|
||||
"product6": {
|
||||
"name": "Ống Thép Không Gỉ Và Phụ Kiện",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Ống Thép Không Gỉ"
|
||||
}
|
||||
}
|
||||
},
|
||||
"applications": {
|
||||
"title": "Lĩnh Vực Ứng Dụng",
|
||||
"groups": {
|
||||
"group1": {
|
||||
"items": {
|
||||
"app1": {
|
||||
"name": "Hầm Thang Máy",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Hầm Thang Máy"
|
||||
},
|
||||
"app2": {
|
||||
"name": "Sản Xuất Máy Cẩu Tháp",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Sản Xuất Máy Cẩu Tháp"
|
||||
},
|
||||
"app3": {
|
||||
"name": "Máy Móc Xây Dựng",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Máy Móc Xây Dựng"
|
||||
},
|
||||
"app4": {
|
||||
"name": "Hành Lang Bảo Vệ Đường Cao Tốc",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Hành Lang Bảo Vệ"
|
||||
},
|
||||
"app5": {
|
||||
"name": "Cầu Cáp",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Cầu Cáp"
|
||||
},
|
||||
"app6": {
|
||||
"name": "Cấu Trúc Thép",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Cấu Trúc Thép"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group2": {
|
||||
"items": {
|
||||
"app7": {
|
||||
"name": "Kỹ Thuật Xây Dựng",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Kỹ Thuật Xây Dựng"
|
||||
},
|
||||
"app8": {
|
||||
"name": "Thủy Lợi Và Thủy Điện",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Thủy Lợi Và Thủy Điện"
|
||||
},
|
||||
"app9": {
|
||||
"name": "Giao Thông Đường Sắt",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Giao Thông Đường Sắt"
|
||||
},
|
||||
"app10": {
|
||||
"name": "Kỹ Thuật Thị Chính",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Kỹ Thuật Thị Chính"
|
||||
},
|
||||
"app11": {
|
||||
"name": "Cơ Sở Nông Nghiệp",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Cơ Sở Nông Nghiệp"
|
||||
},
|
||||
"app12": {
|
||||
"name": "Ngành Năng Lượng Và Hóa Chất",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "Ngành Năng Lượng"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Blog": {
|
||||
"title": "Trung Tâm Tin Tức",
|
||||
|
||||
@@ -107,25 +107,22 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "开源项目",
|
||||
"title": "新闻中心",
|
||||
"links": [
|
||||
{
|
||||
"href": "https://github.com/weijunext/nextjs-starter",
|
||||
"name": "福安德外贸",
|
||||
"rel": "noopener noreferrer nofollow",
|
||||
"target": "_blank"
|
||||
"href": "/zh/blog?category=announce",
|
||||
"name": "公告",
|
||||
"useA": true
|
||||
},
|
||||
{
|
||||
"href": "https://github.com/weijunext/landing-page-boilerplate",
|
||||
"name": "Landing Page Boilerplate",
|
||||
"rel": "noopener noreferrer nofollow",
|
||||
"target": "_blank"
|
||||
"href": "/zh/blog?category=news",
|
||||
"name": "新闻",
|
||||
"useA": true
|
||||
},
|
||||
{
|
||||
"href": "https://github.com/weijunext/weekly-boilerplate",
|
||||
"name": "Blog Boilerplate",
|
||||
"rel": "noopener noreferrer nofollow",
|
||||
"target": "_blank"
|
||||
"href": "/zh/blog?category=event",
|
||||
"name": "活动",
|
||||
"useA": true
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -171,7 +168,156 @@
|
||||
"tagLine": "Next.js 多语言启动模板",
|
||||
"description": "内置多语言支持的 Next.js 16 启动模板,助您快速构建面向全球的出海网站。简洁高效,开箱即用,完全优化的SEO基础架构。",
|
||||
"carousel": "轮播图",
|
||||
"company_video": "企业视频"
|
||||
"company_video": "企业视频",
|
||||
"company": {
|
||||
"title": "天津友发钢管集团股份有限公司",
|
||||
"description": "友发集团是集直缝焊接圆管(含热浸镀锌)、直缝焊接方矩管(含热浸镀锌)、钢塑复合管、不锈钢管及管件、螺旋焊管(含承插及防腐加工)、热镀锌无缝管、石油管道、管件、保温管道、塑料管及管件、盘扣脚手架、光伏支架及地桩等多种产品生产销售于一体的大型企业集团,拥有'友发'和'正金'两个品牌。已经形成天津、河北唐山、河北邯郸、河北沧州、陕西韩城、江苏溧阳、辽宁葫芦岛、云南玉溪、安徽临泉、吉林磐石10个生产基地,同时正在建设四川成都基地。",
|
||||
"button": "了解更多"
|
||||
},
|
||||
"stats": {
|
||||
"card1": {
|
||||
"number": "5",
|
||||
"title": "国家级绿色产品"
|
||||
},
|
||||
"card2": {
|
||||
"number": "3+",
|
||||
"title": "国家级绿色工厂"
|
||||
},
|
||||
"card3": {
|
||||
"number": "7",
|
||||
"title": "CNAS(国家认可)实验室"
|
||||
},
|
||||
"card4": {
|
||||
"number": "10",
|
||||
"title": "生产基地"
|
||||
}
|
||||
},
|
||||
"news": {
|
||||
"title": "最新资讯",
|
||||
"button": "了解更多 >",
|
||||
"items": {
|
||||
"news1": {
|
||||
"date": "2025/11/17",
|
||||
"title": "核聚变区,智创未来,友发集团亮相202..."
|
||||
},
|
||||
"news2": {
|
||||
"date": "2025/11/17",
|
||||
"title": "携手再攀产业新高峰,友发集团应邀出席..."
|
||||
},
|
||||
"news3": {
|
||||
"date": "2025/09/20",
|
||||
"title": "友发集团与中诚投建工集团签订战略合作..."
|
||||
}
|
||||
}
|
||||
},
|
||||
"products": {
|
||||
"title": "产品中心",
|
||||
"list": {
|
||||
"product1": {
|
||||
"name": "直缝高频焊接圆管(含热浸镀锌)",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "直缝高频焊接圆管"
|
||||
},
|
||||
"product2": {
|
||||
"name": "方形焊接钢管(含热浸镀锌)",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "方形焊接钢管"
|
||||
},
|
||||
"product3": {
|
||||
"name": "钢塑复合管",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "钢塑复合管"
|
||||
},
|
||||
"product4": {
|
||||
"name": "管路连接件",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "管路连接件"
|
||||
},
|
||||
"product5": {
|
||||
"name": "盘扣脚手架",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "盘扣脚手架"
|
||||
},
|
||||
"product6": {
|
||||
"name": "不锈钢管及管件",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "不锈钢管及管件"
|
||||
}
|
||||
}
|
||||
},
|
||||
"applications": {
|
||||
"title": "应用领域",
|
||||
"groups": {
|
||||
"group1": {
|
||||
"items": {
|
||||
"app1": {
|
||||
"name": "电梯井道",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "电梯井道"
|
||||
},
|
||||
"app2": {
|
||||
"name": "塔机制造",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "塔机制造"
|
||||
},
|
||||
"app3": {
|
||||
"name": "工程机械",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "工程机械"
|
||||
},
|
||||
"app4": {
|
||||
"name": "高速护栏",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "高速护栏"
|
||||
},
|
||||
"app5": {
|
||||
"name": "桥梁",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "桥梁"
|
||||
},
|
||||
"app6": {
|
||||
"name": "钢结构",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "钢结构"
|
||||
}
|
||||
}
|
||||
},
|
||||
"group2": {
|
||||
"items": {
|
||||
"app7": {
|
||||
"name": "建筑工程",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "建筑工程"
|
||||
},
|
||||
"app8": {
|
||||
"name": "水利水电",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "水利水电"
|
||||
},
|
||||
"app9": {
|
||||
"name": "轨道交通",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "轨道交通"
|
||||
},
|
||||
"app10": {
|
||||
"name": "市政工程",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "市政工程"
|
||||
},
|
||||
"app11": {
|
||||
"name": "农业设施",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "农业设施"
|
||||
},
|
||||
"app12": {
|
||||
"name": "能源化工",
|
||||
"image": "/placeholder.svg",
|
||||
"alt": "能源化工"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Blog": {
|
||||
"title": "新闻中心",
|
||||
|
||||
@@ -13,8 +13,6 @@ export async function getPosts(locale: string = DEFAULT_LOCALE, category?: strin
|
||||
url += '&categoryId=' + Id_Map[category || 'announce']
|
||||
}
|
||||
|
||||
console.log(url);
|
||||
|
||||
const response = await fetch(url);
|
||||
const data = await response.json();
|
||||
const posts = data.rows.map((item: any) => {
|
||||
|
||||
2
next-env.d.ts
vendored
2
next-env.d.ts
vendored
@@ -1,6 +1,6 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/image-types/global" />
|
||||
import "./.next/types/routes.d.ts";
|
||||
import "./.next/dev/types/routes.d.ts";
|
||||
|
||||
// NOTE: This file should not be edited
|
||||
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
|
||||
|
||||
Reference in New Issue
Block a user