Translation knowledge (valid for the entire Nextcloud project) - Wiki

Nextcloud is available in many languages. How is that done?

Instead of maintaining our own translation server, like Pootle, Nextcloud uses Transifex to facilitate translations for many languages.
Transifex offers free service for open source projects.

How can I get involved?

Are you interested in translating Nextcloud?

Create an account on Transifex, then apply to join the Nextcloud organization. You are welcome.

Once you have joined the organization, apply to join one of the over 70 target languages available. Should yours be missing, feel free to request it.

Best way is to start translating some strings. Get an overview of what and how things have already been translated.
There are some features and functions in Transifex, but the basics is pretty much all that works.

If translating is not your boat of wood, or similar, you can be a reviewer. Even more fun :slight_smile:

How to discuss at Transifex?

You can discuss for each string. Whoever reads it can respond. There is no way to subscribe to any discussion as long as somebody doesn’t mark the discussion as an issue.

For language teams there is a chance to discuss as well. It is not easy to find through the web UI and not many people respond (German team experience with more than 100 members)

You can send private message to other members. Inbox and outbox are separate and there is no option to see threaded messages. You cannot invite a third person to private discussions.

Using the forum is a much better idea.

Different roles at Transifex?

To understand roles and their respective permissions see Transifex Help Center

You have Maintainers,language coordinators, reviewers and most importantly: translators. You are the engine of the car.

Information for Translators

Basic knowledge to start

You have joined a language team. Do not hesitate to contact people in it.

Newbie information: Whenever translating parts of a single resource please do not just translate a single string without looking at already translated strings. Most resources have a common wording and you should follow it. If you have a different position you should discuss first before changing strings.

Translate easy ones before trying complex ones.

Do not use translate.google.com to just enter and copy result to Transifex.

Common rules

Ellipsis

Whenever you need triple dots (punctuation mark) to show progress or similar status you should use unicode character ‘
’ instead of html entity (&#x2026 ; &#8230 ; &hellip :wink: e.g. ‘Uploading 
’

General rule:

  • No space before ellipsis if you shorten a word
  • Space before ellipsis when you shorten a sentence

When to comment a string at Transifex?

If you are struggling to translate a string feel free to add a comment including your question.

You like to discuss your thoughts? No problem, just invite your team members using @username.

When to create an issue at Transifex?

Whenever you feel just a comment is not sufficient and you need information to help all other language translators feel free to mark your comment as an issue.

What to do if I want to change a source string?

Sometimes you encounter a typo or some other spelling error inside a source string. Or you find an error or grammar issue. If so, feel free to file an issue by marking a comment as an issue, or, even better, go to GitHub and provide a PR (Pull request) to correct it.

Most translators are not familiar with coding tools like GitHub nor have any coding background. It is though easy enough to make a GitHub account and navigate to the related repository. From there you can file issues directly where coders see it, get help, and learn to fix things on your own. GitHub has a bigger community since it is more integrated in the workflow.

Information for Project Maintainers

How to handle new language requests?

Nextcloud wants to cover the world. To reach this target as many languages as possible need be covered.
Luckily every week we get new language requests. Great. But do not simply accept it.
Please check if similar languages are already there. If so, check the team size and send a personal message to the language requester. Tell him/her about the language you found, provide link to team and ask her/him to join named team.

How to work on issues

There are different kind of issues reported at Transifex. Unfortunately Transifex has no categories for issues like other platforms have e. g. Crowdin.

Error(s) in source strings

  • In case of errors in source strings, an issue must be created at GitHub. The most difficult task is finding the right project. Be sure to check if the topic has already been reported.
  • If you are more skilled with GitHub you can provide an PR to correct source strings.

Context is missing

The translator does not understand the meaning or the wording is not clear.

→ You can answer the question yourself

  • A detailed explanation should be given in case of comprehension questions.
  • Don’t close an issue without an explanation. The creator deserves an answer.

→ You cannot answer the question yourself

General

  • We close issues older than one year without activity.

Q&A

There are so many strings in my language that are not yet translated. What should I start with?

First off all the server bundle needs to be translated.

Please see List of resources and their priority for translation to get an idea about an working order.

The resources are marked by priority according to the list.
Transifex offers three rakings: “Urgent”, “High” and “Normal”

Benefit is you can sort the huge resources list by “Priority (Descending)”.

See image

Anyway, you can start with the app you prefer :heart: .

Why are there sometimes strange strings in Transifex where a translation does not make sense?

Answer:
Many apps are revised and then use packed javascript files. When this change is transferred for the first time, people often forget to create or add the “.l10nignore” file.
If this happens, please report it as an “issue” on Transifex. It is enough to report a string (sometimes there are a lot of unnecessary strings).

What must be done:

  1. lock the resource in question on Transifex (to save the translators unnecessary work).
  2. edit the file “.l10nignore” and add the necessary files and their path.
  3. after merging and resyncing, check that the unnecessary strings on Transifex have disappeared.
  4. unlock the resource on Transifex again.

I have issues understanding the meaning of a source string and developer has not provided any comment. How to locate the source string of the app?

Answer:
Nearly all Nextcloud apps are located at GitHub. Not all apps are located inside the Nextcloud organisation at GitHub.
Therefor we maintain the following page: List of resources and their priority for translation .

  1. See information of “Resource” section at Transifex.
  2. See List of resources and their priority for translation and look for the app and the link will point you to the correct code repository.
  3. See information of “Occurrences” section at Transifex.
  4. Navigate through the repo structure and open target file at specific line.

Example:

See resouce “ehr”.
Go to named list and there you will find repo URL:

See occurence at Transifex then open Github page and navigate to file.
VĂłila.

Some strings come from Vue files. This is something special and Transifex will not help you to find the exact file and line.
Here you have to go to the repository and use the search function (above). Best is to put the string you are looking for in quotes and then search.

Example:

Same as above:

  1. See resource value, here it is “polls”.
  2. Find it inside the list.

Now the difference starts.
See “specialVueFakeDummyForL10nScripts” entry at “Occurences”.

  1. Copy source string, here it is “Share restrictions”.
  2. Open GitHub page
  3. Enter “Share restrictions” in search box and filter results for “Vue”.

VĂłila.

2022-03 BIg improvements on locating strings based in vue files.

The script doing the string preparation of vue files is writing a comment as “DEVELOPER NOTES”. There you find the file and code line.

String Freeze! What is it and why is there a due date in the release schedule?

Nextcloud is translated into many, many languages.
Before a new major version is released, it is important that the translators still have time to complete or proofread their translations.
This is what the “string freeze” is for. After this date, developers are not allowed to integrate new strings or change existing ones.
For Nextcloud, the date of the first “release candidate” was chosen.
For NC23, this is 11 November and the final release is 1 December 2021. The translators therefore have 20 days.

Specifications

Label of section “APP Settings”

On the bottom left-hand side, each app has an area with settings.
At Conference 2023, it was decided that this area would always be labelled “{name of app} settings”.

The app name is the translated app name that appears in the row of navigation icons at the top of the user interface. It is therefore not a common name, and must begin with a capital letter (because it’s the app name), even if it is not the first word in the label.
Example in French for Files :
Good : “Paramùtres de Fichiers”
Wrong : “Paramùtres des fichiers”

Notes on Transifex

Discussions on Transifex are difficult to conduct. You can write messages, but only from one person to another. Currently no other people can be invited for discussions.
Furthermore Captchas appear there again and again.
The discussions are not shown as a conversation, but are available in the respective in- and sent boxes.
As further restrictions no formatting is possible and links are not clickable.

2020-11-11 rakekniven

Information for German Team Members (in German)

Moved to separate page. Link:

6 Likes

10 posts were split to a new topic: Translation knowledge (valid for the entire Nextcloud project) - Discussion

General revision. Please have a look.

Comment please here:

We need a section here to explain why the “Nextcloud website” project has many languages and only englisch, german and french are available. Nearly once a week there contributor requests to join existing teams or rquests for new languages. @jospoortvliet The company decided this and you wrote two announcements (comments IMHO). Would you please add some notes?

3 Likes

this is in the ‘extended description’, but I also updated the normal description to note we only translate German and French


@jospoortvliet Ok, just seen it.

But to be honest this is not enough. IMHO we should remove all non-official languages.
Otherwise, people start translating and are disappointed when the work is not published.
I would be interested to know how many people find the description and read it. :wink:

What do you think?

Yeah, true. We might simply want to remove them. Ok, let me then just do that
 And not add them anymore, that was a mistake.

Ok, would recommed to write an announcement to https://www.transifex.com/nextcloud/nextcloud-website/announcements/ before removing them. Just some words.

So I tried to write the note in a few places, didn’t know about announcements and I didn’t see your message somehow. But I removed some lanaguages, only kept Spanish, which has contributors, and that’s the next language we’d want to add
 But let’s see, Lukas is also experimenting with automatic, AI guided translations :see_no_evil:

1 Like

Oh, you already put an announcement there. Let’s stick with that! Thanks :smiley:

1 Like

Added Q&A section.
Added first question “Why are there sometimes strange strings in Transifex where a translation does not make sense?”

1 Like

Added Q&A article about ordering.

Update about locating string resources in vue files.

Questions about the “String Freeze”:
Which resources on Transifex are affected by this? Is it exactly those that are listed with priority 1 at “List of resources and their priority for translation”?

When is the last date when the translations from Transifex are still considered for the release? (I’m not sure, but I suspect in the last rollouts some translations were not taken into account, even though they were already entered into Transifex 1 week before rollout).

Are updated translations also taken into account for the rollout if the program code is unchanged and there were only changes in translations?

Yes. For this resources a modification of source strings is not allowed after String Freeze.

@nickvergessen Can you answer this?

Absolutely. That is the reason for string freeze. It should give us, the translators, the chance to polish translations for the release.

There was a bug in the sync of several apps. I hope it is fixed now.
Other than that, there is no “last considered”. Sync happens every night around 4am CET/CEST and whatever was synced until we package is in.

2 Likes

Apparently, even after your post, some rollouts did not use the latest translation from transifex. e.g. Contacts, Two-Factor TOTP Provider


App Two-Factor TOTP Provider
Get the authentication code from the two-factor authentication app on your device.

App Two-Factor TOTP Provider 6.4.1 13.10.2022
German (de): Erhalte den Authentifizierungscode von der Zweifaktorauthentifizierung-App auf Deinem GerÀt.",
but
Transifex, German (de) since 5.8.2022
Erhalte den Authentifizierungscode von der Zweifaktorauthentifizierung-App auf deinem GerÀt.


App: contacts
The contact you were trying to edit has changed. Please manually refresh the contact. Any further edits will be discarded.

App Contacts 4.2.3 (NC24) date 15.12.2022
German (de): Der Kontakt, den Du versuchst zu bearbeiten, hat sich geĂ€ndert. Bitte aktualisiere den Kontakt manuell. Alle weiteren Änderungen werden verworfen.",
but
Transifex, German (de) since 5.8.2022
Der Kontakt, den du versuchst zu bearbeiten, hat sich geĂ€ndert. Bitte aktualisiere den Kontakt manuell. Alle weiteren Änderungen werden verworfen.

1 Like

Danke @amarillo fĂŒr das auflisten der Details.
Hatte das auch schon gesehen, doch leider nicht so akribisch verfolgt.
@nickvergessen Kannst Du Dir das erklÀren?

6.4.1 wurde von stable6.4 aus getaggt.

Da steht Deinem und es wird derzeit nicht auf stable6.4 geported.

Wir könnten jetzt den Sync kaputt machen:

Oder das einmalig backporten, aber solange da niemand ein release macht wird sich da auch nichts Àndern.