You can view, comment on, or merge this pull request online at:
https://github.com/geany/geany/pull/3723
-- Commit Summary --
* Create ta.po
-- File Changes --
A po/ta.po (7333)
-- Patch Links --
https://github.com/geany/geany/pull/3723.patch https://github.com/geany/geany/pull/3723.diff
Thanks for the contribution!
However, there are a few things that should be fixed before we integrate the new translation; ```console $ msgfmt --check po/ta.po po/ta.po:2383: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: In the directive number 2, the character 'U' is not a valid conversion specifier. po/ta.po:2453: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2458: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2468: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2536: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2569: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2694: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2809: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2854: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2864: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:2871: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2880: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2899: number of format specifications in 'msgid' and 'msgstr' does not match po/ta.po:2904: format specifications in 'msgid' and 'msgstr' for argument 2 are not the same po/ta.po:2909: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2953: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:2964: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:2973: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2980: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2985: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:2992: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:2997: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:3018: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:3023: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:3028: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:3036: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:3057: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:3238: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:3248: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:3313: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:4064: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4072: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4077: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4119: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:4145: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4157: 'msgid' and 'msgstr' entries do not both begin with '\n' po/ta.po:4167: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4212: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4245: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:4310: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4315: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4327: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 2 is not a valid conversion specifier. po/ta.po:4374: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4393: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4398: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4411: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4416: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4425: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4434: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: In the directive number 1, the character 'D' is not a valid conversion specifier. po/ta.po:4448: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4453: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4458: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4467: format specifications in 'msgid' and 'msgstr' for argument 1 are not the same po/ta.po:4476: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4669: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: In the directive number 1, the character 'U' is not a valid conversion specifier. po/ta.po:4708: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4728: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4774: 'msgid' and 'msgstr' entries do not both end with '\n' po/ta.po:4795: 'msgid' and 'msgstr' entries do not both end with '\n' po/ta.po:4817: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4832: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4837: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4854: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:4861: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 2 is not a valid conversion specifier. po/ta.po:5018: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:5023: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:5030: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:5142: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:5179: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:6045: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:6050: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 2 is not a valid conversion specifier. po/ta.po:6180: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:6185: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. po/ta.po:6190: 'msgstr' is not a valid C format string, unlike 'msgid'. Reason: The character that terminates the directive number 1 is not a valid conversion specifier. msgfmt: found 76 fatal errors ```
Hint: if the translation has the`c-format` flag, the placeholders (like `%s`, `%d`, `%u`, see [`man 3 printf`](https://man7.org/linux/man-pages/man3/printf.3.html)) need to be the *exact same* ones (no `%U` when it was `%u`), and if the order has to be changed, you need to specify this explicitly using the `%m$` syntax -- again, see the manual for `printf()`.
Don't hesitate to run `msgfmt --check ta.po` on your end as well to verify everything is OK on that regard.
We'll also have to add `ta` to *po/LINGUAS*, but that we can also do ourselves, though it's easy: ```diff diff --git a/po/LINGUAS b/po/LINGUAS index e2931f8fa..1979150e6 100644 --- a/po/LINGUAS +++ b/po/LINGUAS @@ -1 +1 @@ -ar ast be bg ca cs da de el en_GB es et eu fa fi fr gl he hi hu id ie it ja kk ko ku lb lt lv mn nl nn pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW +ar ast be bg ca cs da de el en_GB es et eu fa fi fr gl he hi hu id ie it ja kk ko ku lb lt lv mn nl nn pl pt pt_BR ro ru sk sl sr sv ta tr uk vi zh_CN zh_TW ```
@TamilNeram pushed 1 commit.
eb01febd554a7869675e9b5b8c05cf5d3cfa2099 Update ta.po
```console $ LANGUAGE=C msgfmt --check po/ta.po po/ta.po:4723: 'msgid' and 'msgstr' entries do not both end with '\n' msgfmt: found 1 fatal error ```
@TamilNeram pushed 1 commit.
a93210dbcc686aa03f9fa1db741902e745c86ff3 Update ta.po
@TamilNeram pushed 1 commit.
f9f5e64a8869779f54bbee4e60cec36f85d7f5ad Update ta.po
I am able to generate the Messages.mo file with the command % LANGUAGE=C msgfmt --check po/ta.po
I don't see the error that you are seeing. Hopefully that error is gone after the last commit (f9f5e64).
Hope this helps.
@TamilNeram yes, passes the check for me as well :+1:
Note however that some mnemonics (menu/button accelerators accessible via <kbd>Alt</kbd>+*letter after the underscore*) are missing in your translation. That's OK, it's not a blocker, but you *might* want to see whether that's something that could be improved: ```console $ LANGUAGE=C msgfmt --check --check-accelerators=_ po/ta.po po/ta.po:55: msgstr lacks the keyboard accelerator mark '_' po/ta.po:63: msgstr lacks the keyboard accelerator mark '_' po/ta.po:67: msgstr lacks the keyboard accelerator mark '_' po/ta.po:121: msgstr lacks the keyboard accelerator mark '_' po/ta.po:563: msgstr lacks the keyboard accelerator mark '_' po/ta.po:567: msgstr lacks the keyboard accelerator mark '_' po/ta.po:608: msgstr lacks the keyboard accelerator mark '_' po/ta.po:811: msgstr lacks the keyboard accelerator mark '_' po/ta.po:823: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1744: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1784: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1792: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1816: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1856: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1864: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1880: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1904: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1916: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1924: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1932: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1936: msgstr lacks the keyboard accelerator mark '_' po/ta.po:1940: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2024: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2040: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2064: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2129: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2137: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2149: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2165: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2213: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2217: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2221: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2225: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2473: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2671: msgstr lacks the keyboard accelerator mark '_' po/ta.po:2946: msgstr lacks the keyboard accelerator mark '_' po/ta.po:3145: msgstr lacks the keyboard accelerator mark '_' po/ta.po:3153: msgstr lacks the keyboard accelerator mark '_' po/ta.po:3221: msgstr lacks the keyboard accelerator mark '_' po/ta.po:3225: msgstr lacks the keyboard accelerator mark '_' po/ta.po:3229: msgstr lacks the keyboard accelerator mark '_' po/ta.po:3233: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4057: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4061: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4143: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4401: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4445: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4481: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4485: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4505: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4563: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4572: msgstr lacks the keyboard accelerator mark '_' po/ta.po:4758: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5009: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5021: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5131: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5910: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5919: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5967: msgstr lacks the keyboard accelerator mark '_' po/ta.po:5975: msgstr lacks the keyboard accelerator mark '_' po/ta.po:6125: msgstr lacks the keyboard accelerator mark '_' po/ta.po:6129: msgstr lacks the keyboard accelerator mark '_' po/ta.po:6141: msgstr lacks the keyboard accelerator mark '_' msgfmt: found 63 fatal errors ```
@b4n commented on this pull request.
+#: geany.desktop.in:6 +msgid "Integrated Development Environment" +msgstr "ஒருங்கிணைந்த மேம்பாட்டு சூழல்" + +#: geany.desktop.in:7 +msgid "A fast and lightweight IDE using GTK+" +msgstr "GTK+ ஐப் பயன்படுத்தி வேகமான மற்றும் இலகுரக IDE" + +#: geany.desktop.in:14 +msgid "Text;Editor;" +msgstr "Editor" + +#: data/geany.glade:130 +msgid "_Toolbar Preferences" +msgstr "_Toolbar விருப்பத்தேர்வுகள்"
Just to be sure there's no misunderstanding: you are allowed to translate the `_Toolbar` part, what the `_` does is mark the next character as being an accelerator, e.g. a letter that if it's key is pressed together with <kbd>Alt</kbd> (or no modifier, in case of menus) will activate the associated UI control. For example, in this case if the user right-clicks on the toolbar, they'll get a context menu with an item with this text, and can hit <kbd>t</kbd> and it will act as if they clicked the item.
In English and other Latin languages, it's usual to just pick a letter from the words as accelerator, but in languages where letters usually don't have a direct match on the keyboard (e.g. require more complex input methods) like e.g. Chinese, it's usual for translators to explicitly add an easy to type accelerator in parentheses, [like is done in Geany's `zh_CN` translation for this very string](https://github.com/geany/geany/blob/512e88df8d97284c191459450bce4dd7877b9c2b...). I don't know how Tamil works in that regard, but I guess you would :slightly_smiling_face:
@b4n commented on this pull request.
+#: data/geany.glade:130 +msgid "_Toolbar Preferences" +msgstr "_Toolbar விருப்பத்தேர்வுகள்" + +#: data/geany.glade:147 +msgid "_Hide Toolbar" +msgstr "_ஹைட் கருவிப்பட்டி" + +#: data/geany.glade:305 data/geany.glade:6714 +msgid "_Edit" +msgstr "_தொகு" + +#: data/geany.glade:313 data/geany.glade:6929 +msgid "_Format" +msgstr "_FORMAT"
Is that on purpose?
@b4n commented on this pull request.
+#: data/geany.glade:482 data/geany.glade:6526 +msgid "Open Selected F_ile" +msgstr "தேர்ந்தெடுக்கப்பட்ட f_ile ஐத் திறக்கவும்" + +#: data/geany.glade:493 data/geany.glade:7400 src/symbols.c:2205 +msgid "Find _Usage" +msgstr "_USAGE ஐக் கண்டறியவும்" + +#: data/geany.glade:504 data/geany.glade:7409 src/symbols.c:2210 +msgid "Find _Document Usage" +msgstr "_Document பயன்பாட்டைக் கண்டறியவும்" + +#: data/geany.glade:515 data/geany.glade:7439 +msgid "Go to Symbol Defini_tion" +msgstr "Go to Tag Definition"
Same here? I'm not gonna do the whole file though, and if you're happy with the translation that's fine by me and I'll ley @frlan deal with this in the end anyway :wink:
@TamilNeram pushed 1 commit.
198fd67f8f573aeaa9f6e52d511637f1bcbb7f94 fixed and reviewed upto 1000 lines
@TamilNeram pushed 1 commit.
c264638804fd8a336e9c83dd0ff5423ecf6519c0 fixed after 5160
@TamilNeram pushed 1 commit.
9c62b6ae39439509566a12022ef4c6a8dbd57ab7 lines after 4804 reviewed
@TamilNeram pushed 1 commit.
460d210c27a47850fd8fe51552ac0aa0daefb4d1 fixed after 4400
@TamilNeram pushed 1 commit.
d96a1bb31393a2712505e173d53ba49392ceb8c0 Update ta.po
@TamilNeram pushed 1 commit.
76d944474cfd9b33cb70f351335b4fd707b2d823 after 4000 reviewed
@TamilNeram pushed 1 commit.
79e3076cf23c516e9c7e7e777c53c174c781e254 3377 lines to review
@TamilNeram pushed 1 commit.
e6254876bb79cbdcd85d8ed66bf3252bf69ce6d4 3000 lines pending for review
@TamilNeram pushed 1 commit.
32f471ecd2a3652faefa25914ba378c7a29d83e8 review pending 2225 lines
@TamilNeram pushed 1 commit.
4448db9cfef76bda653716ee67b52cb4c348d4ae Update ta.po
@TamilNeram pushed 2 commits.
4ecb6e689ef10c5e36ce2046977c35fbf59f9f7c pending review 1800 lines 61ae88dc6118b74dede13aeca04aee652fc5342b 1000 lines reviewed
Fixed all issues with mnemonics and reviewed all translations as well
@TamilNeram pushed 1 commit.
23b419a11c4f3d14a4c2a0102b41e77c6e814473 cleanup
Reviewed and cleaned up all the messages. please merge.
@TamilNeram pushed 1 commit.
b556e630f75a9086a23921d9dac224563db7a4f7 Merge branch 'geany:master' into master
@b4n, Please let me if any changes to be done from my end for this PR.
@TamilNeram pushed 2 commits.
60f5eb033bd8f8b13c51ce8e075df39c568c0cef cleanup 52937ab596594fd490320d95ba5cc8e2f4c06f0b சி++
@b4n, @crayxt, Please let me know approximate timeline for this PR to be merged ?
Please let me know approximate timeline for this PR to be merged ?
@TamilNeram Sorry I am not an admin here, just a contributor like yourself
Merged #3723 into master.
github-comments@lists.geany.org