LOCALE::PO4A::TRANSTRACTOR.3PM(1) | User Contributed Perl Documentation | LOCALE::PO4A::TRANSTRACTOR.3PM(1) |
பெயர்¶
மொழி :: PO4A :: மொழிபெயர்ப்பாளர் - பொதுவான மொழிபெயர்ப்பாளர் பிரித்தெடுத்தல்.
விவரம்¶
PO4A (எதற்கும் PO) திட்ட குறிக்கோள் என்பது ஆவணப்படங்களைப் போல எதிர்பார்க்கப்படாத பகுதிகளில் உரைபெறு கருவிகளைப் பயன்படுத்தி மொழிபெயர்ப்புகளை (மேலும் சுவாரச்யமாக, மொழிபெயர்ப்புகளைப் பராமரிப்பது) எளிதாக்குவதாகும்.
இந்த வகுப்பு ஒரு ஆவணத்தை அலசுவதற்கும், மொழிபெயர்க்கக்கூடிய சரங்களைத் தேடுவதற்கும், அவற்றை ஒரு PO கோப்பில் பிரித்தெடுப்பதற்கும், வெளியீட்டு ஆவணத்தில் அவற்றின் மொழிபெயர்ப்பால் அவற்றை மாற்றுவதற்கும் பயன்படுத்தப்படும் ஒவ்வொரு PO4A பாகுபடுத்தியின் மூதாதையர் ஆகும்.
இன்னும் முறையாக, இது பின்வரும் வாதங்களை உள்ளீடாக எடுக்கும்:
- மொழிபெயர்க்க ஒரு ஆவணம்;
- பயன்படுத்த மொழிபெயர்ப்புகளைக் கொண்ட ஒரு PO கோப்பு.
வெளியீடாக, இது உருவாக்குகிறது:
- மற்றொரு PO கோப்பு, உள்ளீட்டு ஆவணத்திலிருந்து மொழிபெயர்க்கக்கூடிய சரங்களை பிரித்தெடுப்பதன் விளைவாக;
- மொழிபெயர்க்கப்பட்ட ஆவணம், உள்ளீட்டில் உள்ளதை விட ஒரே கட்டமைப்பைக் கொண்டது, ஆனால் உள்ளீட்டில் வழங்கப்பட்ட PO கோப்பில் காணப்படும் மொழிபெயர்ப்புகளுடன் மாற்றப்பட்ட அனைத்து மொழிபெயர்க்கக்கூடிய சரங்களும்.
இதன் வரைகலை பிரதிநிதித்துவம் இங்கே:
Input document --\ /---> Output document \ / (translated) +-> parse() function -----+ / \ Input PO --------/ \---> Output PO (extracted)
உங்கள் பாகுபடுத்தி மேலெழுத வேண்டும்¶
- பார்சே ()
- எல்லா
வேலைகளும்
இங்குதான்
நடைபெறுகின்றன:
உள்ளீட்டு
ஆவணங்களின்
பாகுபடுத்தல்,
வெளியீட்டின்
தலைமுறை
மற்றும்
மொழிபெயர்க்கக்கூடிய
சரங்களை
பிரித்தெடுப்பது.
கீழே உள்ள B
<உள்
செயல்பாடுகள்>
பிரிவில்
வழங்கப்பட்ட
வழங்கப்பட்ட
செயல்பாடுகளைப்
பயன்படுத்தி
இது
மிகவும்
எளிது. ஒரு
உதாரணத்தை
முன்வைக்கும்
பி
<சினோப்சிச்>
ஐயும்
காண்க.
இந்த செயல்பாடு கீழே உள்ள செயல்முறை () செயல்பாட்டால் அழைக்கப்படுகிறது, ஆனால் நீங்கள் புதிய () செயல்பாட்டைப் பயன்படுத்தவும், உங்கள் ஆவணத்தில் உள்ளடக்கத்தை கைமுறையாக சேர்க்கவும் தேர்வுசெய்தால், இந்த செயல்பாட்டை நீங்களே அழைக்க வேண்டும்.
- டோசீடர் ()
- இந்த செயல்பாடு, தயாரிக்கப்பட்ட ஆவணத்தில் நாம் சேர்க்க வேண்டிய தலைப்பை வழங்குகிறது, இலக்கு மொழியில் ஒரு கருத்தாக சரியாக மேற்கோள் காட்டப்பட்டுள்ளது. எல் <PO4A (7) | PO4A.7> இலிருந்து, மொழிபெயர்ப்புகளைப் பற்றி டெவலப்பர்களைப் பற்றிய பிரிவு B <ஐப் பார்க்கவும், இது எது நல்லது என்பதற்காக.
சுருக்கம்¶
பின்வரும் எடுத்துக்காட்டு "<p>" உடன் தொடங்கும் பத்திகளின் பட்டியலை பாகுபடுத்துகிறது. எளிமைக்காக, ஆவணம் நன்கு வடிவமைக்கப்பட்டுள்ளது என்று நாங்கள் கருதுகிறோம், அதாவது '<p>' குறிச்சொற்கள் மட்டுமே குறிச்சொற்கள், இந்த குறிச்சொல் ஒவ்வொரு பத்தியின் ஆரம்பத்திலிருந்தும் உள்ளது.
sub parse { my $self = shift; PARAGRAPH: while (1) { my ($paragraph,$pararef)=("",""); my $first=1; my ($line,$lref)=$self->shiftline(); while (defined($line)) { if ($line =~ m/<p>/ && !$first--; ) { # Not the first time we see <p>. # Reput the current line in input, # and put the built paragraph to output $self->unshiftline($line,$lref); # Now that the document is formed, translate it: # - Remove the leading tag $paragraph =~ s/^<p>//s; # - push to output the leading tag (untranslated) and the # rest of the paragraph (translated) $self->pushline( "<p>" . $self->translate($paragraph,$pararef) ); next PARAGRAPH; } else { # Append to the paragraph $paragraph .= $line; $pararef = $lref unless(length($pararef)); } # Reinit the loop ($line,$lref)=$self->shiftline(); } # Did not get a defined line? End of input file. return; } }
நீங்கள் பாகுபடுத்தும் செயல்பாட்டை செயல்படுத்தியதும், அடுத்த பகுதியில் வழங்கப்பட்ட பொது இடைமுகத்தைப் பயன்படுத்தி உங்கள் ஆவண வகுப்பைப் பயன்படுத்தலாம்.
உங்கள் பாகுபடுத்தி பயன்படுத்தி ச்கிரிப்ட்களுக்கான பொது இடைமுகம்¶
கட்டமைப்பாளர்¶
- செயல்முறை (
- இந்த செயல்பாடு ஒரு அழைப்பில் ஒரு PO4A ஆவணத்துடன் நீங்கள் செய்ய வேண்டிய அனைத்தையும் செய்ய முடியும். அதன் வாதங்கள் ஒரு ஆசாக நிரம்பியிருக்க வேண்டும். செயல்கள்:
- a.
- PO_IN_NAME இல் குறிப்பிடப்பட்டுள்ள அனைத்து PO கோப்புகளையும் படிக்கிறது
- b.
- File_in_name இல் குறிப்பிடப்பட்டுள்ள அனைத்து அசல் ஆவணங்களையும் படிக்கிறது
- c.
- ஆவணத்தை பாகுபடுத்துகிறது
- d.
- குறிப்பிடப்பட்ட அனைத்து கூடுதல் அனைத்தையும் படித்து பயன்படுத்துகிறது
- e.
- மொழிபெயர்க்கப்பட்ட ஆவணத்தை file_out_name க்கு எழுதுகிறார் (கொடுக்கப்பட்டால்)
- f.
- பிரித்தெடுக்கப்பட்ட PO கோப்பை po_out_name க்கு எழுதுகிறது (கொடுக்கப்பட்டால்)
புதிய () (எதிர்பார்க்கப்படும் வகையுடன்) ஏற்றுக்கொள்ளப்பட்ட வாதங்கள்:
- file_in_name (@)
- உள்ளீட்டு ஆவணத்தை நாம் படிக்க வேண்டிய கோப்பு பெயர்களின் பட்டியல்.
- file_in_charset ($)
- உள்ளீட்டு ஆவணத்தில் பயன்படுத்தப்படுகிறது (இது குறிப்பிடப்படாவிட்டால், UTF-8 ஐப் பயன்படுத்தவும்).
- file_out_name ($)
- வெளியீட்டு ஆவணத்தை நாம் எழுத வேண்டிய கோப்பு பெயர்.
- file_out_charset ($)
- வெளியீட்டு ஆவணத்தில் பயன்படுத்தப்படுகிறது (இது குறிப்பிடப்படாவிட்டால், யுடிஎஃப் -8 ஐப் பயன்படுத்தவும்).
- po_in_name (@)
- ஆவணத்தை மொழிபெயர்க்கப் பயன்படுத்தப்படும் மொழிபெயர்ப்பைக் கொண்ட உள்ளீட்டு PO கோப்புகளை நாம் படிக்க வேண்டிய கோப்பு பெயர்களின் பட்டியல்.
- po_out_name ($)
- உள்ளீட்டு ஆவணத்திலிருந்து பிரித்தெடுக்கப்பட்ட சரங்களைக் கொண்ட வெளியீட்டு PO கோப்பை நாம் எழுத வேண்டிய கோப்பு பெயர்.
- கூடுதல் (@)
- துணை பெயர்களின் பட்டியல், அங்கு நாம் கூடுதல் படிக்க வேண்டும்.
- addendum_charset ($)
- கூடுதல் சார்செட்.
- புதிய (%)
- புதிய PO4A ஆவணத்தை உருவாக்கவும். ஏற்றுக்கொள்ளப்பட்ட விருப்பங்கள் (ஆசில் ஒரு அளவுருவாக அனுப்பப்பட்டது):
- வெர்போச் ($)
- சொற்களஞ்சியத்தை அமைக்கிறது.
- பிழைத்திருத்த ()
- பிழைத்திருத்தத்தை அமைக்கிறது.
- மடக்கு ($)
- வெளியீட்டு
ஆவணத்தில்
உரையை
மடிக்க
வேண்டிய
நெடுவரிசை
(இயல்புநிலை:
76).
எதிர்மறை மதிப்பு என்பது கோடுகளை மடக்கக்கூடாது என்பதாகும்.
இது அடிப்படை PO- கோப்புகளுக்கான அடுத்த விருப்பங்களை ஏற்றுக்கொள்கிறது: b <porefs>, b <பதிப்புரிமை-வைத்திருப்பவர்>, b <msgid-Bugs-address>, b <cackation- பெயர்>, b <தொகுப்பு-பதிப்பு>, b <rap- போ>.
ஆவணக் கோப்புகளை கையாளுதல்¶
- படிக்க ($$$)
- தற்போதுள்ள
வரிசையின்
முடிவில்
மற்றொரு
உள்ளீட்டு
ஆவணத்
தரவைச்
சேர்க்கவும்
c << {{$ self-> {TT} {doc_in}} >>.
This function takes two mandatory arguments and an optional one.
* The filename to read on disk;
* The name to use as filename when building the reference in the PO file;
* The charset to use to read that file (UTF-8 by default)This array "@{$self->{TT}{doc_in}}" holds this input document data as an array of strings with alternating meanings.
* The string $textline holding each line of the input text data.
* The string "$filename:$linenum" holding its location and called as
"reference" ("linenum" starts with 1).இது எதையும் அலசவில்லை என்பதை நினைவில் கொள்க. உள்ளீட்டு கோப்புகளை ஆவணத்தில் பொதி செய்து முடித்தால் நீங்கள் பாகுபடுத்தும் () செயல்பாட்டைப் பயன்படுத்த வேண்டும்.
- எழுது ($)
- மொழிபெயர்க்கப்பட்ட
ஆவணத்தை
கொடுக்கப்பட்ட
கோப்பு
பெயருக்கு
எழுதுங்கள்.
This translated document data are provided by:
* "$self->docheader()" holding the header text for the plugin, and
* "@{$self->{TT}{doc_out}}" holding each line of the main translated text in the array.
PO கோப்புகளை கையாளுதல்¶
- Readpo ($)
- ஒரு கோப்பின் உள்ளடக்கத்தை (எந்த பெயர் வாதமாக அனுப்பப்படுகிறது) இருக்கும் உள்ளீட்டு PO இல் சேர்க்கவும். பழைய உள்ளடக்கம் நிராகரிக்கப்படவில்லை.
- writePo ($)
- கொடுக்கப்பட்ட கோப்பு பெயருக்கு பிரித்தெடுக்கப்பட்ட PO கோப்பை எழுதுங்கள்.
- புள்ளிவிவரங்கள் ()
- இதுவரை
செய்யப்பட்ட
மொழிபெயர்ப்பு
குறித்த
சில
புள்ளிவிவரங்களை
வழங்குகிறது.
MSGFMT
-ச்டாடிச்டிக்
அச்சிட்டதை
விட இது அதே
புள்ளிவிவரங்கள்
அல்ல
என்பதை
நினைவில்
கொள்க.
இங்கே, இது PO
கோப்பின்
அண்மைக்
கால
பயன்பாடு
பற்றிய
புள்ளிவிவரங்கள்,
அதே
நேரத்தில்
MSGFMT கோப்பின்
நிலையைப்
புகாரளிக்கிறது.
இது
இடத்திற்கு
ஒரு
ரேப்பர் :: Po4a :: po ::
stats_get
செயல்பாடு
உள்ளீட்டு
PO கோப்பில்
பயன்படுத்தப்படுகிறது.
பயன்பாட்டின்
எடுத்துக்காட்டு:
[normal use of the po4a document...] ($percent,$hit,$queries) = $document->stats(); print "We found translations for $percent\% ($hit from $queries) of strings.\n";
கூடுதல் கையாளுதல்¶
- கூடுதல் ($)
- தயவுசெய்து
l <po4a (7) | po4a.7> ஐப்
பார்க்கவும்,
மேலும்
கூடுதல்
என்ன,
மற்றும்
மொழிபெயர்ப்பாளர்கள்
அவற்றை
எவ்வாறு
எழுத
வேண்டும்
என்பது
பற்றிய
கூடுதல்
தகவலுக்கு.
மொழிபெயர்க்கப்பட்ட
ஆவணத்தில்
ஒரு
கூடுதல்
பயன்படுத்த,
அதன்
கோப்பு
பெயரை இந்த
செயல்பாட்டிற்கு
அனுப்பவும்,
நீங்கள்
முடித்துவிட்டீர்கள்;)
இந்த செயல்பாடு பிழையில் பூஞ்சை அல்லாத முழு எண்ணை வழங்குகிறது.
வழித்தோன்றல் பாகுபடுத்திகளை எழுதப் பயன்படுத்தப்படும் உள் செயல்பாடுகள்¶
உள்ளீட்டைப் பெறுதல், வெளியீட்டை வழங்குதல்¶
உள்ளீடு மற்றும் திரும்ப வெளியீட்டைப் பெற நான்கு செயல்பாடுகள் வழங்கப்படுகின்றன. அவை சிப்ட்/அன்சிப்ட் மற்றும் பெர்லின் புச்/பாப் ஆகியவற்றிற்கு மிகவும் ஒத்தவை.
* Perl shift returns the first array item and drop it from the array. * Perl unshift prepends an item to the array as the first array item. * Perl pop returns the last array item and drop it from the array. * Perl push appends an item to the array as the last array item.
முதல் இணை உள்ளீட்டைப் பற்றியது, இரண்டாவது வெளியீடு பற்றியது. நினைவூட்டல்: உள்ளீட்டில், நீங்கள் முதல் வரியில் ஆர்வமாக உள்ளீர்கள், சிப்ட் தருகிறது, மற்றும் வெளியீட்டில் உங்கள் முடிவை முடிவில் சேர்க்க விரும்புகிறீர்கள், புச் செய்வது போல.
- புதுமை ())
- இந்த செயல்பாடு பாகுபடுத்தப்பட வேண்டிய முதல் வரியையும், அதனுடன் தொடர்புடைய குறிப்பு (ஒரு வரிசையாக நிரம்பியுள்ளது) C << {{$ self-> {TT} {doc_in}} >> இந்த முதல் 2 வரிசை உருப்படிகளை கைவிடுகிறது. இங்கே, குறிப்பு ஒரு சரம் c << $ கோப்பு பெயர்: $ linenum >> மூலம் வழங்கப்படுகிறது.
- unshiftline ($$)
- உள்ளீட்டு ஆவணத்தின் கடைசியாக மாற்றப்பட்ட வரியையும் அதனுடன் தொடர்புடைய குறிப்பையும் சி << {$ சுய-> {TT} {doc_in}} >> இன் தலைக்கு மாற்றுகிறது.
- புச்லைன் ($)
- C << {$ self-> {TT} {doc_out}} >> இன் முடிவில் ஒரு புதிய வரியை அழுத்தவும்.
- போப்லைன் ()
- சி << {$ சுய-> {TT} {doc_out}} >> இன் முடிவில் இருந்து கடைசியாக தள்ளப்பட்ட வரியை பாப் செய்யுங்கள்.
சரங்களை மொழிபெயர்க்கக்கூடியதாகக் குறிப்பது¶
மொழிபெயர்க்கப்பட வேண்டிய உரையை கையாள ஒரு செயல்பாடு வழங்கப்படுகிறது.
- மொழிபெயர்கை ($$$)
- கட்டாய வாதங்கள்:
- மொழிபெயர்க்க ஒரு சரம்
- இந்த சரத்தின் குறிப்பு (அதாவது InputFile இல் நிலை)
- இந்த சரத்தின் வகை (அதாவது அதன் கட்டமைப்பு பாத்திரத்தின் உரை விளக்கம்; லோகேலில் பயன்படுத்தப்படுகிறது :: po4a :: po :: getTextisation (); l <po4a (7) | po4a.7>, பிரிவு b <getTextization: எப்படி இது வேலை செய்யுமா?>)
இந்த செயல்பாடு சில கூடுதல் வாதங்களையும் எடுக்கலாம். அவை ஒரு ஆசாக ஒழுங்கமைக்கப்பட வேண்டும். உதாரணமாக:
$self->translate("string","ref","type", 'wrap' => 1);
- பி <மடக்கு>
- சரத்தின் இடைவெளிகள் முக்கியமல்ல என்பதை நாம் கருத்தில் கொள்ளலாமா என்பதைக் குறிக்கும் பூலியன். ஆம் எனில், மொழிபெயர்ப்பைத் தேடுவதற்கு முன் அல்லது பிரித்தெடுப்பதற்கு முன் செயல்பாடு சரத்தை நியமிக்கிறது, மேலும் மொழிபெயர்ப்பை மூடுகிறது.
- B <rapcol>
- நாம் மடக்க
வேண்டிய
நெடுவரிசை
(இயல்புநிலை:
பி <RAPCOL> இன்
மதிப்பு
டிரான்ச்ட்ராக்டரை
உருவாக்கும்
போது
குறிப்பிடப்பட்டுள்ளது
அல்லது 76).
எதிர்மறை மதிப்பு இயல்புநிலையிலிருந்து விலக்கப்படும்.
- பி <கருத்து>
- நுழைவைச் சேர்க்க கூடுதல் கருத்து.
செயல்கள்:
- சரம், குறிப்பு மற்றும் வகையை Po_out க்கு தள்ளுகிறது.
- சரத்தின் மொழிபெயர்ப்பை வழங்குகிறது (PO_IN இல் காணப்படுவது போல்), இதனால் பாகுபடுத்தி DOC_OUT ஐ உருவாக்க முடியும்.
- சரங்களை Po_out க்கு அனுப்புவதற்கு முன்பு மற்றும் மொழிபெயர்ப்புகளைத் திருப்புவதற்கு முன், அவற்றை மறுபரிசீலனை செய்ய எழுத்துக்களைக் கையாளுகிறது.
தவறான செயல்பாடுகள்¶
- வாய்மொழி ()
- டிரான்ச்ட்ராக்டரை உருவாக்கும் போது வாய்மொழி விருப்பம் நிறைவேற்றப்பட்டால் வருவாய்.
- பிழைத்திருத்த ())
- டிரான்ச்ட்ராக்டரை உருவாக்கும் போது பிழைத்திருத்த விருப்பம் நிறைவேற்றப்பட்டால் வருவாய்.
- get_in_charset ()
- இந்த செயல்பாடு மாச்டர் சார்ச்செட்டாக வழங்கப்பட்ட எழுத்துக்களைத் தருகிறது
- get_out_charset ()
- இந்த
செயல்பாடு
வெளியீட்டு
ஆவணத்தில்
பயன்படுத்தப்பட
வேண்டிய
எழுத்துக்களைத்
தரும்
(வழக்கமாக
உள்ளீட்டு
ஆவணத்தின்
கண்டறியப்பட்ட
எழுத்துக்களை
மாற்றுவதற்கு
பொதுவாக
பயனுள்ளதாக
இருக்கும்).
இது கட்டளை வரியில் குறிப்பிடப்பட்டுள்ள வெளியீட்டு சார்ச்செட்டைப் பயன்படுத்தும். இது குறிப்பிடப்படாவிட்டால், அது உள்ளீட்டு PO இன் சார்செட்டைப் பயன்படுத்தும், மேலும் உள்ளீட்டு PO க்கு இயல்புநிலை "சார்ச்செட்" இருந்தால், அது உள்ளீட்டு ஆவணத்தின் சார்சத்தை திருப்பித் தரும், இதனால் குறியாக்கம் எதுவும் செய்யப்படாது.
எதிர்கால திசைகள்¶
தற்போதைய டிரான்ச்ட்ராக்டரின் ஒரு குறைபாடு என்னவென்றால், டெப்கான்ஃப் வார்ப்புருக்கள் அல்லது .desktop கோப்புகள் போன்ற அனைத்து மொழிகளையும் கொண்ட மொழிபெயர்க்கப்பட்ட ஆவணத்தை இது கையாள முடியாது.
இந்த சிக்கலை தீர்க்க, தேவையான ஒரே இடைமுக மாற்றங்கள்:
- PO_IN_NAME (ஒரு மொழிக்கு ஒரு பட்டியல்) என ஒரு ஆசை எடுத்துக் கொள்ளுங்கள்
- இலக்கு மொழியைக் குறிக்க மொழிபெயர்க்க ஒரு வாதத்தைச் சேர்க்கவும்
- ஒரு
புச்லைன்_ஆல்
செயல்பாட்டை
உருவாக்குங்கள்,
இது
வரைபடம்
போன்ற
தொடரியல்
பயன்படுத்தி
அனைத்து
மொழிகளுக்கும்
அதன்
உள்ளடக்கத்தை
புச்லைனை
உருவாக்கும்:
$self->pushline_all({ "Description[".$langcode."]=". $self->translate($line,$ref,$langcode) });
இது போதுமா என்று பார்ப்பேன்;)
ஆசிரியர்கள்¶
Denis Barbier <barbier@linuxfr.org> Martin Quinson (mquinson#debian.org) Jordi Vilalta <jvprat@gmail.com>
2025-09-14 | perl v5.40.1 |