# Batch update a translation?

**URL:** https://meta.discourse.org/t/batch-update-a-translation/385498
**Category:** Translations
**Created:** [October 14, 2025, 3:59am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498 "2025-10-14T03:59:31Z")
**Posts on this page:** 19
**Page:** 1

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 14, 2025, 3:59am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/1 "2025-10-14T03:59:31Z")

</div>

The current Simplified Chinese translation is poor and I’ve updated a lot of strings in the admin interface. I want to contribute these translations back to Discourse but I’m stuck.

I can export those strings from the database and put them back into the `{client,server}.zh_CN.yml` files, but how can I push these changes into the Crowdin platform?

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [October 14, 2025, 6:42am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/2 "2025-10-14T06:42:58Z")

</div>

IIRC you need to do the updating on Crowdin not the yml file:

> [@Contributing translations to Discourse](https://meta.discourse.org/t/contributing-translations-to-discourse/14882):
>
> bookmark This document provides a guide on how to contribute translations to the Discourse platform using Crowdin. person_raising_hand Required user level: Anyone can contribute translations Translating Discourse into different languages is essential for its global adoption. Contributing as a translator or proofreader is greatly appreciated and helps in making Discourse accessible to a broader audience. Summary This guide covers: Translating Discourse using Crowdin. Becoming a proofr…

> <https://github.com/discourse/discourse/blob/main/config%2Flocales%2Fclient.zh_CN.yml#L1-L5>

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 14, 2025, 7:02am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/3 "2025-10-14T07:02:20Z")

</div>

But I don’t want to copy-and-paste 142 times like a machine.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [October 14, 2025, 7:10am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/4 "2025-10-14T07:10:41Z")

</div>

Unfortunately, even copy and pasting alone likely won’t get you anywhere. Once the proofreader has approved a translation, new suggestions from the community will not change the existing translation. The proofreader must first confirm the new translation. In order for them to review the translation again, a new suggestion is usually not enough; a comment explaining why the change should be made is also required.

> [@china Strange translation in Chinese Simplified 关于discourse的中文本地化](https://meta.discourse.org/t/strange-translation-in-chinese-simplified-discourse/198239/28):
>
> You should open an issue or a comment directly on Crowdin by reporting the wrong strings and explaining where the error is. Translators do not follow Meta

Are there certain phrases that are repeatedly incorrect? Then it might be easier to discuss this using one example and then replace the term everywhere. This is definitely possible in Crowdin.

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 14, 2025, 7:18am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/5 "2025-10-14T07:18:52Z")

</div>

> [@Moin](#):
>
> a comment explaining why the change should be made is also required.

This would be much more relaxing and less error-prone than the copy-and-paste part.

> [@Moin](#):
>
> Are there certain phrases that are repeatedly incorrect? Then it might be easier to discuss this using one example and then replace the term everywhere.

A lot of spaces are repeatedly incorrect and some of them even cause rendering issues.

Also some words are just wrong in some cases but not all (e.g. an HTTP _header_ can be called “标头” but a page _header_ should be called “页眉”).

Others are more case-by-case.

I’ve updated the translations in the admin interface when I noticed a strange translation and over the past two months a lot of them have been fixed and no new ones pop up for a while now.

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 15, 2025, 8:11am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/6 "2025-10-15T08:11:33Z")

</div>

I just gave the web interface a try, and find it’s harder than what I expected: the strings are spread in several files and unlike local files, I can’t just search for the target string. I have to guess which file the string is in first…

Maybe I could finish _manually_ committing all my changes in one year or two 🫠. (Or I give up, keep our forum good and try to send my translations to the forums I care.)

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [October 15, 2025, 8:24am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/7 "2025-10-15T08:24:55Z")

</div>

I don’t know how you navigated on Crowdin, but you can search through all files in one workspace at once. So, as long as you don’t use any special plugins, you should be able to find most texts at the same time as long as “all strings” is selected. This link should take you there: [Crowdin](https://discourse.crowdin.com/editor/4/all/en-zhcn?view=comfortable&filter=basic&value=0)

 ![Screenshot_20251015_102406_Chrome](https://global.discourse-cdn.com/meta/original/4X/9/c/f/9cfe36596dd493f99da71528987f36531931dc1d.jpeg)

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 15, 2025, 8:28am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/8 "2025-10-15T08:28:48Z")

</div>

I don’t see “all strings” and your link takes me to an error page:

 ![图片](https://global.discourse-cdn.com/meta/original/4X/4/b/b/4bb25074cf3105e8a1d4793e320b24bd3e853346.png)

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [October 15, 2025, 8:29am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/9 "2025-10-15T08:29:45Z")

</div>

Sorry, can you try to select crowdsourcing or try [Crowdin](https://discourse.crowdin.com/editor/4/all/en-zhcn/24?view=comfortable&filter=basic&value=0)?

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 15, 2025, 8:31am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/10 "2025-10-15T08:31:34Z")

</div>

Thanks, your link worked!

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [October 15, 2025, 8:33am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/11 "2025-10-15T08:33:13Z")

</div>

I don’t like the interface of Crowdin, either. Even after translating for more than a year, I still find features I didn’t notice before, and, as I just proved, I am still not able to share a link to a specific view because I forgot to preselect a parameter.

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 15, 2025, 8:41am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/12 "2025-10-15T08:41:54Z")

</div>

I think I made a mistake: I save my translation, and add a comment about why the change is needed. But it seems that after saving a translation, the interface sometimes moves to another, so my comments may have been added to the wrong entries…

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [October 15, 2025, 8:44am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/13 "2025-10-15T08:44:29Z")

</div>

I recently learned you can disable that.

There is a gear on the top right, next to your avatar, and in that menu, you can disable it.

 ![Screenshot_20251015_104254_Chrome](https://global.discourse-cdn.com/meta/original/4X/d/d/5/dd5b891fbfa0738a145f96dc52d8173b55f2c6c3.jpeg)  
Do you need help finding the texts you added the comments to? My preferred way to find comments is the [activity overview](https://discourse.crowdin.com/u/projects/4/activity).

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [October 15, 2025, 8:51am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/14 "2025-10-15T08:51:16Z")

</div>

> [@Moin](#):
>
> Do you need help finding the texts you added the comments to? My preferred way to find comments is the [activity overview](https://discourse.crowdin.com/u/projects/4/activity).

Thanks! You are very helpful!

It seems that I didn’t make a lot of mistakes: it seems to only move to the next one in the search result, and my result usually has one unique result.

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [November 19, 2025, 11:36am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/15 "2025-11-19T11:36:05Z")

</div>

> [@lilydjwg](#):
>
> Maybe I could finish _manually_ committing all my changes in one year or two 🫠.

I give up. Not only my efforts received no response, but it turns out that there usually are correct translations in Crowdin, some even came before the wrong one, but still a wrong one was chosen:

 ![图片](https://global.discourse-cdn.com/meta/original/4X/8/2/e/82e9138d593f54d5d3650b91cdd2c9aa5af2cd1c.png)

Explanation of the screenshot for non-Chinese speakers: the accepted translation says `%{count} people were/are silenced`, but the message should express that the user is silenced %{count} times.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [November 19, 2025, 12:13pm UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/16 "2025-11-19T12:13:25Z")

</div>

Noticing comments on Crowdin is sometimes a little difficult. Maybe it helps to @mention `enjoymychoice` in your comments. Maybe that’s why they replied here: [Crowdin](https://discourse.crowdin.com/editor/4/246/en-zhcn/24?view=comfortable#45372) but not to your comments.

But I can understand very well that you are frustrated. I feel the same way when the translation I have carefully chosen in context with regard to the discourse interface is deleted by the proofreader and replaced with something else the very minute they ask for context. And I too am annoyed when I report mistakes in the topic about translation mistakes and nothing happens.

Sometimes it helps to try again at a different time. For example, communicating with proofreaders is often a little easier before release when they are proofreading all new texts.

But it is also perfectly acceptable to only make changes in your own forum. Making voluntary contributions should be at least a little bit of fun.

---

<div class="post-metadata">

### Author: ![lilydjwg](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilydjwg/32/515838_2.png) [@lilydjwg](https://meta.discourse.org/u/lilydjwg)
#### Post date: [February 20, 2026, 5:33am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/17 "2026-02-20T05:33:33Z")

</div>

I’ve uploaded my modifications and fixes to GitHub, if anyone wants to see or use it:

[https://github.com/lilydjwg/discourse-zh\_CN-fixes](https://github.com/lilydjwg/discourse-zh_CN-fixes)

---

<div class="post-metadata">

### Author: ![stephtara](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephtara/32/517827_2.png) [@stephtara](https://meta.discourse.org/u/stephtara)
#### Post date: [February 20, 2026, 6:38am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/18 "2026-02-20T06:38:38Z")

</div>

Just caught up reading this thread, as I submitted m first corrections to the French translation the other day. I feel for you, @lilydjwg! There should really be be a way to « extract » (diff?) changes made to a translation locally in a way that facilitates inputting them into crowdin, for starters…

> [@Moin](#):
>
> But I can understand very well that you are frustrated. I feel the same way when the translation I have carefully chosen in context with regard to the discourse interface is deleted by the proofreader and replaced with something else the very minute they ask for context. And I too am annoyed when I report mistakes in the topic about translation mistakes and nothing happens.

This made me wonder: who are these proofreaders? It seems wild that they would refuse proper corrections.

---

<div class="post-metadata">

### Author: ![Moin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/moin/32/554653_2.png) [@Moin](https://meta.discourse.org/u/Moin)
#### Post date: [February 20, 2026, 7:45am UTC](https://meta.discourse.org/t/batch-update-a-translation/385498/19 "2026-02-20T07:45:20Z")

</div>

I don’t think the paid proofreaders read the topics on Meta
