POEdit 사용 - 특정 도메인의 문자열만 검색합니다.
번역하고 싶은 Word Press 테마를 작성했습니다.
내 주제 안에서 나는 몇 가지 번역문을 사용한다.woocommerce
(즉,<?php _('Your cart', 'woocommerce'); ?>
).
그 woocommerce 문자열은 이미 번역되어 있기 때문에 당연히 다시 번역하고 싶지 않습니다.그러나 poedit을 사용하여 테마를 스캔하면 당연히 모든 텍스트 도메인이 검색됩니다.
제 질문은 다음과 같습니다.
특정 텍스트 도메인 내에서 문자열만 선택하도록 POEdit에 지시하려면 어떻게 해야 합니까?
__('Something', 'my-text-domain')
_e('Something else', 'my-text-domain')
저는 다음과 같은 답을 찾았습니다.
하지만 그것은 나에게 효과가 없는 것 같다.추가했습니다.ri:1,3c
하지만 아무것도 변하지 않고 어떻게 해야 할지 모르겠어요
내가 어떻게 했는지 봐:
GNU gettext 툴이나 Poedit(사용) 모두 gettext의 특정 오남용을 지원하지 않습니다.
gettext에서 도메인은 프로그램, 라이브러리, 플러그인, 테마와 같은 대략적인 "소프트웨어 조각"입니다.따라서 일반적으로 단일 디렉토리 트리에 존재하며 그 안에 혼자 있습니다.또는 적어도 여러 개의 pieces=pieces가 있는 경우에는 추출을 제한할 수 있는 하위 디렉토리로 적절하게 구성되어 있습니다.
단일 파일 내에서 도메인을 혼합하여 일치시키는 것은 gettext를 사용하는 방법이 아닙니다.또, 예를 들면, 모든 woocommerce 텍스트를 에 랩 하는 등, 자신의 도우미 기능을 사용하는 것 외에, 그것을 처리하는 합리적인 솔루션은 없습니다.__woo
Poedit 키워드 목록에 추가하지 마십시오.
가장 좋은 해결책은 gettext 또는 Poedit이 특정 도메인으로 번역을 제한할 수 있는 경우입니다.Vachlav가 지적했듯이, 이것은 가능하지 않다.
회피책으로는 my-text-domain을 후처리하는 경우가 있습니다.pot 또는 *.po 파일을 사용하여 woocommerce와 같은 다른 플러그인에서 실제로 가져온 문자열을 모두 삭제합니다.
#!/bin/bash
# DRY_RUN="echo"
DRY_RUN=""
MY_DOMAIN="my-text-domain"
for PO in *.po; do
echo "Removing other domains from file: $PO"
# OTHER_DOMAINS are all the domain that are not MY_DOMAIN
OTHER_DOMAINS=`grep "# @ " $PO | grep -v $MY_DOMAIN | sort | uniq | grep -o '\w*'`
for OTHER_DOMAIN in $OTHER_DOMAINS; do
echo " Removing ${OTHER_DOMAIN}..."
# Replace ever "foreign" strings with a linebreak
# Begins with "# @ OTHER_DOMAIN" and ends with an empty line
$DRY_RUN perl -0777 -i -pe "s/# @ ${OTHER_DOMAIN}\n.+?\n\n//smg" $PO
done
done
언급URL : https://stackoverflow.com/questions/30422256/using-poedit-only-search-for-strings-in-specific-domain
'programing' 카테고리의 다른 글
React setState 콜백을 사용하는 경우 (0) | 2023.04.02 |
---|---|
Angularjs: $scope vs scope (0) | 2023.04.02 |
Wordpress의 로그인/등록 페이지를 사용자 지정 로그인/등록 페이지로 리디렉션 (0) | 2023.04.02 |
콘솔에서 리액트 요소의 소품 및 상태를 검사하려면 어떻게 해야 합니까? (0) | 2023.04.02 |
AngularJS - ng-if 체크 문자열 빈 값 (0) | 2023.04.02 |