feat: add lingui/no-unlocalized-strings ESLint rule and fix translations (#16610)
## Summary
This PR adds the `lingui/no-unlocalized-strings` ESLint rule to detect
untranslated strings and fixes translation issues across multiple
components.
## Changes
### ESLint Configuration (`eslint.config.react.mjs`)
- Added comprehensive `ignore` patterns for non-translatable strings
(CSS values, HTML attributes, technical identifiers)
- Added `ignoreNames` for props that don't need translation (className,
data-*, aria-*, etc.)
- Added `ignoreFunctions` for console methods, URL APIs, and other
non-user-facing functions
- Disabled rule for debug files, storybook, and test files
### Components Fixed (~19 files)
- Object record components (field inputs, pickers, merge dialogs)
- Settings components (accounts, admin panel)
- Serverless function components
- Record table and title cell components
## Status
🚧 **Work in Progress** - ~124 files remaining to fix
This PR is being submitted as draft to allow progressive fixing of
remaining translation issues.
## Testing
- Run `npx eslint "src/**/*.tsx"` in `packages/twenty-front` to check
remaining issues
This commit is contained in:
+1
-1
@@ -94,7 +94,7 @@ export const SettingsSSOIdentitiesProvidersForm = () => {
|
||||
value={value}
|
||||
onChange={onChange}
|
||||
fullWidth
|
||||
placeholder="Google OIDC"
|
||||
placeholder={t`Google OIDC`}
|
||||
/>
|
||||
)}
|
||||
/>
|
||||
|
||||
+2
-1
@@ -1,5 +1,6 @@
|
||||
/* @license Enterprise */
|
||||
|
||||
import { t } from '@lingui/core/macro';
|
||||
import { SettingsListCard } from '@/settings/components/SettingsListCard';
|
||||
import { SettingsSSOIdentityProviderRowRightContainer } from '@/settings/security/components/SSO/SettingsSSOIdentityProviderRowRightContainer';
|
||||
import { SSOIdentitiesProvidersState } from '@/settings/security/states/SSOIdentitiesProvidersState';
|
||||
@@ -26,7 +27,7 @@ export const SettingsSSOIdentitiesProvidersListCardWrapper = () => {
|
||||
<SettingsSSOIdentityProviderRowRightContainer SSOIdp={SSOIdp} />
|
||||
)}
|
||||
hasFooter
|
||||
footerButtonLabel="Add SSO Identity Provider"
|
||||
footerButtonLabel={t`Add SSO Identity Provider`}
|
||||
onFooterButtonClick={() => navigate(SettingsPath.NewSSOIdentityProvider)}
|
||||
/>
|
||||
);
|
||||
|
||||
+2
-2
@@ -173,7 +173,7 @@ export const SettingsSSOSAMLForm = () => {
|
||||
<SettingsTextInput
|
||||
instanceId="sso-saml-acs-url"
|
||||
disabled={true}
|
||||
label="ACS Url"
|
||||
label={t`ACS Url`}
|
||||
value={acsUrl}
|
||||
fullWidth
|
||||
/>
|
||||
@@ -194,7 +194,7 @@ export const SettingsSSOSAMLForm = () => {
|
||||
<SettingsTextInput
|
||||
instanceId="sso-saml-entity-id"
|
||||
disabled={true}
|
||||
label="Entity ID"
|
||||
label={t`Entity ID`}
|
||||
value={entityID}
|
||||
fullWidth
|
||||
/>
|
||||
|
||||
+2
-2
@@ -70,7 +70,7 @@ export const SettingsApprovedAccessDomainsListCard = () => {
|
||||
RowRightComponent={({ item: approvedAccessDomain }) => (
|
||||
<>
|
||||
{!approvedAccessDomain.isValidated && (
|
||||
<Status color="orange" text="Pending" />
|
||||
<Status color="orange" text={t`Pending`} />
|
||||
)}
|
||||
<SettingsSecurityApprovedAccessDomainRowDropdownMenu
|
||||
approvedAccessDomain={approvedAccessDomain}
|
||||
@@ -78,7 +78,7 @@ export const SettingsApprovedAccessDomainsListCard = () => {
|
||||
</>
|
||||
)}
|
||||
hasFooter
|
||||
footerButtonLabel="Add Approved Access Domain"
|
||||
footerButtonLabel={t`Add Approved Access Domain`}
|
||||
onFooterButtonClick={() =>
|
||||
navigate(getSettingsPath(SettingsPath.NewApprovedAccessDomain))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user