React 기반 응용 프로그램에서 번역을 처리하는 새로운 방법
21447 단어 reactreactnativejavascripttutorial
대부분의 소프트웨어 패키지(i18next, i18n-js에서 번역에 액세스하는 방법은 다음과 같습니다.
console.log(translationsObject.get('translations_key'));
이 방법의 주요 문제점은 다음과 같습니다.text-localizer ;
react-text-localizer ;
react-native-text-localizer .
첫 번째 뚜렷한 장점은 드디어 제대로 된 개발자 체험을 할 수 있다는 것이다.
면책 성명: 이 소프트웨어 패키지는 이미 준비가 되어 있고 사용할 수 있지만, 귀하가 기대하는 모든 기능이 없을 수도 있습니다. 왜냐하면 이것은 최근에 발표된 것이기 때문입니다. (저는 이미 모든 부족한 기능을 실시할 계획을 세웠습니다.)API Reference의 documentation 섹션에서 이 패키지의 모든 기능을 찾을 수 있습니다.
GitHub 재구매
모든 패키지를 만드는 방법은monorepo 방법입니다.Here you can find the Repo .
그것을 어떻게 사용합니까?
이 절에서, 나는react 텍스트 포지셔닝 패키지를 어떻게 신속하게 설정하는지 설명할 것이다.하지만 다른 용례에도 관심이 있거나 더 완전한 해석을 좋아한다면 documentation(두려워하지 마세요. 누구나 이해할 수 있도록 최선을 다했습니다)를 보세요.
1. 설치
텍스트 로케이터 기능을 잠금 해제하려면 다음과 같이 하십시오.
yarn add react-text-localizer
2. 문자열
번역을 저장할 파일을 만들어야 합니다.
따라서 src 디렉터리에 l10n 폴더를 만들고 번역 파일을 추가합니다.이 자습서에서는 다음 파일을 사용합니다.
우리json;
gb.ts;
네.ts
JSON
JSON 파일을 사용하여 번역을 저장하는 것은 틀림없이 가장 흔하고 가장 간단할 것이다.
// filename: src/l10n/us.json
{
"welcome": "Welcome on the Text Localizer Docs",
"help": "Do you need some help about {{ topic }}?",
"question": "Which is your favorite cat?"
}
참고: 도움말에는 포맷된 문자열이 포함되어 있으며 formatTranslation 함수를 통해 쉽게 관리할 수 있습니다.Javascript 또는 타자 스크립트
비록 JSON은 지금까지javascript에서 번역 파일을 저장하는 데 가장 광범위하게 사용된 해결 방안이지만, 많은 용례에서 JS나 TS 파일을 사용하는 것도 마찬가지로 유용하다.
예를 들어 몇 개의 문자열만 다른 상황에서 typescript 파일을 사용하면 매우 유용할 수 있습니다.
// filename: src/l10n/gb.ts
import us from './us.json';
export default {
...us,
question: 'Which is your favourite cat?',
};
만약 당신의 문자열이 백엔드에 존재한다면?
텍스트 포지셔닝 머신을 사용하면 js/ts 파일을 만들고 그 나라에서 번역할 함수를 내보냅니다.
// filename: src/l10n/it.ts
// In this example fetchItTranslations simply returns a plain object.
// The point is that it could be any asynchronous function
// where maybe using axios, apollo or any other client.
const fetchItTranslations = async () => ({
welcome: 'Benvenuto sulla documentazione di Text Localizer',
help: 'Hai bisogno di aiuto riguardo {{ topic }}?',
question: 'Qual è il tuo gatto preferito?',
});
export { fetchItTranslations };
폴더 구조
항목에는 다음과 같은 폴더 구조가 있습니다.
.
├── ...
├── _src
│ ├── _l10n
│ │ ├── us.json
│ │ ├── gb.ts
│ │ └── it.ts
│ ├── ...
│ └── App.tsx
└── package.json
4. 언어 환경 정의
번역 파일을 설정한 후 Translations Context을 만들어야 합니다.
그리고 l10n 폴더에 색인을 만듭니다.ts 파일에 이 코드가 포함되어 있습니다.
// filename: src/l10n/index.ts
import { createTranslationsContext } from 'react-text-localizer';
import { fetchItTranslations } from './it';
const translationsContext = createTranslationsContext({
it: fetchItTranslations,
gb: import('./l10n/gb'),
us: import('./l10n/us.json'),
});
export { translationsContext };
생성된 유형[옵션]
생성 유형의 사용은 완전히 선택할 수 있습니다.Check the following section to learn more about it.
생성된 형식 방법을 사용하려면 다음 명령만 실행하면 됩니다. (주의: 스크립트가 실패하면 tsconfig.json 파일에 지정한 'module' 가 'CommonJS' (최소한 스크립트가 실행될 때)
npm run generate-l10n [translationsPath]
완전히 작성translations.d.ts
되면 언어 및 응용 프로그램 번역 유형을 컨텍스트 정의의 TextLocalizer에 전달할 수 있습니다.// filename: src/l10n/index.ts
import { createTranslationsContext } from 'react-text-localizer';
import { fetchItTranslations } from './it';
const translationsContext = createTranslationsContext<
Languages,
AppTranslations
>({
it: fetchItTranslations,
gb: import('./l10n/gb'),
us: import('./l10n/us.json'),
});
export { translationsContext };
5. 번역 공급업체
전체 어셈블리 트리에서 문자열을 액세스하려면 다음과 같이 애플리케이션의 루트 컴포넌트를 TranslationsProvider로 포장해야 합니다.
// filename: src/index.tsx
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { TranslationsProvider } from 'react-text-localizer';
import { translationsContext } from './l10n';
ReactDOM.render(
<React.StrictMode>
<TranslationsProvider context={translationsContext} language="en">
<App />
</TranslationsProvider>
</React.StrictMode>,
document.getElementById('root')
);
6. 사용법
마지막으로 다음 연결에 감사드립니다.
// filename: src/App.tsx
import { useTranslations, useTranslationsState } from 'react-text-localizer';
import './App.css';
import { translationsContext } from './l10n';
function App() {
const { welcome } = useTranslations(translationsContext);
const { isLoading } = useTranslationsState(translationsContext);
if (isLoading) return null;
return (
<div className="App">
<header className="App-header">
<p>
Edit <code>src/App.tsx</code> and save to reload.
</p>
<a
className="App-link"
href="https://enzomanuelmangano.github.io/text-localizer/"
target="_blank"
rel="noopener noreferrer"
>
{welcome}
</a>
</header>
</div>
);
}
export default App;
7. 스토리지[옵션]
번역이 백엔드에 있는 경우 TranslationsProvider에서 전달을 선택할 수 있습니다.
// filename: src/index.tsx
import React from 'react';
import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import { TranslationsProvider } from 'react-text-localizer';
import { translationsContext } from './l10n';
ReactDOM.render(
<React.StrictMode>
<TranslationsProvider
context={translationsContext}
language="gb"
storage={localStorage}
>
<App />
</TranslationsProvider>
</React.StrictMode>,
document.getElementById('root')
);
결론
이 패키지는 번역 문자열을 처리하는 것을 매우 쉽게 한다.불행하게도 가방에 복수 관리 같은 기능이 부족했다.
나는 가능한 한 많은 피드백을 얻기 위해 이 소프트웨어 패키지를 공개하고 커뮤니티와 공유하기로 결정했다.만약 피드백이 있다면, 평론 부분에 당신이 원하는 피드백을 남길 수 있습니다.
부언: 이 프로젝트가 재미있다면 GitHub 스타here를 남겨두는 것도 고려할 수 있다.
Reference
이 문제에 관하여(React 기반 응용 프로그램에서 번역을 처리하는 새로운 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/enzomanuelmangano/a-new-way-to-handle-translations-in-react-based-applications-14ih텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)