hook_menu의 설명에 t ()를 사용해야합니까?


11

나는 항상 hook_menus 제목과 설명에 t () 를 사용했다 :

$items['some-path'] = array(
    'title' => t('My Page Title'),
    'description' => t('This is a description about what my page is for'),
    'page callback' => 'profile_user_page',
);

사용자는 제목과 설명을 필요한 경우 다른 언어로 번역 할 수 있습니다.

그러나 DO에 대한 모듈 검토에 대한 이 의견 은 다음과 같습니다.

아니, 그건 틀렸어, 그렇게하지 마라. hook_menu ()의 설명은 절대로 t ()를 사용해서는 안된다.

이것에 대한 추론은 무엇이며 이것이 실제로 모범 사례입니까?

또한 이것이 사실이라면 제목에도 t ()를 사용해서는 안됩니까?


분명히 이것을 사용해서는 안되지만 "description '=> t ("에 대한 hook_menu 도움말 페이지를 검색하면 6 번의 발생이 있으므로 이것은 일반적인 실수입니다!
Felix Eve

1
일반적이거나 그렇지 않습니다. 변명은 아닙니다.
Mołot

1
@ Mołot 그들은 거기에 자유롭게 착각 할 수 있지만, 많은 새로운 사용자들이 그 코드를 복사하여 붙여 넣을 것이므로 이것은 일반적인 실수입니다. DO에 대한 관리자 권한이있는 사람은 t ()를 제거하기 위해 해당 주석을 편집해야한다고 생각합니다.
Felix Eve

원하는 경우 문제를 제기 할 수 있습니다 .
Mołot

1
좋은 제안. 완료 .
Felix Eve

답변:


17

기본 제공 메뉴, 권한, 로그 메시지 및 .info 파일 커뮤니티 문서 : 잘 알려진 위치의 문자열을 참조하십시오 .

Drupal 6 및 7 메뉴 시스템은 메뉴 항목 제목과 설명을 영어로 저장합니다. 이를 통해 시스템은 데이터를 캐시 할 수 있지만 필요에 따라 다양한 언어를 사용하는 사용자에게 표시 할 수 있습니다. 이를 위해서는 hook_menu () 구현에서 메뉴 항목의 제목이나 설명에 t ()를 사용하지 않아야합니다 . 또한이 두 키에 대해 동적 문자열 대신 리터럴 문자열을 사용하여 변환 템플리트 추출기가 사용한 문자열을 찾을 수 있도록 시도해야합니다.

강조합니다.


나는 추가 할 것이다 : title callback기본적 title callback으로 t()기능 이기 때문에 설정되지 않은 경우에만
milkovsky

1
@milkovsky 제목 콜백이 설정되면 신경 써야 t()하며 여전히 사용하지 않아야합니다 hook menu()-캐싱.
Mołot

11

hook_menu 인수에 대한 문서가 보이면

  • "제목": 필수. 메뉴 항목의 번역되지 않은 제목입니다.
  • "title callback": 타이틀을 생성하는 기능. 기본값은 t ()입니다. 원시 문자열 만 출력해야하는 경우이를 FALSE로 설정하십시오.
  • "title arguments": 위에서 설명한대로 경로 컴포넌트 대체와 함께 t () 또는 사용자 정의 콜백으로 보낼 인수.
  • "설명": 메뉴 항목의 번역되지 않은 설명.

기본적으로 제목 콜백은 t 함수입니다. 따라서 항상 번역됩니다.


7

Drupal 6은 더 이상 필요하지 않습니다.

https://drupal.org/node/140311을 읽으십시오 . 인용 :

6.x부터 Drupal은 내부적으로 메뉴 제목 및 설명을 사용자의 현지 언어로 번역하는 작업을 처리합니다. 제공된 경우 설명은 항상 t ()로 번역됩니다. 자리 표시 자 대체를위한 추가 데이터를 전달할 수있는 방법이 없습니다 (D5 이전에는 대체를 전달하는 것이 권장되지 않습니다.이 변경으로 인해 메뉴 시스템은 해당 규칙을 직접 시행합니다). 제목은 기본적으로 t ()로 번역되지만 새로운 'title arguments'속성을 사용하면 t () 스타일 문자열을 대체 할 수 있습니다. t ()를 자신의 사용자 정의 콜백으로 바꾸도록 선택할 수도 있습니다.


6

당신은 사용하지 말아야 t()hook_menu()있기 때문에 구현 t()자동으로 나중에라고하며 이렇게하면 이중 번역을 일으킬 것입니다.


* title callbackhook_menu에를 추가 하고 그렇지 않은 t경우 제목 콜백은 문자열을 번역합니다.
AyeshK

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.