Fixes, support more feeds, display parse errors ...
Note : ATOM feeds do NOT work for the moment ! Please report to ooookiwi@gmail.com if you have RSS feeds that doesnt not work If you have feeds that you want to see in the default configuration, you can send me an email too. I want News to have many feeds, in many different languages by default. * [parse] handle feeds with no title / no date / no link / no description * [parse] fix parse with rss version 0.91 * [dialog] feed: fix select default language * [viewer] better display of feeds with no date / no description * [viewer] simple click on content opens browser, and show a message 'click here to open in browser' * [viewer] display if there where errors during parse, and where to report, or if the feed is ATOM and not supported yet SVN revision: 30009
This commit is contained in:
parent
480a7c0a6e
commit
7f90441a22
768
ABOUT-NLS
768
ABOUT-NLS
|
@ -0,0 +1,768 @@
|
|||
Notes on the Free Translation Project
|
||||
*************************************
|
||||
|
||||
Free software is going international! The Free Translation Project is
|
||||
a way to get maintainers of free software, translators, and users all
|
||||
together, so that will gradually become able to speak many languages.
|
||||
A few packages already provide translations for their messages.
|
||||
|
||||
If you found this `ABOUT-NLS' file inside a distribution, you may
|
||||
assume that the distributed package does use GNU `gettext' internally,
|
||||
itself available at your nearest GNU archive site. But you do _not_
|
||||
need to install GNU `gettext' prior to configuring, installing or using
|
||||
this package with messages translated.
|
||||
|
||||
Installers will find here some useful hints. These notes also
|
||||
explain how users should proceed for getting the programs to use the
|
||||
available translations. They tell how people wanting to contribute and
|
||||
work at translations should contact the appropriate team.
|
||||
|
||||
When reporting bugs in the `intl/' directory or bugs which may be
|
||||
related to internationalization, you should tell about the version of
|
||||
`gettext' which is used. The information can be found in the
|
||||
`intl/VERSION' file, in internationalized packages.
|
||||
|
||||
Quick configuration advice
|
||||
==========================
|
||||
|
||||
If you want to exploit the full power of internationalization, you
|
||||
should configure it using
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to force usage of internationalizing routines provided within this
|
||||
package, despite the existence of internationalizing capabilities in the
|
||||
operating system where this package is being installed. So far, only
|
||||
the `gettext' implementation in the GNU C library version 2 provides as
|
||||
many features (such as locale alias, message inheritance, automatic
|
||||
charset conversion or plural form handling) as the implementation here.
|
||||
It is also not possible to offer this additional functionality on top
|
||||
of a `catgets' implementation. Future versions of GNU `gettext' will
|
||||
very likely convey even more functionality. So it might be a good idea
|
||||
to change to GNU `gettext' as soon as possible.
|
||||
|
||||
So you need _not_ provide this option if you are using GNU libc 2 or
|
||||
you have installed a recent copy of the GNU gettext package with the
|
||||
included `libintl'.
|
||||
|
||||
INSTALL Matters
|
||||
===============
|
||||
|
||||
Some packages are "localizable" when properly installed; the programs
|
||||
they contain can be made to speak your own native language. Most such
|
||||
packages use GNU `gettext'. Other packages have their own ways to
|
||||
internationalization, predating GNU `gettext'.
|
||||
|
||||
By default, this package will be installed to allow translation of
|
||||
messages. It will automatically detect whether the system already
|
||||
provides the GNU `gettext' functions. If not, the GNU `gettext' own
|
||||
library will be used. This library is wholly contained within this
|
||||
package, usually in the `intl/' subdirectory, so prior installation of
|
||||
the GNU `gettext' package is _not_ required. Installers may use
|
||||
special options at configuration time for changing the default
|
||||
behaviour. The commands:
|
||||
|
||||
./configure --with-included-gettext
|
||||
./configure --disable-nls
|
||||
|
||||
will respectively bypass any pre-existing `gettext' to use the
|
||||
internationalizing routines provided within this package, or else,
|
||||
_totally_ disable translation of messages.
|
||||
|
||||
When you already have GNU `gettext' installed on your system and run
|
||||
configure without an option for your new package, `configure' will
|
||||
probably detect the previously built and installed `libintl.a' file and
|
||||
will decide to use this. This might be not what is desirable. You
|
||||
should use the more recent version of the GNU `gettext' library. I.e.
|
||||
if the file `intl/VERSION' shows that the library which comes with this
|
||||
package is more recent, you should use
|
||||
|
||||
./configure --with-included-gettext
|
||||
|
||||
to prevent auto-detection.
|
||||
|
||||
The configuration process will not test for the `catgets' function
|
||||
and therefore it will not be used. The reason is that even an
|
||||
emulation of `gettext' on top of `catgets' could not provide all the
|
||||
extensions of the GNU `gettext' library.
|
||||
|
||||
Internationalized packages have usually many `po/LL.po' files, where
|
||||
LL gives an ISO 639 two-letter code identifying the language. Unless
|
||||
translations have been forbidden at `configure' time by using the
|
||||
`--disable-nls' switch, all available translations are installed
|
||||
together with the package. However, the environment variable `LINGUAS'
|
||||
may be set, prior to configuration, to limit the installed set.
|
||||
`LINGUAS' should then contain a space separated list of two-letter
|
||||
codes, stating which languages are allowed.
|
||||
|
||||
Using This Package
|
||||
==================
|
||||
|
||||
As a user, if your language has been installed for this package, you
|
||||
only have to set the `LANG' environment variable to the appropriate
|
||||
`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code,
|
||||
and `CC' is an ISO 3166 two-letter country code. For example, let's
|
||||
suppose that you speak German and live in Germany. At the shell
|
||||
prompt, merely execute `setenv LANG de_DE' (in `csh'),
|
||||
`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash').
|
||||
This can be done from your `.login' or `.profile' file, once and for
|
||||
all.
|
||||
|
||||
You might think that the country code specification is redundant.
|
||||
But in fact, some languages have dialects in different countries. For
|
||||
example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The
|
||||
country code serves to distinguish the dialects.
|
||||
|
||||
The locale naming convention of `LL_CC', with `LL' denoting the
|
||||
language and `CC' denoting the country, is the one use on systems based
|
||||
on GNU libc. On other systems, some variations of this scheme are
|
||||
used, such as `LL' or `LL_CC.ENCODING'. You can get the list of
|
||||
locales supported by your system for your country by running the command
|
||||
`locale -a | grep '^LL''.
|
||||
|
||||
Not all programs have translations for all languages. By default, an
|
||||
English message is shown in place of a nonexistent translation. If you
|
||||
understand other languages, you can set up a priority list of languages.
|
||||
This is done through a different environment variable, called
|
||||
`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG'
|
||||
for the purpose of message handling, but you still need to have `LANG'
|
||||
set to the primary language; this is required by other parts of the
|
||||
system libraries. For example, some Swedish users who would rather
|
||||
read translations in German than English for when Swedish is not
|
||||
available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'.
|
||||
|
||||
Special advice for Norwegian users: The language code for Norwegian
|
||||
bokma*l changed from `no' to `nb' recently (in 2003). During the
|
||||
transition period, while some message catalogs for this language are
|
||||
installed under `nb' and some older ones under `no', it's recommended
|
||||
for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and
|
||||
older translations are used.
|
||||
|
||||
In the `LANGUAGE' environment variable, but not in the `LANG'
|
||||
environment variable, `LL_CC' combinations can be abbreviated as `LL'
|
||||
to denote the language's main dialect. For example, `de' is equivalent
|
||||
to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT'
|
||||
(Portuguese as spoken in Portugal) in this context.
|
||||
|
||||
Translating Teams
|
||||
=================
|
||||
|
||||
For the Free Translation Project to be a success, we need interested
|
||||
people who like their own language and write it well, and who are also
|
||||
able to synergize with other translators speaking the same language.
|
||||
Each translation team has its own mailing list. The up-to-date list of
|
||||
teams can be found at the Free Translation Project's homepage,
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams"
|
||||
area.
|
||||
|
||||
If you'd like to volunteer to _work_ at translating messages, you
|
||||
should become a member of the translating team for your own language.
|
||||
The subscribing address is _not_ the same as the list itself, it has
|
||||
`-request' appended. For example, speakers of Swedish can send a
|
||||
message to `sv-request@li.org', having this message body:
|
||||
|
||||
subscribe
|
||||
|
||||
Keep in mind that team members are expected to participate
|
||||
_actively_ in translations, or at solving translational difficulties,
|
||||
rather than merely lurking around. If your team does not exist yet and
|
||||
you want to start one, or if you are unsure about what to do or how to
|
||||
get started, please write to `translation@iro.umontreal.ca' to reach the
|
||||
coordinator for all translator teams.
|
||||
|
||||
The English team is special. It works at improving and uniformizing
|
||||
the terminology in use. Proven linguistic skill are praised more than
|
||||
programming skill, here.
|
||||
|
||||
Available Packages
|
||||
==================
|
||||
|
||||
Languages are not equally supported in all packages. The following
|
||||
matrix shows the current state of internationalization, as of January
|
||||
2004. The matrix shows, in regard of each package, for which languages
|
||||
PO files have been submitted to translation coordination, with a
|
||||
translation percentage of at least 50%.
|
||||
|
||||
Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es
|
||||
+----------------------------------------------------+
|
||||
a2ps | [] [] [] [] |
|
||||
aegis | () |
|
||||
ant-phone | () |
|
||||
anubis | |
|
||||
ap-utils | |
|
||||
aspell | [] |
|
||||
bash | [] [] [] [] |
|
||||
batchelor | |
|
||||
bfd | [] [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] |
|
||||
bluez-pin | [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] [] [] |
|
||||
console-tools | [] [] |
|
||||
coreutils | [] [] [] [] |
|
||||
cpio | [] [] [] |
|
||||
darkstat | [] () [] |
|
||||
diffutils | [] [] [] [] [] [] [] |
|
||||
e2fsprogs | [] [] [] |
|
||||
enscript | [] [] [] [] |
|
||||
error | [] [] [] [] [] |
|
||||
fetchmail | [] () [] [] [] [] |
|
||||
fileutils | [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] |
|
||||
flex | [] [] [] [] |
|
||||
fslint | |
|
||||
gas | [] |
|
||||
gawk | [] [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | [] [] |
|
||||
gettext | [] [] [] [] [] |
|
||||
gettext-examples | [] [] [] [] |
|
||||
gettext-runtime | [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] |
|
||||
gimp-print | [] [] [] [] [] |
|
||||
gliv | |
|
||||
glunarclock | [] [] |
|
||||
gnubiff | [] |
|
||||
gnucash | [] () [] [] |
|
||||
gnucash-glossary | [] () [] |
|
||||
gnupg | [] () [] [] [] [] |
|
||||
gpe-aerial | [] |
|
||||
gpe-beam | [] [] |
|
||||
gpe-calendar | [] [] |
|
||||
gpe-clock | [] [] |
|
||||
gpe-conf | [] [] |
|
||||
gpe-contacts | [] [] |
|
||||
gpe-edit | [] |
|
||||
gpe-go | [] |
|
||||
gpe-login | [] [] |
|
||||
gpe-ownerinfo | [] [] |
|
||||
gpe-sketchbook | [] [] |
|
||||
gpe-su | [] [] |
|
||||
gpe-taskmanager | [] [] |
|
||||
gpe-timesheet | [] |
|
||||
gpe-today | [] [] |
|
||||
gpe-todo | [] [] |
|
||||
gphoto2 | [] [] [] [] |
|
||||
gprof | [] [] [] |
|
||||
gpsdrive | () () () |
|
||||
gramadoir | [] |
|
||||
grep | [] [] [] [] [] [] |
|
||||
gretl | [] |
|
||||
gtick | [] () |
|
||||
hello | [] [] [] [] [] [] |
|
||||
id-utils | [] [] |
|
||||
indent | [] [] [] [] |
|
||||
iso_3166 | [] [] [] [] [] [] [] [] [] [] |
|
||||
iso_3166_1 | [] [] [] [] [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] [] |
|
||||
iso_639 | |
|
||||
jpilot | [] [] [] |
|
||||
jtag | |
|
||||
jwhois | [] |
|
||||
kbd | [] [] [] [] [] |
|
||||
latrine | () |
|
||||
ld | [] [] |
|
||||
libc | [] [] [] [] [] [] |
|
||||
libgpewidget | [] [] |
|
||||
libiconv | [] [] [] [] [] |
|
||||
lifelines | [] () |
|
||||
lilypond | [] |
|
||||
lingoteach | |
|
||||
lingoteach_lessons | () () |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | [] [] |
|
||||
make | [] [] [] |
|
||||
man-db | [] () [] [] () |
|
||||
minicom | [] [] [] |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] () [] [] [] |
|
||||
nano_1_0 | [] () [] [] [] |
|
||||
opcodes | [] |
|
||||
parted | [] [] [] [] [] |
|
||||
ptx | [] [] [] [] [] |
|
||||
python | |
|
||||
radius | [] |
|
||||
recode | [] [] [] [] [] [] [] |
|
||||
rpm | [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] [] [] [] |
|
||||
sed | [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] |
|
||||
shared-mime-info | |
|
||||
sharutils | [] [] [] [] [] [] |
|
||||
silky | () |
|
||||
skencil | [] () [] |
|
||||
sketch | [] () [] |
|
||||
soundtracker | [] [] [] |
|
||||
sp | [] |
|
||||
tar | [] [] [] [] |
|
||||
texinfo | [] [] [] |
|
||||
textutils | [] [] [] [] |
|
||||
tin | () () |
|
||||
tp-robot | |
|
||||
tuxpaint | [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] [] [] [] |
|
||||
vorbis-tools | [] [] [] [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] |
|
||||
xchat | [] [] [] [] |
|
||||
xfree86_xkb_xml | [] [] |
|
||||
xpad | [] |
|
||||
+----------------------------------------------------+
|
||||
af am ar az be bg bs ca cs da de el en en_GB eo es
|
||||
4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68
|
||||
|
||||
et eu fa fi fr ga gl he hr hu id is it ja ko lg
|
||||
+-------------------------------------------------+
|
||||
a2ps | [] [] [] () () |
|
||||
aegis | |
|
||||
ant-phone | [] |
|
||||
anubis | [] |
|
||||
ap-utils | [] |
|
||||
aspell | [] [] |
|
||||
bash | [] [] |
|
||||
batchelor | [] [] |
|
||||
bfd | [] |
|
||||
binutils | [] [] |
|
||||
bison | [] [] [] [] |
|
||||
bluez-pin | [] [] [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] |
|
||||
console-tools | |
|
||||
coreutils | [] [] [] [] [] [] |
|
||||
cpio | [] [] [] [] |
|
||||
darkstat | () [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] [] |
|
||||
e2fsprogs | |
|
||||
enscript | [] [] |
|
||||
error | [] [] [] [] |
|
||||
fetchmail | [] |
|
||||
fileutils | [] [] [] [] [] [] |
|
||||
findutils | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
flex | [] [] [] |
|
||||
fslint | [] |
|
||||
gas | [] |
|
||||
gawk | [] [] [] |
|
||||
gbiff | [] |
|
||||
gcal | [] |
|
||||
gcc | [] |
|
||||
gettext | [] [] [] |
|
||||
gettext-examples | [] [] |
|
||||
gettext-runtime | [] [] [] [] [] |
|
||||
gettext-tools | [] [] [] |
|
||||
gimp-print | [] [] |
|
||||
gliv | () |
|
||||
glunarclock | [] [] [] [] |
|
||||
gnubiff | [] |
|
||||
gnucash | () [] |
|
||||
gnucash-glossary | [] |
|
||||
gnupg | [] [] [] [] [] [] [] |
|
||||
gpe-aerial | [] |
|
||||
gpe-beam | [] |
|
||||
gpe-calendar | [] [] [] |
|
||||
gpe-clock | [] |
|
||||
gpe-conf | [] |
|
||||
gpe-contacts | [] [] |
|
||||
gpe-edit | [] [] |
|
||||
gpe-go | [] |
|
||||
gpe-login | [] [] |
|
||||
gpe-ownerinfo | [] [] [] |
|
||||
gpe-sketchbook | [] |
|
||||
gpe-su | [] |
|
||||
gpe-taskmanager | [] |
|
||||
gpe-timesheet | [] [] [] |
|
||||
gpe-today | [] [] |
|
||||
gpe-todo | [] [] |
|
||||
gphoto2 | [] [] [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () () |
|
||||
gramadoir | [] [] |
|
||||
grep | [] [] [] [] [] [] [] [] [] [] [] |
|
||||
gretl | [] [] |
|
||||
gtick | [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] [] |
|
||||
indent | [] [] [] [] [] [] [] [] [] |
|
||||
iso_3166 | [] [] [] [] [] [] [] |
|
||||
iso_3166_1 | [] [] [] [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | |
|
||||
iso_4217 | [] [] [] [] [] [] |
|
||||
iso_639 | |
|
||||
jpilot | [] () |
|
||||
jtag | [] |
|
||||
jwhois | [] [] [] [] |
|
||||
kbd | [] |
|
||||
latrine | [] |
|
||||
ld | [] |
|
||||
libc | [] [] [] [] [] [] |
|
||||
libgpewidget | [] [] [] [] |
|
||||
libiconv | [] [] [] [] [] [] [] [] [] |
|
||||
lifelines | () |
|
||||
lilypond | [] |
|
||||
lingoteach | [] [] |
|
||||
lingoteach_lessons | |
|
||||
lynx | [] [] [] [] |
|
||||
m4 | [] [] [] [] |
|
||||
mailutils | |
|
||||
make | [] [] [] [] [] [] |
|
||||
man-db | () () |
|
||||
minicom | [] [] [] [] |
|
||||
mysecretdiary | [] [] |
|
||||
nano | [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] |
|
||||
opcodes | [] |
|
||||
parted | [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
radius | [] |
|
||||
recode | [] [] [] [] [] [] |
|
||||
rpm | [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] |
|
||||
sed | [] [] [] [] [] [] [] [] [] |
|
||||
sh-utils | [] [] [] [] [] [] [] |
|
||||
shared-mime-info | [] [] [] |
|
||||
sharutils | [] [] [] [] [] |
|
||||
silky | () [] () () |
|
||||
skencil | [] |
|
||||
sketch | [] |
|
||||
soundtracker | [] [] |
|
||||
sp | [] () |
|
||||
tar | [] [] [] [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] [] [] [] [] |
|
||||
tin | [] () |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | [] [] |
|
||||
util-linux | [] [] [] [] () [] |
|
||||
vorbis-tools | [] |
|
||||
wastesedge | () |
|
||||
wdiff | [] [] [] [] [] [] |
|
||||
wget | [] [] [] [] [] [] [] |
|
||||
xchat | [] [] [] |
|
||||
xfree86_xkb_xml | [] [] |
|
||||
xpad | [] [] |
|
||||
+-------------------------------------------------+
|
||||
et eu fa fi fr ga gl he hr hu id is it ja ko lg
|
||||
22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0
|
||||
|
||||
lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
|
||||
+-----------------------------------------------------+
|
||||
a2ps | [] [] () () [] [] [] |
|
||||
aegis | () () () |
|
||||
ant-phone | [] [] |
|
||||
anubis | [] [] [] [] [] [] |
|
||||
ap-utils | [] () [] |
|
||||
aspell | [] |
|
||||
bash | [] [] [] |
|
||||
batchelor | [] |
|
||||
bfd | [] |
|
||||
binutils | [] |
|
||||
bison | [] [] [] [] [] |
|
||||
bluez-pin | [] [] [] |
|
||||
clisp | |
|
||||
clisp | [] |
|
||||
console-tools | [] |
|
||||
coreutils | [] [] |
|
||||
cpio | [] [] [] [] [] |
|
||||
darkstat | [] [] [] [] |
|
||||
diffutils | [] [] [] [] [] [] |
|
||||
e2fsprogs | [] |
|
||||
enscript | [] [] [] [] |
|
||||
error | [] [] [] |
|
||||
fetchmail | [] [] () [] |
|
||||
fileutils | [] [] [] |
|
||||
findutils | [] [] [] [] [] |
|
||||
flex | [] [] [] [] |
|
||||
fslint | [] [] |
|
||||
gas | |
|
||||
gawk | [] [] [] |
|
||||
gbiff | [] [] |
|
||||
gcal | |
|
||||
gcc | |
|
||||
gettext | [] [] [] |
|
||||
gettext-examples | [] [] [] |
|
||||
gettext-runtime | [] [] [] [] |
|
||||
gettext-tools | [] [] |
|
||||
gimp-print | [] |
|
||||
gliv | [] [] [] |
|
||||
glunarclock | [] [] [] [] |
|
||||
gnubiff | [] |
|
||||
gnucash | [] [] () [] |
|
||||
gnucash-glossary | [] [] |
|
||||
gnupg | [] |
|
||||
gpe-aerial | [] [] [] [] |
|
||||
gpe-beam | [] [] [] [] |
|
||||
gpe-calendar | [] [] [] [] |
|
||||
gpe-clock | [] [] [] [] |
|
||||
gpe-conf | [] [] [] [] |
|
||||
gpe-contacts | [] [] [] [] |
|
||||
gpe-edit | [] [] [] [] |
|
||||
gpe-go | [] [] [] |
|
||||
gpe-login | [] [] [] [] |
|
||||
gpe-ownerinfo | [] [] [] [] |
|
||||
gpe-sketchbook | [] [] [] [] |
|
||||
gpe-su | [] [] [] [] |
|
||||
gpe-taskmanager | [] [] [] [] |
|
||||
gpe-timesheet | [] [] [] [] |
|
||||
gpe-today | [] [] [] [] |
|
||||
gpe-todo | [] [] [] [] |
|
||||
gphoto2 | [] |
|
||||
gprof | [] [] |
|
||||
gpsdrive | () () [] |
|
||||
gramadoir | () [] |
|
||||
grep | [] [] [] [] [] |
|
||||
gretl | |
|
||||
gtick | [] [] [] |
|
||||
hello | [] [] [] [] [] [] [] [] [] [] |
|
||||
id-utils | [] [] [] [] |
|
||||
indent | [] [] [] [] |
|
||||
iso_3166 | [] [] [] |
|
||||
iso_3166_1 | [] [] |
|
||||
iso_3166_2 | |
|
||||
iso_3166_3 | [] |
|
||||
iso_4217 | [] [] [] [] [] [] [] [] |
|
||||
iso_639 | [] |
|
||||
jpilot | () () |
|
||||
jtag | |
|
||||
jwhois | [] [] [] [] () |
|
||||
kbd | [] [] [] |
|
||||
latrine | [] |
|
||||
ld | |
|
||||
libc | [] [] [] [] |
|
||||
libgpewidget | [] [] [] |
|
||||
libiconv | [] [] [] [] [] |
|
||||
lifelines | |
|
||||
lilypond | |
|
||||
lingoteach | |
|
||||
lingoteach_lessons | |
|
||||
lynx | [] [] [] |
|
||||
m4 | [] [] [] [] [] |
|
||||
mailutils | [] [] [] |
|
||||
make | [] [] [] [] |
|
||||
man-db | [] |
|
||||
minicom | [] [] [] [] |
|
||||
mysecretdiary | [] [] [] |
|
||||
nano | [] [] [] [] [] |
|
||||
nano_1_0 | [] [] [] [] [] [] |
|
||||
opcodes | [] [] |
|
||||
parted | [] [] [] [] |
|
||||
ptx | [] [] [] [] [] [] [] [] |
|
||||
python | |
|
||||
radius | [] [] |
|
||||
recode | [] [] [] [] |
|
||||
rpm | [] [] [] |
|
||||
screem | |
|
||||
scrollkeeper | [] [] [] [] [] |
|
||||
sed | [] [] [] |
|
||||
sh-utils | [] [] |
|
||||
shared-mime-info | [] [] |
|
||||
sharutils | [] [] |
|
||||
silky | () |
|
||||
skencil | [] [] |
|
||||
sketch | [] [] |
|
||||
soundtracker | |
|
||||
sp | |
|
||||
tar | [] [] [] [] [] [] |
|
||||
texinfo | [] [] [] [] |
|
||||
textutils | [] [] |
|
||||
tin | |
|
||||
tp-robot | [] |
|
||||
tuxpaint | [] [] [] [] [] [] [] [] |
|
||||
unicode-han-tra... | |
|
||||
unicode-transla... | |
|
||||
util-linux | [] [] [] |
|
||||
vorbis-tools | [] [] [] |
|
||||
wastesedge | |
|
||||
wdiff | [] [] [] [] [] |
|
||||
wget | [] [] [] |
|
||||
xchat | [] [] [] |
|
||||
xfree86_xkb_xml | [] [] |
|
||||
xpad | [] [] |
|
||||
+-----------------------------------------------------+
|
||||
lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru
|
||||
1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63
|
||||
|
||||
sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
|
||||
+-----------------------------------------------------+
|
||||
a2ps | [] [] [] [] | 16
|
||||
aegis | | 0
|
||||
ant-phone | | 3
|
||||
anubis | [] [] | 9
|
||||
ap-utils | () | 3
|
||||
aspell | | 4
|
||||
bash | | 9
|
||||
batchelor | | 3
|
||||
bfd | [] [] | 6
|
||||
binutils | [] [] [] | 8
|
||||
bison | [] [] | 14
|
||||
bluez-pin | [] [] [] | 14
|
||||
clisp | | 0
|
||||
clisp | | 5
|
||||
console-tools | | 3
|
||||
coreutils | [] [] [] [] | 16
|
||||
cpio | [] [] | 14
|
||||
darkstat | [] [] [] () () | 12
|
||||
diffutils | [] [] [] | 23
|
||||
e2fsprogs | [] [] | 6
|
||||
enscript | [] [] | 12
|
||||
error | [] [] [] | 15
|
||||
fetchmail | [] [] | 11
|
||||
fileutils | [] [] [] [] [] | 17
|
||||
findutils | [] [] [] [] [] [] | 29
|
||||
flex | [] [] | 13
|
||||
fslint | | 3
|
||||
gas | [] | 3
|
||||
gawk | [] [] | 12
|
||||
gbiff | | 4
|
||||
gcal | [] [] | 4
|
||||
gcc | [] | 4
|
||||
gettext | [] [] [] [] [] | 16
|
||||
gettext-examples | [] [] [] [] [] | 14
|
||||
gettext-runtime | [] [] [] [] [] [] [] [] | 22
|
||||
gettext-tools | [] [] [] [] [] [] | 14
|
||||
gimp-print | [] [] | 10
|
||||
gliv | | 3
|
||||
glunarclock | [] [] [] | 13
|
||||
gnubiff | | 3
|
||||
gnucash | [] [] | 9
|
||||
gnucash-glossary | [] [] [] | 8
|
||||
gnupg | [] [] [] [] | 17
|
||||
gpe-aerial | [] | 7
|
||||
gpe-beam | [] | 8
|
||||
gpe-calendar | [] [] [] [] | 13
|
||||
gpe-clock | [] [] [] | 10
|
||||
gpe-conf | [] [] | 9
|
||||
gpe-contacts | [] [] [] | 11
|
||||
gpe-edit | [] [] [] [] [] | 12
|
||||
gpe-go | | 5
|
||||
gpe-login | [] [] [] [] [] | 13
|
||||
gpe-ownerinfo | [] [] [] [] | 13
|
||||
gpe-sketchbook | [] [] | 9
|
||||
gpe-su | [] [] [] | 10
|
||||
gpe-taskmanager | [] [] [] | 10
|
||||
gpe-timesheet | [] [] [] [] | 12
|
||||
gpe-today | [] [] [] [] [] | 13
|
||||
gpe-todo | [] [] [] [] | 12
|
||||
gphoto2 | [] [] [] | 11
|
||||
gprof | [] [] | 9
|
||||
gpsdrive | [] [] | 3
|
||||
gramadoir | [] | 5
|
||||
grep | [] [] [] [] | 26
|
||||
gretl | | 3
|
||||
gtick | | 7
|
||||
hello | [] [] [] [] [] | 34
|
||||
id-utils | [] [] | 12
|
||||
indent | [] [] [] [] | 21
|
||||
iso_3166 | [] [] [] [] [] [] [] | 27
|
||||
iso_3166_1 | [] [] [] | 16
|
||||
iso_3166_2 | | 0
|
||||
iso_3166_3 | | 2
|
||||
iso_4217 | [] [] [] [] [] [] | 24
|
||||
iso_639 | | 1
|
||||
jpilot | [] [] [] [] [] | 9
|
||||
jtag | [] | 2
|
||||
jwhois | () [] [] | 11
|
||||
kbd | [] [] | 11
|
||||
latrine | | 2
|
||||
ld | [] [] | 5
|
||||
libc | [] [] [] [] | 20
|
||||
libgpewidget | [] [] [] [] | 13
|
||||
libiconv | [] [] [] [] [] [] [] [] | 27
|
||||
lifelines | [] | 2
|
||||
lilypond | [] | 3
|
||||
lingoteach | | 2
|
||||
lingoteach_lessons | () | 0
|
||||
lynx | [] [] [] | 14
|
||||
m4 | [] [] | 15
|
||||
mailutils | | 5
|
||||
make | [] [] [] | 16
|
||||
man-db | [] | 5
|
||||
minicom | | 11
|
||||
mysecretdiary | [] [] | 10
|
||||
nano | [] [] [] [] | 17
|
||||
nano_1_0 | [] [] [] | 17
|
||||
opcodes | [] [] | 6
|
||||
parted | [] [] [] | 15
|
||||
ptx | [] [] | 22
|
||||
python | | 0
|
||||
radius | | 4
|
||||
recode | [] [] [] | 20
|
||||
rpm | [] [] | 9
|
||||
screem | [] [] | 2
|
||||
scrollkeeper | [] [] [] | 15
|
||||
sed | [] [] [] [] [] [] | 24
|
||||
sh-utils | [] [] | 14
|
||||
shared-mime-info | [] [] | 7
|
||||
sharutils | [] [] [] [] | 17
|
||||
silky | () | 3
|
||||
skencil | [] | 6
|
||||
sketch | [] | 6
|
||||
soundtracker | [] [] | 7
|
||||
sp | [] | 3
|
||||
tar | [] [] [] [] [] | 24
|
||||
texinfo | [] [] [] | 14
|
||||
textutils | [] [] [] [] | 16
|
||||
tin | | 1
|
||||
tp-robot | | 2
|
||||
tuxpaint | [] [] [] [] [] | 29
|
||||
unicode-han-tra... | | 0
|
||||
unicode-transla... | | 2
|
||||
util-linux | [] [] | 15
|
||||
vorbis-tools | | 8
|
||||
wastesedge | | 0
|
||||
wdiff | [] [] [] | 18
|
||||
wget | [] [] [] [] [] [] [] [] | 24
|
||||
xchat | [] [] [] [] [] | 15
|
||||
xfree86_xkb_xml | [] [] [] [] [] | 11
|
||||
xpad | | 5
|
||||
+-----------------------------------------------------+
|
||||
63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu
|
||||
131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373
|
||||
|
||||
Some counters in the preceding matrix are higher than the number of
|
||||
visible blocks let us expect. This is because a few extra PO files are
|
||||
used for implementing regional variants of languages, or language
|
||||
dialects.
|
||||
|
||||
For a PO file in the matrix above to be effective, the package to
|
||||
which it applies should also have been internationalized and
|
||||
distributed as such by its maintainer. There might be an observable
|
||||
lag between the mere existence a PO file and its wide availability in a
|
||||
distribution.
|
||||
|
||||
If January 2004 seems to be old, you may fetch a more recent copy of
|
||||
this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date
|
||||
matrix with full percentage details can be found at
|
||||
`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'.
|
||||
|
||||
Using `gettext' in new packages
|
||||
===============================
|
||||
|
||||
If you are writing a freely available program and want to
|
||||
internationalize it you are welcome to use GNU `gettext' in your
|
||||
package. Of course you have to respect the GNU Library General Public
|
||||
License which covers the use of the GNU `gettext' library. This means
|
||||
in particular that even non-free programs can use `libintl' as a shared
|
||||
library, whereas only free software can use `libintl' as a static
|
||||
library or use modified versions of `libintl'.
|
||||
|
||||
Once the sources are changed appropriately and the setup can handle
|
||||
the use of `gettext' the only thing missing are the translations. The
|
||||
Free Translation Project is also available for packages which are not
|
||||
developed inside the GNU project. Therefore the information given above
|
||||
applies also for every other Free Software Project. Contact
|
||||
`translation@iro.umontreal.ca' to make the `.pot' files available to
|
||||
the translation teams.
|
||||
|
2
README
2
README
|
@ -1,6 +1,6 @@
|
|||
Enlightenment News Module
|
||||
|
||||
Module to display information feeds like Rss or Atom
|
||||
Module to display information feeds like Rss (and soon Atom)
|
||||
on youre Enlightenment desktop
|
||||
|
||||
enjoy =)
|
5
TODO
5
TODO
|
@ -8,6 +8,9 @@ BUGS
|
|||
NEEDED (to do more or less in this order)
|
||||
----------------------------------------------------
|
||||
|
||||
- parse html chars (in _item_clean ?)
|
||||
- atom feeds
|
||||
|
||||
- feed icons (new file ?)
|
||||
Evas_Object *news_feed_icon_add(News_Feed *feed)
|
||||
void news_feed_icon_del(Evas_Object *obj)
|
||||
|
@ -42,9 +45,9 @@ to avoid refresh the ilist
|
|||
---
|
||||
|
||||
[Parse]
|
||||
- parse html chars (in _item_clean ?)
|
||||
- reparse infos every time, if changes ... ?
|
||||
- handle the fact that sometimes we loose feeds (connection timeout ...) so sometimes, keep feeds that are READ, to avoid having feeds marked as unread, but wich where read before
|
||||
detect when there are less articles then the time before ? if its the case, keep read articles ?
|
||||
-> compare description of feed just parsed with suspect precedent one
|
||||
its not that slow (use memcmp, keep description_size)
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ rm -Rf aclocal.m4 autom4te.cache/ ltmain.sh config.log config.status config.cac
|
|||
src/Makefile src/Makefile.in \
|
||||
src/module/Makefile src/module/Makefile.in
|
||||
|
||||
echo "Running autopoint..." ; autopoint -f || :
|
||||
echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
|
||||
echo "Running autoheader..." ; autoheader || exit 1
|
||||
echo "Running autoconf..." ; autoconf || exit 1
|
||||
|
|
|
@ -104,7 +104,7 @@ EAPI int
|
|||
e_modapi_about(E_Module *m)
|
||||
{
|
||||
news_util_message_show(_("Module to display information feeds<br>"
|
||||
"like Rss or Atom, on youre desktop<br><br>"
|
||||
"like Rss (and soon Atom), on youre desktop<br><br>"
|
||||
"ooookiwi@gmail.com<br>"
|
||||
"http://oooo.zapto.org"));
|
||||
return 1;
|
||||
|
|
|
@ -204,6 +204,8 @@ news_config_dialog_feed_refresh_langs(News_Feed *feed)
|
|||
e_widget_ilist_selected_set(ilist, pos_to_select);
|
||||
else
|
||||
e_widget_ilist_selected_set(ilist, 0);
|
||||
_cb_lang_change(cfdata, NULL);
|
||||
|
||||
|
||||
e_widget_min_size_get(ilist, &w, NULL);
|
||||
e_widget_min_size_set(ilist, w, 110);
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#include "News.h"
|
||||
|
||||
#define DIALOG_CLASS "_e_mod_news_config_dialog_langs"
|
||||
|
||||
struct _Lang_Choice
|
||||
{
|
||||
News_Feed_Lang *lang;
|
||||
|
@ -30,6 +32,9 @@ news_config_dialog_langs_show(void)
|
|||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View *v;
|
||||
|
||||
if (e_config_dialog_find("E", DIALOG_CLASS))
|
||||
return 0;
|
||||
|
||||
v = E_NEW(E_Config_Dialog_View, 1);
|
||||
|
||||
v->create_cfdata = _create_data;
|
||||
|
@ -38,7 +43,7 @@ news_config_dialog_langs_show(void)
|
|||
|
||||
cfd = e_config_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
_("News Feeds Language Configuration"),
|
||||
"E", "_e_mod_news_config_dialog_langs",
|
||||
"E", DIALOG_CLASS,
|
||||
news->theme, 0, v, NULL);
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -300,10 +300,10 @@ news_feed_edit(News_Feed *f, char *name, int name_ovrw, char *language, int lang
|
|||
if ( f2 && (f != f2) )
|
||||
{
|
||||
news_util_message_error_show(_("A feed with the <hilight>name</hilight> %s <hilight>already exists</hilight><br>"
|
||||
"in the %s category<br/><br/>"
|
||||
"Its not possible to have feeds with the same name<br/>"
|
||||
"in the %s category<br><br>"
|
||||
"Its not possible to have feeds with the same name<br>"
|
||||
"in one category."),
|
||||
f->name, f->category->name);
|
||||
name, category->name);
|
||||
return 0;
|
||||
}
|
||||
if (!language || !language[0])
|
||||
|
@ -1081,21 +1081,15 @@ _feed_category_find(char *name)
|
|||
static char *
|
||||
_get_host_from_url(const char *url)
|
||||
{
|
||||
char *host;
|
||||
char *tmp, *p;
|
||||
char *host, *p;
|
||||
char buf[4096];
|
||||
|
||||
if (strncmp(url, "http://", 7))
|
||||
strncpy(buf, url, sizeof(buf));
|
||||
if (strncmp(buf, "http://", 7))
|
||||
return NULL;
|
||||
tmp = strdup(url + 7);
|
||||
p = strchr(tmp, '/');
|
||||
if (!p)
|
||||
{
|
||||
free(tmp);
|
||||
return NULL;
|
||||
}
|
||||
*p = '\0';
|
||||
host = strdup(tmp);
|
||||
free(tmp);
|
||||
p = strchr(buf+7, '/');
|
||||
if (p) *p = '\0';
|
||||
host = strdup(buf+7);
|
||||
|
||||
return host;
|
||||
}
|
||||
|
@ -1103,8 +1097,7 @@ _get_host_from_url(const char *url)
|
|||
static char *
|
||||
_get_file_from_url(const char *url)
|
||||
{
|
||||
char *file;
|
||||
char *p;
|
||||
char *file, *p;
|
||||
|
||||
p = strstr(url, "://");
|
||||
if (!p)
|
||||
|
@ -1112,9 +1105,9 @@ _get_file_from_url(const char *url)
|
|||
p += 3;
|
||||
p = strstr(p, "/");
|
||||
if (!p)
|
||||
return NULL;
|
||||
|
||||
file = strdup(p);
|
||||
file = strdup("/");
|
||||
else
|
||||
file = strdup(p);
|
||||
|
||||
return file;
|
||||
}
|
||||
|
@ -1307,6 +1300,7 @@ _cb_feed_parse(News_Feed_Document *doc, News_Parse_Error error, int changes)
|
|||
doc->parse.last_time = ecore_time_get();
|
||||
|
||||
//TODO with popups
|
||||
doc->parse.error = error;
|
||||
switch(error)
|
||||
{
|
||||
case NEWS_PARSE_ERROR_NO:
|
||||
|
|
|
@ -279,9 +279,10 @@ struct _News_Feed_Document
|
|||
const char *meta_date;
|
||||
const char *charset;
|
||||
|
||||
News_Parse *parser;
|
||||
int got_infos : 1;
|
||||
time_t last_time;
|
||||
News_Parse *parser;
|
||||
int got_infos : 1;
|
||||
time_t last_time;
|
||||
News_Parse_Error error;
|
||||
} parse;
|
||||
};
|
||||
|
||||
|
|
|
@ -207,7 +207,6 @@ static void
|
|||
_cb_configure_main(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
if (!news) return;
|
||||
if (news->config_dialog) return;
|
||||
|
||||
news_config_dialog_show();
|
||||
}
|
||||
|
@ -216,7 +215,6 @@ static void
|
|||
_cb_configure_feeds(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
if (!news) return;
|
||||
if (news->config_dialog_feeds) return;
|
||||
|
||||
news_config_dialog_feeds_show();
|
||||
}
|
||||
|
|
|
@ -284,6 +284,7 @@ _parse_type(News_Feed_Document *doc)
|
|||
{
|
||||
doc->parse.type = NEWS_FEED_TYPE_ATOM;
|
||||
doc->parse.version = 1.0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
doc->parse.type = NEWS_FEED_TYPE_UNKNOWN;
|
||||
|
|
|
@ -42,6 +42,8 @@ _idler(void *data)
|
|||
|
||||
parser = data;
|
||||
|
||||
//DD(("%d", parser->oc.action));
|
||||
|
||||
switch(parser->oc.action)
|
||||
{
|
||||
case NEWS_PARSE_OC_DETECT_METAS:
|
||||
|
@ -101,7 +103,7 @@ _idler(void *data)
|
|||
}
|
||||
|
||||
/* error returned */
|
||||
if (err)
|
||||
if (err) //FIXME: != NEWS_PARSE_ERROR_TYPE_NO
|
||||
{
|
||||
parser->error = err;
|
||||
parser->oc.action = NEWS_PARSE_OC_END;
|
||||
|
@ -142,7 +144,7 @@ _parse_detect_metas(News_Parse *parser)
|
|||
{
|
||||
News_Feed *feed;
|
||||
News_Feed_Document *doc;
|
||||
int ver;
|
||||
float ver;
|
||||
|
||||
doc = parser->doc;
|
||||
feed = doc->feed;
|
||||
|
@ -334,20 +336,18 @@ _parse_item_title(News_Parse *parser)
|
|||
pos = parser->buffer_pos;
|
||||
|
||||
p1 = strstr(pos, "<title");
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2) return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
|
||||
if (p2 < art->pos_end)
|
||||
if (p1 && (p1 < art->pos_end))
|
||||
{
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2 || (p2 > art->pos_end))
|
||||
return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
len = p2 - p1;
|
||||
art->title = E_NEW(char, len+1);
|
||||
memcpy(art->title, p1, len);
|
||||
art->title[len] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
art->title = strdup("No title");
|
||||
}
|
||||
art->title = strdup("No title");
|
||||
|
||||
return NEWS_PARSE_ERROR_NO;
|
||||
}
|
||||
|
@ -365,52 +365,53 @@ _parse_item_date(News_Parse *parser)
|
|||
pos = parser->buffer_pos;
|
||||
|
||||
p1 = strstr(pos, parser->doc->parse.meta_date);
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2) return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
if (p2 >= art->pos_end) return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
|
||||
len = p2 - p1;
|
||||
date = p1;
|
||||
tm = &art->date;
|
||||
DD(("DATE LEN %d", len));
|
||||
|
||||
if ((parser->doc->parse.version == 1.0) &&
|
||||
(len >= 22))
|
||||
if (p1 && (p1 < art->pos_end))
|
||||
{
|
||||
sscanf(date, "%4d", &i);
|
||||
tm->tm_year = i - 1900;
|
||||
sscanf(date+5, "%2d", &tm->tm_mon);
|
||||
tm->tm_mon--; /* tm works with 0-11 */
|
||||
sscanf(date+8, "%2d", &tm->tm_mday);
|
||||
sscanf(date+11, "%2d", &tm->tm_hour);
|
||||
sscanf(date+14, "%2d", &tm->tm_min);
|
||||
if (date[16] == ':') /* seconds are precised ? */
|
||||
sscanf(date+17, "%2d", &tm->tm_sec);
|
||||
else
|
||||
tm->tm_sec = 0;
|
||||
DD(("DATE seconds %d", tm->tm_sec));
|
||||
}
|
||||
else if (len >= 25)
|
||||
{
|
||||
sscanf(date+5, "%2d", &tm->tm_mday);
|
||||
if (!strncmp(date+8, "Jan", 3)) tm->tm_mon = 0;
|
||||
else if (!strncmp(date+8, "Feb", 3)) tm->tm_mon = 1;
|
||||
else if (!strncmp(date+8, "Mar", 3)) tm->tm_mon = 2;
|
||||
else if (!strncmp(date+8, "Apr", 3)) tm->tm_mon = 3;
|
||||
else if (!strncmp(date+8, "May", 3)) tm->tm_mon = 4;
|
||||
else if (!strncmp(date+8, "Jun", 3)) tm->tm_mon = 5;
|
||||
else if (!strncmp(date+8, "Jul", 3)) tm->tm_mon = 6;
|
||||
else if (!strncmp(date+8, "Aug", 3)) tm->tm_mon = 7;
|
||||
else if (!strncmp(date+8, "Sep", 3)) tm->tm_mon = 8;
|
||||
else if (!strncmp(date+8, "Oct", 3)) tm->tm_mon = 9;
|
||||
else if (!strncmp(date+8, "Nov", 3)) tm->tm_mon = 10;
|
||||
else if (!strncmp(date+8, "Dec", 3)) tm->tm_mon = 11;
|
||||
else tm->tm_mon = 0;
|
||||
sscanf(date+12, "%4d", &i);
|
||||
tm->tm_year = i - 1900;
|
||||
sscanf(date+17, "%2d", &tm->tm_hour);
|
||||
sscanf(date+20, "%2d", &tm->tm_min);
|
||||
sscanf(date+23, "%2d", &tm->tm_sec);
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2 || p2 > art->pos_end)
|
||||
return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
|
||||
len = p2 - p1;
|
||||
date = p1;
|
||||
tm = &art->date;
|
||||
|
||||
if ((parser->doc->parse.version == 1.0) &&
|
||||
(len >= 22))
|
||||
{
|
||||
sscanf(date, "%4d", &i);
|
||||
tm->tm_year = i - 1900;
|
||||
sscanf(date+5, "%2d", &tm->tm_mon);
|
||||
tm->tm_mon--; /* tm works with 0-11 */
|
||||
sscanf(date+8, "%2d", &tm->tm_mday);
|
||||
sscanf(date+11, "%2d", &tm->tm_hour);
|
||||
sscanf(date+14, "%2d", &tm->tm_min);
|
||||
if (date[16] == ':') /* seconds are precised ? */
|
||||
sscanf(date+17, "%2d", &tm->tm_sec);
|
||||
else
|
||||
tm->tm_sec = 0;
|
||||
}
|
||||
else if (len >= 25)
|
||||
{
|
||||
sscanf(date+5, "%2d", &tm->tm_mday);
|
||||
if (!strncmp(date+8, "Jan", 3)) tm->tm_mon = 0;
|
||||
else if (!strncmp(date+8, "Feb", 3)) tm->tm_mon = 1;
|
||||
else if (!strncmp(date+8, "Mar", 3)) tm->tm_mon = 2;
|
||||
else if (!strncmp(date+8, "Apr", 3)) tm->tm_mon = 3;
|
||||
else if (!strncmp(date+8, "May", 3)) tm->tm_mon = 4;
|
||||
else if (!strncmp(date+8, "Jun", 3)) tm->tm_mon = 5;
|
||||
else if (!strncmp(date+8, "Jul", 3)) tm->tm_mon = 6;
|
||||
else if (!strncmp(date+8, "Aug", 3)) tm->tm_mon = 7;
|
||||
else if (!strncmp(date+8, "Sep", 3)) tm->tm_mon = 8;
|
||||
else if (!strncmp(date+8, "Oct", 3)) tm->tm_mon = 9;
|
||||
else if (!strncmp(date+8, "Nov", 3)) tm->tm_mon = 10;
|
||||
else if (!strncmp(date+8, "Dec", 3)) tm->tm_mon = 11;
|
||||
else tm->tm_mon = 0;
|
||||
sscanf(date+12, "%4d", &i);
|
||||
tm->tm_year = i - 1900;
|
||||
sscanf(date+17, "%2d", &tm->tm_hour);
|
||||
sscanf(date+20, "%2d", &tm->tm_min);
|
||||
sscanf(date+23, "%2d", &tm->tm_sec);
|
||||
}
|
||||
}
|
||||
|
||||
return NEWS_PARSE_ERROR_NO;
|
||||
|
@ -436,20 +437,16 @@ _parse_item_link(News_Parse *parser)
|
|||
pos = parser->buffer_pos;
|
||||
|
||||
p1 = strstr(pos, "<link");
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2) return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
|
||||
if (p2 < art->pos_end)
|
||||
if (p1 && (p1 < art->pos_end))
|
||||
{
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2 || (p2 > art->pos_end))
|
||||
return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
len = p2 - p1;
|
||||
art->url = E_NEW(char, len+1);
|
||||
memcpy(art->url, p1, len);
|
||||
art->url[len] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
art->url = strdup("No link");
|
||||
}
|
||||
|
||||
return NEWS_PARSE_ERROR_NO;
|
||||
}
|
||||
|
@ -466,20 +463,16 @@ _parse_item_description(News_Parse *parser)
|
|||
pos = parser->buffer_pos;
|
||||
|
||||
p1 = strstr(pos, "<description");
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2) return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
|
||||
if (p2 < art->pos_end)
|
||||
if (p1 && (p1 < art->pos_end))
|
||||
{
|
||||
p2 = news_parse_meta_block_find(&p1);
|
||||
if (!p2 || (p2 > art->pos_end))
|
||||
return NEWS_PARSE_ERROR_BROKEN_FEED;
|
||||
len = p2 - p1;
|
||||
art->description = E_NEW(char, len+1);
|
||||
memcpy(art->description, p1, len);
|
||||
art->description[len] = '\0';
|
||||
}
|
||||
else
|
||||
{
|
||||
art->description = strdup("No content");
|
||||
}
|
||||
|
||||
return NEWS_PARSE_ERROR_NO;
|
||||
}
|
||||
|
|
|
@ -591,15 +591,18 @@ _dialog_cb_article_selected(void *data)
|
|||
DD(("TRIGGERED cb article ilist (%s)", art->title));
|
||||
nv->varticles.selected = art;
|
||||
|
||||
strftime(buf_date, sizeof(buf_date), "%Y-%m-%d %H:%M:%S", &art->date);
|
||||
if (art->date.tm_year != 0)
|
||||
strftime(buf_date, sizeof(buf_date), "%Y-%m-%d %H:%M:%S", &art->date);
|
||||
snprintf(buf, sizeof(buf),
|
||||
"<underline=on underline_color=%s>%s</><br>"
|
||||
"%s<br><br>"
|
||||
"%s<br><br>",
|
||||
"%s<br><br>"
|
||||
"%s",
|
||||
news->config->viewer.vcontent.font_color,
|
||||
(art->title && art->title[0]) ? art->title : "No title",
|
||||
buf_date,
|
||||
(art->description && art->description[0])? art->description : "No description text");
|
||||
(art->description && art->description[0])? art->description : "No description text",
|
||||
(art->url) ? "||click here to open article in a browser||" : "");
|
||||
_vcontent_text_set(nv, buf);
|
||||
|
||||
if (art->unread)
|
||||
|
@ -747,11 +750,12 @@ _varticles_refresh(News_Viewer *nv)
|
|||
{
|
||||
News_Feed_Article *art;
|
||||
char label[4096];
|
||||
char buf_date[4096] = "-- --:--";
|
||||
char buf_date[4096] = "";
|
||||
|
||||
art = l->data;
|
||||
/* append the article to the article ilist */
|
||||
strftime(buf_date, sizeof(buf_date), "%d %H:%M", &art->date);
|
||||
if (art->date.tm_year)
|
||||
strftime(buf_date, sizeof(buf_date), "%d %H:%M", &art->date);
|
||||
snprintf(label, sizeof(label), "%s %s", buf_date, art->title);
|
||||
e_widget_ilist_append(ilist,
|
||||
_article_icon_get(art, evas_object_evas_get(ilist)), label,
|
||||
|
@ -810,6 +814,7 @@ static void
|
|||
_vcontent_feed_infos_set(News_Viewer *nv)
|
||||
{
|
||||
News_Feed *f;
|
||||
char buf_error[1024] = "";
|
||||
char buf_infos[1024] = "";
|
||||
char buf_conn[200] = "";
|
||||
char buf_unread[1024] = "No unread articles";
|
||||
|
@ -821,6 +826,18 @@ _vcontent_feed_infos_set(News_Viewer *nv)
|
|||
|
||||
if (f->doc)
|
||||
{
|
||||
switch(f->doc->parse.error)
|
||||
{
|
||||
case NEWS_PARSE_ERROR_NO:
|
||||
case NEWS_PARSE_ERROR_NOT_IMPLEMENTED:
|
||||
break;
|
||||
case NEWS_PARSE_ERROR_BROKEN_FEED:
|
||||
case NEWS_PARSE_ERROR_TYPE_UNKNOWN:
|
||||
snprintf(buf_error, sizeof(buf_error),
|
||||
"<br><color=#ff0000>An error happend during the parse of this feed !<br>"
|
||||
"You can report error at ooookiwi@gmail.com to get it fixed</><br><br>");
|
||||
break;
|
||||
}
|
||||
if (f->doc->parse.last_time)
|
||||
{
|
||||
char buf_mtime[200];
|
||||
|
@ -831,7 +848,7 @@ _vcontent_feed_infos_set(News_Viewer *nv)
|
|||
case NEWS_FEED_TYPE_RSS:
|
||||
type = "RSS"; break;
|
||||
case NEWS_FEED_TYPE_ATOM:
|
||||
type = "ATOM"; break;
|
||||
type = "ATOM <color=#ff0000>(not supported for now)</>"; break;
|
||||
default:
|
||||
type = "UNKNOWN";
|
||||
}
|
||||
|
@ -865,12 +882,14 @@ _vcontent_feed_infos_set(News_Viewer *nv)
|
|||
}
|
||||
snprintf(buf, sizeof(buf),
|
||||
"<underline=on underline_color=%s>%s</> <i>in %s</i><br>"
|
||||
"%s"
|
||||
"%s<br><br>"
|
||||
"%s%s<br>"
|
||||
"%s",
|
||||
news->config->viewer.vcontent.font_color,
|
||||
f->name,
|
||||
f->category->name,
|
||||
buf_error,
|
||||
(f->description && f->description[0]) ? f->description : "No description for this feed",
|
||||
buf_infos, buf_conn,
|
||||
buf_unread);
|
||||
|
@ -886,20 +905,16 @@ _vcontent_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
|||
nv = data;
|
||||
ev = event_info;
|
||||
|
||||
if (ev->flags == EVAS_BUTTON_DOUBLE_CLICK)
|
||||
if (nv->varticles.selected)
|
||||
{
|
||||
if (nv->varticles.selected)
|
||||
{
|
||||
if (nv->varticles.selected->url)
|
||||
news_util_browser_open(nv->varticles.selected->url);
|
||||
}
|
||||
else if (nv->vfeeds.selected)
|
||||
{
|
||||
if (nv->vfeeds.selected->url_home)
|
||||
news_util_browser_open(nv->vfeeds.selected->url_home);
|
||||
}
|
||||
if (nv->varticles.selected->url)
|
||||
news_util_browser_open(nv->varticles.selected->url);
|
||||
}
|
||||
else if (nv->vfeeds.selected)
|
||||
{
|
||||
if (nv->vfeeds.selected->url_home)
|
||||
news_util_browser_open(nv->vfeeds.selected->url_home);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
|
|
Loading…
Reference in New Issue