fix: 对齐平台渠道与最新情报快照
2026-08-14 平台渠道专项更新:前端和静态SEO只展示平台官网、官方入驻及非中文入驻页辅助翻译;移除类目入口翻译、消费者官网翻译和内部成熟度/新兴参考分文案。 同步59/59权威源、65场跨境活动、28个平台和208条趋势内容;修正IBTE、CCBEC、法国教育部、Shopee和Shopify语种判断,更新README与CHANGELOG并通过Python、Node及静态构建验证。
This commit is contained in:
@@ -144,7 +144,7 @@ def tags_html(values: list[str] | tuple[str, ...] | None) -> str:
|
||||
TRANSLATED_LINK_LABEL = "查看译文版"
|
||||
|
||||
|
||||
def links_html(links: list[tuple[str, str]], class_name: str = "") -> str:
|
||||
def links_html(links: list[tuple[str, str]], class_name: str = "", translation_label: str = TRANSLATED_LINK_LABEL) -> str:
|
||||
seen: set[str] = set()
|
||||
output: list[str] = []
|
||||
translation_group = 0
|
||||
@@ -154,7 +154,7 @@ def links_html(links: list[tuple[str, str]], class_name: str = "") -> str:
|
||||
seen.add(url)
|
||||
provider = "yandex" if "translate.yandex.com/" in url else ("google" if "translate.google.com/" in url else "")
|
||||
if provider:
|
||||
label = TRANSLATED_LINK_LABEL
|
||||
label = translation_label
|
||||
else:
|
||||
translation_group += 1
|
||||
translation_gate = f' data-translation-provider="{provider}" data-translation-group="{translation_group}" hidden' if provider else ""
|
||||
@@ -349,16 +349,11 @@ def build_detail(item: dict[str, Any], section: str, site_url: str) -> str:
|
||||
</section>"""
|
||||
elif section == "platforms":
|
||||
platform_links = links_html([
|
||||
("查看家纺类目", str(item.get("official_url") or "")),
|
||||
(TRANSLATED_LINK_LABEL, str(item.get("official_translation_url") or "")),
|
||||
(TRANSLATED_LINK_LABEL, str(item.get("official_translation_fallback_url") or "")),
|
||||
("打开平台官网", str(item.get("homepage_url") or "")),
|
||||
(TRANSLATED_LINK_LABEL, str(item.get("homepage_translation_url") or "")),
|
||||
(TRANSLATED_LINK_LABEL, str(item.get("homepage_translation_fallback_url") or "")),
|
||||
("打开平台官网", str(item.get("homepage_url") or "") if item.get("homepage_url") != item.get("seller_url") else ""),
|
||||
("去官方入驻", str(item.get("seller_url") or "")),
|
||||
(TRANSLATED_LINK_LABEL, str(item.get("seller_translation_url") or "")),
|
||||
(TRANSLATED_LINK_LABEL, str(item.get("seller_translation_fallback_url") or "")),
|
||||
])
|
||||
], translation_label="辅助翻译入驻说明")
|
||||
section_details = f"""<section class="seo-context">
|
||||
<h2>家纺类目与入驻判断</h2>
|
||||
<p><strong>{esc(item.get('access_level'))} {esc(item.get('access_label'))}</strong> · {esc(item.get('cross_border'))}</p>
|
||||
|
||||
@@ -93,10 +93,7 @@ def build_platforms(checked_at: str, session: requests.Session) -> list[dict[str
|
||||
for item in PLATFORMS:
|
||||
homepage_url = PLATFORM_HOME_URLS[item["id"]]
|
||||
sales_score, emergence_score = PLATFORM_RANKING.get(item["id"], (50, 50))
|
||||
translated = {
|
||||
prefix: translation_fields(url)
|
||||
for prefix, url in (("official", item["official_url"]), ("homepage", homepage_url), ("seller", item["seller_url"]))
|
||||
}
|
||||
seller_translation = translation_fields(item["seller_url"])
|
||||
items.append({
|
||||
**item,
|
||||
"title": item["name"],
|
||||
@@ -112,8 +109,7 @@ def build_platforms(checked_at: str, session: requests.Session) -> list[dict[str
|
||||
"verified_at": checked_at,
|
||||
"checked_at": checked_at,
|
||||
**{
|
||||
f"{prefix}_{field}": values[field]
|
||||
for prefix, values in translated.items()
|
||||
f"seller_{field}": seller_translation[field]
|
||||
for field in ("needs_translation", "translation_url", "translation_fallback_url")
|
||||
},
|
||||
"seller_url_status": status_codes[item["id"]],
|
||||
|
||||
@@ -53,13 +53,16 @@ def detect_text_language(text: str = "", declared_language: str = "") -> str:
|
||||
|
||||
def url_language_hint(url: str) -> str:
|
||||
value = (url or "").lower()
|
||||
if re.search(r"(?:[?&](?:lang|language|localetype)=|/)(?:zh-cn|zh-hans|cn)(?:\.html?)?(?:[&#/?]|$)", value):
|
||||
if re.search(r"(?:[?&](?:lang|language|localetype)=|/)(?:zh-cn|zh-hans|zh|cn)(?:\.html?)?(?:[&#/?]|$)", value):
|
||||
return "zh-CN"
|
||||
if re.search(r"(?:[?&](?:lang|language|localetype)=|/)(?:zh-tw|zh-hant|tw|hk)(?:\.html?)?(?:[&#/?]|$)", value):
|
||||
return "zh-Hant"
|
||||
host = (urlparse(url).hostname or "").lower().rstrip(".")
|
||||
host_languages = {
|
||||
"bizevent.ccpit.org": "zh-CN",
|
||||
"ccbec-shenzhen.com": "zh-CN",
|
||||
"ibte.co.id": "en",
|
||||
"www.ccbec-shenzhen.com": "zh-CN",
|
||||
"www.coupang.com": "ko",
|
||||
"www.mercadolibre.com": "es",
|
||||
}
|
||||
@@ -88,11 +91,12 @@ def is_simplified_chinese_site(url: str, source_language: str = "", source_text:
|
||||
host = (urlparse(url).hostname or "").lower().rstrip(".")
|
||||
if host.endswith(".cn"):
|
||||
return True
|
||||
url_language = url_language_hint(url)
|
||||
if url_language:
|
||||
return url_language == "zh-CN"
|
||||
declared = detect_text_language("", source_language) if source_language else ""
|
||||
content_language = detect_text_language(source_text) if source_text.strip() else ""
|
||||
if declared in ("zh-CN", "zh-hans", "zh-sg") or content_language == "zh-CN":
|
||||
return True
|
||||
return False
|
||||
return declared == "zh-CN" or content_language == "zh-CN"
|
||||
|
||||
|
||||
def needs_simplified_chinese_translation(language: str) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user