在 Routeify 上添加和保留 i18n 基本路径

问题描述

我想在 Routify 上使用 i18n 基本路径。

换句话说,我的网址是这样的:www.example.com/about-us/

我想把它改成这样:www.example.com/[CURRENT_LANGUAGE]/about-us/

我已经按照官方网站上提供的 the example 进行操作,但它对我不起作用。当我添加 /ru//en/ 前缀时,它会起作用。但是当我通过单击 href 更改 URL 时,它会删除前缀但转到所需的 URL。我还需要在新 URL 中包含前缀。

我想我需要更改我的 href 以采用新的基本路径逻辑。但不知道该怎么做。我该如何解决这个问题?非常感谢任何帮助。

我的构建信息:SvelteSnowpackRoutifySvelte-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