무료 Google 번역 API PHP 패키지. 번역은 완전 무료입니다.
Composer를 통해 이 패키지를 설치합니다.
composer require stichoza/google-translate-php
참고 PHP 8.0 이상 이 필요합니다. 이전 PHP 버전에는 이 패키지의 다음 버전을 사용하세요.
패키지 버전 | PHP 버전 | 선적 서류 비치 |
---|---|---|
^5.1 | PHP >= 8.0 | v5 문서 |
^4.1 | PHP >= 7.1 | v4 문서 |
^3.2 | PHP < 7.1 | v3 문서 |
GoogleTranslate 개체 만들기
use Stichoza GoogleTranslate GoogleTranslate ;
$ tr = new GoogleTranslate ( ' en ' ); // Translates into English
아니면 나중에 언어를 변경할 수 있습니다.
$ tr = new GoogleTranslate (); // Translates to ' en ' from auto - detected language by default
$ tr -> setSource ( ' en ' ); // Translate from English
$ tr -> setSource (); // Detect language automatically
$ tr -> setTarget ( ' ka ' ); // Translate to Georgian
문장 번역
echo $ tr -> translate ( ' Hello World! ' );
또한 메소드 체이닝을 사용할 수도 있습니다.
echo $ tr -> setSource ( ' en ' )-> setTarget ( ' ka ' )-> translate ( ' Goodbye ' );
또는 단축 정적 메서드 trans
호출하세요.
echo GoogleTranslate:: trans ( ' Hello again ' , ' ka ' , ' en ' );
언어를 자동으로 감지하려면 소스 언어를 null
로 설정하면 됩니다.
$ tr = new GoogleTranslate ( ' es ' , null ); // Or simply do not pass the second parameter
$ tr -> setSource (); // Another way
감지된 언어를 얻으려면 getLastDetectedSource()
사용하십시오.
$ tr = new GoogleTranslate ( ' fr ' );
$ text = $ tr -> translate ( ' Hello World! ' );
echo $ tr -> getLastDetectedSource (); // Output : en
언어를 감지할 수 없는 경우 반환 값은 null
입니다.
languages
메소드를 사용하여 지원되는 모든 언어 목록을 얻을 수 있습니다.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages (); // Get supported languages in iso - 639 format
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
선택적으로 대상 언어 코드를 전달하여 해당 언어로 표시된 이름으로 지원되는 언어를 검색합니다.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages ( ' en ' ); // Get supported languages , display name in english
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
echo $ languages [ ' en ' ]; // Output : ' English '
echo $ languages [ ' ka ' ]; // Output : ' Georgian '
translate
/ trans
메소드와 마찬가지로 정적 langs
메소드를 사용할 수도 있습니다.
GoogleTranslate:: langs ();
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
GoogleTranslate:: langs ( ' en ' );
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
지원되는 언어는 Google API 문서에도 나열되어 있습니다.
preserveParameters()
메서드를 사용하면 변환을 수행하는 동안 문자열의 특정 매개변수를 유지할 수 있습니다. 이는 특정 자리 표시자를 번역에서 제외해야 하는 현지화 파일이나 템플릿 엔진을 처리할 때 특히 유용합니다.
기본 정규식은 :
으로 시작하는 매개변수를 포함하는 /:(w+)/
입니다. Laravel 및 기타 프레임워크의 언어 파일을 번역하는 데 유용합니다. 사용자 정의 정규식을 전달하여 매개변수 구문을 수정할 수도 있습니다.
$ tr = new GoogleTranslate ( ' de ' );
$ text = $ tr -> translate ( ' Page :current of :total ' ); // Seite : aktuell von : gesamt
$ text = $ tr -> preserveParameters ()
-> translate ( ' Page :current of :total ' ); // Seite : current von : total
또는 맞춤 정규식을 사용하세요.
$ text = $ tr -> preserveParameters ( ' /{{([^}]+)}}/ ' )
-> translate ( ' Page {{current}} of {{total}} ' ); // Seite { { current } } von { { total } }
static trans()
메소드에서도 동일한 기능을 사용할 수 있습니다.
GoogleTranslate:: trans ( ' Welcome :name ' , ' fr ' , preserveParameters: true ); // Default regex
GoogleTranslate:: trans ( ' Welcome {{name}} ' , ' fr ' , preserveParameters: ' /{{([^}]+)}}/ ' ); // Custom regex
고급 사용을 위해서는 Google 번역이 제공하는 원시 결과가 필요할 수 있습니다. 이를 위해 getResponse
메소드를 사용할 수 있습니다.
$ responseArray = $ tr -> getResponse ( ' Hello world! ' );
setUrl
메소드로 기본 Google 번역 URL을 재정의할 수 있습니다. 일부 국가에 유용함
$ tr -> setUrl ( ' http://translate.google.cn/translate_a/single ' );
이 패키지는 HTTP 요청에 Guzzle을 사용합니다. GoogleTranslate
생성자에 세 번째 매개변수로 guzzle 클라이언트 구성 옵션 배열을 전달하거나 setOptions
메소드를 사용할 수 있습니다.
이 옵션을 사용하여 프록시, 사용자 에이전트, 기본 헤더, 연결 시간 초과 등을 구성할 수 있습니다.
$ tr = new GoogleTranslate ( ' en ' , ' ka ' , [
' timeout ' => 10 ,
' proxy ' => [
' http ' => ' tcp://localhost:8125 ' ,
' https ' => ' tcp://localhost:9124 '
],
' headers ' => [
' User-Agent ' => ' Foo/5.0 Lorem Ipsum Browser '
]
]);
// Set proxy to tcp : // localhost : 8090
$ tr -> setOptions ([ ' proxy ' => ' tcp://localhost:8090 ' ])-> translate ( ' Hello ' );
// Set proxy to socks5 : // localhost : 1080
$ tr -> setOptions ([ ' proxy ' => ' socks5://localhost:1080 ' ])-> translate ( ' World ' );
자세한 내용은 Guzzle 문서의 클라이언트 생성 섹션을 참조하세요.
생성기 개체를 생성자의 네 번째 매개 변수로 전달하거나 setTokenProvider
메서드를 사용하여 토큰 생성기 클래스를 재정의할 수 있습니다.
생성기는 StichozaGoogleTranslateTokensTokenProviderInterface
구현해야 합니다.
use Stichoza GoogleTranslate Tokens TokenProviderInterface ;
class MyTokenGenerator implements TokenProviderInterface
{
public function generateToken ( string $ source , string $ target , string $ text ): string
{
// Your code here
}
}
그리고 다음을 사용하세요:
$ tr -> setTokenProvider ( new MyTokenGenerator );
Google 번역에는 번역 품질을 정의하는 client
라는 매개변수가 있습니다. 처음에는 webapp
으로 설정했지만 나중에 Google에서 gtx
값을 추가하여 문법 및 문장의 전반적인 의미 측면에서 번역 품질이 향상되었습니다.
->setClient()
메소드를 사용하여 클라이언트 간에 전환할 수 있습니다. 예를 들어 이전 버전의 번역 알고리즘을 사용하려면 $tr->setClient('webapp')->translate('lorem ipsum...')
입력하세요. 기본값은 gtx
입니다.
정적 메서드 trans()
, 비정적 translate()
및 getResponse()
메서드는 다음과 같은 예외를 발생시킵니다.
ErrorException
어떤 이유로 HTTP 요청이 실패하는 경우입니다.UnexpectedValueException
Google에서 수신한 데이터를 디코딩할 수 없는 경우입니다. v5.1.0 부터는 StichozaGoogleTranslateExceptions
네임스페이스에서 구체적인 예외를 사용할 수 있습니다.
LargeTextException
요청한 텍스트가 너무 커서 번역할 수 없는 경우.RateLimitException
과도한 금액 요청으로 인해 Google이 귀하를 차단한 경우.TranslationRequestException
번역 중 기타 HTTP 관련 오류가 발생한 경우.TranslationDecodingException
응답 JSON을 디코딩할 수 없는 경우입니다.모든 구체적인 예외는 이전 버전과 호환되므로 이전 버전을 사용하는 경우 코드를 업데이트할 필요가 없습니다.
TranslationDecodingException
UnexpectedValueException
확장하는 반면 LargeTextException
, RateLimitException
및 TranslationRequestException
이 패키지의 이전 버전( <5.1.0
)에서 사용된 ErrorException
확장합니다.
또한, translate()
및 trans()
메서드는 사용 가능한 번역이 없으면 null
반환합니다.
503 Service Unavailable
응답: 이 오류가 발생하는 경우 Google이 외부 IP 주소를 금지했거나 CAPTCHA 해결을 요구했을 가능성이 높습니다. 이것은 이 패키지의 버그가 아닙니다. 구글은 더욱 엄격해졌고, 일정 시간마다 IP당 허용 요청 수를 계속 낮추는 것 같습니다. 레이더에 노출되지 않도록 요청을 적게 보내거나 IP를 자주 변경하십시오(예: 프록시 사용). IP가 차단되면 일시적인 경우라도 경우에 따라 차단이 몇 분에서 12~24시간 이상 지속될 수 있습니다.429 Too Many Requests
응답: 이 오류는 기본적으로 위에서 설명한 것과 동일합니다.413 Request Entity Too Large
응답: 이 오류는 입력 문자열이 너무 길다는 것을 의미합니다. Google에서는 한 번에 최대 5000자까지만 번역할 수 있습니다. 긴 텍스트를 번역하려면 짧은 부분으로 분할하여 하나씩 번역하면 됩니다.403 Forbidden
응답: 이는 이 패키지의 문제가 아닙니다. Google 번역 자체에는 일부 문자 및 HTML 항목을 번역할 때 몇 가지 문제가 있습니다. #119(댓글) 참조 이 패키지는 교육 목적으로만 개발되었습니다. 이 패키지는 Google 번역 웹사이트 크롤링을 기반으로 하기 때문에 언제든지 중단될 수 있으므로 의존하지 마십시오. 다른 용도로 사용하려면 공식 Google 번역 API를 구매하는 것이 좋습니다.
이 패키지가 귀하의 개발 시간을 단축하는 데 도움이 되었거나 귀하가 안고 있던 주요 문제를 해결한 경우, 저에게 커피 한 잔을 주십시오 :)