의 첫 번째 인수 t()
는 리터럴 문자열이어야하며 다음을 제외합니다.
- 변수, 함수의 매개 변수까지 :
t($description)
- 문자열의 연결 :
t('If you want to add a link, click on' . '<a href="http://example.com">this link</a>.')
- 함수에서 반환 된 값 :
t(get_menu_description())
- 상수 :
t(MYMODULE_MY_WIDGET_TITLE)
,t(MyClass::WIDGET_TITLE)
그 이유는 몇 가지 특정 후크 (예를 들어 hook_menu()
,, hook_perm()
)를 hook_permission()
제외하고, 번역 할 문자열이 모듈의 코드를 스캔하는 스크립트에서 발견되어 다음과 같은 코드를 찾는 것입니다 t('This is an example.')
. 변수 값과 같이 런타임에 의존하는 값을 찾으면 코드가 실행될 때마다 변수에 다른 값이 포함될 수 있으므로 스크립트는 어떤 문자열을 변환해야하는지 이해할 수 없습니다. 실제로 http://localize.drupal.org 는 인수 t()
가 리터럴 문자열이 아닌 경우 다음과 유사한 경고를보고 합니다.
첫 번째 매개 변수 t()
는 리터럴 문자열이어야합니다. 변수, 연결, 상수 또는 기타 문자가 아닌 문자열이 없어야합니다. 에서 t($filter['name'])
라인 (30)에에는, customFilter / customfilter.module있다.
에 동적 값을 전달하는 경우 t()
번역 할 문자열을 추출하는 스크립트는 값을 추출하지 않습니다. 효과는 전달 t()
되지 않은 인수 가 변환되지 않으므로 t()
사용자 인터페이스에서 동적 출력을 직접 사용 하지 않는 것과 동일한 효과를 갖습니다 . 문자열이 변환되는 유일한 경우는 동적 문자열이 함수가 전달하는 리터럴 문자열과 같은 경우 t()
입니다. 예를 들어 현재 달의 이름을 반환하는 함수가 포함 된 Drupal을 생각하지 않은 라이브러리가 있다고 가정합니다. 다음 코드를 사용하면 해당 함수에서 반환 된 값이 변환됩니다.
function mymodule_calendar_page_title() {
return t(Calendar::getCurrentMonth());
}
function mymodule_calendar_translations() {
$translations = array(
t('January'),
t('February'),
t('March'),
t('April'),
t('May'),
t('June'),
t('July'),
t('August'),
t('September'),
t('October'),
t('November'),
t('December'),
);
}
mymodule_calendar_translations()
호출하거나 값을 반환 할 필요가 없습니다. 모듈의 코드가 구문 분석 t()
될 때에 전달 된 리터럴 문자열을 찾는 코드에서 호출 이 발견됩니다 t()
.
Drupal 코어 모듈 중 어느 것도 그렇게하지 않기 때문에 데이터베이스 테이블과 해당 필드에 대한 설명을 번역하는 것은 당신이해야 할 일이 아닙니다. 예를 들어 node_schema () 에는 다음 코드가 포함되어 있습니다.
function node_schema() {
$schema['node'] = array(
'description' => 'The base table for nodes.',
'fields' => array(
'nid' => array(
'description' => 'The primary identifier for a node.',
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'vid' => array(
'description' => 'The current {node_revision}.vid version identifier.',
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
'default' => 0,
),
// …
);
// …
);
// …
return $schema;
}
에 호출의 제거를 발생 보고서 t()
의 드루팔 코어 구현에서이 hook_schema()
입니다 모든 스키마 설명에서 제거 t () 에 의해 개방하고있다, webchick (드루팔 7 공동 메인테이너).
Szeged에서는 t()
스키마 설명과 관련하여 긴 토론이 있었으며 테이블에있는 모든 사람 (건조 포함)의 의견 t()
은이 설명에서 제거되어야했습니다. 그들은 t()
초기에 사용할 수 없었기 때문에 문제를 일으켰고 사람들은 기술 설명을 번역하는 데 시간을 할애 할 사람이 아무도 없다고 토론했으며 코드 주석도 번역하지 않기 때문에 실제로 의미가 없습니다. 예.
Drupal 6 모듈을 Drupal 7로 변환하는 기사에는 전용 단락이 있습니다. 스키마 설명이 더 이상 번역되지 않습니다 .