A React library to support multi-language translation in React apps using Google Translation API.
To install the package, run:
npm install react-google-multi-lang
Wrap your application with the TranslationProvider
component. Pass your Google Translation API key as a prop to the TranslationProvider
.
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
import { TranslationProvider } from 'react-google-multi-lang';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<TranslationProvider apiKey={process.env.REACT_APP_TRANSLATION_API} defaultLanguage="en">
<App />
</TranslationProvider>
</React.StrictMode>
);
//with navigation
ReactDOM.createRoot(document.getElementById('root')).render(
<BrowserRouter>
<TranslationProvider apiKey={translate} defaultLanguage="en">
<App />
</TranslationProvider>
</BrowserRouter>
// If you want to start measuring performance in your app, pass a function
// to log results (for example: reportWebVitals(console.log))
// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals
reportWebVitals();
Use the useTranslation
hook to create a custom language switcher.
// src/CustomLanguageSwitcher.js
import React from 'react';
import { useTranslation } from 'react-google-multi-lang';
const CustomLanguageSwitcher = () => {
const { setLanguage } = useTranslation();
return (
<div>
<button onClick={() => setLanguage('en')}>English</button>
<button onClick={() => setLanguage('es')}>Spanish</button>
<button onClick={() => setLanguage('fr')}>French</button>
</div>
);
};
export default CustomLanguageSwitcher;
Wrap the components you want to translate with the withTranslation
higher-order component.
// src/MyComponent.js
import React from 'react';
import { withTranslation } from 'react-google-multi-lang';
const MyComponent = () => (
<div>
<h1>Hello, World!</h1>
<p>This is a translatable text.</p>
</div>
);
export default withTranslation(MyComponent);
Use the wrapped components in your application.
// src/App.js
import React from 'react';
import CustomLanguageSwitcher from './CustomLanguageSwitcher';
import MyComponent from './MyComponent';
const App = () => (
<div>
<CustomLanguageSwitcher />
<MyComponent />
</div>
);
export default App;
apiKey
(string, required): Your Google Translation API key.defaultLanguage
(string, optional): The default language of the site. Defaults to'en'
.
Use the useTranslation
hook to get access to the setLanguage
function.
const { setLanguage } = useTranslation();
Here is a complete example of how to use the package in your project.
// src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
import { TranslationProvider } from 'react-google-multi-lang';
ReactDOM.render(
<App />
</TranslationProvider>,
document.getElementById('root')
);
or
ReactDOM.createRoot(document.getElementById('root')).render(
<BrowserRouter>
<TranslationProvider apiKey={translate} defaultLanguage="en">
<App />
</TranslationProvider>
</BrowserRouter>
// src/CustomLanguageSwitcher.js
import React from 'react';
import { useTranslation } from 'react-google-multi-lang';
const CustomLanguageSwitcher = () => {
const { setLanguage } = useTranslation();
return (
<div>
<button onClick={() => setLanguage('en')}>English</button>
<button onClick={() => setLanguage('es')}>Spanish</button>
<button onClick={() => setLanguage('fr')}>French</button>
</div>
);
};
export default CustomLanguageSwitcher;
// src/MyComponent.js
import React from 'react';
import { withTranslation } from 'react-google-multi-lang';
const MyComponent = () => (
<div>
<h1>Hello, World!</h1>
<p>This is a translatable text.</p>
</div>
);
export default withTranslation(MyComponent);
// src/App.js
import React from 'react';
import CustomLanguageSwitcher from './CustomLanguageSwitcher';
import MyComponent from './MyComponent';
const App = () => (
<div>
<CustomLanguageSwitcher />
<MyComponent />
</div>
);
export default App;
MIT © Boniface Mwanza