问题描述
我想在 Routify 上使用 i18n 基本路径。
换句话说,我的网址是这样的:www.example.com/about-us/
我想把它改成这样:www.example.com/[CURRENT_LANGUAGE]/about-us/
我已经按照官方网站上提供的 the example 进行操作,但它对我不起作用。当我添加 /ru/
或 /en/
前缀时,它会起作用。但是当我通过单击 href
更改 URL 时,它会删除前缀但转到所需的 URL。我还需要在新 URL 中包含前缀。
我想我需要更改我的 href
以采用新的基本路径逻辑。但不知道该怎么做。我该如何解决这个问题?非常感谢任何帮助。
我的构建信息:Svelte、Snowpack、Routify、Svelte-i18n。
GitHub 存储库:Click here
解决方法
我尝试将您的 import React,{ useState,useEffect,createContext } from 'react';
import axios from '../services/axios';
import requests from '../services/requests';
export const BreedContext = createContext();
export const BreedProvider = ({ children,breed,limit,resetLimit}) => {
const [breeds,setBreeds] = useState([]);
const [showMore,setShowMore] = useState(limit);
useEffect(() => {
if (breed.length !== 0) {
setShowMore(limit);
}
},[breed]);
useEffect(() => {
async function fetchData() {
if (breed.length !== 0) {
const request = await axios.get(requests.fetchBreed + 'page=1&limit=' + showMore + '&breed_id=' + breed);
setBreeds(request.data);
console.log('async',request.data.length);
return request;
}
}
fetchData();
},[showMore,breed]);
return (
<BreedContext.Provider value={[breeds,setBreeds]}>
{children}
<div className="row">
<div className="col-md-3 col-sm-6 col-12">
<button type="button" className="btn btn-success" onClick={() => { setShowMore(showMore + limit) }}>Load more</button>
</div>
</div>
</BreedContext.Provider>
);
}
复制粘贴到入门模板,但它按预期工作。导航时保留语言。
如果您要更改活动语言,则必须
- A) 更新
App.svelte
中的lang
值或 - B) 使用
App.svelte
如果您使用普通的 window.location.href = '/en/some/page'
,则需要包含 href
。 IE。 $url
或 <a href={$url('/about')>about</a>
。否则,您的 URL 将不会被重写。 https://routify.dev/docs/helpers#url