fix(tiktok): align UX strings and render processing notice for app review
Match the literal copy the TikTok app reviewer looks for during the Content Posting API audit, per the Mixpost playbook (the only public account of how to pass). - Privacy dropdown placeholder: "Select who can view this post" - Tooltip on interaction toggles disabled by creator: "Turned off in your TikTok account settings" - Render the "may take a few minutes" notice that was translated but never displayed (processing_hint) Mirror both i18n changes in pt-BR and es. Add a feature test that locks the literal strings so they cannot drift before the next review cycle.
This commit is contained in:
parent
ec7aad7044
commit
50477b97f0
5 changed files with 46 additions and 6 deletions
|
|
@ -61,7 +61,7 @@
|
|||
],
|
||||
'posting_to' => 'Posting to',
|
||||
'privacy_level' => 'Who can see this video?',
|
||||
'privacy_placeholder' => 'Select visibility',
|
||||
'privacy_placeholder' => 'Select who can view this post',
|
||||
'privacy' => [
|
||||
'public' => 'Public to everyone',
|
||||
'friends' => 'Mutual follow friends',
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
'compliance_incomplete' => 'You need to indicate if your content promotes yourself, a third party, or both.',
|
||||
'privacy_required' => 'TikTok privacy level is required when publishing.',
|
||||
'branded_cleared_private' => 'Privacy was cleared because Branded Content cannot be private.',
|
||||
'interaction_disabled_by_creator' => 'Disabled by your TikTok account settings.',
|
||||
'interaction_disabled_by_creator' => 'Turned off in your TikTok account settings',
|
||||
'max_duration_exceeded' => 'Video is :duration s long but this account can only post videos up to :max s.',
|
||||
'processing_hint' => 'After publishing, it may take a few minutes for the content to process and appear on your TikTok profile.',
|
||||
'brand_organic' => 'Your brand',
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
],
|
||||
'posting_to' => 'Publicando en',
|
||||
'privacy_level' => '¿Quién puede ver este video?',
|
||||
'privacy_placeholder' => 'Selecciona la visibilidad',
|
||||
'privacy_placeholder' => 'Selecciona quién puede ver esta publicación',
|
||||
'privacy' => [
|
||||
'public' => 'Público para todos',
|
||||
'friends' => 'Amigos mutuos',
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
'compliance_incomplete' => 'Debes indicar si tu contenido promociona a ti mismo, a un tercero o a ambos.',
|
||||
'privacy_required' => 'La visibilidad de TikTok es obligatoria al publicar.',
|
||||
'branded_cleared_private' => 'La visibilidad se borró porque el contenido de marca no puede ser privado.',
|
||||
'interaction_disabled_by_creator' => 'Desactivado por la configuración de tu cuenta TikTok.',
|
||||
'interaction_disabled_by_creator' => 'Desactivado en la configuración de tu cuenta TikTok',
|
||||
'max_duration_exceeded' => 'El video dura :duration s pero esta cuenta solo permite videos de hasta :max s.',
|
||||
'processing_hint' => 'Después de publicar, puede tardar unos minutos en procesarse y aparecer en tu perfil de TikTok.',
|
||||
'brand_organic' => 'Tu marca',
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@
|
|||
],
|
||||
'posting_to' => 'Publicando em',
|
||||
'privacy_level' => 'Quem pode ver este vídeo?',
|
||||
'privacy_placeholder' => 'Selecione a visibilidade',
|
||||
'privacy_placeholder' => 'Selecione quem pode ver este post',
|
||||
'privacy' => [
|
||||
'public' => 'Público para todos',
|
||||
'friends' => 'Amigos em comum',
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
'compliance_incomplete' => 'Você precisa indicar se o conteúdo promove você mesmo, terceiros ou ambos.',
|
||||
'privacy_required' => 'A visibilidade do TikTok é obrigatória ao publicar.',
|
||||
'branded_cleared_private' => 'A visibilidade foi limpa porque conteúdo de marca não pode ser privado.',
|
||||
'interaction_disabled_by_creator' => 'Desativado pelas configurações da sua conta TikTok.',
|
||||
'interaction_disabled_by_creator' => 'Desativado nas configurações da sua conta TikTok',
|
||||
'max_duration_exceeded' => 'Vídeo tem :duration s mas esta conta só permite vídeos de até :max s.',
|
||||
'processing_hint' => 'Após publicar, pode levar alguns minutos para o conteúdo ser processado e aparecer no seu perfil TikTok.',
|
||||
'brand_organic' => 'Sua marca',
|
||||
|
|
|
|||
|
|
@ -397,6 +397,11 @@ watch(
|
|||
{{ $t('posts.form.tiktok.compliance.music_usage') }}
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<!-- Post-publish notice required by TikTok Content Sharing Guidelines -->
|
||||
<p class="mt-3 text-xs text-muted-foreground">
|
||||
{{ $t('posts.form.tiktok.processing_hint') }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
35
tests/Feature/TikTokI18nStringsTest.php
Normal file
35
tests/Feature/TikTokI18nStringsTest.php
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
test('tiktok english strings match the wording the app reviewer expects', function () {
|
||||
expect(__('posts.form.tiktok.privacy_placeholder', [], 'en'))
|
||||
->toBe('Select who can view this post');
|
||||
|
||||
expect(__('posts.form.tiktok.interaction_disabled_by_creator', [], 'en'))
|
||||
->toBe('Turned off in your TikTok account settings');
|
||||
|
||||
expect(__('posts.form.tiktok.processing_hint', [], 'en'))
|
||||
->toBe('After publishing, it may take a few minutes for the content to process and appear on your TikTok profile.');
|
||||
|
||||
expect(__('posts.form.tiktok.compliance_incomplete', [], 'en'))
|
||||
->toBe('You need to indicate if your content promotes yourself, a third party, or both.');
|
||||
|
||||
expect(__('posts.form.tiktok.privacy.private_disabled_branded', [], 'en'))
|
||||
->toBe('Branded content visibility cannot be set to private.');
|
||||
|
||||
expect(__('posts.form.tiktok.promotional_organic_title', [], 'en'))
|
||||
->toBe('Your photo/video will be labeled as "Promotional content".');
|
||||
|
||||
expect(__('posts.form.tiktok.promotional_paid_title', [], 'en'))
|
||||
->toBe('Your photo/video will be labeled as "Paid partnership".');
|
||||
|
||||
expect(__('posts.form.tiktok.compliance.agree', [], 'en'))
|
||||
->toBe("By posting, you agree to TikTok's");
|
||||
|
||||
expect(__('posts.form.tiktok.compliance.music_usage', [], 'en'))
|
||||
->toBe('Music Usage Confirmation');
|
||||
|
||||
expect(__('posts.form.tiktok.compliance.branded_policy', [], 'en'))
|
||||
->toBe('Branded Content Policy');
|
||||
});
|
||||
Loading…
Reference in a new issue