나는 런타임 번역을 간단하게하고 있습니다. 로케일 스위처를 누르면 아무 일도 없었습니다. 페이지를 새로 고치면 제목이으로 변경되었습니다. 따라서 런타임은입니다.번역 런타임을 만드는 방법
내 코드 :
관리자 :
import { en } from './languages/English';
import { fr } from './languages/French';
const messages = {
en,
fr
}
<Admin ...
locale={localStorage.getItem('language') ? localStorage.getItem('language') : 'en'}
messages={messages}
>
....
</Admin>
로케일 스위처 :
switchToFrench =() => this.props.changeLocale('fr');
switchToEnglish =() => this.props.changeLocale('en');
switchLanguage(language) {
localStorage.setItem('language', language);
this.props.changeLocale(language);
}
render() {
return (
<div>
<div>Language</div>
<button label="en" onClick={() => this.switchLanguage('en')}>English</button>
<button label="fr" onClick={() => this.switchLanguage('fr')}>French</button>
</div>
);
}
영어/프랑스어 파일 :
export const en = {
name: 'English',
locale: 'en',
user: {
no: 'No',
name: 'Name',
username: 'User Name',
email: 'Email',
}
}
export const fr = {
name: 'French',
locale: 'fr',
user: {
no: 'No',
name: 'Nom',
username: 'Nom d\'utilisateur',
email: 'Email',
}
}
UserList에 :
class UserList extends Component {
render() {
const { translate } = this.props;
return(
<div>
<LocaleSwitcher />
<List title="All users" {...this.props}>
<Datagrid>
<TextField source="id" label={translate('user.no')}/>
<TextField source="name" label={translate('user.name')}/>
<TextField source="username" label={translate('user.username')}/>
<EmailField source="email" label={translate('user.email')}/>
</Datagrid>
</List>
</div>
)
}
}
export default translate(UserList);
내가 AOR에서 모든 기본 구성 요소를 사용하고 있습니다. 런타임 번역을 만드는 방법을 보여주십시오.
의견을 보내 주셔서 감사합니다. 이 문서의 내용 [link] (https://marmelab.com/admin-on-rest/Translation.html) 런타임 변환이 가능합니다. 그리고 다른 구성 요소 (aor 구성 요소가 아님)를 만들려고합니다. 잘 작동합니다. 나는 redux를 사용하기를 기대했다. forceUpdate 함수가 나에게 좋지 않습니다. –
@ LinhTrần 해결책을 찾았습니까? – llioor
Daniel, ''아래에' '를 추가하면 다음과 같은 오류가 나타납니다. '''경고 : 배열이나 반복기의 각 하위에는 고유 한 "키"소품이 있어야합니다. 'AdminRoutes'의 render 메소드를 확인하십시오. AdminRoutes에서 (AdminRoutes에서 생성) (Connect (AdminRoutes)에 의해 생성됨) –
llioor