Revision: 8696
http://languagetool.svn.sourceforge.net/languagetool/?rev=8696&view=rev
Author: jaumeortola
Date: 2012-12-29 12:40:09 +0000 (Sat, 29 Dec 2012)
Log Message:
-----------
[ca] Fixed false alarms. Improved tokenization of decimal numbers.
Modified Paths:
--------------
trunk/JLanguageTool/src/main/java/org/languagetool/tokenizers/ca/CatalanWordTokenizer.java
trunk/JLanguageTool/src/main/resources/org/languagetool/resource/ca/disambiguation.xml
trunk/JLanguageTool/src/main/resources/org/languagetool/rules/ca/grammar.xml
trunk/JLanguageTool/src/test/java/org/languagetool/rules/ca/ComplexAdjectiveConcordanceRuleTest.java
Modified:
trunk/JLanguageTool/src/main/java/org/languagetool/tokenizers/ca/CatalanWordTokenizer.java
===================================================================
---
trunk/JLanguageTool/src/main/java/org/languagetool/tokenizers/ca/CatalanWordTokenizer.java
2012-12-29 10:21:03 UTC (rev 8695)
+++
trunk/JLanguageTool/src/main/java/org/languagetool/tokenizers/ca/CatalanWordTokenizer.java
2012-12-29 12:40:09 UTC (rev 8696)
@@ -88,7 +88,9 @@
final List<String> l = new ArrayList<String>();
final StringTokenizer st = new
StringTokenizer(text.replaceAll("([\\p{L}])['’]([\\p{L}])", "$1##CA_APOS##$2")
.replaceAll("([\\p{L}])-([\\p{L}])-([\\p{L}])",
"$1##CA_HYPHEN##$2##CA_HYPHEN##$3") //it's necessary for words like
"vint-i-quatre"
- .replaceAll("([\\p{L}])-([\\p{Ll}\\d])",
"$1##CA_HYPHEN##$2"),
+ .replaceAll("([\\p{L}])-([\\p{Ll}\\d])",
"$1##CA_HYPHEN##$2")
+ .replaceAll("([\\d]).([\\d])",
"$1##CA_DECIMALPOINT##$2")
+ .replaceAll("([\\d]),([\\d])",
"$1##CA_DECIMALCOMMA##$2"),
"\u0020\u00A0\u115f\u1160\u1680"
+
"\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007"
+
"\u2008\u2009\u200A\u200B\u200c\u200d\u200e\u200f"
@@ -101,7 +103,8 @@
String groupStr;
while (st.hasMoreElements()) {
- s=st.nextToken().replaceAll("##CA_APOS##",
"'").replaceAll("##CA_HYPHEN##", "-");
+ s=st.nextToken().replaceAll("##CA_APOS##",
"'").replaceAll("##CA_HYPHEN##", "-")
+ .replaceAll("##CA_DECIMALPOINT##",
".").replaceAll("##CA_DECIMALCOMMA##", ",");
Matcher matcher=null;
boolean matchFound=false;
int j=0;
Modified:
trunk/JLanguageTool/src/main/resources/org/languagetool/resource/ca/disambiguation.xml
===================================================================
---
trunk/JLanguageTool/src/main/resources/org/languagetool/resource/ca/disambiguation.xml
2012-12-29 10:21:03 UTC (rev 8695)
+++
trunk/JLanguageTool/src/main/resources/org/languagetool/resource/ca/disambiguation.xml
2012-12-29 12:40:09 UTC (rev 8696)
@@ -498,6 +498,26 @@
</pattern>
<disambig action="filter" postag="NP.*"/>
</rule>
+ <rule> <!-- Lluís Nadal persegueix -->
+ <pattern>
+ <token postag="SENT_START"/>
+ <marker>
+ <token postag="NP.*" postag_regexp="yes" skip="3"/>
+ </marker>
+ <token postag="V.[MSI].*" postag_regexp="yes"/>
+ </pattern>
+ <disambig action="filter" postag="NP.*"/>
+ </rule>
+ <rule> <!-- Lluís Nadal exigeix -->
+ <pattern>
+ <token regexp="yes">[¿¡"«—–]</token>
+ <marker>
+ <token postag="NP.*" postag_regexp="yes" skip="3"/>
+ </marker>
+ <token postag="V.[MSI].*" postag_regexp="yes"/>
+ </pattern>
+ <disambig action="filter" postag="NP.*"/>
+ </rule>
<rule>
<pattern>
<token postag="SENT_START" negate_pos="yes"/>
@@ -525,7 +545,7 @@
</pattern>
<disambig action="filter" postag="NPMPG00"/>
</rule>
- <rule>
+ <rule>
<pattern>
<token postag="SENT_START" negate_pos="yes"/>
<marker>
@@ -1067,7 +1087,7 @@
<pattern>
<token postag="N.*" postag_regexp="yes"><exception
postag="[NA].*|_GN_.*" postag_regexp="yes" negate_pos="yes" /></token>
<marker>
- <token regexp="yes">obra|propietat</token>
+ <token regexp="yes">obra|propietat|objecte</token>
</marker>
<token regexp="yes">de|d'</token>
</pattern>
@@ -2116,11 +2136,11 @@
<disambig action="add"><wd lemma="numeral"
pos="NCCN000"/></disambig>
</rule>
<!-- caldria retocar el tokenizer per a acceptar nombres amb coma i
amb separadors de milers -->
- <!-- <rule>
-
+
+ <rule>
<pattern>
<marker>
- <token regexp="yes">[1234567890]+</token>
+ <token
regexp="yes">[1234567890][1234567890.,]+[1234567890]</token>
</marker>
</pattern>
<disambig action="add"><wd lemma="numeral"
pos="NCCN000"></wd></disambig>
@@ -2128,7 +2148,7 @@
<rule>
<pattern>
<marker>
- <token regexp="yes">[1234567890]+</token>
+ <token
regexp="yes">[1234567890][1234567890.,]+[1234567890]</token>
</marker>
</pattern>
<disambig action="add"><wd lemma="numeral"
pos="DN0CP0"></wd></disambig>
@@ -2136,6 +2156,23 @@
<rule>
<pattern>
<marker>
+ <token regexp="yes">[1234567890]{1,2}</token>
+ </marker>
+ </pattern>
+ <disambig action="add"><wd lemma="numeral"
pos="NCCN000"></wd></disambig>
+ </rule>
+ <rule>
+ <pattern>
+ <marker>
+ <token regexp="yes">[1234567890]{1,2}</token>
+ </marker>
+ </pattern>
+ <disambig action="add"><wd lemma="numeral"
pos="DN0CP0"></wd></disambig>
+ </rule>
+
+ <rule>
+ <pattern>
+ <marker>
<token spacebefore="yes">1</token>
</marker>
</pattern>
@@ -2148,7 +2185,7 @@
</marker>
</pattern>
<disambig action="remove"><wd lemma="numeral"
pos="DN0CP0"></wd></disambig>
- </rule> -->
+ </rule>
<!-- ordinals -->
<rule>
<pattern>
@@ -2293,58 +2330,99 @@
</pattern>
<disambig action="filter" postag="NCFS.*|VMI.*" />
</rule>
+ <!-- Percentatges -->
+ <rule id="percentatges" name="percentatges">
+ <pattern>
+ <token regexp="yes">[\d,.]+%</token>
+ </pattern>
+ <disambig action="add"><wd pos="NCMS000"/></disambig>
+ </rule>
</rulegroup>
<rulegroup id="LOCUCIONS_FREQUENCIA" name="locucions adverbials de
freqüència: dues vegades més alt">
- <rule>
+ <rule>
<pattern>
<unify>
<feature id="genere"></feature>
<feature id="nombre"></feature>
<marker>
+ <token inflected="yes">un</token>
<token postag="DN.*" postag_regexp="yes"/>
- </marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia</token>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia|any</token>
+ </marker>
</unify>
<token regexp="yes">més|menys</token>
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
- <disambig action="add"><wd lemma="numeral"
pos="LOC_ADV"></wd></disambig>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
</rule>
- <rule>
+ <!-- <rule>
<pattern>
- <marker>
- <token regexp="yes">[\d]+</token>
- </marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia</token>
+ <unify>
+ <feature id="genere"></feature>
+ <feature id="nombre"></feature>
+ <marker>
+ <token inflected="yes">un</token>
+ <token regexp="yes">[\d]+</token>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia|any</token>
+ </marker>
+ </unify>
<token regexp="yes">més|menys</token>
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
- <disambig action="add"><wd lemma="numeral"
pos="LOC_ADV"></wd></disambig>
- </rule>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
+ </rule> -->
<rule>
<pattern>
- <marker>
- <token postag=".*LOC_ADV.*" postag_regexp="yes"
inflected="yes">numeral</token>
- </marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia</token>
+ <unify>
+ <feature id="genere"></feature>
+ <feature id="nombre"></feature>
+ <marker>
+ <token postag="DN.*" postag_regexp="yes"/>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia|any</token>
+ </marker>
+ </unify>
<token regexp="yes">més|menys</token>
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
- <disambig action="filter" postag="LOC_ADV"></disambig>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
</rule>
<rule>
<pattern>
- <token postag=".*LOC_ADV.*" postag_regexp="yes"
inflected="yes">numeral</token>
<marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia</token>
+ <token regexp="yes">[\d]+</token>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia|any</token>
</marker>
<token regexp="yes">més|menys</token>
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
- <disambig action="filter" postag="LOC_ADV"></disambig>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
</rule>
<rule>
<pattern>
+ <unify>
+ <feature id="genere"></feature>
+ <feature id="nombre"></feature>
+ <marker>
+ <token postag="DN.*" postag_regexp="yes"/>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia|any</token>
+ </marker>
+ </unify>
+ <token regexp="yes">majors?|menors?</token>
+ </pattern>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
+ </rule>
+ <!-- <rule>
+ <pattern>
+ <marker>
+ <token regexp="yes">[\d]+</token>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|grau|octava|dia|any</token>
+ </marker>
+ <token regexp="yes">majors?|menors?</token>
+ </pattern>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
+ </rule> -->
+ <!-- <rule>
+ <pattern>
<marker><token>uns</token></marker>
<token postag=".*LOC_ADV.*" postag_regexp="yes"
inflected="yes">numeral</token>
<token regexp="yes"
inflected="yes">cop|colp|pic|grau|dia</token>
@@ -2362,7 +2440,7 @@
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
<disambig action="filter" postag="LOC_ADV"></disambig>
- </rule>
+ </rule> -->
<rule>
<pattern>
<unify>
@@ -2370,49 +2448,36 @@
<feature id="nombre"></feature>
<marker>
<token postag="DI.*" postag_regexp="yes"
inflected="yes" regexp="yes">un|algun|molt|poc|cada</token>
- </marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|dia</token>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|dia</token>
+ </marker>
</unify>
<token regexp="yes">més|menys</token>
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
- <disambig action="filter" postag="LOC_ADV"></disambig>
- </rule>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
+ </rule>
<rule>
<pattern>
- <token postag="LOC_ADV" inflected="yes"
regexp="yes">un|algun|molt|poc|cada</token>
- <marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|dia</token>
- </marker>
- <token regexp="yes">més|menys</token>
- <token postag="AQ.*|V.P.*" postag_regexp="yes"/>
- </pattern>
- <disambig action="filter" postag="LOC_ADV"></disambig>
- </rule>
- <rule>
- <pattern>
<unify>
<feature id="genere"></feature>
<feature id="nombre"></feature>
<marker>
<token postag="DI.*" postag_regexp="yes"
inflected="yes" regexp="yes">un|algun|molt|poc|cada</token>
+ <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|dia</token>
</marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|dia</token>
</unify>
<token postag="AQ.*|V.P.*" postag_regexp="yes"/>
</pattern>
- <disambig action="filter" postag="LOC_ADV"></disambig>
+ <disambig action="add"><wd pos="LOC_ADV"/><wd
pos="LOC_ADV"/></disambig>
</rule>
- <rule>
- <pattern>
- <token postag="LOC_ADV" inflected="yes"
regexp="yes">un|algun|molt|poc|cada</token>
- <marker>
- <token regexp="yes"
inflected="yes">vegada|volta|cop|colp|pic|dia</token>
- </marker>
- <token postag="AQ.*|V.P.*" postag_regexp="yes"/>
- </pattern>
- <disambig action="filter" postag="LOC_ADV"></disambig>
- </rule>
+ <rule id="loc_adv_filtra2" name="locució adverbial filtra">
+ <pattern>
+ <marker>
+ <token postag=".*LOC_ADV.*"
postag_regexp="yes"><exception postag=".*LOC_PREP.*"
postag_regexp="yes"/></token>
+ </marker>
+ </pattern>
+ <disambig action="filter" postag=".*LOC_ADV.*"></disambig>
+ </rule>
</rulegroup>
<rulegroup id="de_color_x" name="de color x: locució">
<rule>
@@ -2839,7 +2904,7 @@
<marker>
<token>si</token>
</marker>
- <token postag="R.*|V.[MSI].*" postag_regexp="yes"/>
+ <token postag="R.*|V.[MSI].*|PP.*|P0.*" postag_regexp="yes"/>
</pattern>
<disambig action="filter" postag="[^N].*"></disambig>
</rule>
@@ -5423,6 +5488,7 @@
<marker>
<token postag="SPS00" postag_regexp="yes"><exception
postag="_GN_.*|PI.*|DI.*" postag_regexp="yes"/></token>
</marker>
+ <token><exception postag="V.[MSI].*" postag_regexp="yes"/></token>
</pattern>
<disambig action="filter" postag="SP.*|RG.*"></disambig>
</rule>
@@ -5435,6 +5501,7 @@
<marker>
<token postag="SPS00" postag_regexp="yes"><exception
postag="_GN_.*|PI.*|DI.*" postag_regexp="yes"/></token>
</marker>
+ <token><exception postag="V.[MSI].*" postag_regexp="yes"/></token>
</pattern>
<disambig action="filter" postag="SP.*|RG.*"></disambig>
</rule>
@@ -5939,6 +6006,15 @@
</pattern>
<disambig action="filter" postag="[^V].*"></disambig>
</rule> -->
+ <rule id="enlaire" name="punys/mans/braços enlaire">
+ <pattern>
+ <token regexp="yes"
inflected="yes">braç|cama|cap|puny|peu</token>
+ <marker>
+ <token postag="RG">enlaire</token>
+ </marker>
+ </pattern>
+ <disambig action="filter" postag="[^V].*"/>
+ </rule>
<rule id="VerbNom" name="verb i nom que no ha concordat"> <!-- Això fou
estrany -->
<pattern>
<token postag="V.[MSI].*|_GV_" postag_regexp="yes"
negate_pos="yes"><exception postag="V.[MSI].*|_GV_|R[GN]|.*LOC_ADV.*|C.*"
postag_regexp="yes"/><exception regexp="yes">["«'‘(]</exception><exception
inflected="yes"
regexp="yes">mot|paraula|terme|expressió|vocable|nom|tipus</exception></token>
@@ -6782,7 +6858,7 @@
</and>
</marker>
<token regexp="yes">de|d'</token>
- <token postag="N.[MC][SN].*"
postag_regexp="yes"><exception>fons</exception></token>
+ <token postag="N.[MC][SN].*" postag_regexp="yes"><exception
regexp="yes">fons|si</exception></token>
</pattern>
<disambig action="filter" postag="[^R].*"></disambig>
</rule>
@@ -6794,7 +6870,7 @@
<token postag="DI.[MC][SN].*" postag_regexp="yes"/>
</and>
</marker>
- <token postag="N.[MC][SN].*"
postag_regexp="yes"><exception>fons</exception></token>
+ <token postag="N.[MC][SN].*" postag_regexp="yes"><exception
regexp="yes">fons|si</exception></token>
</pattern>
<disambig action="filter" postag="[^R].*"></disambig>
</rule>
@@ -6806,7 +6882,7 @@
<token postag="DI.CN.*" postag_regexp="yes"/>
</and>
</marker>
- <token postag="N.*"
postag_regexp="yes"><exception>fons</exception></token>
+ <token postag="N.*" postag_regexp="yes"><exception
regexp="yes">fons|si</exception></token>
</pattern>
<disambig action="filter" postag="[^R].*"></disambig>
</rule>
Modified:
trunk/JLanguageTool/src/main/resources/org/languagetool/rules/ca/grammar.xml
===================================================================
---
trunk/JLanguageTool/src/main/resources/org/languagetool/rules/ca/grammar.xml
2012-12-29 10:21:03 UTC (rev 8695)
+++
trunk/JLanguageTool/src/main/resources/org/languagetool/rules/ca/grammar.xml
2012-12-29 12:40:09 UTC (rev 8696)
@@ -1893,13 +1893,13 @@
<rule>
<!-- excepcions no controlades: a/ha dit, a/ha deixat-->
<pattern>
- <token><exception
regexp="yes">com|per|fins</exception></token>
+ <token><exception
regexp="yes">com|per|fins</exception><exception inflected="yes"
regexp="yes">pertànyer|correspondre</exception></token>
<marker>
<token>a</token>
</marker>
- <token postag="V.P.*" postag_regexp="yes"><exception
postag="_GN_.*" postag_regexp="yes"
regexp="yes">determina(t|ts|da|des)</exception></token>
+ <token postag="V.P.*S." postag_regexp="yes"><exception
postag="_GN_.*" postag_regexp="yes"
regexp="yes">determina(t|ts|da|des)</exception></token>
</pattern>
- <message>Haver s'escriu amb hac. Podria ser:
<suggestion>h<match no="2"
case_conversion="startlower"></match></suggestion>.</message>
+ <message>Si és del verb "haver", s'escriu amb hac. Podria ser:
<suggestion>h<match no="2"
case_conversion="startlower"></match></suggestion>.</message>
<short>Haver s'escriu amb hac</short>
<example type="incorrect" correction="ha">Ell
<marker>a</marker> cantat.</example>
<example type="incorrect" correction="ha">A penes
<marker>a</marker> tingut ressò.</example>
@@ -2920,7 +2920,8 @@
<short>Confusió.</short>
<example type="incorrect"><marker>tan</marker> física com
estètica.</example>
<example type="correct">Tant física com estètica.</example>
- <example type="correct">tan coneixedor com servidora</example>
+ <example type="correct">tan coneixedor com servidora</example>
+ <!-- <example type="correct">tan substancial com
allunyada</example> -->
</rule>
<rule>
<pattern>
@@ -5569,7 +5570,7 @@
</rule>
</rulegroup> -->
</category>
- <category name="APOSTROFACIO">
+ <category name="Y) Apostrofació">
<rulegroup id="DE_EL_S_APOSTROFEN" name="apostrofació: de, el">
<rule>
<pattern>
@@ -13812,7 +13813,7 @@
<example type="incorrect"><marker>faxs</marker></example>
<example type="correct">faxos</example>
</rule>
- <rule id="TOT_I_AIXI" name="tot i així/així i tot/tot i això">
+ <rule id="TOT_I_AIXI" name="tot i així/així i tot/tot i això"
default="off">
<pattern>
<token>tot</token>
<token>i</token>
@@ -15587,7 +15588,7 @@
</pattern>
<message>Combinació impossible: preposició + verb
conjugat</message>
<example type="incorrect">de greuge i <marker>de
maltracta</marker>.</example>
- <example type="incorrect">s'ha posat <marker>en dubta</marker>
la naturalesa científica.</example>
+ <!-- <example type="incorrect">s'ha posat <marker>en
dubta</marker> la naturalesa científica.</example> -->
<example type="incorrect">Repintades <marker>amb cal</marker>
cada any.</example>
<example type="correct">de greuge i de maltractament.</example>
<example type="correct">la de sobre ha d'arribar</example>
@@ -15790,7 +15791,7 @@
</rule>
<rule>
<pattern>
- <token postag="V.M03S0" postag_regexp="yes"
regexp="yes">.+a<exception postag="_GN.*|N.*|V.I.*" postag_regexp="yes"
/></token>
+ <token postag="V.M03S0" postag_regexp="yes"
regexp="yes">.+a<exception postag="_GN.*|N.*|V.I.*" postag_regexp="yes"
/><exception regexp="yes">(s|c)àpig(a|uen)|vine</exception></token>
</pattern>
<message>Forma verbal pròpia del valencià.</message>
<short>Forma valenciana.</short>
@@ -15798,6 +15799,7 @@
<example type="incorrect"><marker>Vaja</marker> on
vulgui.</example>
<example type="correct"><marker>Digui</marker>'n
tres.</example>
<example type="correct">Vaja, com li agrada.</example>
+ <example type="correct">Vine-te'n.</example>
</rule>
<rule>
<pattern>
@@ -16518,7 +16520,7 @@
</rule>
</rulegroup>
</category>
- <category name="A4) Formes de plural opcionals">
+ <category name="A4) Formes de plural opcionals" default="off">
<rule id="EXIGEIX_PLURALS_S" name="Exigeix plurals en -s: homes,
joves..." default="off">
<pattern>
<token
regexp="yes">àsens|còvens|fréixens|hòmens|jóvens|màrgens|òrfens|ràvens|térmens|vèrgens</token>
Modified:
trunk/JLanguageTool/src/test/java/org/languagetool/rules/ca/ComplexAdjectiveConcordanceRuleTest.java
===================================================================
---
trunk/JLanguageTool/src/test/java/org/languagetool/rules/ca/ComplexAdjectiveConcordanceRuleTest.java
2012-12-29 10:21:03 UTC (rev 8695)
+++
trunk/JLanguageTool/src/test/java/org/languagetool/rules/ca/ComplexAdjectiveConcordanceRuleTest.java
2012-12-29 12:40:09 UTC (rev 8696)
@@ -84,6 +84,7 @@
assertCorrect("una organització paramilitar de protecció civil
típicament catalana");
assertCorrect("un Do dues octaves més alt que l'anterior");
assertCorrect("són pràcticament dos graus més baixes");
+ assertCorrect("és unes vint vegades més gran que
l'espermatozou.");
assertCorrect("és unes 20 vegades més gran que
l'espermatozou.");
assertCorrect("eren quatre vegades més alts");
assertCorrect("eren uns fets cada volta més inexplicables");
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. SALE $99.99 this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122912
_______________________________________________
Languagetool-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/languagetool-commits