Make WordPress Core

Opened 13 years ago

Closed 3 months ago

#18218 closed enhancement (fixed)

Too many similar translation string

Reported by: ramiy's profile ramiy Owned by:
Milestone: 4.6 Priority: normal
Severity: normal Version: 3.2
Component: I18N Keywords: has-patch needs-refresh
Focuses: ui-copy Cc:


WordPress .po/.mo file is too big (3,312 strings). I know that we can't delete strings but we can reduce the file size by merging simmilar strings. WordPress has too many simmilar string. English developers don't notice this but non-english translators are frustrated by this when they have to translate the same string in 2 or 3 different variations.

I suggest to merge simmilar strings, this way will achive two things:

  1. Smaller .po/.mo files.
  2. Easier translation process as there will be less string to translate. I belive 200-300 strings less.

(Check out the bbPress ticket #BB1584 for more information and examples)

Few WordPress examples:

No login ID submitted

  • wp-includes/class-pop3.php:168

no login ID submitted

  • wp-includes/class-pop3.php:115

(change n->N)

You are not allowed to post as this user.

  • wp-admin/includes/post.php:65

You are not allowed to post as this user

  • wp-includes/class-wp-xmlrpc-server.php:2263

(add '.')

Log out

  • wp-includes/general-template.php:189

Log Out

  • wp-includes/admin-bar.php:92
  • wp-admin/admin-header.php:165

Log out »

  • wp-includes/theme-compat/comments.php:73

Log out of this account

  • wp-includes/theme-compat/comments.php:73

(change all to "Log Out")

Log In

  • wp-includes/general-template.php:261
  • wp-login.php:627
  • wp-login.php:646
  • wp-admin/install.php:144
  • wp-admin/install.php:238

Log in

  • wp-includes/general-template.php:187
  • wp-login.php:419
  • wp-login.php:444
  • wp-login.php:475
  • wp-login.php:531

(change all to "Log In")


  • wp-includes/theme-compat/comments-popup.php:80
  • wp-login.php:520
  • wp-admin/user-new.php:229
  • wp-admin/user-new.php:291
  • wp-admin/comment.php:160
  • wp-admin/includes/class-wp-users-list-table.php:165
  • wp-admin/includes/template.php:356
  • wp-admin/user-edit.php:329


  • wp-includes/comment-template.php:1525

E-mail address

  • wp-admin/options-general.php:104
  • wp-admin/options-general.php:123

Your E-mail

  • wp-admin/install.php:128

Attachments (10)

login-logout.patch (3.5 KB) - added by ramiy 13 years ago.
"Log out => Log Out" & "Log in => Log In"
18218.2.patch (2.9 KB) - added by ramiy 13 years ago.
18218.3.patch (1.6 KB) - added by ramiy 13 years ago.
18218.4.patch (40.7 KB) - added by ramiy 13 years ago.
search-results.patch (643 bytes) - added by ramiy 8 years ago.
search-results.png (34.1 KB) - added by ramiy 8 years ago.
menu-locations.png (23.6 KB) - added by ramiy 8 years ago.
invalid-post-type.png (24.8 KB) - added by ramiy 8 years ago.
required-name.png (17.9 KB) - added by ramiy 8 years ago.
required-name.patch (633 bytes) - added by ramiy 8 years ago.

Download all attachments as: .zip

Change History (52)

#1 @SergeyBiryukov
13 years ago

  • Keywords needs-patch added

class-pop3.php is an external library and should not be modified, according to westi's comment on #15912.

Some other suggestions are valid, I guess.

#2 @demetris
13 years ago

  • Resolution set to duplicate
  • Status changed from new to closed

Closing as duplicate of #14039.

I believe I will be able to do some work on this during the 3.3 cycle, but we will need a basic style guide first, so that we can be consistent on issues of capitalization etc. (I’m working on that currently.)

#3 @SergeyBiryukov
13 years ago

  • Keywords needs-patch removed
  • Milestone Awaiting Review deleted

#4 follow-up: @ramiy
13 years ago

few more strings:

Visit Site

  • wp-includes/admin-bar.php:106
  • wp-includes/admin-bar.php:145
  • wp-admin/admin-header.php:122
  • wp-admin/admin-header.php:142

visit site

  • wp-admin/edit-form-comment.php:109

View Post

  • wp-includes/post.php:1183
  • wp-admin/edit.php:196
  • wp-content/plugins/akismet/legacy.php:294

View post

  • wp-admin/press-this.php:600

View all posts in %s

  • wp-includes/category-template.php:59
  • wp-includes/category-template.php:174
  • wp-includes/category-template.php:177
  • wp-includes/category-template.php:184
  • wp-includes/category-template.php:197
  • wp-includes/category-template.php:200
  • wp-includes/category-template.php:207

View all posts filed under %s

  • wp-includes/category-template.php:837

View all

  • wp-admin/includes/dashboard.php:129
  • wp-admin/includes/dashboard.php:599

View All

  • wp-admin/includes/nav-menu.php:667
  • wp-admin/includes/nav-menu.php:881

Unable to locate WordPress Theme directory.

  • wp-admin/includes/class-wp-upgrader.php:47

Unable to locate WordPress theme directory.

  • wp-admin/includes/theme.php:93


  • wp-admin/options-general.php:158

Time Zone

  • wp-includes/class-wp-xmlrpc-server.php:311

Tags: (have following space)

  • wp-includes/category-template.php:1030

Tags: (have no following space)

  • wp-admin/themes.php:123
  • wp-admin/includes/class-wp-themes-list-table.php:193

Sorry, you must be able to edit posts to this site in order to view categories.

  • wp-includes/class-wp-xmlrpc-server.php:957

Sorry, you must be able to edit posts on this site in order to view categories.

  • wp-includes/class-wp-xmlrpc-server.php:3000
  • wp-includes/class-wp-xmlrpc-server.php:3192

Version 0, edited 13 years ago by ramiy (next)

#5 @ramiy
13 years ago

More strings:

Select All

  • wp-includes/js/tinymce/langs/wp-langs.php:150
  • wp-admin/update-core.php:211
  • wp-admin/update-core.php:218
  • wp-admin/update-core.php:284
  • wp-admin/update-core.php:291
  • wp-admin/includes/nav-menu.php:783
  • wp-admin/includes/nav-menu.php:960

Select all

  • wp-includes/js/tinymce/wp-mce-help.php:235

(change a->A)

Select a color

  • wp-includes/js/tinymce/langs/wp-langs.php:315

Select a Color

  • wp-admin/custom-header.php:592
  • wp-admin/custom-background.php:298

(change c->C)

Save Changes

  • wp-admin/includes/template.php:2202
  • wp-admin/options.php:219

Save all changes

  • wp-admin/includes/media.php:1647
  • wp-admin/includes/media.php:1827
  • wp-admin/includes/media.php:2068
  • wp-admin/media-upload.php:96

Quick Edit

  • wp-admin/includes/class-wp-posts-list-table.php:732
  • wp-admin/includes/class-wp-comments-list-table.php:415
  • wp-admin/includes/class-wp-terms-list-table.php:336

Quick Edit

  • wp-admin/includes/class-wp-posts-list-table.php:543
  • wp-admin/includes/class-wp-comments-list-table.php:415
  • wp-admin/includes/class-wp-terms-list-table.php:260


  • wp-admin/export.php:131
  • wp-admin/includes/class-wp-users-list-table.php:167
  • wp-admin/includes/class-wp-terms-list-table.php:110
  • wp-admin/menu.php:74


  • wp-admin/options-reading.php:103

(change p->P)

Popular Tags

  • wp-includes/taxonomy.php:402

Popular tags

  • wp-admin/includes/plugin-install.php:90

(change t->T)

Permalink structure updated.

  • wp-admin/options-permalink.php:142
  • wp-admin/options-permalink.php:145

Permalink structure updated

  • wp-admin/options-permalink.php:137

(add a dot)

Password Protected

  • wp-includes/script-loader.php:353

Password protected

  • wp-admin/includes/template.php:1633
  • wp-admin/includes/meta-boxes.php:119
  • wp-admin/includes/meta-boxes.php:144

(change p->P)


  • wp-admin/includes/class-wp-posts-list-table.php:847
  • wp-admin/includes/meta-boxes.php:562
  • wp-admin/includes/meta-boxes.php:563


  • wp-admin/includes/meta-boxes.php:828

(change p->P)

Open link in a new window/tab

  • wp-admin/includes/internal-linking.php:85

Open link in a new window

  • wp-includes/js/tinymce/langs/wp-langs.php:346

(remove "/tab")

Separate multiple categories with commas.

  • wp-includes/script-loader.php:297

Separate tags with commas

  • wp-includes/script-loader.php:336
  • wp-includes/taxonomy.php:411

Page IDs, separated by commas.

  • wp-includes/default-widgets.php:78

(can be changed to "Separate multiple with commas." or just "Separate with commas.")

Last edited 13 years ago by ramiy (previous) (diff)

#6 @ramiy
13 years ago


  • wp-includes/deprecated.php:707
  • wp-includes/js/tinymce/langs/wp-langs.php:484
  • wp-admin/includes/media.php:850
  • wp-admin/includes/media.php:944
  • wp-admin/includes/media.php:2131
  • wp-admin/includes/media.php:2147
  • wp-admin/includes/class-wp-users-list-table.php:264
  • wp-admin/edit-tags.php:348
  • wp-admin/edit-tag-form.php:55


  • wp-admin/includes/meta-boxes.php:781
  • wp-admin/includes/meta-boxes.php:814
  • wp-admin/includes/meta-boxes.php:837

(change n->N)

No matching users were found.

  • wp-admin/includes/class-wp-users-list-table.php:79

No matching users were found!

  • wp-admin/includes/deprecated.php:524

(change !->.)

No login ID submitted

  • wp-includes/class-pop3.php:168

no login ID submitted

  • wp-includes/class-pop3.php:115

(change n->N)

Next page...

  • wp-includes/js/tinymce/langs/wp-langs.php:471

Next Page »

  • wp-includes/link-template.php:1594
  • wp-includes/link-template.php:1702
  • wp-content/plugins/akismet/legacy.php:260
  • wp-content/plugins/akismet/legacy.php:327

Next page

  • wp-includes/post-template.php:629

Next »

  • wp-includes/general-template.php:1970

Next >

  • wp-includes/script-loader.php:196

Newer version (%s) is installed.

  • wp-admin/includes/theme-install.php:301

Newer Version (%s) Installed

  • wp-admin/includes/plugin-install.php:296

(sould be the same string)

New password

  • wp-login.php:459

New Password

  • wp-admin/user-edit.php:372

(change p->P)

New Category Name

  • wp-includes/taxonomy.php:410

New category name

  • wp-admin/includes/meta-boxes.php:681

(change c->C and n->N)


  • wp-includes/script-loader.php:83


  • wp-admin/plugin-editor.php:231
  • wp-admin/theme-editor.php:235

(change l->L)

Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out?</a>

  • wp-includes/comment-template.php:1536

Logged in as <a href="%1$s">%2$s</a>. <a href="%3$s" title="Log out of this account">Log out &raquo;</a>

  • wp-includes/theme-compat/comments-popup.php:71


  • wp-admin/press-this.php:417


  • wp-admin/includes/dashboard.php:1038

Link to Image

  • wp-includes/js/tinymce/langs/wp-langs.php:490

Link to image

  • wp-admin/includes/media.php:2148

(change i->I)

Leave a comment

  • wp-includes/theme-compat/comments-popup.php:66

Leave a Comment

  • wp-includes/comment-template.php:1100

(change c->C)

Invalid post type.

  • wp-includes/class-wp-xmlrpc-server.php:2214
  • wp-includes/class-wp-xmlrpc-server.php:2270
  • wp-includes/class-wp-xmlrpc-server.php:2521
  • wp-includes/class-wp-xmlrpc-server.php:2586

Invalid post type

  • wp-admin/edit.php:17
  • wp-admin/post-new.php:17
  • wp-admin/includes/class-wp-posts-list-table.php:56

(add a dot)

Insert Page Break

  • wp-includes/js/tinymce/langs/wp-langs.php:213

Insert Page break

  • wp-includes/js/tinymce/langs/wp-langs.php:468

(change b->B)


  • wp-includes/script-loader.php:89


  • wp-includes/js/tinymce/langs/wp-langs.php:399

Full Screen

  • wp-includes/js/tinymce/wp-mce-help.php:256

Function Name...

  • wp-admin/theme-editor.php:122

Function Name&hellip;

  • wp-admin/plugin-editor.php:138

Error in restoring from trash...

  • wp-admin/upload.php:108

Error in restoring from Trash.

  • wp-admin/edit.php:97
  • wp-admin/post.php:238

Error in moving to trash...

  • wp-admin/upload.php:98

Error in moving to Trash.

  • wp-admin/edit.php:84
  • wp-admin/post.php:225

Error in deleting...

  • wp-admin/edit.php:113
  • wp-admin/edit.php:116
  • wp-admin/upload.php:118

Error in deleting.

  • wp-admin/post.php:254
  • wp-admin/post.php:257

Edit your profile

  • wp-admin/admin-header.php:156

Edit My Profile

  • wp-includes/admin-bar.php:91

Edit comment

  • wp-includes/link-template.php:1015
  • wp-admin/edit-comments.php:197
  • wp-admin/edit-comments.php:203
  • wp-admin/includes/dashboard.php:697
  • wp-admin/includes/class-wp-comments-list-table.php:414

Edit Comment

  • wp-admin/comment.php:46
  • wp-admin/edit-form-comment.php:16
  • wp-admin/edit-form-comment.php:27

(change c->C)

Delete Plugin

  • wp-admin/plugins.php:247

Delete this plugin

  • wp-admin/includes/class-wp-plugins-list-table.php:373
  • wp-admin/includes/class-wp-plugins-list-table.php:382

Close Window

  • wp-admin/press-this.php:600

Close this window.

  • wp-includes/theme-compat/comments-popup.php:108

Allow comments.

  • wp-admin/includes/meta-boxes.php:447

Allow Comments

  • wp-admin/includes/class-wp-posts-list-table.php:926

(change c->C)


  • wp-includes/js/tinymce/langs/wp-langs.php:76
  • wp-includes/js/tinymce/langs/wp-langs.php:333
  • wp-admin/includes/media.php:974
  • wp-admin/includes/media.php:2128


  • wp-includes/js/tinymce/langs/wp-langs.php:375

Add New User

  • wp-admin/user-new.php:129
  • wp-admin/user-new.php:265
  • wp-admin/menu.php:213
  • wp-admin/menu.php:215

Add New User (has space in the end)

  • wp-admin/user-new.php:343

(in the second string, we have to remove the space in the end)

Add Existing User

  • wp-admin/user-new.php:226

Add Existing User (has space in the end)

  • wp-admin/user-new.php:258

(in the second string, we have to remove the space in the end)

Last edited 13 years ago by ramiy (previous) (diff)

#7 @ramiy
13 years ago

In total, 52 strings (for now).

13 years ago

"Log out => Log Out" & "Log in => Log In"

#8 @ramiy
13 years ago

  • Cc r_a_m_i@… added
  • Component changed from General to I18N
  • Keywords has-patch added
  • Resolution duplicate deleted
  • Status changed from closed to reopened
  • Type changed from defect (bug) to enhancement
  • Version set to 3.2.1

13 years ago

#9 @SergeyBiryukov
13 years ago

  • Milestone set to Awaiting Review

13 years ago

13 years ago

#10 @scribu
13 years ago

  • Cc scribu added

#11 @steveagl
13 years ago

  • Cc steveagl added

#12 @westi
13 years ago

Please remember that every change needs reviewing and testing and you are trying to change a large number of strings here where each one needs checking to ensure the suggested change is correct.

It would be better to focus on fixing strings that make translation hard or impossible than going on a huge drive against duplicate / similar strings like this.

#13 follow-up: @ramiy
13 years ago

Do you want me to open 50 tickets for each string change? or 50 paches in this ticket?

i can do both.

Last edited 13 years ago by ramiy (previous) (diff)

#14 in reply to: ↑ 13 @westi
13 years ago

Replying to ramiy:

Do you want me to open 50 tickets for each string change? or 50 paches in this ticket?

i can do both.

I would prefer neither.

I think it is more important to focus effort on the strings which are currently impossible for some people to translate. e.g. #13651

For this ticket I would rather you focus on a patch per string you want to consolidate to and also note where the string is used in the UI (especially if it is used in context with other strings).

#15 @ramiy
13 years ago

Peter if you check carefully you will see that most of the strings here need to capitalize a letter, add a dot or remove space. Those are minor changes. Many changes but each is minor.

#16 @demetris
13 years ago

Another thing I would like to add:

Before we start consolidating similar strings, I believe we should have some basic UI Text guidelines in place, like guidelines on punctuation and on capitalization. For example, what kind of capitalization do we apply to the text of each of the various UI elements we have in the dashboard?

#17 @ramiy
13 years ago

I agree, we need guidelines. either in ticket #14039 or in the wordpress codex.

(but i think that adding a dot or removing spaces, can be done without the guidelines.)

#18 @SergeyBiryukov
13 years ago

While most of the replacements are valid, there are a couple changes in 18218.4.patch that don't seem neccessary.

Like in class-wp-posts-list-table.php, where we replace a more meaningful string with a more generic one:

title="' . esc_attr( __( 'Edit this item inline' ) ) . '">' . __( 'Quick&nbsp;Edit' ) . '</a>'
title="' . esc_attr( __( 'Quick Edit' ) ) . '">' . __( 'Quick Edit' ) . '</a>'

And we get exactly the same strings in anchor name and title, which is against #16783.

Or in internal-linking.php:

_e( 'Open link in a new window/tab' );
_e( 'Open link in a new window' );

I guess most of the time target="_blank" links are opened in a new tab, not a window.

That's why I believe westi is right about the step-by-step approach.

#20 @pavelevap
12 years ago

  • Cc pavelevap@… added

#21 in reply to: ↑ 4 @ramiy
12 years ago

More strings:

You are not allowed to upload files to this site.

  • wp-includes/class-wp-xmlrpc-server.php:2738
  • wp-includes/class-wp-xmlrpc-server.php:4211

You do not have permission to upload files.

  • wp-includes/class-wp-atom-server.php:523
  • wp-includes/class-wp-atom-server.php:704

Sorry, you do not have permission to upload files.

  • wp-includes/class-wp-atom-server.php:502

Sorry, this user can not edit the template

  • wp-includes/class-wp-xmlrpc-server.php:3100

Sorry, this user cannot edit the template.

  • wp-includes/class-wp-xmlrpc-server.php:3140

(cannot -> can not ; add a dot.)

#22 @ramiy
12 years ago

The above strings fixed in changeset [20215] (ticket #20216).

#23 @ocean90
12 years ago

  • Cc ocean90 added

#24 @c3mdigital
11 years ago

#19112 was marked as a duplicate.

#25 @chriscct7
9 years ago

  • Component changed from I18N to Text Changes
  • Keywords needs-refresh added
  • Version changed from 3.2.1 to 3.2

#26 @SergeyBiryukov
8 years ago

In 38073:

I18N: Combine two duplicate "Unable to locate WordPress Theme directory" strings.

See #18218.

#27 @SergeyBiryukov
8 years ago

In 38074:

I18N: Change unnecessary uppercased words in WP_Upgrader::generic_strings() to lower case.

See #18218.

#28 follow-up: @ramiy
8 years ago

@SergeyBiryukov one more patch merging similar strings.

8 years ago

#29 in reply to: ↑ 28 @SergeyBiryukov
8 years ago

Replying to ramiy:

@SergeyBiryukov one more patch merging similar strings.

I think it's capitalized because it's a title, see a similar string in feed_links_extra(), capitalized as well.

8 years ago

#30 @ramiy
8 years ago

@SergeyBiryukov Two more strings for your review.

#31 @SergeyBiryukov
8 years ago

In 38076:

I18N: Combine two duplicate "Invalid post type" strings.

Props @ramiy.
See #18218.

#32 @SergeyBiryukov
8 years ago

In 38077:

Text Changes: Add a full stop to "Invalid taxonomy" and "Invalid term ID" strings, for consistency with similar post-related messages.

See #18218, #32329.

#33 @SergeyBiryukov
8 years ago

In 38078:

Unit Tests: Account for the string changes in [38077].

See #18218.

#34 @SergeyBiryukov
8 years ago

In 38080:

I18N: Combine duplicate "Menu Locations" and "Menu Options" strings.

Props ramiy.
See #18218.

8 years ago

8 years ago

This ticket was mentioned in Slack in #core-i18n by ramiy. View the logs.

8 years ago

#36 @SergeyBiryukov
8 years ago

In 38162:

I18N: After [38077], merge two duplicate strings in wp_insert_term() and wp_update_term().

Props ramiy.
See #18218.

#37 @ocean90
8 years ago

  • Milestone changed from Awaiting Review to Future Release

#38 @ramiy
8 years ago

@SergeyBiryukov @ocean90 I think we can close this ticket.

This ticket was mentioned in Slack in #core-i18n by ramiy. View the logs.

7 years ago

#40 @garrett-eclipse
4 years ago

  • Component changed from Text Changes to I18N
  • Focuses ui-copy added

This ticket was mentioned in Slack in #core by sergey. View the logs.

3 years ago

#42 @swissspidy
3 months ago

  • Milestone changed from Future Release to 4.6
  • Resolution set to fixed
  • Status changed from reopened to closed

Closing this one for now.

In the future, we can think about a recurring task to improve strings in each release cycle.

Note: See TracTickets for help on using tickets.