crowdin / crowdin-api-client-dotnet

.NET client library for Crowdin API
https://www.nuget.org/packages/Crowdin.Api/
MIT License
50 stars 27 forks source link

String-based API support #214

Closed andrii-bodnar closed 1 month ago

andrii-bodnar commented 6 months ago

Crowdin has recently released a new type of projects - String-based.

In string-based projects, the focus is on managing translatable content as individual strings rather than source files. In this project type, after uploading source files, Crowdin parses them into source strings. Unlike file-based projects, source files aren’t stored, and the emphasis is on managing the content at the string level. This approach is beneficial when dealing with projects that involve continuous content updates, dynamic content, or where a string-oriented structure is preferred.

As a result, the API differs a bit from the file-based projects. Most of the endpoints are the same, but some endpoints have different parameters or return different responses, some endpoints are not available at all, and some new endpoints are available only for string-based projects.

We should update the API clients to support string-based projects as well.

Progress:

String-based support for (#224):

Remaining String-based support for:

References:

It has been implemented for the following clients:

Zahid92 commented 6 months ago

Hi @andrii-bodnar, I would like to try implementing this as well.

andrii-bodnar commented 6 months ago

Hi @Zahid92, awesome, thank you!

Assigning it to you. Feel free to contact me here if you have any questions.

andrii-bodnar commented 5 months ago

Hi @Zahid92 do you have any updates on this?

Zahid92 commented 5 months ago

Sorry, I got busy with some personal stuff. I have gone through with the mentioned PR's and will make the changes accordingly.

Zahid92 commented 4 months ago

Hi @andrii-bodnar in ListLabels isSystem is an enum for {0, 1}. Should it be a bool instead of enum??

andrii-bodnar commented 4 months ago

Hi @Zahid92, well, nice question :)

For some unknown reason it was implemented this way, but it's actually better to have the boolean type here.