Giter Site home page Giter Site logo

akromdev / gatsby-plugin-translate-urls Goto Github PK

View Code? Open in Web Editor NEW

This project forked from cedricdelpoux/gatsby-plugin-translate-urls

0.0 0.0 0.0 4.15 MB

Gatsby plugin to translate urls

Home Page: https://cedricdelpoux.github.io/gatsby-plugin-translate-urls

License: MIT License

JavaScript 100.00%

gatsby-plugin-translate-urls's Introduction

gatsby-plugin-translate-urls

npm package

gatsby-plugin-translate-urls is a Gatsby plugin to translate urls

You ave two choices:

  1. all locales in urls
  • yoursite.com/en
  • yoursite.com/fr
  • yoursite.com/es
  1. locales in urls except the default locale:

You need to set the defaultLocale option

  • yoursite.com
  • yoursite.com/fr
  • yoursite.com/es

Usage

  1. Download gatsby-plugin-translate-urls from the NPM registry:
yarn add gatsby-plugin-translate-urls
  1. Create translations files (.js or .json)

en.json:

{
  "urls.about": "about",
  "urls.posts": "posts"
}

fr.json:

{
  "urls.about": "a-props",
  "urls.posts": "articles"
}
  1. Add the plugin in your gatsby-config.js file
module.exports = {
  plugins: [
    {
      resolve: "gatsby-plugin-translate-urls",
      options: {
        translations: {
          // import JS or JSON files
          en: require("./src/translations/en.js"),
          fr: require("./src/translations/fr.json"),
        },
        // OPTIONAL
        // To remove the default locale from urls
        defaultLocale: "en"
        // prefix in translations files
        prefix: "urls.", // default: ""
      },
    },
  ],
}
  1. Translate urls in your pages

Most of the time, you only need the TranslatedLink component. It will transform the url passed to to prop.

import React from "react"
import {TranslatedLink} from "gatsby-plugin-translate-urls"

export default () => {
  return <TranslatedLink to="/posts">Posts FR</TranslatedLink>
}

For most advanced cases or if you want to use the original gatsby link, you can use TranslateUrlsContext to get some useful data:

import React, {useContext} from "react"
import {Link} from "gatsby"
import {TranslateUrlsContext} from "gatsby-plugin-translate-urls"

export default () => {
  const {
    locale, // fr
    locales, // ["en", "fr"]
    originalUrl, // "/about"
    translateUrl // (url(, locale)) => translatedUrl
  } = useContext(TranslateUrlsContext)
  return (
    <>
      <Link to={translateUrl(originalUrl)}>About FR</Link>
      <Link to={translateUrl(originalUrl, "en")}>About EN</Link>
      {"All localized /about pages:"}
      {locales.map(lang => <Link key={lang}to={translateUrl(originalUrl, lang)}>About {lang}<)}
      /Link>
    </>
  )
}

Contributing

  • โ‡„ Pull/Merge requests and โ˜… Stars are always welcome.
  • For bugs and feature requests, please create an issue.

Changelog

See CHANGELOG

License

This project is licensed under the MIT License - see the LICENCE file for details

gatsby-plugin-translate-urls's People

Contributors

cedricdelpoux avatar dependabot[bot] avatar m99coder avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.