I write patch for plural forms of translated texts. It solves second
problem from report by Heikki:
http://archives.postgresql.org/pgadmin-hackers/2009-05/msg00017.php
It use "wxPLURAL" instead "_". I also change "stringextract" script to
know this. Following steps required when patche is aplied:
- regenerate POT template
- merge it with PO files
PO files must have set Plural-Forms correctly, e.g. for czech it si:
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;
\n"
You can find it in gettext documentation (section 10.2.5) or create new
PO file from POT by msginit with appropriate param -l.
Marek
diff -r -c pgadmin3.svn/pgadmin/ctl/ctlSQLBox.cpp pgadmin3.new/pgadmin/ctl/ctlSQLBox.cpp
*** pgadmin3.svn/pgadmin/ctl/ctlSQLBox.cpp 2009-06-10 11:04:52.000000000 +0200
--- pgadmin3.new/pgadmin/ctl/ctlSQLBox.cpp 2009-06-10 11:32:17.000000000 +0200
***************
*** 192,198 ****
GotoPos(initialPos);
wxString msg;
! msg.Printf(_("%d replacements made."), count);
wxMessageBox(msg, _("Replace all"));
if (count)
--- 192,198 ----
GotoPos(initialPos);
wxString msg;
! msg.Printf(wxPLURAL("%d replacement made.", "%d replacements made.", count), count);
wxMessageBox(msg, _("Replace all"));
if (count)
diff -r -c pgadmin3.svn/pgadmin/db/pgQueryThread.cpp pgadmin3.new/pgadmin/db/pgQueryThread.cpp
*** pgadmin3.svn/pgadmin/db/pgQueryThread.cpp 2009-06-10 11:05:04.000000000 +0200
--- pgadmin3.new/pgadmin/db/pgQueryThread.cpp 2009-06-10 12:24:14.000000000 +0200
***************
*** 145,158 ****
insertedOid=PQoidValue(res);
if (insertedOid && insertedOid != (OID)-1)
appendMessage(wxString::Format(_("Query inserted one row with OID %d.\n"), insertedOid));
! else
! appendMessage(wxString::Format(_("Query result with %d rows will be returned.\n"), PQntuples(result)));
continue;
}
if (lastResult)
{
if (PQntuples(lastResult))
! appendMessage(wxString::Format(_("Query result with %d rows discarded.\n"), PQntuples(lastResult)));
PQclear(lastResult);
}
lastResult=res;
--- 145,160 ----
insertedOid=PQoidValue(res);
if (insertedOid && insertedOid != (OID)-1)
appendMessage(wxString::Format(_("Query inserted one row with OID %d.\n"), insertedOid));
! else
! appendMessage(wxString::Format(wxPLURAL("Query result with %d row will be returned.\n", "Query result with %d rows will be returned.\n",
! PQntuples(result)), PQntuples(result)));
continue;
}
if (lastResult)
{
if (PQntuples(lastResult))
! appendMessage(wxString::Format(wxPLURAL("Query result with %d row discarded.\n", "Query result with %d rows discarded.\n",
! PQntuples(lastResult)), PQntuples(lastResult)));
PQclear(lastResult);
}
lastResult=res;
diff -r -c pgadmin3.svn/pgadmin/frm/frmEditGrid.cpp pgadmin3.new/pgadmin/frm/frmEditGrid.cpp
*** pgadmin3.svn/pgadmin/frm/frmEditGrid.cpp 2009-06-10 11:05:04.000000000 +0200
--- pgadmin3.new/pgadmin/frm/frmEditGrid.cpp 2009-06-10 12:31:40.000000000 +0200
***************
*** 387,393 ****
if (limit <= 0)
cbLimit->SetValue(_("No limit"));
else
! cbLimit->SetValue(wxString::Format(_("%i rows"), limit));
}
}
--- 387,393 ----
if (limit <= 0)
cbLimit->SetValue(_("No limit"));
else
! cbLimit->SetValue(wxString::Format(wxPLURAL("%i row", "%i rows", limit), limit));
}
}
***************
*** 668,674 ****
{
int copied;
copied = sqlGrid->Copy();
! SetStatusText(wxString::Format(_("Data from %d rows copied to clipboard."), copied));
}
}
}
--- 668,676 ----
{
int copied;
copied = sqlGrid->Copy();
! SetStatusText(wxString::Format(
! wxPLURAL("Data from %d row copied to clipboard.", "Data from %d rows copied to clipboard.", copied),
! copied));
}
}
}
***************
*** 1062,1071 ****
return;
wxString prompt;
! if (i == 1)
! prompt.Printf(_("Are you sure you wish to delete the selected row?"));
! else
! prompt.Printf(_("Are you sure you wish to delete the %d selected rows?"), i);
wxMessageDialog msg(this, prompt, _("Delete rows?"), wxYES_NO | wxICON_QUESTION);
if (msg.ShowModal() != wxID_YES)
--- 1064,1070 ----
return;
wxString prompt;
! prompt.Printf(wxPLURAL("Are you sure you wish to delete the selected row?", "Are you sure you wish to delete the %d selected rows?", i));
wxMessageDialog msg(this, prompt, _("Delete rows?"), wxYES_NO | wxICON_QUESTION);
if (msg.ShowModal() != wxID_YES)
***************
*** 1088,1094 ****
i > 0 &&
show_continue_message)
{
! wxMessageDialog msg(this, wxString::Format(_("There was an error deleting the previous record.\nAre you sure you wish to delete the remaining %d rows ?"), i), _("Delete more records ?"), wxYES_NO | wxICON_QUESTION);
if (msg.ShowModal() != wxID_YES)
break;
else
--- 1087,1096 ----
i > 0 &&
show_continue_message)
{
! wxMessageDialog msg(this, wxString::Format(wxPLURAL(
! "There was an error deleting the previous record.\nAre you sure you wish to delete the remaining %d row?",
! "There was an error deleting the previous record.\nAre you sure you wish to delete the remaining %d rows?",
! i), i), _("Delete more records ?"), wxYES_NO | wxICON_QUESTION);
if (msg.ShowModal() != wxID_YES)
break;
else
***************
*** 1099,1105 ****
sqlGrid->EndBatch();
! SetStatusText(wxString::Format(_("%d rows."), sqlGrid->GetTable()->GetNumberStoredRows()), 0);
}
--- 1101,1107 ----
sqlGrid->EndBatch();
! SetStatusText(wxString::Format(wxPLURAL("%d row.", "%d rows.", sqlGrid->GetTable()->GetNumberStoredRows()), sqlGrid->GetTable()->GetNumberStoredRows()), 0);
}
***************
*** 1318,1324 ****
toolsMenu->Enable(MNU_REMOVESORT, true);
return;
}
! SetStatusText(wxString::Format(_("%d rows."), thread->DataSet()->NumRows()), 0);
sqlGrid->BeginBatch();
--- 1320,1326 ----
toolsMenu->Enable(MNU_REMOVESORT, true);
return;
}
! SetStatusText(wxString::Format(wxPLURAL("%d row.", "%d rows.", thread->DataSet()->NumRows()), thread->DataSet()->NumRows()), 0);
sqlGrid->BeginBatch();
***************
*** 3082,3088 ****
editGridLimitedFactory::editGridLimitedFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar, int limit) : editGridFactoryBase(list)
{
! mnu->Append(id, wxString::Format(_("View Top %i Rows"), limit), _("View a limited number of rows in the selected object."));
rowlimit = limit;
context = false;
}
--- 3084,3090 ----
editGridLimitedFactory::editGridLimitedFactory(menuFactoryList *list, wxMenu *mnu, ctlMenuToolbar *toolbar, int limit) : editGridFactoryBase(list)
{
! mnu->Append(id, wxString::Format(wxPLURAL("View Top %i Row", "View Top %i Rows", limit), limit), _("View a limited number of rows in the selected object."));
rowlimit = limit;
context = false;
}
diff -r -c pgadmin3.svn/pgadmin/frm/frmExport.cpp pgadmin3.new/pgadmin/frm/frmExport.cpp
*** pgadmin3.svn/pgadmin/frm/frmExport.cpp 2009-06-10 11:05:04.000000000 +0200
--- pgadmin3.new/pgadmin/frm/frmExport.cpp 2009-06-10 12:14:06.000000000 +0200
***************
*** 287,293 ****
file.Close();
if (skipped)
! wxLogError(_("Data export incomplete.\n\n%d row(s) contained characters that could not be converted to the local charset.\n\nPlease correct the data or try using UTF8 instead."), skipped);
else
wxMessageBox(_("Data export completed successfully."), _("Export data"), wxICON_INFORMATION | wxOK);
--- 287,296 ----
file.Close();
if (skipped)
! wxLogError(wxPLURAL(
! "Data export incomplete.\n\n%d row contained characters that could not be converted to the local charset.\n\nPlease correct the data or try using UTF8 instead.",
! "Data export incomplete.\n\n%d rows contained characters that could not be converted to the local charset.\n\nPlease correct the data or try using UTF8 instead.",
! skipped), skipped);
else
wxMessageBox(_("Data export completed successfully."), _("Export data"), wxICON_INFORMATION | wxOK);
diff -r -c pgadmin3.svn/pgadmin/frm/frmQuery.cpp pgadmin3.new/pgadmin/frm/frmQuery.cpp
*** pgadmin3.svn/pgadmin/frm/frmQuery.cpp 2009-06-10 11:05:04.000000000 +0200
--- pgadmin3.new/pgadmin/frm/frmQuery.cpp 2009-06-10 12:33:34.000000000 +0200
***************
*** 2106,2114 ****
}
else
{
! showMessage(wxString::Format(_("Query returned successfully: %d rows affected, %s ms execution time."),
insertedCount, elapsedQuery.ToString().c_str()),
! wxString::Format(_("%d rows affected."), insertedCount));
}
}
else
--- 2106,2118 ----
}
else
{
! showMessage(wxString::Format(
! wxPLURAL(
! "Query returned successfully: %d row affected, %s ms execution time.",
! "Query returned successfully: %d rows affected, %s ms execution time.",
! insertedCount),
insertedCount, elapsedQuery.ToString().c_str()),
! wxString::Format(wxPLURAL("%d row affected.", "%d rows affected.", insertedCount), insertedCount));
}
}
else
***************
*** 2167,2173 ****
if (qi->toFile)
{
! SetStatusText(wxString::Format(_("%d rows."), rowsTotal), STATUSPOS_ROWS);
if (rowsTotal)
{
--- 2171,2177 ----
if (qi->toFile)
{
! SetStatusText(wxString::Format(wxPLURAL("%d row.", "%d rows.", rowsTotal), rowsTotal), STATUSPOS_ROWS);
if (rowsTotal)
{
***************
*** 2192,2202 ****
{
sqlResult->DisplayData(true);
! showMessage(wxString::Format(_("%d rows retrieved."), sqlResult->NumRows()), _("OK."));
}
else
{
! SetStatusText(wxString::Format(_("Retrieving data: %d rows."), rowsTotal), STATUSPOS_MSGS);
wxTheApp->Yield(true);
sqlResult->DisplayData();
--- 2196,2208 ----
{
sqlResult->DisplayData(true);
! showMessage(wxString::Format(
! wxPLURAL("%d row retrieved.", "%d rows retrieved.", sqlResult->NumRows()),
! sqlResult->NumRows()), _("OK."));
}
else
{
! SetStatusText(wxString::Format(wxPLURAL("Retrieving data: %d row.", "Retrieving data: %d rows.", rowsTotal), rowsTotal), STATUSPOS_MSGS);
wxTheApp->Yield(true);
sqlResult->DisplayData();
***************
*** 2207,2215 ****
msgResult->AppendText(str);
msgHistory->AppendText(str);
! showMessage(wxString::Format(_("%ld rows retrieved."), sqlResult->NumRows()), _("OK."));
}
! SetStatusText(wxString::Format(_("%d rows."), rowsTotal), STATUSPOS_ROWS);
}
}
--- 2213,2221 ----
msgResult->AppendText(str);
msgHistory->AppendText(str);
! showMessage(wxString::Format(wxPLURAL("%ld row retrieved.", "%ld rows retrieved.", sqlResult->NumRows()), sqlResult->NumRows()), _("OK."));
}
! SetStatusText(wxString::Format(wxPLURAL("%d row.", "%d rows.", rowsTotal), rowsTotal), STATUSPOS_ROWS);
}
}
***************
*** 2296,2302 ****
if (statusMsg.Last() == '.')
statusMsg = statusMsg.Left(statusMsg.Length() - 1);
! SetStatusText(wxString::Format(_("%s (%d asynchronous notifications received)."), statusMsg.c_str(), notifies), STATUSPOS_MSGS);
}
msgResult->AppendText(wxT("\n"));
--- 2302,2310 ----
if (statusMsg.Last() == '.')
statusMsg = statusMsg.Left(statusMsg.Length() - 1);
! SetStatusText(wxString::Format(
! wxPLURAL("%s (%d asynchronous notification received).", "%s (%d asynchronous notifications received).", notifies),
! statusMsg.c_str(), notifies), STATUSPOS_MSGS);
}
msgResult->AppendText(wxT("\n"));
diff -r -c pgadmin3.svn/pgadmin/slony/slNode.cpp pgadmin3.new/pgadmin/slony/slNode.cpp
*** pgadmin3.svn/pgadmin/slony/slNode.cpp 2009-06-10 11:05:10.000000000 +0200
--- pgadmin3.new/pgadmin/slony/slNode.cpp 2009-06-10 12:37:28.000000000 +0200
***************
*** 108,114 ****
if (!l)
return true;
! wxMessageDialog dlg(frame, wxString::Format(_("There are %ld event acknowledgements outstanding.\nContinue anyway?"), l),
_("Events pending"), wxYES_NO | wxNO_DEFAULT);
return dlg.ShowModal() == wxID_YES;
--- 108,115 ----
if (!l)
return true;
! wxMessageDialog dlg(frame, wxString::Format(wxPLURAL("There are %ld event acknowledgement outstanding.\nContinue anyway?",
! "There are %ld event acknowledgements outstanding.\nContinue anyway?", l), l),
_("Events pending"), wxYES_NO | wxNO_DEFAULT);
return dlg.ShowModal() == wxID_YES;
diff -r -c pgadmin3.svn/stringextract pgadmin3.new/stringextract
*** pgadmin3.svn/stringextract 2009-06-10 11:05:45.000000000 +0200
--- pgadmin3.new/stringextract 2009-06-10 11:22:39.000000000 +0200
***************
*** 13,60 ****
cp pgadmin3-release.pot pgadmin3.pot
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/ctl/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/frm/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/debugger/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/db/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/exceptions/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/expressions/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/statements/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/generators/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/objects/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/utilities/m_apm/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/utilities/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/pgscript/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/agent/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/schema/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/utils/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/slony/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/dlg/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/gqb/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/ui/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/*.cpp
! xgettext -k_ -k__ -j -s -o pgadmin3.pot xtra/pgscript/bin/*.cpp
!
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/ctl/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/frm/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/debugger/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/db/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/exceptions/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/expressions/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/statements/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/generators/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/objects/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/utilities/mapm-lib/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/utilities/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/pgscript/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/agent/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/schema/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/utils/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/slony/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/dlg/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/gqb/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/*.h
! xgettext -k_ -k__ -j -s -o pgadmin3.pot pgadmin/include/*.h
TMPDIR=`mktemp -d tmpwork` || exit 1
echo "$TMPDIR"
--- 13,60 ----
cp pgadmin3-release.pot pgadmin3.pot
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/ctl/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/frm/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/debugger/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/db/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/exceptions/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/expressions/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/statements/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/generators/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/objects/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/utilities/m_apm/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/utilities/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/pgscript/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/agent/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/schema/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/utils/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/slony/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/dlg/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/gqb/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/ui/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/*.cpp
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot xtra/pgscript/bin/*.cpp
!
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/ctl/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/frm/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/debugger/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/db/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/exceptions/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/expressions/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/statements/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/generators/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/objects/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/utilities/mapm-lib/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/utilities/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/pgscript/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/agent/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/schema/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/utils/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/slony/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/dlg/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/gqb/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/*.h
! xgettext -k_ -k__ -kwxPLURAL:1,2 -j -s -o pgadmin3.pot pgadmin/include/*.h
TMPDIR=`mktemp -d tmpwork` || exit 1
echo "$TMPDIR"
--
Sent via pgadmin-hackers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgadmin-hackers