求助:Google Places API获取斯洛伐克语评论始终被自动翻译
解决Google Places API返回原始斯洛伐克语评论的问题
你的核心问题出在无效参数拼写错误,以及未正确指定原始评论的返回字段。按以下步骤调整即可解决:
1. 修正后端请求参数
你添加的tranlated=false是拼写错误的无效参数,同时需要扩展fields参数确保API返回原始评论内容。修改后的请求URL如下:
`https://maps.googleapis.com/maps/api/place/details/json?place_id=${placeId}&fields=reviews,reviews.original_text&reviews_no_translations=true&language=sk&key=${apiKey}`
关键调整:
- 删除无效的
tranlated=false参数 - 扩展
fields为reviews,reviews.original_text,强制API返回原始语言的original_text字段 - 保留
reviews_no_translations=true和language=sk,确保不触发自动翻译
修改后的完整Node.js代码:
const express = require("express"); const axios = require("axios"); const cors = require("cors"); const app = express(); const port = 3000; app.use(cors()); app.get("/reviews", async (req, res) => { const placeId = "ChIJt1LeJK3BFUcRgvatv67YD3c"; const apiKey = ""; // 替换为你的有效密钥 try { const response = await axios.get( `https://maps.googleapis.com/maps/api/place/details/json?place_id=${placeId}&fields=reviews,reviews.original_text&reviews_no_translations=true&language=sk&key=${apiKey}` ); res.json(response.data.result.reviews); } catch (error) { console.error("Error fetching Google reviews:", error); res.status(500).send("Error fetching Google reviews"); } }); app.listen(port, () => { console.log(`Server listening at http://localhost:${port}`); });
2. 前端展示原始评论
API返回的original_text字段存储着斯洛伐克语原始评论,修改TSX代码的展示逻辑,替换原有的review.text:
import { useEffect, useState } from "react"; import axios from "axios"; import Slider from "react-slick"; import "slick-carousel/slick/slick.css"; import "slick-carousel/slick/slick-theme.css"; import "./Home.css"; const Home = () => { const [reviews, setReviews] = useState([]); useEffect(() => { const fetchReviews = async () => { try { const response = await axios.get("http://localhost:3000/reviews"); setReviews(response.data); } catch (error) { console.error("Error fetching Google reviews:", error); } }; fetchReviews(); }, []); const settings = { dots: true, infinite: true, speed: 500, slidesToShow: 1, slidesToScroll: 1, }; return ( <div className="home"> <Slider {...settings}> {reviews.map((review) => ( <div key={review.time}> <p>{review.rating}</p> <p>{review.author_name}</p> <p>{review.original_text || review.text}</p> </div> ))} </Slider> </div> ); }; export default Home;
用review.original_text || review.text做兼容处理,确保如果评论本身就是目标语言(如英文),依然能正常展示内容。
验证效果
重启后端服务后,前端加载的评论会显示原始斯洛伐克语内容,API响应中的translated字段会变为false,language字段同步为sk。
内容的提问来源于stack exchange,提问作者Mast3rKoo
相关产品推荐
相关产品推荐

